summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/LoopStrengthReduce
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2009-04-27 20:16:15 +0000
committerDan Gohman <gohman@apple.com>2009-04-27 20:16:15 +0000
commit76466373794f34303146931969c1f1905ad526fe (patch)
tree2171320ee377c70e311d3d55bbaec5eca611cb25 /llvm/test/Transforms/LoopStrengthReduce
parent61cac2b2954cf20760b609fc3efd1c976183cf9b (diff)
downloadbcm5719-llvm-76466373794f34303146931969c1f1905ad526fe.tar.gz
bcm5719-llvm-76466373794f34303146931969c1f1905ad526fe.zip
Teach getZeroExtendExpr and getSignExtendExpr to use trip-count
information to simplify [sz]ext({a,+,b}) to {zext(a),+,[zs]ext(b)}, as appropriate. These functions and the trip count code each call into the other, so this requires careful handling to avoid infinite recursion. During the initial trip count computation, conservative SCEVs are used, which are subsequently discarded once the trip count is actually known. Among other benefits, this change lets LSR automatically eliminate some unnecessary zext-inreg and sext-inreg operation where the operand is an induction variable. llvm-svn: 70241
Diffstat (limited to 'llvm/test/Transforms/LoopStrengthReduce')
-rw-r--r--llvm/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-1.ll10
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-1.ll b/llvm/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-1.ll
index 06e231212ed..cb2f3aa5166 100644
--- a/llvm/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-1.ll
+++ b/llvm/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-1.ll
@@ -1,4 +1,4 @@
-; RUN: llvm-as < %s | llc --x86-asm-syntax=att | grep {cmpl \$8}
+; RUN: llvm-as < %s | llc --x86-asm-syntax=att | grep {cmpq \$8}
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
target triple = "x86_64-apple-darwin9"
@@ -6,7 +6,7 @@ target triple = "x86_64-apple-darwin9"
; happens after the relevant use, so the comparison stride can be
; easily changed.
-define void @foo() {
+define void @foo() nounwind {
entry:
br label %loop
@@ -14,9 +14,11 @@ loop:
%indvar = phi i32 [ 0, %entry ], [ %i.2.0.us1534, %loop ] ; <i32> [#uses=1]
%i.2.0.us1534 = add i32 %indvar, 1 ; <i32> [#uses=3]
%tmp628.us1540 = shl i32 %i.2.0.us1534, 1 ; <i32> [#uses=1]
- %tmp645646647.us1547 = sext i32 %tmp628.us1540 to i64 ; <i64> [#uses=0]
+ %tmp645646647.us1547 = sext i32 %tmp628.us1540 to i64 ; <i64> [#uses=1]
+ store i64 %tmp645646647.us1547, i64* null
%tmp611.us1535 = icmp eq i32 %i.2.0.us1534, 4 ; <i1> [#uses=2]
- %tmp623.us1538 = select i1 %tmp611.us1535, i32 6, i32 0 ; <i32> [#uses=0]
+ %tmp623.us1538 = select i1 %tmp611.us1535, i32 6, i32 0 ; <i32> [#uses=1]
+ store i32 %tmp623.us1538, i32* null
br i1 %tmp611.us1535, label %exit, label %loop
exit:
OpenPOWER on IntegriCloud