brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · e81c5d7 Raw
89 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=ipsccp %s | FileCheck %s3 4declare void @use(i1)5 6define i1 @test1(i64 %x) {7; CHECK-LABEL: @test1(8; CHECK-NEXT:  entry:9; CHECK-NEXT:    [[COND:%.*]] = icmp ugt i64 [[X:%.*]], 6553510; CHECK-NEXT:    call void @llvm.assume(i1 [[COND]])11; CHECK-NEXT:    [[MASK:%.*]] = and i64 [[X]], -6552112; CHECK-NEXT:    ret i1 false13;14entry:15  %cond = icmp ugt i64 %x, 6553516  call void @llvm.assume(i1 %cond)17  %mask = and i64 %x, -6552118  %cmp = icmp eq i64 %mask, 019  ret i1 %cmp20}21 22define void @test.and(i64 %x, i64 %y) {23; CHECK-LABEL: @test.and(24; CHECK-NEXT:  entry:25; CHECK-NEXT:    [[C0:%.*]] = icmp uge i64 [[X:%.*]], 13826; CHECK-NEXT:    [[C1:%.*]] = icmp ule i64 [[X]], 16127; CHECK-NEXT:    call void @llvm.assume(i1 [[C0]])28; CHECK-NEXT:    call void @llvm.assume(i1 [[C1]])29; CHECK-NEXT:    [[C2:%.*]] = icmp uge i64 [[Y:%.*]], 18630; CHECK-NEXT:    [[C3:%.*]] = icmp ule i64 [[Y]], 18831; CHECK-NEXT:    call void @llvm.assume(i1 [[C2]])32; CHECK-NEXT:    call void @llvm.assume(i1 [[C3]])33; CHECK-NEXT:    [[AND:%.*]] = and i64 [[X]], [[Y]]34; CHECK-NEXT:    call void @use(i1 false)35; CHECK-NEXT:    [[R1:%.*]] = icmp ult i64 [[AND]], 13736; CHECK-NEXT:    call void @use(i1 [[R1]])37; CHECK-NEXT:    ret void38;39entry:40  %c0 = icmp uge i64 %x, 138 ; 0b1000101041  %c1 = icmp ule i64 %x, 161 ; 0b1010000042  call void @llvm.assume(i1 %c0)43  call void @llvm.assume(i1 %c1)44  %c2 = icmp uge i64 %y, 186 ; 0b1011101045  %c3 = icmp ule i64 %y, 188 ; 0b1011111046  call void @llvm.assume(i1 %c2)47  call void @llvm.assume(i1 %c3)48  %and = and i64 %x, %y49  %r0 = icmp ult i64 %and, 136 ; 0b1000100050  call void @use(i1 %r0) ; false51  %r1 = icmp ult i64 %and, 13752  call void @use(i1 %r1) ; unknown53  ret void54}55 56define void @test.or(i64 %x, i64 %y) {57; CHECK-LABEL: @test.or(58; CHECK-NEXT:  entry:59; CHECK-NEXT:    [[C0:%.*]] = icmp ule i64 [[X:%.*]], 11760; CHECK-NEXT:    [[C1:%.*]] = icmp uge i64 [[X]], 9561; CHECK-NEXT:    call void @llvm.assume(i1 [[C0]])62; CHECK-NEXT:    call void @llvm.assume(i1 [[C1]])63; CHECK-NEXT:    [[C2:%.*]] = icmp ule i64 [[Y:%.*]], 6964; CHECK-NEXT:    [[C3:%.*]] = icmp uge i64 [[Y]], 6765; CHECK-NEXT:    call void @llvm.assume(i1 [[C2]])66; CHECK-NEXT:    call void @llvm.assume(i1 [[C3]])67; CHECK-NEXT:    [[OR:%.*]] = or i64 [[X]], [[Y]]68; CHECK-NEXT:    call void @use(i1 false)69; CHECK-NEXT:    [[R1:%.*]] = icmp ugt i64 [[OR]], 11870; CHECK-NEXT:    call void @use(i1 [[R1]])71; CHECK-NEXT:    ret void72;73entry:74  %c0 = icmp ule i64 %x, 117 ; 0b0111010175  %c1 = icmp uge i64 %x, 95  ; 0b0101111176  call void @llvm.assume(i1 %c0)77  call void @llvm.assume(i1 %c1)78  %c2 = icmp ule i64 %y, 69  ; 0b0100010179  %c3 = icmp uge i64 %y, 67  ; 0b0100001180  call void @llvm.assume(i1 %c2)81  call void @llvm.assume(i1 %c3)82  %or = or i64 %x, %y83  %r0 = icmp ugt i64 %or, 119 ; 0b0111011184  call void @use(i1 %r0) ; false85  %r1 = icmp ugt i64 %or, 11886  call void @use(i1 %r1) ; unknown87  ret void88}89