diff options
author | Chad Rosier <mcrosier@codeaurora.org> | 2017-01-17 17:23:51 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@codeaurora.org> | 2017-01-17 17:23:51 +0000 |
commit | 8520429bdde09567167a3f89033f6c12ec9ac103 (patch) | |
tree | 2710a466f3ebabed42cfaf210370b015f180371b /llvm/lib/Analysis/ValueTracking.cpp | |
parent | a802a5096330d121d0394d5a3a0f924feec51853 (diff) | |
download | bcm5719-llvm-8520429bdde09567167a3f89033f6c12ec9ac103.tar.gz bcm5719-llvm-8520429bdde09567167a3f89033f6c12ec9ac103.zip |
[ValueTracking] Extend known bits to understand @llvm.bitreverse.
Differential Revision: https://reviews.llvm.org/D28780
llvm-svn: 292233
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 244aa798a9c..d926b3864de 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -1400,6 +1400,11 @@ static void computeKnownBitsFromOperator(const Operator *I, APInt &KnownZero, if (const IntrinsicInst *II = dyn_cast<IntrinsicInst>(I)) { switch (II->getIntrinsicID()) { default: break; + case Intrinsic::bitreverse: + computeKnownBits(I->getOperand(0), KnownZero2, KnownOne2, Depth + 1, Q); + KnownZero = KnownZero2.reverseBits(); + KnownOne = KnownOne2.reverseBits(); + break; case Intrinsic::bswap: computeKnownBits(I->getOperand(0), KnownZero2, KnownOne2, Depth + 1, Q); KnownZero |= KnownZero2.byteSwap(); |