diff options
| author | Sanjay Patel <spatel@rotateright.com> | 2018-02-23 22:38:10 +0000 |
|---|---|---|
| committer | Sanjay Patel <spatel@rotateright.com> | 2018-02-23 22:38:10 +0000 |
| commit | 2db2769499052fc2e3dce817fb0810f0c66b2e23 (patch) | |
| tree | eab4997b65acc07d97c552e776ffc1e8a2282276 /llvm/lib/Transforms/InstCombine | |
| parent | a70ec1308af8c56f7761daebc8be3c417fb2527b (diff) | |
| download | bcm5719-llvm-2db2769499052fc2e3dce817fb0810f0c66b2e23.tar.gz bcm5719-llvm-2db2769499052fc2e3dce817fb0810f0c66b2e23.zip | |
[InstCombine] simplify code for fabs(X) * fabs(X) -> X * X; NFC
llvm-svn: 325968
Diffstat (limited to 'llvm/lib/Transforms/InstCombine')
| -rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp b/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp index 48fba0319fd..412af4ba13b 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp @@ -618,18 +618,10 @@ Instruction *InstCombiner::visitFMul(BinaryOperator &I) { } } - if (Op0 == Op1) { - if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(Op0)) { - // fabs(X) * fabs(X) -> X * X - if (II->getIntrinsicID() == Intrinsic::fabs) { - Instruction *FMulVal = BinaryOperator::CreateFMul(II->getOperand(0), - II->getOperand(0), - I.getName()); - FMulVal->copyFastMathFlags(&I); - return FMulVal; - } - } - } + // fabs(X) * fabs(X) -> X * X + Value *X, *Y; + if (Op0 == Op1 && match(Op0, m_Intrinsic<Intrinsic::fabs>(m_Value(X)))) + return BinaryOperator::CreateFMulFMF(X, X, &I); // Under unsafe algebra do: // X * log2(0.5*Y) = X*log2(Y) - X @@ -659,7 +651,6 @@ Instruction *InstCombiner::visitFMul(BinaryOperator &I) { } // sqrt(X) * sqrt(Y) -> sqrt(X * Y) - Value *X, *Y; if (I.hasAllowReassoc() && match(Op0, m_OneUse(m_Intrinsic<Intrinsic::sqrt>(m_Value(X)))) && match(Op1, m_OneUse(m_Intrinsic<Intrinsic::sqrt>(m_Value(Y))))) { |

