diff options
author | Sanjay Patel <spatel@rotateright.com> | 2015-06-10 20:32:21 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2015-06-10 20:32:21 +0000 |
commit | 08829bac8160737d59a5e634758b2dbf18de67f1 (patch) | |
tree | d32665fe7dd8f774eabd644eace570f572ed469a /llvm/lib/Target/X86/X86TargetMachine.cpp | |
parent | e7bd6defd71d24e9b58f18462bb32c92a355c05b (diff) | |
download | bcm5719-llvm-08829bac8160737d59a5e634758b2dbf18de67f1.tar.gz bcm5719-llvm-08829bac8160737d59a5e634758b2dbf18de67f1.zip |
[x86] Add a reassociation optimization to increase ILP via the MachineCombiner pass
This is a reimplementation of D9780 at the machine instruction level rather than the DAG.
Use the MachineCombiner pass to reassociate scalar single-precision AVX additions (just a
starting point; see the TODO comments) to increase ILP when it's safe to do so.
The code is closely based on the existing MachineCombiner optimization that is implemented
for AArch64.
This patch should not cause the kind of spilling tragedy that led to the reversion of r236031.
Differential Revision: http://reviews.llvm.org/D10321
llvm-svn: 239486
Diffstat (limited to 'llvm/lib/Target/X86/X86TargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86TargetMachine.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp index 2005b1165fc..5234f85f24e 100644 --- a/llvm/lib/Target/X86/X86TargetMachine.cpp +++ b/llvm/lib/Target/X86/X86TargetMachine.cpp @@ -24,6 +24,10 @@ #include "llvm/Target/TargetOptions.h" using namespace llvm; +static cl::opt<bool> EnableMachineCombinerPass("x86-machine-combiner", + cl::desc("Enable the machine combiner pass"), + cl::init(true), cl::Hidden); + extern "C" void LLVMInitializeX86Target() { // Register the target. RegisterTargetMachine<X86TargetMachine> X(TheX86_32Target); @@ -224,6 +228,8 @@ bool X86PassConfig::addInstSelector() { bool X86PassConfig::addILPOpts() { addPass(&EarlyIfConverterID); + if (EnableMachineCombinerPass) + addPass(&MachineCombinerID); return true; } |