@@ -2520,6 +2520,70 @@ TEST(APIntTest, setAllBits) {
25202520 EXPECT_EQ (128u , i128 .popcount ());
25212521}
25222522
2523+ TEST (APIntTest, clearBits) {
2524+ APInt i32 = APInt::getAllOnes (32 );
2525+ i32 .clearBits (1 , 3 );
2526+ EXPECT_EQ (1u , i32 .countr_one ());
2527+ EXPECT_EQ (0u , i32 .countr_zero ());
2528+ EXPECT_EQ (32u , i32 .getActiveBits ());
2529+ EXPECT_EQ (0u , i32 .countl_zero ());
2530+ EXPECT_EQ (29u , i32 .countl_one ());
2531+ EXPECT_EQ (30u , i32 .popcount ());
2532+
2533+ i32 .clearBits (15 , 15 );
2534+ EXPECT_EQ (1u , i32 .countr_one ());
2535+ EXPECT_EQ (0u , i32 .countr_zero ());
2536+ EXPECT_EQ (32u , i32 .getActiveBits ());
2537+ EXPECT_EQ (0u , i32 .countl_zero ());
2538+ EXPECT_EQ (29u , i32 .countl_one ());
2539+ EXPECT_EQ (30u , i32 .popcount ());
2540+
2541+ i32 .clearBits (28 , 31 );
2542+ EXPECT_EQ (1u , i32 .countr_one ());
2543+ EXPECT_EQ (0u , i32 .countr_zero ());
2544+ EXPECT_EQ (32u , i32 .getActiveBits ());
2545+ EXPECT_EQ (0u , i32 .countl_zero ());
2546+ EXPECT_EQ (1u , i32 .countl_one ());
2547+ EXPECT_EQ (27u , i32 .popcount ());
2548+ EXPECT_EQ (APInt (32 , " 8FFFFFF9" , 16 ), i32 );
2549+
2550+ APInt i256 = APInt::getAllOnes (256 );
2551+ i256.clearBits (10 , 250 );
2552+ EXPECT_EQ (10u , i256.countr_one ());
2553+ EXPECT_EQ (0u , i256.countr_zero ());
2554+ EXPECT_EQ (256u , i256.getActiveBits ());
2555+ EXPECT_EQ (0u , i256.countl_zero ());
2556+ EXPECT_EQ (6u , i256.countl_one ());
2557+ EXPECT_EQ (16u , i256.popcount ());
2558+
2559+ APInt i311 = APInt::getAllOnes (311 );
2560+ i311.clearBits (33 , 99 );
2561+ EXPECT_EQ (33u , i311.countr_one ());
2562+ EXPECT_EQ (0u , i311.countr_zero ());
2563+ EXPECT_EQ (311u , i311.getActiveBits ());
2564+ EXPECT_EQ (0u , i311.countl_zero ());
2565+ EXPECT_EQ (212u , i311.countl_one ());
2566+ EXPECT_EQ (245u , i311.popcount ());
2567+
2568+ APInt i64hi32 = APInt::getAllOnes (64 );
2569+ i64hi32.clearBits (0 , 32 );
2570+ EXPECT_EQ (32u , i64hi32.countl_one ());
2571+ EXPECT_EQ (0u , i64hi32.countl_zero ());
2572+ EXPECT_EQ (64u , i64hi32.getActiveBits ());
2573+ EXPECT_EQ (32u , i64hi32.countr_zero ());
2574+ EXPECT_EQ (0u , i64hi32.countr_one ());
2575+ EXPECT_EQ (32u , i64hi32.popcount ());
2576+
2577+ i64hi32 = APInt::getAllOnes (64 );
2578+ i64hi32.clearBits (32 , 64 );
2579+ EXPECT_EQ (32u , i64hi32.countr_one ());
2580+ EXPECT_EQ (0u , i64hi32.countr_zero ());
2581+ EXPECT_EQ (32u , i64hi32.getActiveBits ());
2582+ EXPECT_EQ (32u , i64hi32.countl_zero ());
2583+ EXPECT_EQ (0u , i64hi32.countl_one ());
2584+ EXPECT_EQ (32u , i64hi32.popcount ());
2585+ }
2586+
25232587TEST (APIntTest, getLoBits) {
25242588 APInt i32 (32 , 0xfa );
25252589 i32 .setHighBits (1 );
0 commit comments