@@ -7,14 +7,14 @@ define void @implied1(i32 %n) {
77; CHECK-LABEL: 'implied1'
88; CHECK-NEXT: Determining loop execution counts for: @implied1
99; CHECK-NEXT: Loop %header: backedge-taken count is (-2 + %n)
10- ; CHECK-NEXT: Loop %header: constant max backedge-taken count is i32 2147483646
10+ ; CHECK-NEXT: Loop %header: constant max backedge-taken count is i32 2147483645
1111; CHECK-NEXT: Loop %header: symbolic max backedge-taken count is (-2 + %n)
1212; CHECK-NEXT: Loop %header: Trip multiple is 1
1313;
1414entry:
1515 %cmp1 = icmp sgt i32 %n , 1
1616 %n.minus.1 = sub nsw i32 %n , 1
17- call void ( i1 , ...) @llvm.experimental.guard (i1 %cmp1 ) [ "deopt" () ]
17+ call void @llvm.assume (i1 %cmp1 )
1818 br label %header
1919
2020header:
@@ -31,15 +31,15 @@ define void @implied1_neg(i32 %n) {
3131; Prove that (n > 0) =\=> (n - 1 > 0).
3232; CHECK-LABEL: 'implied1_neg'
3333; CHECK-NEXT: Determining loop execution counts for: @implied1_neg
34- ; CHECK-NEXT: Loop %header: backedge-taken count is (-1 + (1 smax (-1 + %n)))<nsw>
35- ; CHECK-NEXT: Loop %header: constant max backedge-taken count is i32 2147483646
36- ; CHECK-NEXT: Loop %header: symbolic max backedge-taken count is (-1 + (1 smax (-1 + %n)))<nsw>
34+ ; CHECK-NEXT: Loop %header: backedge-taken count is (-1 + (1 smax (-1 + %n)<nsw> ))<nsw>
35+ ; CHECK-NEXT: Loop %header: constant max backedge-taken count is i32 2147483645
36+ ; CHECK-NEXT: Loop %header: symbolic max backedge-taken count is (-1 + (1 smax (-1 + %n)<nsw> ))<nsw>
3737; CHECK-NEXT: Loop %header: Trip multiple is 1
3838;
3939entry:
4040 %cmp1 = icmp sgt i32 %n , 0
4141 %n.minus.1 = sub nsw i32 %n , 1
42- call void ( i1 , ...) @llvm.experimental.guard (i1 %cmp1 ) [ "deopt" () ]
42+ call void @llvm.assume (i1 %cmp1 )
4343 br label %header
4444
4545header:
@@ -56,15 +56,23 @@ define void @implied2(i32 %n) {
5656; Prove that (n >= -1) ===> (n + 1 >= 0).
5757; CHECK-LABEL: 'implied2'
5858; CHECK-NEXT: Determining loop execution counts for: @implied2
59- ; CHECK-NEXT: Loop %header: backedge-taken count is (zext i32 (1 + %n) to i64)
60- ; CHECK-NEXT: Loop %header: constant max backedge-taken count is i64 4294967295
61- ; CHECK-NEXT: Loop %header: symbolic max backedge-taken count is (zext i32 (1 + %n) to i64)
62- ; CHECK-NEXT: Loop %header: Trip multiple is 1
59+ ; CHECK-NEXT: Loop %header: Unpredictable backedge-taken count.
60+ ; CHECK-NEXT: Loop %header: Unpredictable constant max backedge-taken count.
61+ ; CHECK-NEXT: Loop %header: Unpredictable symbolic max backedge-taken count.
62+ ; CHECK-NEXT: Loop %header: Predicated backedge-taken count is (1 + (zext i32 %n to i64))<nuw><nsw>
63+ ; CHECK-NEXT: Predicates:
64+ ; CHECK-NEXT: {1,+,1}<%header> Added Flags: <nusw>
65+ ; CHECK-NEXT: Loop %header: Predicated constant max backedge-taken count is i64 4294967296
66+ ; CHECK-NEXT: Predicates:
67+ ; CHECK-NEXT: {1,+,1}<%header> Added Flags: <nusw>
68+ ; CHECK-NEXT: Loop %header: Predicated symbolic max backedge-taken count is (1 + (zext i32 %n to i64))<nuw><nsw>
69+ ; CHECK-NEXT: Predicates:
70+ ; CHECK-NEXT: {1,+,1}<%header> Added Flags: <nusw>
6371;
6472entry:
6573 %cmp1 = icmp uge i32 %n , -1
6674 %n.1 = add nuw i32 %n , 1
67- call void ( i1 , ...) @llvm.experimental.guard (i1 %cmp1 ) [ "deopt" () ]
75+ call void @llvm.assume (i1 %cmp1 )
6876 br label %header
6977
7078header:
@@ -81,23 +89,15 @@ define void @implied2_neg(i32 %n) {
8189; Prove that (n >= -1) =\=> (n - 1 >= 0).
8290; CHECK-LABEL: 'implied2_neg'
8391; CHECK-NEXT: Determining loop execution counts for: @implied2_neg
84- ; CHECK-NEXT: Loop %header: Unpredictable backedge-taken count.
85- ; CHECK-NEXT: Loop %header: Unpredictable constant max backedge-taken count.
86- ; CHECK-NEXT: Loop %header: Unpredictable symbolic max backedge-taken count.
87- ; CHECK-NEXT: Loop %header: Predicated backedge-taken count is (-1 + (1 smax (1 + (sext i32 (-1 + %n) to i64))<nsw>))<nsw>
88- ; CHECK-NEXT: Predicates:
89- ; CHECK-NEXT: {1,+,1}<%header> Added Flags: <nssw>
90- ; CHECK-NEXT: Loop %header: Predicated constant max backedge-taken count is i64 2147483647
91- ; CHECK-NEXT: Predicates:
92- ; CHECK-NEXT: {1,+,1}<%header> Added Flags: <nssw>
93- ; CHECK-NEXT: Loop %header: Predicated symbolic max backedge-taken count is (-1 + (1 smax (1 + (sext i32 (-1 + %n) to i64))<nsw>))<nsw>
94- ; CHECK-NEXT: Predicates:
95- ; CHECK-NEXT: {1,+,1}<%header> Added Flags: <nssw>
92+ ; CHECK-NEXT: Loop %header: backedge-taken count is (-1 + (1 smax %n))<nsw>
93+ ; CHECK-NEXT: Loop %header: constant max backedge-taken count is i32 2147483646
94+ ; CHECK-NEXT: Loop %header: symbolic max backedge-taken count is (-1 + (1 smax %n))<nsw>
95+ ; CHECK-NEXT: Loop %header: Trip multiple is 1
9696;
9797entry:
9898 %cmp1 = icmp uge i32 %n , -1
9999 %n.minus.1 = sub nuw nsw i32 %n , 1
100- call void ( i1 , ...) @llvm.experimental.guard (i1 %cmp1 ) [ "deopt" () ]
100+ call void @llvm.assume (i1 %cmp1 )
101101 br label %header
102102
103103header:
0 commit comments