diff options
author | Preston Gurd <preston.gurd@intel.com> | 2013-03-04 18:13:57 +0000 |
---|---|---|
committer | Preston Gurd <preston.gurd@intel.com> | 2013-03-04 18:13:57 +0000 |
commit | 9a2cfffdb6340c54ff553c1b81364d0f17fa8f45 (patch) | |
tree | 999ad911d34f3f83d1140500e731228c5f07df84 /lib/Transforms/Scalar/CodeGenPrepare.cpp | |
parent | ff4faabd2d98776372f45f7592482c9239cc40f2 (diff) | |
download | llvm-9a2cfffdb6340c54ff553c1b81364d0f17fa8f45.tar.gz llvm-9a2cfffdb6340c54ff553c1b81364d0f17fa8f45.tar.bz2 llvm-9a2cfffdb6340c54ff553c1b81364d0f17fa8f45.tar.xz |
Bypass Slow Divides
* Only apply divide bypass optimization when not optimizing for size.
* Fixed bug caused by constant for 0 value of type Int32,
used dividend type to generate the constant instead.
* For atom x86-64 apply the divide bypass to use 16-bit divides instead of
64-bit divides when operand values are small enough.
* Added lit tests for 64-bit divide bypass.
Patch by Tyler Nowicki!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176442 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar/CodeGenPrepare.cpp')
-rw-r--r-- | lib/Transforms/Scalar/CodeGenPrepare.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/Transforms/Scalar/CodeGenPrepare.cpp b/lib/Transforms/Scalar/CodeGenPrepare.cpp index d71dd5dec6..015fd2e6e6 100644 --- a/lib/Transforms/Scalar/CodeGenPrepare.cpp +++ b/lib/Transforms/Scalar/CodeGenPrepare.cpp @@ -154,7 +154,7 @@ bool CodeGenPrepare::runOnFunction(Function &F) { /// This optimization identifies DIV instructions that can be /// profitably bypassed and carried out with a shorter, faster divide. - if (TLI && TLI->isSlowDivBypassed()) { + if (!OptSize && TLI && TLI->isSlowDivBypassed()) { const DenseMap<unsigned int, unsigned int> &BypassWidths = TLI->getBypassSlowDivWidths(); for (Function::iterator I = F.begin(); I != F.end(); I++) |