diff options
author | Craig Topper <craig.topper@gmail.com> | 2017-04-18 17:14:21 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2017-04-18 17:14:21 +0000 |
commit | fc947bcfba2fc8bc9cc4f8750d1d74c5bf24ee08 (patch) | |
tree | 725abbf8e51f075df0b067b5c735c54e9471ae0e /llvm/lib/CodeGen/CodeGenPrepare.cpp | |
parent | ec9deb7f548a7d045ce630308e2d2c84cd3087b9 (diff) | |
download | llvm-fc947bcfba2fc8bc9cc4f8750d1d74c5bf24ee08.zip llvm-fc947bcfba2fc8bc9cc4f8750d1d74c5bf24ee08.tar.gz llvm-fc947bcfba2fc8bc9cc4f8750d1d74c5bf24ee08.tar.bz2 |
[APInt] Use lshrInPlace to replace lshr where possible
This patch uses lshrInPlace to replace code where the object that lshr is called on is being overwritten with the result.
This adds an lshrInPlace(const APInt &) version as well.
Differential Revision: https://reviews.llvm.org/D32155
llvm-svn: 300566
Diffstat (limited to 'llvm/lib/CodeGen/CodeGenPrepare.cpp')
-rw-r--r-- | llvm/lib/CodeGen/CodeGenPrepare.cpp | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index aa0be91..c862cfd 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -5065,16 +5065,14 @@ bool CodeGenPrepare::optimizeLoadExt(LoadInst *Load) { if (!ShlC) return false; uint64_t ShiftAmt = ShlC->getLimitedValue(BitWidth - 1); - auto ShlDemandBits = APInt::getAllOnesValue(BitWidth).lshr(ShiftAmt); - DemandBits |= ShlDemandBits; + DemandBits.setLowBits(BitWidth - ShiftAmt); break; } case llvm::Instruction::Trunc: { EVT TruncVT = TLI->getValueType(*DL, I->getType()); unsigned TruncBitWidth = TruncVT.getSizeInBits(); - auto TruncBits = APInt::getAllOnesValue(TruncBitWidth).zext(BitWidth); - DemandBits |= TruncBits; + DemandBits.setLowBits(TruncBitWidth); break; } |