summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/LoopReroll
diff options
context:
space:
mode:
authorJingyue Wu <jingyue@google.com>2015-06-24 19:28:40 +0000
committerJingyue Wu <jingyue@google.com>2015-06-24 19:28:40 +0000
commit6f72aed3ecda230814e1701d96f235d9a04b84af (patch)
treefc22625fadcab9e965646a900c63c4f02fd3d664 /llvm/test/Transforms/LoopReroll
parentc1ffd69c3424dc8cdb3a24f18cd3e4901ce918aa (diff)
downloadbcm5719-llvm-6f72aed3ecda230814e1701d96f235d9a04b84af.tar.gz
bcm5719-llvm-6f72aed3ecda230814e1701d96f235d9a04b84af.zip
[LSR] canonicalize Prod*(1<<C) to Prod<<C
Summary: Because LSR happens at a late stage where mul of a power of 2 is typically canonicalized to shl, this canonicalization emits code that can be better CSE'ed. Test Plan: Transforms/LoopStrengthReduce/shl.ll shows how this change makes GVN more powerful. Fixes some existing tests due to this change. Reviewers: sanjoy, majnemer, atrick Reviewed By: majnemer, atrick Subscribers: majnemer, llvm-commits Differential Revision: http://reviews.llvm.org/D10448 llvm-svn: 240573
Diffstat (limited to 'llvm/test/Transforms/LoopReroll')
-rw-r--r--llvm/test/Transforms/LoopReroll/nonconst_lb.ll4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/test/Transforms/LoopReroll/nonconst_lb.ll b/llvm/test/Transforms/LoopReroll/nonconst_lb.ll
index 5effa42d07c..96090e8dc0b 100644
--- a/llvm/test/Transforms/LoopReroll/nonconst_lb.ll
+++ b/llvm/test/Transforms/LoopReroll/nonconst_lb.ll
@@ -52,7 +52,7 @@ for.end: ; preds = %for.body, %entry
; CHECK: %0 = add i32 %n, -1
; CHECK: %1 = sub i32 %0, %m
; CHECK: %2 = lshr i32 %1, 2
-; CHECK: %3 = mul i32 %2, 4
+; CHECK: %3 = shl i32 %2, 2
; CHECK: %4 = add i32 %m, %3
; CHECK: %5 = add i32 %4, 3
; CHECK: br label %for.body
@@ -132,7 +132,7 @@ for.end: ; preds = %for.body, %entry
; CHECK: %0 = add i32 %n, -1
; CHECK: %1 = sub i32 %0, %rem
; CHECK: %2 = lshr i32 %1, 2
-; CHECK: %3 = mul i32 %2, 4
+; CHECK: %3 = shl i32 %2, 2
; CHECK: %4 = add i32 %rem, %3
; CHECK: %5 = add i32 %4, 3
; CHECK: br label %for.body
OpenPOWER on IntegriCloud