@@ -2534,6 +2534,71 @@ TEST(APIntTest, clearLowBits) {
2534
2534
EXPECT_EQ (16u , i32hi16.popcount ());
2535
2535
}
2536
2536
2537
+ TEST (APIntTest, clearHighBits) {
2538
+ APInt i64hi32 = APInt::getAllOnes (64 );
2539
+ i64hi32.clearHighBits (32 );
2540
+ EXPECT_EQ (32u , i64hi32.countr_one ());
2541
+ EXPECT_EQ (0u , i64hi32.countr_zero ());
2542
+ EXPECT_EQ (32u , i64hi32.getActiveBits ());
2543
+ EXPECT_EQ (32u , i64hi32.countl_zero ());
2544
+ EXPECT_EQ (0u , i64hi32.countl_one ());
2545
+ EXPECT_EQ (32u , i64hi32.popcount ());
2546
+
2547
+ APInt i128hi64 = APInt::getAllOnes (128 );
2548
+ i128hi64.clearHighBits (64 );
2549
+ EXPECT_EQ (64u , i128hi64.countr_one ());
2550
+ EXPECT_EQ (0u , i128hi64.countr_zero ());
2551
+ EXPECT_EQ (64u , i128hi64.getActiveBits ());
2552
+ EXPECT_EQ (64u , i128hi64.countl_zero ());
2553
+ EXPECT_EQ (0u , i128hi64.countl_one ());
2554
+ EXPECT_EQ (64u , i128hi64.popcount ());
2555
+
2556
+ APInt i128hi24 = APInt::getAllOnes (128 );
2557
+ i128hi24.clearHighBits (104 );
2558
+ EXPECT_EQ (24u , i128hi24.countr_one ());
2559
+ EXPECT_EQ (0u , i128hi24.countr_zero ());
2560
+ EXPECT_EQ (24u , i128hi24.getActiveBits ());
2561
+ EXPECT_EQ (104u , i128hi24.countl_zero ());
2562
+ EXPECT_EQ (0u , i128hi24.countl_one ());
2563
+ EXPECT_EQ (24u , i128hi24.popcount ());
2564
+
2565
+ APInt i128hi104 = APInt::getAllOnes (128 );
2566
+ i128hi104.clearHighBits (24 );
2567
+ EXPECT_EQ (104u , i128hi104.countr_one ());
2568
+ EXPECT_EQ (0u , i128hi104.countr_zero ());
2569
+ EXPECT_EQ (104u , i128hi104.getActiveBits ());
2570
+ EXPECT_EQ (24u , i128hi104.countl_zero ());
2571
+ EXPECT_EQ (0u , i128hi104.countl_one ());
2572
+ EXPECT_EQ (104u , i128hi104.popcount ());
2573
+
2574
+ APInt i128hi0 = APInt::getAllOnes (128 );
2575
+ i128hi0.clearHighBits (128 );
2576
+ EXPECT_EQ (0u , i128hi0.countr_one ());
2577
+ EXPECT_EQ (128u , i128hi0.countr_zero ());
2578
+ EXPECT_EQ (0u , i128hi0.getActiveBits ());
2579
+ EXPECT_EQ (128u , i128hi0.countl_zero ());
2580
+ EXPECT_EQ (0u , i128hi0.countl_one ());
2581
+ EXPECT_EQ (0u , i128hi0.popcount ());
2582
+
2583
+ APInt i80hi1 = APInt::getAllOnes (80 );
2584
+ i80hi1.clearHighBits (79 );
2585
+ EXPECT_EQ (1u , i80hi1.countr_one ());
2586
+ EXPECT_EQ (0u , i80hi1.countr_zero ());
2587
+ EXPECT_EQ (1u , i80hi1.getActiveBits ());
2588
+ EXPECT_EQ (79u , i80hi1.countl_zero ());
2589
+ EXPECT_EQ (0u , i80hi1.countl_one ());
2590
+ EXPECT_EQ (1u , i80hi1.popcount ());
2591
+
2592
+ APInt i32hi16 = APInt::getAllOnes (32 );
2593
+ i32hi16.clearHighBits (16 );
2594
+ EXPECT_EQ (16u , i32hi16.countr_one ());
2595
+ EXPECT_EQ (0u , i32hi16.countr_zero ());
2596
+ EXPECT_EQ (16u , i32hi16.getActiveBits ());
2597
+ EXPECT_EQ (16u , i32hi16.countl_zero ());
2598
+ EXPECT_EQ (0u , i32hi16.countl_one ());
2599
+ EXPECT_EQ (16u , i32hi16.popcount ());
2600
+ }
2601
+
2537
2602
TEST (APIntTest, abds) {
2538
2603
using APIntOps::abds;
2539
2604
0 commit comments