brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · efbfdd9 Raw
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