diff options
author | Craig Topper <craig.topper@gmail.com> | 2017-06-03 18:50:32 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2017-06-03 18:50:32 +0000 |
commit | 0799ff9e64b80e752a674d7a9dafea4f9d7f4761 (patch) | |
tree | 176670b9a370be914ae5bda3db0ac845152cb91b /llvm/lib/Transforms | |
parent | 7c553edcedca1c085af33906eb4549114da21f34 (diff) | |
download | bcm5719-llvm-0799ff9e64b80e752a674d7a9dafea4f9d7f4761.tar.gz bcm5719-llvm-0799ff9e64b80e752a674d7a9dafea4f9d7f4761.zip |
[InstCombine] Add support for simplifying ctlz/cttz intrinsics based on known bits.
llvm-svn: 304669
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp index b44499ec4be..644dfd50adc 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp @@ -1373,10 +1373,6 @@ static Instruction *foldCttzCtlz(IntrinsicInst &II, InstCombiner &IC) { II.getIntrinsicID() == Intrinsic::ctlz) && "Expected cttz or ctlz intrinsic"); Value *Op0 = II.getArgOperand(0); - // FIXME: Try to simplify vectors of integers. - auto *IT = dyn_cast<IntegerType>(Op0->getType()); - if (!IT) - return nullptr; KnownBits Known = IC.computeKnownBits(Op0, 0, &II); @@ -1392,7 +1388,7 @@ static Instruction *foldCttzCtlz(IntrinsicInst &II, InstCombiner &IC) { // FIXME: This should be in InstSimplify because we're replacing an // instruction with a constant. if (PossibleZeros == DefiniteZeros) { - auto *C = ConstantInt::get(IT, DefiniteZeros); + auto *C = ConstantInt::get(Op0->getType(), DefiniteZeros); return IC.replaceInstUsesWith(II, C); } |