diff options
author | Florian Hahn <flo@fhahn.com> | 2019-09-11 16:17:03 +0000 |
---|---|---|
committer | Florian Hahn <flo@fhahn.com> | 2019-09-11 16:17:03 +0000 |
commit | 51de22c8ee6578bf7ae126913d4b24b5cf08ef7c (patch) | |
tree | a18864105ff53ee17b5350508cb36e9e22ce7bbf /llvm/lib/Transforms | |
parent | 0c1257f517e00f67c9fbb969671e85509a7f8ac9 (diff) | |
download | llvm-51de22c8ee6578bf7ae126913d4b24b5cf08ef7c.zip llvm-51de22c8ee6578bf7ae126913d4b24b5cf08ef7c.tar.gz llvm-51de22c8ee6578bf7ae126913d4b24b5cf08ef7c.tar.bz2 |
Revert [InstCombine] Use SimplifyFMulInst to simplify multiply in fma.
This introduces additional rounding error in some cases. See D67434.
This reverts r371518 (git commit 18a1f0818b659cee13865b4fad2648d85984a4ed)
llvm-svn: 371634
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp index 1cef8d9..e96e45e 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp @@ -2258,11 +2258,9 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) { return II; } - // Try to simplify the underlying FMul. - if (Value *V = SimplifyFMulInst(II->getArgOperand(0), II->getArgOperand(1), - II->getFastMathFlags(), - SQ.getWithInstruction(II))) { - auto *FAdd = BinaryOperator::CreateFAdd(V, II->getArgOperand(2)); + // fma x, 1, z -> fadd x, z + if (match(Src1, m_FPOne())) { + auto *FAdd = BinaryOperator::CreateFAdd(Src0, II->getArgOperand(2)); FAdd->copyFastMathFlags(II); return FAdd; } |