mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-18 12:29:21 +00:00
Avoid setting bits that aren't demanded.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47098 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cd2ad1df5d
commit
72d2fd57b6
@ -1237,7 +1237,7 @@ void SelectionDAG::ComputeMaskedBits(SDOperand Op, const APInt &Mask,
|
||||
KnownZero = KnownZero.lshr(ShAmt);
|
||||
KnownOne = KnownOne.lshr(ShAmt);
|
||||
|
||||
APInt HighBits = APInt::getHighBitsSet(BitWidth, ShAmt);
|
||||
APInt HighBits = APInt::getHighBitsSet(BitWidth, ShAmt) & Mask;
|
||||
KnownZero |= HighBits; // High bits known zero.
|
||||
}
|
||||
return;
|
||||
@ -1248,8 +1248,8 @@ void SelectionDAG::ComputeMaskedBits(SDOperand Op, const APInt &Mask,
|
||||
APInt InDemandedMask = (Mask << ShAmt);
|
||||
// If any of the demanded bits are produced by the sign extension, we also
|
||||
// demand the input sign bit.
|
||||
APInt HighBits = APInt::getHighBitsSet(BitWidth, ShAmt);
|
||||
if (!!(HighBits & Mask))
|
||||
APInt HighBits = APInt::getHighBitsSet(BitWidth, ShAmt) & Mask;
|
||||
if (HighBits.getBoolValue())
|
||||
InDemandedMask |= APInt::getSignBit(BitWidth);
|
||||
|
||||
ComputeMaskedBits(Op.getOperand(0), InDemandedMask, KnownZero, KnownOne,
|
||||
|
Loading…
Reference in New Issue
Block a user