@@ -61,6 +61,9 @@ define void @nw_implies_nsw(i16 %n) mustprogress {
6161; CHECK-NEXT: Loop %for.body: Predicated backedge-taken count is (128 + (-128 smax %n))
6262; CHECK-NEXT: Predicates:
6363; CHECK-NEXT: {-128,+,1}<%for.body> Added Flags: <nssw>
64+ ; CHECK-NEXT: Loop %for.body: Predicated symbolic max backedge-taken count is (128 + (-128 smax %n))
65+ ; CHECK-NEXT: Predicates:
66+ ; CHECK-NEXT: {-128,+,1}<%for.body> Added Flags: <nssw>
6467;
6568entry:
6669 br label %for.body
@@ -107,6 +110,9 @@ define void @actually_infinite() {
107110; CHECK-NEXT: Loop %for.body: Predicated backedge-taken count is i16 257
108111; CHECK-NEXT: Predicates:
109112; CHECK-NEXT: {0,+,1}<%for.body> Added Flags: <nusw>
113+ ; CHECK-NEXT: Loop %for.body: Predicated symbolic max backedge-taken count is i16 257
114+ ; CHECK-NEXT: Predicates:
115+ ; CHECK-NEXT: {0,+,1}<%for.body> Added Flags: <nusw>
110116;
111117entry:
112118 br label %for.body
@@ -132,6 +138,9 @@ define void @rhs_mustexit_1(i16 %n.raw) mustprogress {
132138; CHECK-NEXT: Loop %for.body: Predicated backedge-taken count is (-1 + (1 umax (-1 + (zext i8 (trunc i16 %n.raw to i8) to i16))<nsw>))
133139; CHECK-NEXT: Predicates:
134140; CHECK-NEXT: {1,+,1}<nw><%for.body> Added Flags: <nusw>
141+ ; CHECK-NEXT: Loop %for.body: Predicated symbolic max backedge-taken count is (-1 + (1 umax (-1 + (zext i8 (trunc i16 %n.raw to i8) to i16))<nsw>))
142+ ; CHECK-NEXT: Predicates:
143+ ; CHECK-NEXT: {1,+,1}<nw><%for.body> Added Flags: <nusw>
135144;
136145entry:
137146 %n.and = and i16 %n.raw , 255
@@ -233,6 +242,9 @@ define void @neg_rhs_wrong_range(i16 %n.raw) mustprogress {
233242; CHECK-NEXT: Loop %for.body: Predicated backedge-taken count is ((-1 + (2 umax (-1 + (zext i8 (trunc i16 %n.raw to i8) to i16))<nsw>)) /u 2)
234243; CHECK-NEXT: Predicates:
235244; CHECK-NEXT: {2,+,2}<nw><%for.body> Added Flags: <nusw>
245+ ; CHECK-NEXT: Loop %for.body: Predicated symbolic max backedge-taken count is ((-1 + (2 umax (-1 + (zext i8 (trunc i16 %n.raw to i8) to i16))<nsw>)) /u 2)
246+ ; CHECK-NEXT: Predicates:
247+ ; CHECK-NEXT: {2,+,2}<nw><%for.body> Added Flags: <nusw>
236248;
237249entry:
238250 %n.and = and i16 %n.raw , 255
@@ -260,6 +272,9 @@ define void @neg_rhs_maybe_infinite(i16 %n.raw) {
260272; CHECK-NEXT: Loop %for.body: Predicated backedge-taken count is (-1 + (1 umax (-1 + (zext i8 (trunc i16 %n.raw to i8) to i16))<nsw>))
261273; CHECK-NEXT: Predicates:
262274; CHECK-NEXT: {1,+,1}<%for.body> Added Flags: <nusw>
275+ ; CHECK-NEXT: Loop %for.body: Predicated symbolic max backedge-taken count is (-1 + (1 umax (-1 + (zext i8 (trunc i16 %n.raw to i8) to i16))<nsw>))
276+ ; CHECK-NEXT: Predicates:
277+ ; CHECK-NEXT: {1,+,1}<%for.body> Added Flags: <nusw>
263278;
264279entry:
265280 %n.and = and i16 %n.raw , 255
@@ -382,6 +397,9 @@ define void @ult_constant_rhs_stride2_neg(i16 %n.raw, i8 %start) {
382397; CHECK-NEXT: Loop %for.body: Predicated backedge-taken count is ((256 + (-1 * (zext i8 (2 + %start) to i16))<nsw>)<nsw> /u 2)
383398; CHECK-NEXT: Predicates:
384399; CHECK-NEXT: {(2 + %start),+,2}<%for.body> Added Flags: <nusw>
400+ ; CHECK-NEXT: Loop %for.body: Predicated symbolic max backedge-taken count is ((256 + (-1 * (zext i8 (2 + %start) to i16))<nsw>)<nsw> /u 2)
401+ ; CHECK-NEXT: Predicates:
402+ ; CHECK-NEXT: {(2 + %start),+,2}<%for.body> Added Flags: <nusw>
385403;
386404entry:
387405 br label %for.body
0 commit comments