summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2018-09-11 16:51:24 +0000
committerCraig Topper <craig.topper@intel.com>2018-09-11 16:51:24 +0000
commita57bb61a3e87bad1d701c1c98fc9d1d6bd6563e4 (patch)
treef85e8c786758f2ab4bde6b9e80e16386365da8dd /llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
parent49d190f6f8f4e78ac1438c6054ffea087aa85bfd (diff)
downloadbcm5719-llvm-a57bb61a3e87bad1d701c1c98fc9d1d6bd6563e4.tar.gz
bcm5719-llvm-a57bb61a3e87bad1d701c1c98fc9d1d6bd6563e4.zip
[InstCombine] Support (mul (sext x), cst) --> (sext (mul x, cst')) and (mul (zext x), cst) --> (zext (mul x, cst')) for vectors constants.
Similar to D51236, but for mul instead of add. Differential Revision: https://reviews.llvm.org/D51900 llvm-svn: 341961
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp')
-rw-r--r--llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp b/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
index 63761d42723..6b11fe728fa 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
@@ -327,7 +327,7 @@ Instruction *InstCombiner::visitMul(BinaryOperator &I) {
// integer mul followed by a sext.
if (SExtInst *Op0Conv = dyn_cast<SExtInst>(Op0)) {
// (mul (sext x), cst) --> (sext (mul x, cst'))
- if (ConstantInt *Op1C = dyn_cast<ConstantInt>(Op1)) {
+ if (auto *Op1C = dyn_cast<Constant>(Op1)) {
if (Op0Conv->hasOneUse()) {
Constant *CI =
ConstantExpr::getTrunc(Op1C, Op0Conv->getOperand(0)->getType());
@@ -363,7 +363,7 @@ Instruction *InstCombiner::visitMul(BinaryOperator &I) {
// integer mul followed by a zext.
if (auto *Op0Conv = dyn_cast<ZExtInst>(Op0)) {
// (mul (zext x), cst) --> (zext (mul x, cst'))
- if (ConstantInt *Op1C = dyn_cast<ConstantInt>(Op1)) {
+ if (auto *Op1C = dyn_cast<Constant>(Op1)) {
if (Op0Conv->hasOneUse()) {
Constant *CI =
ConstantExpr::getTrunc(Op1C, Op0Conv->getOperand(0)->getType());
OpenPOWER on IntegriCloud