@@ -2497,6 +2497,40 @@ TEST(APIntTest, clearLowBits) {
2497
2497
EXPECT_EQ (16u , i32hi16.popcount ());
2498
2498
}
2499
2499
2500
+ TEST (APIntTest, AbsDiff) {
2501
+ using APIntOps::absdiff;
2502
+
2503
+ APInt MaxU1 (1 , 1 , false );
2504
+ APInt MinU1 (1 , 0 , false );
2505
+ EXPECT_EQ (1u , absdiff (MaxU1, MinU1).getZExtValue ());
2506
+ EXPECT_EQ (1u , absdiff (MinU1, MaxU1).getZExtValue ());
2507
+
2508
+ APInt MaxU4 (4 , 15 , false );
2509
+ APInt MinU4 (4 , 0 , false );
2510
+ EXPECT_EQ (15u , absdiff (MaxU4, MinU4).getZExtValue ());
2511
+ EXPECT_EQ (15u , absdiff (MinU4, MaxU4).getZExtValue ());
2512
+
2513
+ APInt MaxS8 (8 , 127 , true );
2514
+ APInt MinS8 (8 , -128 , true );
2515
+ EXPECT_EQ (1u , absdiff (MaxS8, MinS8).getZExtValue ());
2516
+ EXPECT_EQ (1u , absdiff (MinS8, MaxS8).getZExtValue ());
2517
+
2518
+ APInt MaxU16 (16 , 65535 , false );
2519
+ APInt MinU16 (16 , 0 , false );
2520
+ EXPECT_EQ (65535u , absdiff (MaxU16, MinU16).getZExtValue ());
2521
+ EXPECT_EQ (65535u , absdiff (MinU16, MaxU16).getZExtValue ());
2522
+
2523
+ APInt MaxS16 (16 , 32767 , true );
2524
+ APInt MinS16 (16 , -32768 , true );
2525
+ APInt ZeroS16 (16 , 0 , true );
2526
+ EXPECT_EQ (1u , absdiff (MaxS16, MinS16).getZExtValue ());
2527
+ EXPECT_EQ (1u , absdiff (MinS16, MaxS16).getZExtValue ());
2528
+ EXPECT_EQ (32768u , absdiff (ZeroS16, MinS16));
2529
+ EXPECT_EQ (32768u , absdiff (MinS16, ZeroS16));
2530
+ EXPECT_EQ (32767u , absdiff (ZeroS16, MaxS16));
2531
+ EXPECT_EQ (32767u , absdiff (MaxS16, ZeroS16));
2532
+ }
2533
+
2500
2534
TEST (APIntTest, GCD) {
2501
2535
using APIntOps::GreatestCommonDivisor;
2502
2536
0 commit comments