[llvm] 987fe6f - [SCEV] Migrate a couple tests to be auto generated

Philip Reames via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 5 18:04:35 PST 2024


Author: Philip Reames
Date: 2024-03-05T18:04:30-08:00
New Revision: 987fe6fa507adb28602e84b471e6fe309830e361

URL: https://github.com/llvm/llvm-project/commit/987fe6fa507adb28602e84b471e6fe309830e361
DIFF: https://github.com/llvm/llvm-project/commit/987fe6fa507adb28602e84b471e6fe309830e361.diff

LOG: [SCEV] Migrate a couple tests to be auto generated

A few notes:
* pr34538.ll has bitrotten.  The original test printed the analysis after transforms in some cases, but this appears to been lost during migration to new pass manager.  Remove the now redundant pass invocations and simplify the test setup.

Added: 
    

Modified: 
    llvm/test/Analysis/ScalarEvolution/max-trip-count.ll
    llvm/test/Analysis/ScalarEvolution/pr34538.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Analysis/ScalarEvolution/max-trip-count.ll b/llvm/test/Analysis/ScalarEvolution/max-trip-count.ll
index 1f8746d0a4a27f..9cc49f2185f830 100644
--- a/llvm/test/Analysis/ScalarEvolution/max-trip-count.ll
+++ b/llvm/test/Analysis/ScalarEvolution/max-trip-count.ll
@@ -1,10 +1,19 @@
-; RUN: opt < %s -disable-output "-passes=print<scalar-evolution>" 2>&1 | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 4
+; RUN: opt < %s -disable-output "-passes=print<scalar-evolution>" -scalar-evolution-classify-expressions=0 2>&1 | FileCheck %s
 
 ; ScalarEvolution should be able to understand the loop and eliminate the casts.
 
