1+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
12; RUN: opt -instsimplify -S < %s | FileCheck %s
23
3- ; CHECK-LABEL: @test1
44define i1 @test1 (i8 %p , i8* %pq , i8 %n , i8 %r ) {
5+ ; CHECK-LABEL: @test1(
6+ ; CHECK-NEXT: entry:
7+ ; CHECK-NEXT: br label [[LOOP:%.*]]
8+ ; CHECK: loop:
9+ ; CHECK-NEXT: [[A:%.*]] = phi i8 [ 1, [[ENTRY:%.*]] ], [ [[NEXT:%.*]], [[LOOP]] ]
10+ ; CHECK-NEXT: [[NEXT]] = add nsw i8 [[A]], 1
11+ ; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 [[A]], [[N:%.*]]
12+ ; CHECK-NEXT: br i1 [[CMP1]], label [[EXIT:%.*]], label [[LOOP]]
13+ ; CHECK: exit:
14+ ; CHECK-NEXT: ret i1 false
15+ ;
516entry:
617 br label %loop
718loop:
@@ -12,12 +23,23 @@ loop:
1223exit:
1324 %add = or i8 %A , %r
1425 %cmp = icmp eq i8 %add , 0
15- ; CHECK: ret i1 false
1626 ret i1 %cmp
1727}
1828
19- ; CHECK-LABEL: @test2
2029define i1 @test2 (i8 %p , i8* %pq , i8 %n , i8 %r ) {
30+ ; CHECK-LABEL: @test2(
31+ ; CHECK-NEXT: entry:
32+ ; CHECK-NEXT: br label [[LOOP:%.*]]
33+ ; CHECK: loop:
34+ ; CHECK-NEXT: [[A:%.*]] = phi i8 [ 1, [[ENTRY:%.*]] ], [ [[NEXT:%.*]], [[LOOP]] ]
35+ ; CHECK-NEXT: [[NEXT]] = add i8 [[A]], 1
36+ ; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 [[A]], [[N:%.*]]
37+ ; CHECK-NEXT: br i1 [[CMP1]], label [[EXIT:%.*]], label [[LOOP]]
38+ ; CHECK: exit:
39+ ; CHECK-NEXT: [[ADD:%.*]] = or i8 [[A]], [[R:%.*]]
40+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[ADD]], 0
41+ ; CHECK-NEXT: ret i1 [[CMP]]
42+ ;
2143entry:
2244 br label %loop
2345loop:
@@ -28,12 +50,21 @@ loop:
2850exit:
2951 %add = or i8 %A , %r
3052 %cmp = icmp eq i8 %add , 0
31- ; CHECK-NOT: ret i1 false
3253 ret i1 %cmp
3354}
3455
35- ; CHECK-LABEL: @test3
3656define i1 @test3 (i8 %p , i8* %pq , i8 %n , i8 %r ) {
57+ ; CHECK-LABEL: @test3(
58+ ; CHECK-NEXT: entry:
59+ ; CHECK-NEXT: br label [[LOOP:%.*]]
60+ ; CHECK: loop:
61+ ; CHECK-NEXT: [[A:%.*]] = phi i8 [ 1, [[ENTRY:%.*]] ], [ [[NEXT:%.*]], [[LOOP]] ]
62+ ; CHECK-NEXT: [[NEXT]] = add nuw i8 [[A]], 1
63+ ; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 [[A]], [[N:%.*]]
64+ ; CHECK-NEXT: br i1 [[CMP1]], label [[EXIT:%.*]], label [[LOOP]]
65+ ; CHECK: exit:
66+ ; CHECK-NEXT: ret i1 false
67+ ;
3768entry:
3869 br label %loop
3970loop:
4475exit:
4576 %add = or i8 %A , %r
4677 %cmp = icmp eq i8 %add , 0
47- ; CHECK: ret i1 false
4878 ret i1 %cmp
4979}
0 commit comments