summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
diff options
context:
space:
mode:
authorJingyue Wu <jingyue@google.com>2015-04-24 02:54:06 +0000
committerJingyue Wu <jingyue@google.com>2015-04-24 02:54:06 +0000
commit3daace5295fc30c20d0621c2b427195ed49cd05d (patch)
tree4707bfc280a06745064dc84a86c16901634c7fb7 /llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
parent5e10016f03c6a7ac44cedda54401b27b650b9aa4 (diff)
downloadbcm5719-llvm-3daace5295fc30c20d0621c2b427195ed49cd05d.tar.gz
bcm5719-llvm-3daace5295fc30c20d0621c2b427195ed49cd05d.zip
[NVPTX] enable NaryReassociate in NVPTX
Summary: We run NaryReassociate right after SLSR because SLSR enables many opportunities for NaryReassociate. For example, in nary-slsr.ll foo((a + b) + c); foo((a + b * 2) + c); foo((a + b * 3) + c); // 2 muls and 6 adds after SLSR: ab = a + b; foo(ab + c); ab2 = ab + b; foo(ab2 + c); ab3 = ab2 + b; foo(ab3 + c); // 6 adds after NaryReassociate: abc = (a + b) + c; foo(abc); ab2c = abc + b; foo(ab2c); ab3c = ab2c + b; foo(ab3c); // 4 adds Test Plan: nary-slsr.ll Reviewers: jholewinski, eliben Reviewed By: eliben Subscribers: jholewinski, llvm-commits Differential Revision: http://reviews.llvm.org/D9066 llvm-svn: 235688
Diffstat (limited to 'llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp')
-rw-r--r--llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
index dc8e8a29528..ac27c30aaba 100644
--- a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
@@ -179,6 +179,8 @@ void NVPTXPassConfig::addIRPasses() {
addPass(createGVNPass());
else
addPass(createEarlyCSEPass());
+ // Run NaryReassociate after EarlyCSE/GVN to be more effective.
+ addPass(createNaryReassociatePass());
}
bool NVPTXPassConfig::addInstSelector() {
OpenPOWER on IntegriCloud