84 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=bdce < %s | FileCheck %s3 4declare i8 @llvm.umax.i8(i8, i8)5declare i8 @llvm.umin.i8(i8, i8)6declare i8 @llvm.smax.i8(i8, i8)7declare i8 @llvm.smin.i8(i8, i8)8 9define i8 @umax(i8 %x, i8 %y, i1 %a, i1 %b) {10; CHECK-LABEL: @umax(11; CHECK-NEXT: [[A2:%.*]] = zext i1 false to i812; CHECK-NEXT: [[B2:%.*]] = zext i1 false to i813; CHECK-NEXT: [[X2:%.*]] = or i8 [[X:%.*]], [[A2]]14; CHECK-NEXT: [[Y2:%.*]] = or i8 [[Y:%.*]], [[B2]]15; CHECK-NEXT: [[M:%.*]] = call i8 @llvm.umax.i8(i8 [[X2]], i8 [[Y2]])16; CHECK-NEXT: [[R:%.*]] = lshr i8 [[M]], 117; CHECK-NEXT: ret i8 [[R]]18;19 %a2 = zext i1 %a to i820 %b2 = zext i1 %b to i821 %x2 = or i8 %x, %a222 %y2 = or i8 %y, %b223 %m = call i8 @llvm.umax.i8(i8 %x2, i8 %y2)24 %r = lshr i8 %m, 125 ret i8 %r26}27 28define i8 @umin(i8 %x, i8 %y, i1 %a, i1 %b) {29; CHECK-LABEL: @umin(30; CHECK-NEXT: [[A2:%.*]] = zext i1 false to i831; CHECK-NEXT: [[B2:%.*]] = zext i1 false to i832; CHECK-NEXT: [[X2:%.*]] = or i8 [[X:%.*]], [[A2]]33; CHECK-NEXT: [[Y2:%.*]] = or i8 [[Y:%.*]], [[B2]]34; CHECK-NEXT: [[M:%.*]] = call i8 @llvm.umin.i8(i8 [[X2]], i8 [[Y2]])35; CHECK-NEXT: [[R:%.*]] = lshr i8 [[M]], 136; CHECK-NEXT: ret i8 [[R]]37;38 %a2 = zext i1 %a to i839 %b2 = zext i1 %b to i840 %x2 = or i8 %x, %a241 %y2 = or i8 %y, %b242 %m = call i8 @llvm.umin.i8(i8 %x2, i8 %y2)43 %r = lshr i8 %m, 144 ret i8 %r45}46 47define i8 @smax(i8 %x, i8 %y, i1 %a, i1 %b) {48; CHECK-LABEL: @smax(49; CHECK-NEXT: [[A2:%.*]] = zext i1 false to i850; CHECK-NEXT: [[B2:%.*]] = zext i1 false to i851; CHECK-NEXT: [[X2:%.*]] = or i8 [[X:%.*]], [[A2]]52; CHECK-NEXT: [[Y2:%.*]] = or i8 [[Y:%.*]], [[B2]]53; CHECK-NEXT: [[M:%.*]] = call i8 @llvm.smax.i8(i8 [[X2]], i8 [[Y2]])54; CHECK-NEXT: [[R:%.*]] = lshr i8 [[M]], 155; CHECK-NEXT: ret i8 [[R]]56;57 %a2 = zext i1 %a to i858 %b2 = zext i1 %b to i859 %x2 = or i8 %x, %a260 %y2 = or i8 %y, %b261 %m = call i8 @llvm.smax.i8(i8 %x2, i8 %y2)62 %r = lshr i8 %m, 163 ret i8 %r64}65 66define i8 @smin(i8 %x, i8 %y, i1 %a, i1 %b) {67; CHECK-LABEL: @smin(68; CHECK-NEXT: [[A2:%.*]] = zext i1 false to i869; CHECK-NEXT: [[B2:%.*]] = zext i1 false to i870; CHECK-NEXT: [[X2:%.*]] = or i8 [[X:%.*]], [[A2]]71; CHECK-NEXT: [[Y2:%.*]] = or i8 [[Y:%.*]], [[B2]]72; CHECK-NEXT: [[M:%.*]] = call i8 @llvm.smin.i8(i8 [[X2]], i8 [[Y2]])73; CHECK-NEXT: [[R:%.*]] = lshr i8 [[M]], 174; CHECK-NEXT: ret i8 [[R]]75;76 %a2 = zext i1 %a to i877 %b2 = zext i1 %b to i878 %x2 = or i8 %x, %a279 %y2 = or i8 %y, %b280 %m = call i8 @llvm.smin.i8(i8 %x2, i8 %y2)81 %r = lshr i8 %m, 182 ret i8 %r83}84