@@ -2497,6 +2497,40 @@ TEST(APIntTest, clearLowBits) {
24972497 EXPECT_EQ (16u , i32hi16.popcount ());
24982498}
24992499
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+
25002534TEST (APIntTest, GCD) {
25012535 using APIntOps::GreatestCommonDivisor;
25022536
0 commit comments