mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
APInt: microoptimize a few methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120912 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bd7d2622a2
commit
fd6d53fbad
@ -296,7 +296,7 @@ public:
|
||||
/// @returns true if this APInt is positive.
|
||||
/// @brief Determine if this APInt Value is positive.
|
||||
bool isStrictlyPositive() const {
|
||||
return isNonNegative() && (*this) != 0;
|
||||
return isNonNegative() && !!*this;
|
||||
}
|
||||
|
||||
/// This checks to see if the value has all bits of the APInt are set or not.
|
||||
@ -324,15 +324,14 @@ public:
|
||||
/// value for the APInt's bit width.
|
||||
/// @brief Determine if this is the smallest unsigned value.
|
||||
bool isMinValue() const {
|
||||
return countPopulation() == 0;
|
||||
return !*this;
|
||||
}
|
||||
|
||||
/// This checks to see if the value of this APInt is the minimum signed
|
||||
/// value for the APInt's bit width.
|
||||
/// @brief Determine if this is the smallest signed value.
|
||||
bool isMinSignedValue() const {
|
||||
return BitWidth == 1 ? VAL == 1 :
|
||||
isNegative() && countPopulation() == 1;
|
||||
return BitWidth == 1 ? VAL == 1 : isNegative() && isPowerOf2();
|
||||
}
|
||||
|
||||
/// @brief Check if this APInt has an N-bits unsigned integer value.
|
||||
@ -355,7 +354,11 @@ public:
|
||||
}
|
||||
|
||||
/// @returns true if the argument APInt value is a power of two > 0.
|
||||
bool isPowerOf2() const;
|
||||
bool isPowerOf2() const {
|
||||
if (isSingleWord())
|
||||
return isPowerOf2_64(VAL);
|
||||
return countPopulationSlowCase() == 1;
|
||||
}
|
||||
|
||||
/// isSignBit - Return true if this is the value returned by getSignBit.
|
||||
bool isSignBit() const { return isMinSignedValue(); }
|
||||
@ -363,7 +366,7 @@ public:
|
||||
/// This converts the APInt to a boolean value as a test against zero.
|
||||
/// @brief Boolean conversion function.
|
||||
bool getBoolValue() const {
|
||||
return *this != 0;
|
||||
return !!*this;
|
||||
}
|
||||
|
||||
/// getLimitedValue - If this value is smaller than the specified limit,
|
||||
|
@ -759,10 +759,6 @@ APInt APInt::getLoBits(unsigned numBits) const {
|
||||
BitWidth - numBits);
|
||||
}
|
||||
|
||||
bool APInt::isPowerOf2() const {
|
||||
return (!!*this) && !(*this & (*this - APInt(BitWidth,1)));
|
||||
}
|
||||
|
||||
unsigned APInt::countLeadingZerosSlowCase() const {
|
||||
// Treat the most significand word differently because it might have
|
||||
// meaningless bits set beyond the precision.
|
||||
|
Loading…
Reference in New Issue
Block a user