summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
diff options
context:
space:
mode:
authorJingyue Wu <jingyue@google.com>2015-04-23 20:00:04 +0000
committerJingyue Wu <jingyue@google.com>2015-04-23 20:00:04 +0000
commit3286ec1484bb20d99c8d69f417b789c5da0b8166 (patch)
tree7e91698a84b8ddaeaac451bc57ee81444da13b3f /llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
parent6d48859b18938e1e72f28999cf2d6e9ce55cc955 (diff)
downloadbcm5719-llvm-3286ec1484bb20d99c8d69f417b789c5da0b8166.tar.gz
bcm5719-llvm-3286ec1484bb20d99c8d69f417b789c5da0b8166.zip
[NVPTX] run SeparateConstOffsetFromGEP before SLSR
Summary: We pick this order because SeparateConstOffsetFromGEP may create more opportunities for SLSR. Test Plan: reassociate-geps-and-slsr.ll no performance regression on internal benchmarks Reviewers: meheff Subscribers: llvm-commits, jholewinski Differential Revision: http://reviews.llvm.org/D9230 llvm-svn: 235632
Diffstat (limited to 'llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp')
-rw-r--r--llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
index f9545cc1d41..dc8e8a29528 100644
--- a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
@@ -168,11 +168,13 @@ void NVPTXPassConfig::addIRPasses() {
// them unused. We could remove dead code in an ad-hoc manner, but that
// requires manual work and might be error-prone.
addPass(createDeadCodeEliminationPass());
- addPass(createStraightLineStrengthReducePass());
addPass(createSeparateConstOffsetFromGEPPass());
- // The SeparateConstOffsetFromGEP pass creates variadic bases that can be used
- // by multiple GEPs. Run GVN or EarlyCSE to really reuse them. GVN generates
- // significantly better code than EarlyCSE for some of our benchmarks.
+ // ReassociateGEPs exposes more opportunites for SLSR. See
+ // the example in reassociate-geps-and-slsr.ll.
+ addPass(createStraightLineStrengthReducePass());
+ // SeparateConstOffsetFromGEP and SLSR creates common expressions which GVN or
+ // EarlyCSE can reuse. GVN generates significantly better code than EarlyCSE
+ // for some of our benchmarks.
if (getOptLevel() == CodeGenOpt::Aggressive)
addPass(createGVNPass());
else
OpenPOWER on IntegriCloud