mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-17 03:30:28 +00:00
In function ComputeMaskedBits():
1. Replace getSignedMinValue() with getSignBit() for better code readability. 2. Replace APIntOps::shl() with operator<<= for convenience. 3. Make APInt construction more effective. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35060 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8db6a445e6
commit
430f626937
@ -695,7 +695,7 @@ static void ComputeMaskedBits(Value *V, APInt Mask, APInt& KnownZero,
|
||||
|
||||
// If the sign bit of the input is known set or clear, then we know the
|
||||
// top bits of the result.
|
||||
APInt InSignBit(APInt::getSignedMinValue(SrcTy->getBitWidth()));
|
||||
APInt InSignBit(APInt::getSignBit(SrcTy->getBitWidth()));
|
||||
InSignBit.zextOrTrunc(BitWidth);
|
||||
if ((KnownZero & InSignBit) != 0) { // Input sign bit known zero
|
||||
KnownZero |= NewBits;
|
||||
@ -716,8 +716,8 @@ static void ComputeMaskedBits(Value *V, APInt Mask, APInt& KnownZero,
|
||||
Mask = APIntOps::lshr(Mask, ShiftAmt);
|
||||
ComputeMaskedBits(I->getOperand(0), Mask, KnownZero, KnownOne, Depth+1);
|
||||
assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?");
|
||||
KnownZero = APIntOps::shl(KnownZero, ShiftAmt);
|
||||
KnownOne = APIntOps::shl(KnownOne, ShiftAmt);
|
||||
KnownZero <<= ShiftAmt;
|
||||
KnownOne <<= ShiftAmt;
|
||||
KnownZero |= APInt(BitWidth, 1ULL).shl(ShiftAmt)-1; // low bits known zero.
|
||||
return;
|
||||
}
|
||||
@ -730,7 +730,7 @@ static void ComputeMaskedBits(Value *V, APInt Mask, APInt& KnownZero,
|
||||
APInt HighBits(APInt::getAllOnesValue(BitWidth).shl(BitWidth-ShiftAmt));
|
||||
|
||||
// Unsigned shift right.
|
||||
Mask = APIntOps::shl(Mask, ShiftAmt);
|
||||
Mask <<= ShiftAmt;
|
||||
ComputeMaskedBits(I->getOperand(0), Mask, KnownZero,KnownOne,Depth+1);
|
||||
assert((KnownZero & KnownOne) == 0&&"Bits known to be one AND zero?");
|
||||
KnownZero = APIntOps::lshr(KnownZero, ShiftAmt);
|
||||
@ -747,14 +747,14 @@ static void ComputeMaskedBits(Value *V, APInt Mask, APInt& KnownZero,
|
||||
APInt HighBits(APInt::getAllOnesValue(BitWidth).shl(BitWidth-ShiftAmt));
|
||||
|
||||
// Signed shift right.
|
||||
Mask = APIntOps::shl(Mask, ShiftAmt);
|
||||
Mask <<= ShiftAmt;
|
||||
ComputeMaskedBits(I->getOperand(0), Mask, KnownZero,KnownOne,Depth+1);
|
||||
assert((KnownZero & KnownOne) == 0&&"Bits known to be one AND zero?");
|
||||
KnownZero = APIntOps::lshr(KnownZero, ShiftAmt);
|
||||
KnownOne = APIntOps::lshr(KnownOne, ShiftAmt);
|
||||
|
||||
// Handle the sign bits and adjust to where it is now in the mask.
|
||||
APInt SignBit = APInt::getSignedMinValue(BitWidth).lshr(ShiftAmt);
|
||||
APInt SignBit(APInt::getSignBit(BitWidth).lshr(ShiftAmt));
|
||||
|
||||
if ((KnownZero & SignBit) != 0) { // New bits are known zero.
|
||||
KnownZero |= HighBits;
|
||||
|
Loading…
Reference in New Issue
Block a user