xref: /llvm-project/llvm/test/Transforms/CorrelatedValuePropagation/and.ll (revision 8ebb3eac02a926ffa4298c12834c57aefb2e8579)
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