xref: /llvm-project/llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/wave.reduce.ll (revision 1462053608041c34e871b7d0a565f4ca541e2fd1)
1*14620536SPravin Jagtap; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2*14620536SPravin Jagtap; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
3*14620536SPravin Jagtap
4*14620536SPravin Jagtap; --------------------------------------------------------------------
5*14620536SPravin Jagtap; llvm.amdgcn.wave.reduce.umin.i32
6*14620536SPravin Jagtap; --------------------------------------------------------------------
7*14620536SPravin Jagtap
8*14620536SPravin Jagtapdeclare i32 @llvm.amdgcn.wave.reduce.umin.i32(i32, i32 immarg)
9*14620536SPravin Jagtap
10*14620536SPravin Jagtapdefine amdgpu_kernel void @test_constant_fold_wave_reduce_umin_poison(ptr addrspace(1) %out, i32 %in) {
11*14620536SPravin Jagtap; CHECK-LABEL: @test_constant_fold_wave_reduce_umin_poison(
12*14620536SPravin Jagtap; CHECK-NEXT:  entry:
13*14620536SPravin Jagtap; CHECK-NEXT:    store i32 poison, ptr addrspace(1) [[OUT:%.*]], align 4
14*14620536SPravin Jagtap; CHECK-NEXT:    ret void
15*14620536SPravin Jagtap;
16*14620536SPravin Jagtapentry:
17*14620536SPravin Jagtap  %result = call i32 @llvm.amdgcn.wave.reduce.umin.i32(i32 poison, i32 1)
18*14620536SPravin Jagtap  store i32 %result, ptr addrspace(1) %out
19*14620536SPravin Jagtap  ret void
20*14620536SPravin Jagtap}
21*14620536SPravin Jagtap
22*14620536SPravin Jagtapdefine amdgpu_kernel void @test_constant_fold_wave_reduce_umin_const(ptr addrspace(1) %out) {
23*14620536SPravin Jagtap; CHECK-LABEL: @test_constant_fold_wave_reduce_umin_const(
24*14620536SPravin Jagtap; CHECK-NEXT:  entry:
25*14620536SPravin Jagtap; CHECK-NEXT:    store i32 123, ptr addrspace(1) [[OUT:%.*]], align 4
26*14620536SPravin Jagtap; CHECK-NEXT:    ret void
27*14620536SPravin Jagtap;
28*14620536SPravin Jagtapentry:
29*14620536SPravin Jagtap  %result = call i32 @llvm.amdgcn.wave.reduce.umin.i32(i32 123, i32 1)
30*14620536SPravin Jagtap  store i32 %result, ptr addrspace(1) %out
31*14620536SPravin Jagtap  ret void
32*14620536SPravin Jagtap}
33*14620536SPravin Jagtap
34*14620536SPravin Jagtap; --------------------------------------------------------------------
35*14620536SPravin Jagtap; llvm.amdgcn.wave.reduce.umin.i32
36*14620536SPravin Jagtap; --------------------------------------------------------------------
37*14620536SPravin Jagtap
38*14620536SPravin Jagtapdeclare i32 @llvm.amdgcn.wave.reduce.umax.i32(i32, i32 immarg)
39*14620536SPravin Jagtap
40*14620536SPravin Jagtapdefine amdgpu_kernel void @test_constant_fold_wave_reduce_umax_poison(ptr addrspace(1) %out, i32 %in) {
41*14620536SPravin Jagtap; CHECK-LABEL: @test_constant_fold_wave_reduce_umax_poison(
42*14620536SPravin Jagtap; CHECK-NEXT:  entry:
43*14620536SPravin Jagtap; CHECK-NEXT:    store i32 poison, ptr addrspace(1) [[OUT:%.*]], align 4
44*14620536SPravin Jagtap; CHECK-NEXT:    ret void
45*14620536SPravin Jagtap;
46*14620536SPravin Jagtapentry:
47*14620536SPravin Jagtap  %result = call i32 @llvm.amdgcn.wave.reduce.umax.i32(i32 poison, i32 1)
48*14620536SPravin Jagtap  store i32 %result, ptr addrspace(1) %out
49*14620536SPravin Jagtap  ret void
50*14620536SPravin Jagtap}
51*14620536SPravin Jagtap
52*14620536SPravin Jagtapdefine amdgpu_kernel void @test_constant_fold_wave_reduce_umax_const(ptr addrspace(1) %out) {
53*14620536SPravin Jagtap; CHECK-LABEL: @test_constant_fold_wave_reduce_umax_const(
54*14620536SPravin Jagtap; CHECK-NEXT:  entry:
55*14620536SPravin Jagtap; CHECK-NEXT:    store i32 123, ptr addrspace(1) [[OUT:%.*]], align 4
56*14620536SPravin Jagtap; CHECK-NEXT:    ret void
57*14620536SPravin Jagtap;
58*14620536SPravin Jagtapentry:
59*14620536SPravin Jagtap  %result = call i32 @llvm.amdgcn.wave.reduce.umax.i32(i32 123, i32 1)
60*14620536SPravin Jagtap  store i32 %result, ptr addrspace(1) %out
61*14620536SPravin Jagtap  ret void
62*14620536SPravin Jagtap}
63*14620536SPravin Jagtap
64*14620536SPravin Jagtap@gv = constant i32 0
65*14620536SPravin Jagtapdefine amdgpu_kernel void @test_constant_fold_wave_reduce_umax_gv(ptr addrspace(1) %out) {
66*14620536SPravin Jagtap; CHECK-LABEL: @test_constant_fold_wave_reduce_umax_gv(
67*14620536SPravin Jagtap; CHECK-NEXT:  entry:
68*14620536SPravin Jagtap; CHECK-NEXT:    [[RESULT:%.*]] = call i32 @llvm.amdgcn.wave.reduce.umax.i32(i32 ptrtoint (ptr @gv to i32), i32 1)
69*14620536SPravin Jagtap; CHECK-NEXT:    store i32 [[RESULT]], ptr addrspace(1) [[OUT:%.*]], align 4
70*14620536SPravin Jagtap; CHECK-NEXT:    ret void
71*14620536SPravin Jagtap;
72*14620536SPravin Jagtapentry:
73*14620536SPravin Jagtap  %result = call i32 @llvm.amdgcn.wave.reduce.umax.i32(i32 ptrtoint (ptr @gv to i32), i32 1)
74*14620536SPravin Jagtap  store i32 %result, ptr addrspace(1) %out
75*14620536SPravin Jagtap  ret void
76*14620536SPravin Jagtap}
77