diff options
Diffstat (limited to 'llvm/unittests/ADT/APIntTest.cpp')
| -rw-r--r-- | llvm/unittests/ADT/APIntTest.cpp | 64 | 
1 files changed, 64 insertions, 0 deletions
| diff --git a/llvm/unittests/ADT/APIntTest.cpp b/llvm/unittests/ADT/APIntTest.cpp index b14366e..a58fbd6 100644 --- a/llvm/unittests/ADT/APIntTest.cpp +++ b/llvm/unittests/ADT/APIntTest.cpp @@ -2520,6 +2520,70 @@ TEST(APIntTest, setAllBits) {    EXPECT_EQ(128u, i128.popcount());  } +TEST(APIntTest, clearBits) { +  APInt i32 = APInt::getAllOnes(32); +  i32.clearBits(1, 3); +  EXPECT_EQ(1u, i32.countr_one()); +  EXPECT_EQ(0u, i32.countr_zero()); +  EXPECT_EQ(32u, i32.getActiveBits()); +  EXPECT_EQ(0u, i32.countl_zero()); +  EXPECT_EQ(29u, i32.countl_one()); +  EXPECT_EQ(30u, i32.popcount()); + +  i32.clearBits(15, 15); +  EXPECT_EQ(1u, i32.countr_one()); +  EXPECT_EQ(0u, i32.countr_zero()); +  EXPECT_EQ(32u, i32.getActiveBits()); +  EXPECT_EQ(0u, i32.countl_zero()); +  EXPECT_EQ(29u, i32.countl_one()); +  EXPECT_EQ(30u, i32.popcount()); + +  i32.clearBits(28, 31); +  EXPECT_EQ(1u, i32.countr_one()); +  EXPECT_EQ(0u, i32.countr_zero()); +  EXPECT_EQ(32u, i32.getActiveBits()); +  EXPECT_EQ(0u, i32.countl_zero()); +  EXPECT_EQ(1u, i32.countl_one()); +  EXPECT_EQ(27u, i32.popcount()); +  EXPECT_EQ(APInt(32, "8FFFFFF9", 16), i32); + +  APInt i256 = APInt::getAllOnes(256); +  i256.clearBits(10, 250); +  EXPECT_EQ(10u, i256.countr_one()); +  EXPECT_EQ(0u, i256.countr_zero()); +  EXPECT_EQ(256u, i256.getActiveBits()); +  EXPECT_EQ(0u, i256.countl_zero()); +  EXPECT_EQ(6u, i256.countl_one()); +  EXPECT_EQ(16u, i256.popcount()); + +  APInt i311 = APInt::getAllOnes(311); +  i311.clearBits(33, 99); +  EXPECT_EQ(33u, i311.countr_one()); +  EXPECT_EQ(0u, i311.countr_zero()); +  EXPECT_EQ(311u, i311.getActiveBits()); +  EXPECT_EQ(0u, i311.countl_zero()); +  EXPECT_EQ(212u, i311.countl_one()); +  EXPECT_EQ(245u, i311.popcount()); + +  APInt i64hi32 = APInt::getAllOnes(64); +  i64hi32.clearBits(0, 32); +  EXPECT_EQ(32u, i64hi32.countl_one()); +  EXPECT_EQ(0u, i64hi32.countl_zero()); +  EXPECT_EQ(64u, i64hi32.getActiveBits()); +  EXPECT_EQ(32u, i64hi32.countr_zero()); +  EXPECT_EQ(0u, i64hi32.countr_one()); +  EXPECT_EQ(32u, i64hi32.popcount()); + +  i64hi32 = APInt::getAllOnes(64); +  i64hi32.clearBits(32, 64); +  EXPECT_EQ(32u, i64hi32.countr_one()); +  EXPECT_EQ(0u, i64hi32.countr_zero()); +  EXPECT_EQ(32u, i64hi32.getActiveBits()); +  EXPECT_EQ(32u, i64hi32.countl_zero()); +  EXPECT_EQ(0u, i64hi32.countl_one()); +  EXPECT_EQ(32u, i64hi32.popcount()); +} +  TEST(APIntTest, getLoBits) {    APInt i32(32, 0xfa);    i32.setHighBits(1); | 
