@@ -3103,6 +3103,38 @@ TEST(APIntOpsTest, Mulh) {
31033103 EXPECT_EQ (APInt (128 , " FFEB498812C66C68D4552DB89B8EBF8F" , 16 ), i128Res);
31043104}
31053105
3106+ TEST (APIntOpsTest, mulx) {
3107+ APInt u32a (32 , 0x0001'E235 );
3108+ APInt u32b (32 , 0xF623'55AD );
3109+ EXPECT_EQ (0x0001'CFA1'7CA0'76D1 , APIntOps::mulxu (u32a, u32b));
3110+
3111+ APInt u64a (64 , 0x1234'5678'90AB'CDEF );
3112+ APInt u64b (64 , 0xFEDC'BA09'8765'4321 );
3113+ EXPECT_EQ (APInt (128 , " 121FA000A3723A57C24A442FE55618CF" , 16 ), APIntOps::mulxu (u64a, u64b));
3114+
3115+ APInt u128a (128 , " 1234567890ABCDEF1234567890ABCDEF" , 16 );
3116+ APInt u128b (128 , " FEDCBA0987654321FEDCBA0987654321" , 16 );
3117+ EXPECT_EQ (APInt (256 , " 121FA000A3723A57E68984312C3A8D7E96B428606E1E6BF5C24A442FE55618CF" , 16 ), APIntOps::mulxu (u128a, u128b));
3118+
3119+ APInt s32a (32 , 0x1234'5678 );
3120+ APInt s32b (32 , 0x10AB'CDEF );
3121+ APInt s32c (32 , 0xFEDC'BA09 );
3122+ EXPECT_EQ (0x012F'7D02'2A42'D208 , APIntOps::mulxs (s32a, s32b));
3123+ EXPECT_EQ (0xFFEB'4988'09CA'3A38 , APIntOps::mulxs (s32a, s32c));
3124+
3125+ APInt s64a (64 , 0x1234'5678'90AB'CDEF );
3126+ APInt s64b (64 , 0x1234'5678'90FE'DCBA );
3127+ APInt s64c (64 , 0xFEDC'BA09'8765'4321 );
3128+ EXPECT_EQ (APInt (128 , " 014B66DC328E10C1FB99704184EF03A6" , 16 ), APIntOps::mulxs (s64a, s64b));
3129+ EXPECT_EQ (APInt (128 , " FFEB498812C66C68C24A442FE55618CF" , 16 ), APIntOps::mulxs (s64a, s64c));
3130+
3131+ APInt s128a (128 , " 1234567890ABCDEF1234567890ABCDEF" , 16 );
3132+ APInt s128b (128 , " 1234567890FEDCBA1234567890FEDCBA" , 16 );
3133+ APInt s128c (128 , " FEDCBA0987654321FEDCBA0987654321" , 16 );
3134+ EXPECT_EQ (APInt (256 , " 014B66DC328E10C1FE303DF9EA0B2529F87E475F3C6C180DFB99704184EF03A6" , 16 ), APIntOps::mulxs (s128a, s128b));
3135+ EXPECT_EQ (APInt (256 , " FFEB498812C66C68D4552DB89B8EBF8F96B428606E1E6BF5C24A442FE55618CF" , 16 ), APIntOps::mulxs (s128a, s128c));
3136+ }
3137+
31063138TEST (APIntTest, RoundingUDiv) {
31073139 for (uint64_t Ai = 1 ; Ai <= 255 ; Ai++) {
31083140 APInt A (8 , Ai);
0 commit comments