summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/InstCombine
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2018-02-23 22:38:10 +0000
committerSanjay Patel <spatel@rotateright.com>2018-02-23 22:38:10 +0000
commit2db2769499052fc2e3dce817fb0810f0c66b2e23 (patch)
treeeab4997b65acc07d97c552e776ffc1e8a2282276 /llvm/lib/Transforms/InstCombine
parenta70ec1308af8c56f7761daebc8be3c417fb2527b (diff)
downloadbcm5719-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.cpp17
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))))) {
OpenPOWER on IntegriCloud