12d5820cdSPhilip Reames; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2*8ebb3eacSBjorn Pettersson; RUN: opt < %s -passes=correlated-propagation -S | FileCheck %s 32d5820cdSPhilip Reames 42d5820cdSPhilip Reamesdefine i32 @test(i32 %a) { 52d5820cdSPhilip Reames; CHECK-LABEL: @test( 62d5820cdSPhilip Reames; CHECK-NEXT: entry: 72d5820cdSPhilip Reames; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[A:%.*]], 128 82d5820cdSPhilip Reames; CHECK-NEXT: br i1 [[CMP]], label [[CONTINUE:%.*]], label [[EXIT:%.*]] 92d5820cdSPhilip Reames; CHECK: continue: 102d5820cdSPhilip Reames; CHECK-NEXT: ret i32 [[A]] 112d5820cdSPhilip Reames; CHECK: exit: 122d5820cdSPhilip Reames; CHECK-NEXT: ret i32 -1 132d5820cdSPhilip Reames; 142d5820cdSPhilip Reamesentry: 152d5820cdSPhilip Reames %cmp = icmp ult i32 %a, 128 162d5820cdSPhilip Reames br i1 %cmp, label %continue, label %exit 172d5820cdSPhilip Reamescontinue: 182d5820cdSPhilip Reames %and = and i32 %a, 255 192d5820cdSPhilip Reames ret i32 %and 202d5820cdSPhilip Reamesexit: 212d5820cdSPhilip Reames ret i32 -1 222d5820cdSPhilip Reames} 232d5820cdSPhilip Reames 242d5820cdSPhilip Reamesdefine i32 @test2(i32 %a) { 252d5820cdSPhilip Reames; CHECK-LABEL: @test2( 262d5820cdSPhilip Reames; CHECK-NEXT: entry: 272d5820cdSPhilip Reames; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[A:%.*]], 256 282d5820cdSPhilip Reames; CHECK-NEXT: br i1 [[CMP]], label [[CONTINUE:%.*]], label [[EXIT:%.*]] 292d5820cdSPhilip Reames; CHECK: continue: 302d5820cdSPhilip Reames; CHECK-NEXT: ret i32 [[A]] 312d5820cdSPhilip Reames; CHECK: exit: 322d5820cdSPhilip Reames; CHECK-NEXT: ret i32 -1 332d5820cdSPhilip Reames; 342d5820cdSPhilip Reamesentry: 352d5820cdSPhilip Reames %cmp = icmp ult i32 %a, 256 362d5820cdSPhilip Reames br i1 %cmp, label %continue, label %exit 372d5820cdSPhilip Reamescontinue: 382d5820cdSPhilip Reames %and = and i32 %a, 255 392d5820cdSPhilip Reames ret i32 %and 402d5820cdSPhilip Reamesexit: 412d5820cdSPhilip Reames ret i32 -1 422d5820cdSPhilip Reames} 432d5820cdSPhilip Reames 442d5820cdSPhilip Reamesdefine i32 @test3(i32 %a) { 452d5820cdSPhilip Reames; CHECK-LABEL: @test3( 462d5820cdSPhilip Reames; CHECK-NEXT: entry: 472d5820cdSPhilip Reames; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[A:%.*]], 256 482d5820cdSPhilip Reames; CHECK-NEXT: br i1 [[CMP]], label [[CONTINUE:%.*]], label [[EXIT:%.*]] 492d5820cdSPhilip Reames; CHECK: continue: 502d5820cdSPhilip Reames; CHECK-NEXT: ret i32 [[A]] 512d5820cdSPhilip Reames; CHECK: exit: 522d5820cdSPhilip Reames; CHECK-NEXT: ret i32 -1 532d5820cdSPhilip Reames; 542d5820cdSPhilip Reamesentry: 552d5820cdSPhilip Reames %cmp = icmp ult i32 %a, 256 562d5820cdSPhilip Reames br i1 %cmp, label %continue, label %exit 572d5820cdSPhilip Reamescontinue: 582d5820cdSPhilip Reames %and = and i32 %a, 1023 592d5820cdSPhilip Reames ret i32 %and 602d5820cdSPhilip Reamesexit: 612d5820cdSPhilip Reames ret i32 -1 622d5820cdSPhilip Reames} 632d5820cdSPhilip Reames 642d5820cdSPhilip Reames 652d5820cdSPhilip Reamesdefine i32 @neg1(i32 %a) { 662d5820cdSPhilip Reames; CHECK-LABEL: @neg1( 672d5820cdSPhilip Reames; CHECK-NEXT: entry: 682d5820cdSPhilip Reames; CHECK-NEXT: [[CMP:%.*]] = icmp ule i32 [[A:%.*]], 256 692d5820cdSPhilip Reames; CHECK-NEXT: br i1 [[CMP]], label [[CONTINUE:%.*]], label [[EXIT:%.*]] 702d5820cdSPhilip Reames; CHECK: continue: 712d5820cdSPhilip Reames; CHECK-NEXT: [[AND:%.*]] = and i32 [[A]], 255 722d5820cdSPhilip Reames; CHECK-NEXT: ret i32 [[AND]] 732d5820cdSPhilip Reames; CHECK: exit: 742d5820cdSPhilip Reames; CHECK-NEXT: ret i32 -1 752d5820cdSPhilip Reames; 762d5820cdSPhilip Reamesentry: 772d5820cdSPhilip Reames %cmp = icmp ule i32 %a, 256 782d5820cdSPhilip Reames br i1 %cmp, label %continue, label %exit 792d5820cdSPhilip Reamescontinue: 802d5820cdSPhilip Reames %and = and i32 %a, 255 812d5820cdSPhilip Reames ret i32 %and 822d5820cdSPhilip Reamesexit: 832d5820cdSPhilip Reames ret i32 -1 842d5820cdSPhilip Reames} 852d5820cdSPhilip Reames 862d5820cdSPhilip Reamesdefine i32 @neg2(i32 %a) { 872d5820cdSPhilip Reames; CHECK-LABEL: @neg2( 882d5820cdSPhilip Reames; CHECK-NEXT: entry: 892d5820cdSPhilip Reames; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[A:%.*]], 513 902d5820cdSPhilip Reames; CHECK-NEXT: br i1 [[CMP]], label [[CONTINUE:%.*]], label [[EXIT:%.*]] 912d5820cdSPhilip Reames; CHECK: continue: 922d5820cdSPhilip Reames; CHECK-NEXT: [[AND:%.*]] = and i32 [[A]], 255 932d5820cdSPhilip Reames; CHECK-NEXT: ret i32 [[AND]] 942d5820cdSPhilip Reames; CHECK: exit: 952d5820cdSPhilip Reames; CHECK-NEXT: ret i32 -1 962d5820cdSPhilip Reames; 972d5820cdSPhilip Reamesentry: 982d5820cdSPhilip Reames %cmp = icmp ult i32 %a, 513 992d5820cdSPhilip Reames br i1 %cmp, label %continue, label %exit 1002d5820cdSPhilip Reamescontinue: 1012d5820cdSPhilip Reames %and = and i32 %a, 255 1022d5820cdSPhilip Reames ret i32 %and 1032d5820cdSPhilip Reamesexit: 1042d5820cdSPhilip Reames ret i32 -1 1052d5820cdSPhilip Reames} 1062d5820cdSPhilip Reames 1072d5820cdSPhilip Reamesdefine i32 @neg3(i32 %a) { 1082d5820cdSPhilip Reames; CHECK-LABEL: @neg3( 1092d5820cdSPhilip Reames; CHECK-NEXT: entry: 1102d5820cdSPhilip Reames; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[A:%.*]], 256 1112d5820cdSPhilip Reames; CHECK-NEXT: br i1 [[CMP]], label [[CONTINUE:%.*]], label [[EXIT:%.*]] 1122d5820cdSPhilip Reames; CHECK: continue: 1132d5820cdSPhilip Reames; CHECK-NEXT: [[AND:%.*]] = and i32 [[A]], 254 1142d5820cdSPhilip Reames; CHECK-NEXT: ret i32 [[AND]] 1152d5820cdSPhilip Reames; CHECK: exit: 1162d5820cdSPhilip Reames; CHECK-NEXT: ret i32 -1 1172d5820cdSPhilip Reames; 1182d5820cdSPhilip Reamesentry: 1192d5820cdSPhilip Reames %cmp = icmp ult i32 %a, 256 1202d5820cdSPhilip Reames br i1 %cmp, label %continue, label %exit 1212d5820cdSPhilip Reamescontinue: 1222d5820cdSPhilip Reames %and = and i32 %a, 254 1232d5820cdSPhilip Reames ret i32 %and 1242d5820cdSPhilip Reamesexit: 1252d5820cdSPhilip Reames ret i32 -1 1262d5820cdSPhilip Reames} 127