summaryrefslogtreecommitdiffstats
path: root/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Analysis/ScalarEvolution/trip-count9.ll')
-rw-r--r--llvm/test/Analysis/ScalarEvolution/trip-count9.ll263
1 files changed, 188 insertions, 75 deletions
diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
index 9a080b34743..d0fb51a1ee5 100644
--- a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
+++ b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
@@ -1,4 +1,5 @@
-; RUN: opt -analyze -scalar-evolution -S < %s | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
+; RUN: opt -analyze -scalar-evolution -S -scalar-evolution-classify-expressions=0 < %s | FileCheck %s
; Every combination of
; - starting at 0, 1, or %x
@@ -8,10 +9,15 @@
; Some of these represent missed opportunities.
-; CHECK: Determining loop execution counts for: @foo
-; CHECK: Loop %loop: backedge-taken count is (-1 + %n)
-; CHECK: Loop %loop: max backedge-taken count is 6
define void @foo(i4 %n) {
+; CHECK-LABEL: 'foo'
+; CHECK-NEXT: Determining loop execution counts for: @foo
+; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + %n)
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 6
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-1 + %n)
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%s = icmp sgt i4 %n, 0
br i1 %s, label %loop, label %exit
@@ -24,10 +30,13 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @step2
-; CHECK: Loop %loop: Unpredictable backedge-taken count.
-; CHECK: Loop %loop: Unpredictable max backedge-taken count.
define void @step2(i4 %n) {
+; CHECK-LABEL: 'step2'
+; CHECK-NEXT: Determining loop execution counts for: @step2
+; CHECK-NEXT: Loop %loop: Unpredictable backedge-taken count.
+; CHECK-NEXT: Loop %loop: Unpredictable max backedge-taken count.
+; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
+;
entry:
%s = icmp sgt i4 %n, 0
br i1 %s, label %loop, label %exit
@@ -40,10 +49,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @start1
-; CHECK: Loop %loop: backedge-taken count is (-2 + (2 smax %n))
-; CHECK: Loop %loop: max backedge-taken count is 5
define void @start1(i4 %n) {
+; CHECK-LABEL: 'start1'
+; CHECK-NEXT: Determining loop execution counts for: @start1
+; CHECK-NEXT: Loop %loop: backedge-taken count is (-2 + (2 smax %n))<nsw>
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 5
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-2 + (2 smax %n))<nsw>
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%s = icmp sgt i4 %n, 0
br i1 %s, label %loop, label %exit
@@ -56,10 +70,13 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @start1_step2
-; CHECK: Loop %loop: Unpredictable backedge-taken count.
-; CHECK: Loop %loop: Unpredictable max backedge-taken count.
define void @start1_step2(i4 %n) {
+; CHECK-LABEL: 'start1_step2'
+; CHECK-NEXT: Determining loop execution counts for: @start1_step2
+; CHECK-NEXT: Loop %loop: Unpredictable backedge-taken count.
+; CHECK-NEXT: Loop %loop: Unpredictable max backedge-taken count.
+; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
+;
entry:
%s = icmp sgt i4 %n, 0
br i1 %s, label %loop, label %exit
@@ -72,10 +89,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @startx
-; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax %n))
-; CHECK: Loop %loop: max backedge-taken count is -1
define void @startx(i4 %n, i4 %x) {
+; CHECK-LABEL: 'startx'
+; CHECK-NEXT: Determining loop execution counts for: @startx
+; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax %n))
+; CHECK-NEXT: Loop %loop: max backedge-taken count is -1
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax %n))
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%s = icmp sgt i4 %n, 0
br i1 %s, label %loop, label %exit
@@ -88,10 +110,13 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @startx_step2
-; CHECK: Loop %loop: Unpredictable backedge-taken count.
-; CHECK: Loop %loop: Unpredictable max backedge-taken count.
define void @startx_step2(i4 %n, i4 %x) {
+; CHECK-LABEL: 'startx_step2'
+; CHECK-NEXT: Determining loop execution counts for: @startx_step2
+; CHECK-NEXT: Loop %loop: Unpredictable backedge-taken count.
+; CHECK-NEXT: Loop %loop: Unpredictable max backedge-taken count.
+; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
+;
entry:
%s = icmp sgt i4 %n, 0
br i1 %s, label %loop, label %exit
@@ -104,10 +129,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @nsw
-; CHECK: Loop %loop: backedge-taken count is (-1 + %n)
-; CHECK: Loop %loop: max backedge-taken count is 6
define void @nsw(i4 %n) {
+; CHECK-LABEL: 'nsw'
+; CHECK-NEXT: Determining loop execution counts for: @nsw
+; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + %n)
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 6
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-1 + %n)
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%s = icmp sgt i4 %n, 0
br i1 %s, label %loop, label %exit
@@ -128,11 +158,15 @@ exit:
; (b) the return instruction enacts a side effect that is control
; dependent on the poison value.
;
-; CHECK-LABEL: nsw_step2
-; CHECK: Determining loop execution counts for: @nsw_step2
-; CHECK: Loop %loop: backedge-taken count is ((-1 + %n) /u 2)
-; CHECK: Loop %loop: max backedge-taken count is 2
define void @nsw_step2(i4 %n) {
+; CHECK-LABEL: 'nsw_step2'
+; CHECK-NEXT: Determining loop execution counts for: @nsw_step2
+; CHECK-NEXT: Loop %loop: backedge-taken count is ((-1 + %n) /u 2)
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 2
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is ((-1 + %n) /u 2)
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%s = icmp sgt i4 %n, 0
br i1 %s, label %loop, label %exit
@@ -145,11 +179,15 @@ exit:
ret void
}
-; CHECK-LABEL: nsw_start1
-; CHECK: Determining loop execution counts for: @nsw_start1
-; CHECK: Loop %loop: backedge-taken count is (-2 + (2 smax %n))
-; CHECK: Loop %loop: max backedge-taken count is 5
define void @nsw_start1(i4 %n) {
+; CHECK-LABEL: 'nsw_start1'
+; CHECK-NEXT: Determining loop execution counts for: @nsw_start1
+; CHECK-NEXT: Loop %loop: backedge-taken count is (-2 + (2 smax %n))<nsw>
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 5
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-2 + (2 smax %n))<nsw>
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%s = icmp sgt i4 %n, 0
br i1 %s, label %loop, label %exit
@@ -162,10 +200,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @nsw_start1_step2
-; CHECK: Loop %loop: backedge-taken count is ((-2 + (3 smax %n)) /u 2)
-; CHECK: Loop %loop: max backedge-taken count is 2
define void @nsw_start1_step2(i4 %n) {
+; CHECK-LABEL: 'nsw_start1_step2'
+; CHECK-NEXT: Determining loop execution counts for: @nsw_start1_step2
+; CHECK-NEXT: Loop %loop: backedge-taken count is ((-2 + (3 smax %n)) /u 2)
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 2
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is ((-2 + (3 smax %n)) /u 2)
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%s = icmp sgt i4 %n, 0
br i1 %s, label %loop, label %exit
@@ -178,10 +221,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @nsw_startx
-; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax %n))
-; CHECK: Loop %loop: max backedge-taken count is -1
define void @nsw_startx(i4 %n, i4 %x) {
+; CHECK-LABEL: 'nsw_startx'
+; CHECK-NEXT: Determining loop execution counts for: @nsw_startx
+; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax %n))
+; CHECK-NEXT: Loop %loop: max backedge-taken count is -1
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax %n))
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%s = icmp sgt i4 %n, 0
br i1 %s, label %loop, label %exit
@@ -194,10 +242,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @nsw_startx_step2
-; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax %n)) /u 2)
-; CHECK: Loop %loop: max backedge-taken count is 7
define void @nsw_startx_step2(i4 %n, i4 %x) {
+; CHECK-LABEL: 'nsw_startx_step2'
+; CHECK-NEXT: Determining loop execution counts for: @nsw_startx_step2
+; CHECK-NEXT: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax %n)) /u 2)
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 7
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax %n)) /u 2)
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%s = icmp sgt i4 %n, 0
br i1 %s, label %loop, label %exit
@@ -210,10 +263,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @even
-; CHECK: Loop %loop: backedge-taken count is (-1 + (2 * %n))
-; CHECK: Loop %loop: max backedge-taken count is 5
define void @even(i4 %n) {
+; CHECK-LABEL: 'even'
+; CHECK-NEXT: Determining loop execution counts for: @even
+; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + (2 * %n))
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 5
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-1 + (2 * %n))
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 2
+;
entry:
%m = shl i4 %n, 1
%s = icmp sgt i4 %m, 0
@@ -227,10 +285,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @even_step2
-; CHECK: Loop %loop: backedge-taken count is ((-1 + (2 * %n)) /u 2)
-; CHECK: Loop %loop: max backedge-taken count is 2
define void @even_step2(i4 %n) {
+; CHECK-LABEL: 'even_step2'
+; CHECK-NEXT: Determining loop execution counts for: @even_step2
+; CHECK-NEXT: Loop %loop: backedge-taken count is ((-1 + (2 * %n)) /u 2)
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 2
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is ((-1 + (2 * %n)) /u 2)
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%m = shl i4 %n, 1
%s = icmp sgt i4 %m, 0
@@ -244,10 +307,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @even_start1
-; CHECK: Loop %loop: backedge-taken count is (-2 + (2 smax (2 * %n)))
-; CHECK: Loop %loop: max backedge-taken count is 4
define void @even_start1(i4 %n) {
+; CHECK-LABEL: 'even_start1'
+; CHECK-NEXT: Determining loop execution counts for: @even_start1
+; CHECK-NEXT: Loop %loop: backedge-taken count is (-2 + (2 smax (2 * %n)))<nsw>
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 4
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-2 + (2 smax (2 * %n)))<nsw>
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%m = shl i4 %n, 1
%s = icmp sgt i4 %m, 0
@@ -261,10 +329,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @even_start1_step2
-; CHECK: Loop %loop: backedge-taken count is ((-2 + (3 smax (2 * %n))) /u 2)
-; CHECK: Loop %loop: max backedge-taken count is 2
define void @even_start1_step2(i4 %n) {
+; CHECK-LABEL: 'even_start1_step2'
+; CHECK-NEXT: Determining loop execution counts for: @even_start1_step2
+; CHECK-NEXT: Loop %loop: backedge-taken count is ((-2 + (3 smax (2 * %n))) /u 2)
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 2
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is ((-2 + (3 smax (2 * %n))) /u 2)
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%m = shl i4 %n, 1
%s = icmp sgt i4 %m, 0
@@ -278,10 +351,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @even_startx
-; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax (2 * %n)))
-; CHECK: Loop %loop: max backedge-taken count is -2
define void @even_startx(i4 %n, i4 %x) {
+; CHECK-LABEL: 'even_startx'
+; CHECK-NEXT: Determining loop execution counts for: @even_startx
+; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax (2 * %n)))
+; CHECK-NEXT: Loop %loop: max backedge-taken count is -2
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax (2 * %n)))
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%m = shl i4 %n, 1
%s = icmp sgt i4 %m, 0
@@ -295,10 +373,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @even_startx_step2
-; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax (2 * %n))) /u 2)
-; CHECK: Loop %loop: max backedge-taken count is 7
define void @even_startx_step2(i4 %n, i4 %x) {
+; CHECK-LABEL: 'even_startx_step2'
+; CHECK-NEXT: Determining loop execution counts for: @even_startx_step2
+; CHECK-NEXT: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax (2 * %n))) /u 2)
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 7
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax (2 * %n))) /u 2)
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%m = shl i4 %n, 1
%s = icmp sgt i4 %m, 0
@@ -312,10 +395,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @even_nsw
-; CHECK: Loop %loop: backedge-taken count is (-1 + (2 * %n))
-; CHECK: Loop %loop: max backedge-taken count is 5
define void @even_nsw(i4 %n) {
+; CHECK-LABEL: 'even_nsw'
+; CHECK-NEXT: Determining loop execution counts for: @even_nsw
+; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + (2 * %n))
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 5
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-1 + (2 * %n))
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 2
+;
entry:
%m = shl i4 %n, 1
%s = icmp sgt i4 %m, 0
@@ -329,10 +417,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @even_nsw_step2
-; CHECK: Loop %loop: backedge-taken count is ((-1 + (2 * %n)) /u 2)
-; CHECK: Loop %loop: max backedge-taken count is 2
define void @even_nsw_step2(i4 %n) {
+; CHECK-LABEL: 'even_nsw_step2'
+; CHECK-NEXT: Determining loop execution counts for: @even_nsw_step2
+; CHECK-NEXT: Loop %loop: backedge-taken count is ((-1 + (2 * %n)) /u 2)
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 2
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is ((-1 + (2 * %n)) /u 2)
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%m = shl i4 %n, 1
%s = icmp sgt i4 %m, 0
@@ -346,10 +439,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @even_nsw_start1
-; CHECK: Loop %loop: backedge-taken count is (-2 + (2 smax (2 * %n)))
-; CHECK: Loop %loop: max backedge-taken count is 4
define void @even_nsw_start1(i4 %n) {
+; CHECK-LABEL: 'even_nsw_start1'
+; CHECK-NEXT: Determining loop execution counts for: @even_nsw_start1
+; CHECK-NEXT: Loop %loop: backedge-taken count is (-2 + (2 smax (2 * %n)))<nsw>
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 4
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-2 + (2 smax (2 * %n)))<nsw>
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%m = shl i4 %n, 1
%s = icmp sgt i4 %m, 0
@@ -363,10 +461,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @even_nsw_start1_step2
-; CHECK: Loop %loop: backedge-taken count is ((-2 + (3 smax (2 * %n))) /u 2)
-; CHECK: Loop %loop: max backedge-taken count is 2
define void @even_nsw_start1_step2(i4 %n) {
+; CHECK-LABEL: 'even_nsw_start1_step2'
+; CHECK-NEXT: Determining loop execution counts for: @even_nsw_start1_step2
+; CHECK-NEXT: Loop %loop: backedge-taken count is ((-2 + (3 smax (2 * %n))) /u 2)
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 2
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is ((-2 + (3 smax (2 * %n))) /u 2)
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%m = shl i4 %n, 1
%s = icmp sgt i4 %m, 0
@@ -380,10 +483,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @even_nsw_startx
-; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax (2 * %n)))
-; CHECK: Loop %loop: max backedge-taken count is -2
define void @even_nsw_startx(i4 %n, i4 %x) {
+; CHECK-LABEL: 'even_nsw_startx'
+; CHECK-NEXT: Determining loop execution counts for: @even_nsw_startx
+; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax (2 * %n)))
+; CHECK-NEXT: Loop %loop: max backedge-taken count is -2
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax (2 * %n)))
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%m = shl i4 %n, 1
%s = icmp sgt i4 %m, 0
@@ -397,10 +505,15 @@ exit:
ret void
}
-; CHECK: Determining loop execution counts for: @even_nsw_startx_step2
-; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax (2 * %n))) /u 2)
-; CHECK: Loop %loop: max backedge-taken count is 7
define void @even_nsw_startx_step2(i4 %n, i4 %x) {
+; CHECK-LABEL: 'even_nsw_startx_step2'
+; CHECK-NEXT: Determining loop execution counts for: @even_nsw_startx_step2
+; CHECK-NEXT: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax (2 * %n))) /u 2)
+; CHECK-NEXT: Loop %loop: max backedge-taken count is 7
+; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax (2 * %n))) /u 2)
+; CHECK-NEXT: Predicates:
+; CHECK: Loop %loop: Trip multiple is 1
+;
entry:
%m = shl i4 %n, 1
%s = icmp sgt i4 %m, 0
OpenPOWER on IntegriCloud