forked from OSchip/llvm-project
[ADT] Add some basic APInt::isPowerOf2() unit test coverage
This commit is contained in:
parent
d5429a13da
commit
ac1c0dd317
|
@ -1765,6 +1765,26 @@ TEST(APIntTest, isShiftedMask) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(APIntTest, isPowerOf2) {
|
||||||
|
EXPECT_FALSE(APInt(5, 0x00).isPowerOf2());
|
||||||
|
EXPECT_FALSE(APInt(32, 0x11).isPowerOf2());
|
||||||
|
EXPECT_TRUE(APInt(17, 0x01).isPowerOf2());
|
||||||
|
EXPECT_TRUE(APInt(32, 0xff << 31).isPowerOf2());
|
||||||
|
|
||||||
|
for (int N : {1, 2, 3, 4, 7, 8, 16, 32, 64, 127, 128, 129, 256}) {
|
||||||
|
EXPECT_FALSE(APInt(N, 0).isPowerOf2());
|
||||||
|
EXPECT_TRUE(APInt::getSignedMinValue(N).isPowerOf2());
|
||||||
|
|
||||||
|
APInt One(N, 1);
|
||||||
|
for (int I = 1; I < N - 1; ++I) {
|
||||||
|
EXPECT_TRUE(APInt::getOneBitSet(N, I).isPowerOf2());
|
||||||
|
|
||||||
|
APInt MaskVal = One.shl(I);
|
||||||
|
EXPECT_TRUE(MaskVal.isPowerOf2());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Test that self-move works with EXPENSIVE_CHECKS. It calls std::shuffle which
|
// Test that self-move works with EXPENSIVE_CHECKS. It calls std::shuffle which
|
||||||
// does self-move on some platforms.
|
// does self-move on some platforms.
|
||||||
#ifdef EXPENSIVE_CHECKS
|
#ifdef EXPENSIVE_CHECKS
|
||||||
|
|
Loading…
Reference in New Issue