brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · 63d0c3e Raw
151 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=constraint-elimination -S %s | FileCheck %s3 4declare void @llvm.assume(i1)5 6define i1 @sge_0_unsigned_a_ne_0(i8 %a) {7; CHECK-LABEL: @sge_0_unsigned_a_ne_0(8; CHECK-NEXT:    [[A_NE_0:%.*]] = icmp ne i8 [[A:%.*]], 09; CHECK-NEXT:    call void @llvm.assume(i1 [[A_NE_0]])10; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[A]] to i1611; CHECK-NEXT:    ret i1 true12;13  %a.ne.0 = icmp ne i8 %a, 014  call void @llvm.assume(i1 %a.ne.0)15  %ext = zext i8 %a to i1616  %t = icmp sge i16 %ext, 017  ret i1 %t18}19 20define i1 @sgt_0_unsigned_a_ne_0(i8 %a) {21; CHECK-LABEL: @sgt_0_unsigned_a_ne_0(22; CHECK-NEXT:    [[A_NE_0:%.*]] = icmp ne i8 [[A:%.*]], 023; CHECK-NEXT:    call void @llvm.assume(i1 [[A_NE_0]])24; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[A]] to i1625; CHECK-NEXT:    ret i1 true26;27  %a.ne.0 = icmp ne i8 %a, 028  call void @llvm.assume(i1 %a.ne.0)29  %ext = zext i8 %a to i1630  %t = icmp sgt i16 %ext, 031  ret i1 %t32}33 34define i1 @sgt_0_unsigned_a_sgt_0(i8 %a) {35; CHECK-LABEL: @sgt_0_unsigned_a_sgt_0(36; CHECK-NEXT:    [[A_SGT_0:%.*]] = icmp sgt i8 [[A:%.*]], 037; CHECK-NEXT:    call void @llvm.assume(i1 [[A_SGT_0]])38; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[A]] to i1639; CHECK-NEXT:    ret i1 true40;41  %a.sgt.0 = icmp sgt i8 %a, 042  call void @llvm.assume(i1 %a.sgt.0)43  %ext = zext i8 %a to i1644  %t = icmp sgt i16 %ext, 045  ret i1 %t46}47 48define i1 @sge_0_unsigned_a_sge_0(i8 %a) {49; CHECK-LABEL: @sge_0_unsigned_a_sge_0(50; CHECK-NEXT:    [[A_SGE_0:%.*]] = icmp sge i8 [[A:%.*]], 051; CHECK-NEXT:    call void @llvm.assume(i1 [[A_SGE_0]])52; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[A]] to i1653; CHECK-NEXT:    ret i1 true54;55  %a.sge.0 = icmp sge i8 %a, 056  call void @llvm.assume(i1 %a.sge.0)57  %ext = zext i8 %a to i1658  %t = icmp sge i16 %ext, 059  ret i1 %t60}61 62define i1 @sgt_0_unsigned_a_ugt_0(i8 %a) {63; CHECK-LABEL: @sgt_0_unsigned_a_ugt_0(64; CHECK-NEXT:    [[A_UGT_0:%.*]] = icmp ugt i8 [[A:%.*]], 065; CHECK-NEXT:    call void @llvm.assume(i1 [[A_UGT_0]])66; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[A]] to i1667; CHECK-NEXT:    ret i1 true68;69  %a.ugt.0 = icmp ugt i8 %a, 070  call void @llvm.assume(i1 %a.ugt.0)71  %ext = zext i8 %a to i1672  %t = icmp sgt i16 %ext, 073  ret i1 %t74}75 76define i1 @sgt_1_unsigned_a_ne_0(i8 %a) {77; CHECK-LABEL: @sgt_1_unsigned_a_ne_0(78; CHECK-NEXT:    [[A_NE_0:%.*]] = icmp ne i8 [[A:%.*]], 079; CHECK-NEXT:    call void @llvm.assume(i1 [[A_NE_0]])80; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[A]] to i1681; CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i16 [[EXT]], 182; CHECK-NEXT:    ret i1 [[CMP]]83;84  %a.ne.0 = icmp ne i8 %a, 085  call void @llvm.assume(i1 %a.ne.0)86  %ext = zext i8 %a to i1687  %cmp = icmp sgt i16 %ext, 188  ret i1 %cmp89}90 91define i1 @sgt_1_unsigned_a_ugt_1(i8 %a) {92; CHECK-LABEL: @sgt_1_unsigned_a_ugt_1(93; CHECK-NEXT:    [[A_UGT_1:%.*]] = icmp ugt i8 [[A:%.*]], 194; CHECK-NEXT:    call void @llvm.assume(i1 [[A_UGT_1]])95; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[A]] to i1696; CHECK-NEXT:    ret i1 true97;98  %a.ugt.1 = icmp ugt i8 %a, 199  call void @llvm.assume(i1 %a.ugt.1)100  %ext = zext i8 %a to i16101  %t = icmp sgt i16 %ext, 1102  ret i1 %t103}104 105define i1 @sge_no_const_unsigned_uge(i8 %a, i16 %b) {106; CHECK-LABEL: @sge_no_const_unsigned_uge(107; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[A:%.*]] to i16108; CHECK-NEXT:    [[A_UGE_B:%.*]] = icmp uge i16 [[EXT]], [[B:%.*]]109; CHECK-NEXT:    call void @llvm.assume(i1 [[A_UGE_B]])110; CHECK-NEXT:    [[B_POS:%.*]] = icmp sge i16 [[B]], 0111; CHECK-NEXT:    call void @llvm.assume(i1 [[B_POS]])112; CHECK-NEXT:    ret i1 true113;114  %ext = zext i8 %a to i16115  %a.uge.b = icmp uge i16 %ext, %b116  call void @llvm.assume(i1 %a.uge.b)117 118  %b.pos = icmp sge i16 %b, 0119  call void @llvm.assume(i1 %b.pos)120  %cmp = icmp sge i16 %ext, %b121  ret i1 %cmp122}123 124define i1 @sgt_0_unsigned_a_ugt_neg_10(i8 %a) {125; CHECK-LABEL: @sgt_0_unsigned_a_ugt_neg_10(126; CHECK-NEXT:    [[A_UGT_0:%.*]] = icmp ugt i8 [[A:%.*]], 10127; CHECK-NEXT:    call void @llvm.assume(i1 [[A_UGT_0]])128; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[A]] to i16129; CHECK-NEXT:    ret i1 true130;131  %a.ugt.0 = icmp ugt i8 %a, 10132  call void @llvm.assume(i1 %a.ugt.0)133  %ext = zext i8 %a to i16134  %cmp = icmp sgt i16 %ext, 0135  ret i1 %cmp136}137 138define i1 @sge_neg_1_sge_0_known(i8 %a) {139; CHECK-LABEL: @sge_neg_1_sge_0_known(140; CHECK-NEXT:    [[EXT:%.*]] = zext i8 [[A:%.*]] to i16141; CHECK-NEXT:    [[A_NE_0:%.*]] = icmp sge i16 [[EXT]], 0142; CHECK-NEXT:    call void @llvm.assume(i1 [[A_NE_0]])143; CHECK-NEXT:    ret i1 true144;145  %ext = zext i8 %a to i16146  %a.ne.0 = icmp sge i16 %ext, 0147  call void @llvm.assume(i1 %a.ne.0)148  %t = icmp sge i16 %ext, -1149  ret i1 %t150}151