1
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
1
2
; RUN: opt -instsimplify -S < %s | FileCheck %s
2
3
3
- ; CHECK-LABEL: @test1
4
4
define 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
+ ;
5
16
entry:
6
17
br label %loop
7
18
loop:
@@ -12,12 +23,23 @@ loop:
12
23
exit:
13
24
%add = or i8 %A , %r
14
25
%cmp = icmp eq i8 %add , 0
15
- ; CHECK: ret i1 false
16
26
ret i1 %cmp
17
27
}
18
28
19
- ; CHECK-LABEL: @test2
20
29
define 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
+ ;
21
43
entry:
22
44
br label %loop
23
45
loop:
@@ -28,12 +50,21 @@ loop:
28
50
exit:
29
51
%add = or i8 %A , %r
30
52
%cmp = icmp eq i8 %add , 0
31
- ; CHECK-NOT: ret i1 false
32
53
ret i1 %cmp
33
54
}
34
55
35
- ; CHECK-LABEL: @test3
36
56
define 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
+ ;
37
68
entry:
38
69
br label %loop
39
70
loop:
44
75
exit:
45
76
%add = or i8 %A , %r
46
77
%cmp = icmp eq i8 %add , 0
47
- ; CHECK: ret i1 false
48
78
ret i1 %cmp
49
79
}
0 commit comments