[NVPTX] enable NaryReassociate in NVPTX
authorJingyue Wu <jingyue@google.com>
Fri, 24 Apr 2015 02:54:06 +0000 (02:54 +0000)
committerJingyue Wu <jingyue@google.com>
Fri, 24 Apr 2015 02:54:06 +0000 (02:54 +0000)
commitd83b3b1a8d559772974bf6060aeafa20692bb9e0
treeeb3cbc0ae128fbde56b6b7c97bd73932b45fed4b
parent9dd5b1fbd8126e0b101f3f142952fecb2084c1d5
[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235688 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/NVPTX/NVPTXTargetMachine.cpp
test/Transforms/NaryReassociate/NVPTX/lit.local.cfg [new file with mode: 0644]
test/Transforms/NaryReassociate/NVPTX/nary-slsr.ll [new file with mode: 0644]