summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2008-07-12 07:41:32 +0000
committerNick Lewycky <nicholas@mxc.ca>2008-07-12 07:41:32 +0000
commitb5688ccf575d2d4b6757a566ee81118a0ac520b9 (patch)
treeb407405306f324d48cb0dc532e42a10d2af644e0 /llvm/test
parente424236c4e3f8b8b814ae1fb35fddc3861d9315e (diff)
downloadbcm5719-llvm-b5688ccf575d2d4b6757a566ee81118a0ac520b9.tar.gz
bcm5719-llvm-b5688ccf575d2d4b6757a566ee81118a0ac520b9.zip
Stop creating extraneous smax/umax in SCEV. This removes a regression where we
started complicating many loops ('for' loops, in fact). llvm-svn: 53508
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/Analysis/ScalarEvolution/2007-08-06-Unsigned.ll2
-rw-r--r--llvm/test/Analysis/ScalarEvolution/2008-07-12-UnneededSelect1.ll36
-rw-r--r--llvm/test/Analysis/ScalarEvolution/2008-07-12-UnneededSelect2.ll30
3 files changed, 67 insertions, 1 deletions
diff --git a/llvm/test/Analysis/ScalarEvolution/2007-08-06-Unsigned.ll b/llvm/test/Analysis/ScalarEvolution/2007-08-06-Unsigned.ll
index 23ffc650b0d..e725852cea1 100644
--- a/llvm/test/Analysis/ScalarEvolution/2007-08-06-Unsigned.ll
+++ b/llvm/test/Analysis/ScalarEvolution/2007-08-06-Unsigned.ll
@@ -1,4 +1,4 @@
-; RUN: llvm-as < %s | opt -scalar-evolution -analyze | grep {Loop bb: ( -1 + ( -1 \\* %x) + (( 1 + %x) umax %y)) iterations!}
+; RUN: llvm-as < %s | opt -scalar-evolution -analyze | grep {Loop bb: ( -1 + ( -1 \\* %x) + %y) iterations!}
; PR1597
define i32 @f(i32 %x, i32 %y) {
diff --git a/llvm/test/Analysis/ScalarEvolution/2008-07-12-UnneededSelect1.ll b/llvm/test/Analysis/ScalarEvolution/2008-07-12-UnneededSelect1.ll
new file mode 100644
index 00000000000..a0fcad71314
--- /dev/null
+++ b/llvm/test/Analysis/ScalarEvolution/2008-07-12-UnneededSelect1.ll
@@ -0,0 +1,36 @@
+; RUN: llvm-as < %s | opt -analyze -scalar-evolution |& not grep smax
+; PR2261
+
+@lut = common global [256 x i8] zeroinitializer, align 32 ; <[256 x i8]*> [#uses=1]
+
+define void @foo(i32 %count, i32* %srcptr, i32* %dstptr) nounwind {
+entry:
+ icmp sgt i32 %count, 0 ; <i1>:0 [#uses=1]
+ br i1 %0, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ br label %bb
+
+bb: ; preds = %bb1, %bb.nph
+ %j.01 = phi i32 [ %8, %bb1 ], [ 0, %bb.nph ] ; <i32> [#uses=1]
+ load i32* %srcptr, align 4 ; <i32>:1 [#uses=2]
+ and i32 %1, 255 ; <i32>:2 [#uses=1]
+ and i32 %1, -256 ; <i32>:3 [#uses=1]
+ getelementptr [256 x i8]* @lut, i32 0, i32 %2 ; <i8*>:4 [#uses=1]
+ load i8* %4, align 1 ; <i8>:5 [#uses=1]
+ zext i8 %5 to i32 ; <i32>:6 [#uses=1]
+ or i32 %6, %3 ; <i32>:7 [#uses=1]
+ store i32 %7, i32* %dstptr, align 4
+ add i32 %j.01, 1 ; <i32>:8 [#uses=2]
+ br label %bb1
+
+bb1: ; preds = %bb
+ icmp slt i32 %8, %count ; <i1>:9 [#uses=1]
+ br i1 %9, label %bb, label %bb1.return_crit_edge
+
+bb1.return_crit_edge: ; preds = %bb1
+ br label %return
+
+return: ; preds = %bb1.return_crit_edge, %entry
+ ret void
+}
diff --git a/llvm/test/Analysis/ScalarEvolution/2008-07-12-UnneededSelect2.ll b/llvm/test/Analysis/ScalarEvolution/2008-07-12-UnneededSelect2.ll
new file mode 100644
index 00000000000..5501ee28869
--- /dev/null
+++ b/llvm/test/Analysis/ScalarEvolution/2008-07-12-UnneededSelect2.ll
@@ -0,0 +1,30 @@
+; RUN: llvm-as < %s | opt -analyze -scalar-evolution |& not grep smax
+; PR2070
+
+define i32 @a(i32 %x) nounwind {
+entry:
+ icmp sgt i32 %x, 1 ; <i1>:0 [#uses=1]
+ br i1 %0, label %bb.nph, label %bb2
+
+bb.nph: ; preds = %entry
+ br label %bb
+
+bb: ; preds = %bb1, %bb.nph
+ %z.02 = phi i32 [ %1, %bb1 ], [ 1, %bb.nph ] ; <i32> [#uses=1]
+ %i.01 = phi i32 [ %2, %bb1 ], [ 1, %bb.nph ] ; <i32> [#uses=2]
+ mul i32 %z.02, %i.01 ; <i32>:1 [#uses=2]
+ add i32 %i.01, 1 ; <i32>:2 [#uses=2]
+ br label %bb1
+
+bb1: ; preds = %bb
+ icmp slt i32 %2, %x ; <i1>:3 [#uses=1]
+ br i1 %3, label %bb, label %bb1.bb2_crit_edge
+
+bb1.bb2_crit_edge: ; preds = %bb1
+ %.lcssa = phi i32 [ %1, %bb1 ] ; <i32> [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb1.bb2_crit_edge, %entry
+ %z.0.lcssa = phi i32 [ %.lcssa, %bb1.bb2_crit_edge ], [ 1, %entry ] ; <i32> [#uses=1]
+ ret i32 %z.0.lcssa
+}
OpenPOWER on IntegriCloud