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