Simplify isHighOnes().

llvm-svn: 35211
This commit is contained in:
Zhou Sheng 2007-03-20 12:49:06 +00:00
parent dd066c34a9
commit b3949340c8
1 changed files with 1 additions and 9 deletions

View File

@ -3491,15 +3491,7 @@ static bool isLowOnes(const ConstantInt *CI) {
// isHighOnes - Return true if the constant is of the form 1+0+.
// This is the same as lowones(~X).
static bool isHighOnes(const ConstantInt *CI) {
if (CI->getValue() == 0) return false; // 0's does not match "1+"
APInt V(~CI->getValue());
// There won't be bits set in parts that the type doesn't contain.
V &= APInt::getAllOnesValue(CI->getType()->getBitWidth());
APInt U(V+1); // If it is low ones, this should be a power of two.
return (U!=0) && (V!=0) && (U & V) == 0;
return (~CI->getValue() + 1).isPowerOf2();
}
/// getICmpCode - Encode a icmp predicate into a three bit mask. These bits