diff options
author | Alexey Volkov <avolkov.intel@gmail.com> | 2014-05-20 08:55:50 +0000 |
---|---|---|
committer | Alexey Volkov <avolkov.intel@gmail.com> | 2014-05-20 08:55:50 +0000 |
commit | 6226de67210755a56d15dca7f1891fe7fddda3ca (patch) | |
tree | 49e5679bb8c10b7fed4057f8b74aecbf2b818d01 /llvm/lib/Target/X86/X86TargetMachine.cpp | |
parent | abdf44e7f38d392fed85692b2a31bf1578f3ee3b (diff) | |
download | llvm-6226de67210755a56d15dca7f1891fe7fddda3ca.zip llvm-6226de67210755a56d15dca7f1891fe7fddda3ca.tar.gz llvm-6226de67210755a56d15dca7f1891fe7fddda3ca.tar.bz2 |
[X86] Tune LEA usage for Silvermont
According to Intel Software Optimization Manual on Silvermont in some cases LEA
is better to be replaced with ADD instructions:
"The rule of thumb for ADDs and LEAs is that it is justified to use LEA
with a valid index and/or displacement for non-destructive destination purposes
(especially useful for stack offset cases), or to use a SCALE.
Otherwise, ADD(s) are preferable."
Differential Revision: http://reviews.llvm.org/D3826
llvm-svn: 209198
Diffstat (limited to 'llvm/lib/Target/X86/X86TargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86TargetMachine.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp index cb5ab0d..d0449f4 100644 --- a/llvm/lib/Target/X86/X86TargetMachine.cpp +++ b/llvm/lib/Target/X86/X86TargetMachine.cpp @@ -226,7 +226,8 @@ bool X86PassConfig::addPreEmitPass() { ShouldPrint = true; } if (getOptLevel() != CodeGenOpt::None && - getX86Subtarget().LEAusesAG()){ + (getX86Subtarget().LEAusesAG() || + getX86Subtarget().slowLEA())){ addPass(createX86FixupLEAs()); ShouldPrint = true; } |