-; CHECK: {%d,+,4}
 
 define void @foo(ptr nocapture %d, i32 %n) nounwind {
+; CHECK-LABEL: 'foo'
+; CHECK-NEXT:  Determining loop execution counts for: @foo
+; CHECK-NEXT:  Loop %bb: backedge-taken count is (-1 + %n)
+; CHECK-NEXT:  Loop %bb: constant max backedge-taken count is 2147483646
+; CHECK-NEXT:  Loop %bb: symbolic max backedge-taken count is (-1 + %n)
+; CHECK-NEXT:  Loop %bb: Predicated backedge-taken count is (-1 + %n)
+; CHECK-NEXT:   Predicates:
+; CHECK-NEXT:  Loop %bb: Trip multiple is 1
+;
 entry:
 	%0 = icmp sgt i32 %n, 0		; <i1> [#uses=1]
 	br i1 %0, label %bb.nph, label %return
@@ -39,12 +48,21 @@ return:		; preds = %bb1.return_crit_edge, %entry
 ; count, it should say so.
 
 ; PR7845
-; CHECK: Loop %for.cond: <multiple exits> Unpredictable backedge-taken count.
-; CHECK: Loop %for.cond: constant max backedge-taken count is 5
 
 @.str = private constant [4 x i8] c"%d\0A\00"     ; <ptr> [#uses=2]
 
 define i32 @main() nounwind {
+; CHECK-LABEL: 'main'
+; CHECK-NEXT:  Determining loop execution counts for: @main
+; CHECK-NEXT:  Loop %for.cond: <multiple exits> Unpredictable backedge-taken count.
+; CHECK-NEXT:    exit count for for.cond: 5
+; CHECK-NEXT:    exit count for for.body: ***COULDNOTCOMPUTE***
+; CHECK-NEXT:  Loop %for.cond: constant max backedge-taken count is 5
+; CHECK-NEXT:  Loop %for.cond: symbolic max backedge-taken count is 5
+; CHECK-NEXT:    symbolic max exit count for for.cond: 5
+; CHECK-NEXT:    symbolic max exit count for for.body: ***COULDNOTCOMPUTE***
+; CHECK-NEXT:  Loop %for.cond: Unpredictable predicated backedge-taken count.
+;
 entry:
   br label %for.cond
 
@@ -72,6 +90,15 @@ for.end:                                          ; preds = %for.body, %for.cond
 declare i32 @printf(ptr, ...)
 
 define void @test(ptr %a, i32 %n) nounwind {
+; CHECK-LABEL: 'test'
+; CHECK-NEXT:  Determining loop execution counts for: @test
+; CHECK-NEXT:  Loop %for.body: backedge-taken count is (-1 + (zext i32 %n to i64))<nsw>
+; CHECK-NEXT:  Loop %for.body: constant max backedge-taken count is 2147483646
+; CHECK-NEXT:  Loop %for.body: symbolic max backedge-taken count is (-1 + (zext i32 %n to i64))<nsw>
+; CHECK-NEXT:  Loop %for.body: Predicated backedge-taken count is (-1 + (zext i32 %n to i64))<nsw>
+; CHECK-NEXT:   Predicates:
+; CHECK-NEXT:  Loop %for.body: Trip multiple is 1
+;
 entry:
   %cmp1 = icmp sgt i32 %n, 0
   br i1 %cmp1, label %for.body.lr.ph, label %for.end
@@ -95,17 +122,22 @@ for.end:                                          ; preds = %for.cond.for.end_cr
   ret void
 }
 
-; CHECK: Determining loop execution counts for: @test
-; CHECK-NEXT: backedge-taken count is
-; CHECK-NEXT: constant max backedge-taken count is 2147483646
 
 ; PR19799: Indvars miscompile due to an incorrect max backedge taken count from SCEV.
-; CHECK-LABEL: @pr19799
-; CHECK: Loop %for.body.i: <multiple exits> Unpredictable backedge-taken count.
-; CHECK: Loop %for.body.i: constant max backedge-taken count is 1
 @a = common global i32 0, align 4
 
 define i32 @pr19799() {
+; CHECK-LABEL: 'pr19799'
+; CHECK-NEXT:  Determining loop execution counts for: @pr19799
+; CHECK-NEXT:  Loop %for.body.i: <multiple exits> Unpredictable backedge-taken count.
+; CHECK-NEXT:    exit count for for.body.i: ***COULDNOTCOMPUTE***
+; CHECK-NEXT:    exit count for for.cond.i: 1
+; CHECK-NEXT:  Loop %for.body.i: constant max backedge-taken count is 1
+; CHECK-NEXT:  Loop %for.body.i: symbolic max backedge-taken count is 1
+; CHECK-NEXT:    symbolic max exit count for for.body.i: ***COULDNOTCOMPUTE***
+; CHECK-NEXT:    symbolic max exit count for for.cond.i: 1
+; CHECK-NEXT:  Loop %for.body.i: Unpredictable predicated backedge-taken count.
+;
 entry:
   store i32 -1, ptr @a, align 4
   br label %for.body.i
@@ -126,12 +158,20 @@ bar.exit:                                         ; preds = %for.cond.i, %for.bo
 }
 
 ; PR18886: Indvars miscompile due to an incorrect max backedge taken count from SCEV.
-; CHECK-LABEL: @pr18886
-; CHECK: Loop %for.body: <multiple exits> Unpredictable backedge-taken count.
-; CHECK: Loop %for.body: constant max backedge-taken count is 3
 @aa = global i64 0, align 8
 
 define i32 @pr18886() {
+; CHECK-LABEL: 'pr18886'
+; CHECK-NEXT:  Determining loop execution counts for: @pr18886
+; CHECK-NEXT:  Loop %for.body: <multiple exits> Unpredictable backedge-taken count.
+; CHECK-NEXT:    exit count for for.body: ***COULDNOTCOMPUTE***
+; CHECK-NEXT:    exit count for for.cond: 3
+; CHECK-NEXT:  Loop %for.body: constant max backedge-taken count is 3
+; CHECK-NEXT:  Loop %for.body: symbolic max backedge-taken count is 3
+; CHECK-NEXT:    symbolic max exit count for for.body: ***COULDNOTCOMPUTE***
+; CHECK-NEXT:    symbolic max exit count for for.cond: 3
+; CHECK-NEXT:  Loop %for.body: Unpredictable predicated backedge-taken count.
+;
 entry:
   store i64 -21, ptr @aa, align 8
   br label %for.body
@@ -156,12 +196,20 @@ return:
 ; may-exit early exit that can only have one non-exiting iteration
 ; before the check is forever skipped.
 ;
-; CHECK-LABEL: @cannot_compute_mustexit
-; CHECK: Loop %for.body.i: <multiple exits> Unpredictable backedge-taken count.
-; CHECK: Loop %for.body.i: Unpredictable constant max backedge-taken count.
 @b = common global i32 0, align 4
 
 define i32 @cannot_compute_mustexit() {
+; CHECK-LABEL: 'cannot_compute_mustexit'
+; CHECK-NEXT:  Determining loop execution counts for: @cannot_compute_mustexit
+; CHECK-NEXT:  Loop %for.body.i: <multiple exits> Unpredictable backedge-taken count.
+; CHECK-NEXT:    exit count for for.body.i: ***COULDNOTCOMPUTE***
+; CHECK-NEXT:    exit count for for.cond.i: ***COULDNOTCOMPUTE***
+; CHECK-NEXT:  Loop %for.body.i: Unpredictable constant max backedge-taken count.
+; CHECK-NEXT:  Loop %for.body.i: Unpredictable symbolic max backedge-taken count.
+; CHECK-NEXT:    symbolic max exit count for for.body.i: ***COULDNOTCOMPUTE***
+; CHECK-NEXT:    symbolic max exit count for for.cond.i: ***COULDNOTCOMPUTE***
+; CHECK-NEXT:  Loop %for.body.i: Unpredictable predicated backedge-taken count.
+;
 entry:
   store i32 -1, ptr @a, align 4
   br label %for.body.i
@@ -185,10 +233,20 @@ bar.exit:                                         ; preds = %for.cond.i, %for.bo
 ; This loop has two must-exits, both of which dominate the latch. The
 ; MaxBECount should be the minimum of them.
 ;
-; CHECK-LABEL: @two_mustexit
-; CHECK: Loop %for.body.i: <multiple exits> backedge-taken count is 1
-; CHECK: Loop %for.body.i: constant max backedge-taken count is 1
 define i32 @two_mustexit() {
+; CHECK-LABEL: 'two_mustexit'
+; CHECK-NEXT:  Determining loop execution counts for: @two_mustexit
+; CHECK-NEXT:  Loop %for.body.i: <multiple exits> backedge-taken count is 1
+; CHECK-NEXT:    exit count for for.body.i: 1
+; CHECK-NEXT:    exit count for for.cond.i: 2
+; CHECK-NEXT:  Loop %for.body.i: constant max backedge-taken count is 1
+; CHECK-NEXT:  Loop %for.body.i: symbolic max backedge-taken count is 1
+; CHECK-NEXT:    symbolic max exit count for for.body.i: 1
+; CHECK-NEXT:    symbolic max exit count for for.cond.i: 2
+; CHECK-NEXT:  Loop %for.body.i: Predicated backedge-taken count is 1
+; CHECK-NEXT:   Predicates:
+; CHECK-NEXT:  Loop %for.body.i: Trip multiple is 1
+;
 entry:
   store i32 -1, ptr @a, align 4
   br label %for.body.i
@@ -208,9 +266,16 @@ bar.exit:                                         ; preds = %for.cond.i, %for.bo
   ret i32 0
 }
 
-; CHECK-LABEL: @ne_max_trip_count_1
-; CHECK: Loop %for.body: constant max backedge-taken count is 7
 define i32 @ne_max_trip_count_1(i32 %n) {
+; CHECK-LABEL: 'ne_max_trip_count_1'
+; CHECK-NEXT:  Determining loop execution counts for: @ne_max_trip_count_1
+; CHECK-NEXT:  Loop %for.body: backedge-taken count is (zext i3 (trunc i32 %n to i3) to i32)
+; CHECK-NEXT:  Loop %for.body: constant max backedge-taken count is 7
+; CHECK-NEXT:  Loop %for.body: symbolic max backedge-taken count is (zext i3 (trunc i32 %n to i3) to i32)
+; CHECK-NEXT:  Loop %for.body: Predicated backedge-taken count is (zext i3 (trunc i32 %n to i3) to i32)
+; CHECK-NEXT:   Predicates:
+; CHECK-NEXT:  Loop %for.body: Trip multiple is 1
+;
 entry:
   %masked = and i32 %n, 7
   br label %for.body
@@ -225,9 +290,16 @@ bar.exit:
   ret i32 0
 }
 
-; CHECK-LABEL: @ne_max_trip_count_2
-; CHECK: Loop %for.body: constant max backedge-taken count is -1
 define i32 @ne_max_trip_count_2(i32 %n) {
+; CHECK-LABEL: 'ne_max_trip_count_2'
+; CHECK-NEXT:  Determining loop execution counts for: @ne_max_trip_count_2
+; CHECK-NEXT:  Loop %for.body: backedge-taken count is (-1 + (zext i3 (trunc i32 %n to i3) to i32))<nsw>
+; CHECK-NEXT:  Loop %for.body: constant max backedge-taken count is -1
+; CHECK-NEXT:  Loop %for.body: symbolic max backedge-taken count is (-1 + (zext i3 (trunc i32 %n to i3) to i32))<nsw>
+; CHECK-NEXT:  Loop %for.body: Predicated backedge-taken count is (-1 + (zext i3 (trunc i32 %n to i3) to i32))<nsw>
+; CHECK-NEXT:   Predicates:
+; CHECK-NEXT:  Loop %for.body: Trip multiple is 1
+;
 entry:
   %masked = and i32 %n, 7
   br label %for.body
@@ -242,9 +314,16 @@ bar.exit:
   ret i32 0
 }
 
-; CHECK-LABEL: @ne_max_trip_count_3
-; CHECK: Loop %for.body: constant max backedge-taken count is 6
 define i32 @ne_max_trip_count_3(i32 %n) {
+; CHECK-LABEL: 'ne_max_trip_count_3'
+; CHECK-NEXT:  Determining loop execution counts for: @ne_max_trip_count_3
+; CHECK-NEXT:  Loop %for.body: backedge-taken count is (-1 + (zext i3 (trunc i32 %n to i3) to i32))<nsw>
+; CHECK-NEXT:  Loop %for.body: constant max backedge-taken count is 6
+; CHECK-NEXT:  Loop %for.body: symbolic max backedge-taken count is (-1 + (zext i3 (trunc i32 %n to i3) to i32))<nsw>
+; CHECK-NEXT:  Loop %for.body: Predicated backedge-taken count is (-1 + (zext i3 (trunc i32 %n to i3) to i32))<nsw>
+; CHECK-NEXT:   Predicates:
+; CHECK-NEXT:  Loop %for.body: Trip multiple is 1
+;
 entry:
   %masked = and i32 %n, 7
   %guard = icmp eq i32 %masked, 0
@@ -266,9 +345,16 @@ exit:
   ret i32 0
 }
 
-; CHECK-LABEL: @ne_max_trip_count_4
-; CHECK: Loop %for.body: constant max backedge-taken count is -2
 define i32 @ne_max_trip_count_4(i32 %n) {
+; CHECK-LABEL: 'ne_max_trip_count_4'
+; CHECK-NEXT:  Determining loop execution counts for: @ne_max_trip_count_4
+; CHECK-NEXT:  Loop %for.body: backedge-taken count is (-1 + %n)
+; CHECK-NEXT:  Loop %for.body: constant max backedge-taken count is -2
+; CHECK-NEXT:  Loop %for.body: symbolic max backedge-taken count is (-1 + %n)
+; CHECK-NEXT:  Loop %for.body: Predicated backedge-taken count is (-1 + %n)
+; CHECK-NEXT:   Predicates:
+; CHECK-NEXT:  Loop %for.body: Trip multiple is 1
+;
 entry:
   %guard = icmp eq i32 %n, 0
   br i1 %guard, label %exit, label %for.preheader
@@ -292,9 +378,13 @@ exit:
 ; The end bound of the loop can change between iterations, so the exact trip
 ; count is unknown, but SCEV can calculate the max trip count.
 define void @changing_end_bound(ptr %n_addr, ptr %addr) {
-; CHECK-LABEL: Determining loop execution counts for: @changing_end_bound
-; CHECK: Loop %loop: Unpredictable backedge-taken count.
-; CHECK: Loop %loop: constant max backedge-taken count is 2147483646
+; CHECK-LABEL: 'changing_end_bound'
+; CHECK-NEXT:  Determining loop execution counts for: @changing_end_bound
+; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.
+; CHECK-NEXT:  Loop %loop: constant max backedge-taken count is 2147483646
+; CHECK-NEXT:  Loop %loop: symbolic max backedge-taken count is 2147483646
+; CHECK-NEXT:  Loop %loop: Unpredictable predicated backedge-taken count.
+;
 entry:
   br label %loop
 
@@ -314,12 +404,16 @@ loop.exit:
 }
 
 ; Similar test as above, but unknown start value.
-; Also, there's no nsw on the iv.next, but SCEV knows 
+; Also, there's no nsw on the iv.next, but SCEV knows
 ; the termination condition is LT, so the IV cannot wrap.
 define void @changing_end_bound2(i32 %start, ptr %n_addr, ptr %addr) {
-; CHECK-LABEL: Determining loop execution counts for: @changing_end_bound2
-; CHECK: Loop %loop: Unpredictable backedge-taken count.
-; CHECK: Loop %loop: constant max backedge-taken count is -1
+; CHECK-LABEL: 'changing_end_bound2'
+; CHECK-NEXT:  Determining loop execution counts for: @changing_end_bound2
+; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.
+; CHECK-NEXT:  Loop %loop: constant max backedge-taken count is -1
+; CHECK-NEXT:  Loop %loop: symbolic max backedge-taken count is -1
+; CHECK-NEXT:  Loop %loop: Unpredictable predicated backedge-taken count.
+;
 entry:
   br label %loop
 
@@ -340,9 +434,13 @@ loop.exit:
 
 ; changing end bound and greater than one stride
 define void @changing_end_bound3(i32 %start, ptr %n_addr, ptr %addr) {
-; CHECK-LABEL: Determining loop execution counts for: @changing_end_bound3
-; CHECK: Loop %loop: Unpredictable backedge-taken count.
-; CHECK: Loop %loop: constant max backedge-taken count is 1073741822
+; CHECK-LABEL: 'changing_end_bound3'
+; CHECK-NEXT:  Determining loop execution counts for: @changing_end_bound3
+; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.
+; CHECK-NEXT:  Loop %loop: constant max backedge-taken count is 1073741823
+; CHECK-NEXT:  Loop %loop: symbolic max backedge-taken count is 1073741823
+; CHECK-NEXT:  Loop %loop: Unpredictable predicated backedge-taken count.
+;
 entry:
   br label %loop
 
@@ -364,9 +462,13 @@ loop.exit:
 ; same as above test, but the IV can wrap around.
 ; so the max backedge taken count is unpredictable.
 define void @changing_end_bound4(i32 %start, ptr %n_addr, ptr %addr) {
-; CHECK-LABEL: Determining loop execution counts for: @changing_end_bound4
-; CHECK: Loop %loop: Unpredictable backedge-taken count.
-; CHECK: Loop %loop: Unpredictable constant max backedge-taken count.
+; CHECK-LABEL: 'changing_end_bound4'
+; CHECK-NEXT:  Determining loop execution counts for: @changing_end_bound4
+; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.
+; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.
+; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.
+; CHECK-NEXT:  Loop %loop: Unpredictable predicated backedge-taken count.
+;
 entry:
   br label %loop
 
@@ -388,9 +490,13 @@ loop.exit:
 ; unknown stride. Since it's not knownPositive, we do not estimate the max
 ; backedge taken count.
 define void @changing_end_bound5(i32 %stride, i32 %start, ptr %n_addr, ptr %addr) {
-; CHECK-LABEL: Determining loop execution counts for: @changing_end_bound5
-; CHECK: Loop %loop: Unpredictable backedge-taken count.
-; CHECK: Loop %loop: Unpredictable constant max backedge-taken count.
+; CHECK-LABEL: 'changing_end_bound5'
+; CHECK-NEXT:  Determining loop execution counts for: @changing_end_bound5
+; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.
+; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.
+; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.
+; CHECK-NEXT:  Loop %loop: Unpredictable predicated backedge-taken count.
+;
 entry:
   br label %loop
 
@@ -411,9 +517,13 @@ loop.exit:
 
 ; negative stride value
 define void @changing_end_bound6(i32 %start, ptr %n_addr, ptr %addr) {
-; CHECK-LABEL: Determining loop execution counts for: @changing_end_bound6
-; CHECK: Loop %loop: Unpredictable backedge-taken count.
-; CHECK: Loop %loop: Unpredictable constant max backedge-taken count.
+; CHECK-LABEL: 'changing_end_bound6'
+; CHECK-NEXT:  Determining loop execution counts for: @changing_end_bound6
+; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.
+; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.
+; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.
+; CHECK-NEXT:  Loop %loop: Unpredictable predicated backedge-taken count.
+;
 entry:
   br label %loop
 
@@ -434,9 +544,13 @@ loop.exit:
 
 ; sgt with negative stride
 define void @changing_end_bound7(i32 %start, ptr %n_addr, ptr %addr) {
-; CHECK-LABEL: Determining loop execution counts for: @changing_end_bound7
-; CHECK: Loop %loop: Unpredictable backedge-taken count.
-; CHECK: Loop %loop: Unpredictable constant max backedge-taken count.
+; CHECK-LABEL: 'changing_end_bound7'
+; CHECK-NEXT:  Determining loop execution counts for: @changing_end_bound7
+; CHECK-NEXT:  Loop %loop: Unpredictable backedge-taken count.
+; CHECK-NEXT:  Loop %loop: Unpredictable constant max backedge-taken count.
+; CHECK-NEXT:  Loop %loop: Unpredictable symbolic max backedge-taken count.
+; CHECK-NEXT:  Loop %loop: Unpredictable predicated backedge-taken count.
+;
 entry:
   br label %loop
 
@@ -456,9 +570,15 @@ loop.exit:
 }
 
 define void @max_overflow_se(i8 %n) mustprogress {
-; CHECK-LABEL: Determining loop execution counts for: @max_overflow_se
-; CHECK: Loop %loop: backedge-taken count is 0
-; CHECK: Loop %loop: constant max backedge-taken count is 0
+; CHECK-LABEL: 'max_overflow_se'
+; CHECK-NEXT:  Determining loop execution counts for: @max_overflow_se
+; CHECK-NEXT:  Loop %loop: backedge-taken count is 0
+; CHECK-NEXT:  Loop %loop: constant max backedge-taken count is 0
+; CHECK-NEXT:  Loop %loop: symbolic max backedge-taken count is 0
+; CHECK-NEXT:  Loop %loop: Predicated backedge-taken count is 0
+; CHECK-NEXT:   Predicates:
+; CHECK-NEXT:  Loop %loop: Trip multiple is 1
+;
 entry:
   br label %loop
 
@@ -475,11 +595,17 @@ exit:
 ; Show that we correctly realize that %i can overflow here as long as
 ; the early exit is taken before we branch on poison.
 define void @max_overflow_me(i8 %n) mustprogress {
-; CHECK-LABEL: Determining loop execution counts for: @max_overflow_me
-; CHECK: Loop %loop: <multiple exits> Unpredictable backedge-taken count.
-; CHECK:   exit count for loop: 1
-; CHECK:   exit count for latch: ***COULDNOTCOMPUTE***
-; CHECK: Loop %loop: constant max backedge-taken count is 1
+; CHECK-LABEL: 'max_overflow_me'
+; CHECK-NEXT:  Determining loop execution counts for: @max_overflow_me
+; CHECK-NEXT:  Loop %loop: <multiple exits> Unpredictable backedge-taken count.
+; CHECK-NEXT:    exit count for loop: 1
+; CHECK-NEXT:    exit count for latch: ***COULDNOTCOMPUTE***
+; CHECK-NEXT:  Loop %loop: constant max backedge-taken count is 1
+; CHECK-NEXT:  Loop %loop: symbolic max backedge-taken count is 1
+; CHECK-NEXT:    symbolic max exit count for loop: 1
+; CHECK-NEXT:    symbolic max exit count for latch: ***COULDNOTCOMPUTE***
+; CHECK-NEXT:  Loop %loop: Unpredictable predicated backedge-taken count.
+;
 entry:
   br label %loop
 
@@ -501,9 +627,15 @@ exit:
 
 ; Max backedge-taken count is zero.
 define void @bool_stride(i1 %s, i1 %n) mustprogress {
-; CHECK-LABEL: Determining loop execution counts for: @bool_stride
-; CHECK: Loop %loop: backedge-taken count is false
-; CHECK: Loop %loop: constant max backedge-taken count is false
+; CHECK-LABEL: 'bool_stride'
+; CHECK-NEXT:  Determining loop execution counts for: @bool_stride
+; CHECK-NEXT:  Loop %loop: backedge-taken count is false
+; CHECK-NEXT:  Loop %loop: constant max backedge-taken count is false
+; CHECK-NEXT:  Loop %loop: symbolic max backedge-taken count is false
+; CHECK-NEXT:  Loop %loop: Predicated backedge-taken count is false
+; CHECK-NEXT:   Predicates:
+; CHECK-NEXT:  Loop %loop: Trip multiple is 1
+;
 entry:
   br label %loop
 
@@ -521,9 +653,15 @@ exit:
 ; able to prove a zero btc, but our symbolic logic doesn't due to a lack
 ; of context sensativity.
 define void @ne_zero_max_btc(i32 %a) {
-; CHECK-LABEL: Determining loop execution counts for: @ne_zero_max_btc
-; CHECK: Loop %for.body: backedge-taken count is 0
-; CHECK: Loop %for.body: constant max backedge-taken count is 0
+; CHECK-LABEL: 'ne_zero_max_btc'
+; CHECK-NEXT:  Determining loop execution counts for: @ne_zero_max_btc
+; CHECK-NEXT:  Loop %for.body: backedge-taken count is 0
+; CHECK-NEXT:  Loop %for.body: constant max backedge-taken count is 0
+; CHECK-NEXT:  Loop %for.body: symbolic max backedge-taken count is 0
+; CHECK-NEXT:  Loop %for.body: Predicated backedge-taken count is 0
+; CHECK-NEXT:   Predicates:
+; CHECK-NEXT:  Loop %for.body: Trip multiple is 1
+;
 entry:
   %cmp = icmp slt i32 %a, 1
   %spec.select = select i1 %cmp, i32 %a, i32 1

diff  --git a/llvm/test/Analysis/ScalarEvolution/pr34538.ll b/llvm/test/Analysis/ScalarEvolution/pr34538.ll
index 3ac3d29016cef9..762bbde2bf756a 100644
--- a/llvm/test/Analysis/ScalarEvolution/pr34538.ll
+++ b/llvm/test/Analysis/ScalarEvolution/pr34538.ll
@@ -1,10 +1,16 @@
-; RUN: opt "-passes=print<scalar-evolution>,loop(loop-deletion),simplifycfg" -disable-output < %s 2>&1 | FileCheck %s --check-prefix=CHECK-ANALYSIS-1
-; RUN: opt -disable-output "-passes=print<scalar-evolution>" < %s 2>&1 | FileCheck %s --check-prefix=CHECK-ANALYSIS-2
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 4
+; RUN: opt -disable-output "-passes=print<scalar-evolution>"  -scalar-evolution-classify-expressions=0 < %s 2>&1 | FileCheck %s
 
 define i32 @pr34538() local_unnamed_addr #0 {
-; CHECK-ANALYSIS-1: Loop %do.body: backedge-taken count is 10000
-; CHECK-ANALYSIS-1: Loop %do.body: constant max backedge-taken count is 10000
-; CHECK-ANALYSIS-1: Loop %do.body: Predicated backedge-taken count is 10000
+; CHECK-LABEL: 'pr34538'
+; CHECK-NEXT:  Determining loop execution counts for: @pr34538
+; CHECK-NEXT:  Loop %do.body: backedge-taken count is 10000
+; CHECK-NEXT:  Loop %do.body: constant max backedge-taken count is 10000
+; CHECK-NEXT:  Loop %do.body: symbolic max backedge-taken count is 10000
+; CHECK-NEXT:  Loop %do.body: Predicated backedge-taken count is 10000
+; CHECK-NEXT:   Predicates:
+; CHECK-NEXT:  Loop %do.body: Trip multiple is 10001
+;
 entry:
   br label %do.body
 
@@ -21,6 +27,15 @@ do.end:                                           ; preds = %do.body
 
 
 define i32 @foo() {
+; CHECK-LABEL: 'foo'
+; CHECK-NEXT:  Determining loop execution counts for: @foo
+; CHECK-NEXT:  Loop %do.body: backedge-taken count is 5000
+; CHECK-NEXT:  Loop %do.body: constant max backedge-taken count is 5000
+; CHECK-NEXT:  Loop %do.body: symbolic max backedge-taken count is 5000
+; CHECK-NEXT:  Loop %do.body: Predicated backedge-taken count is 5000
+; CHECK-NEXT:   Predicates:
+; CHECK-NEXT:  Loop %do.body: Trip multiple is 5001
+;
 entry:
   br label %do.body
 
@@ -33,7 +48,4 @@ do.body:                                          ; preds = %do.body, %entry
 
 do.end:                                           ; preds = %do.body
   ret i32 0
-; CHECK-ANALYSIS-2: Loop %do.body: backedge-taken count is 5000
-; CHECK-ANALYSIS-2: Loop %do.body: constant max backedge-taken count is 5000
-; CHECK-ANALYSIS-2: Loop %do.body: Predicated backedge-taken count is 5000
 }


        


More information about the llvm-commits mailing list