@@ -1111,11 +1111,11 @@ TEST(APIntTest, fromString) {
11111111 EXPECT_EQ (APInt (32 , 3 ), APInt (32 , " +11" , 2 ));
11121112 EXPECT_EQ (APInt (32 , 4 ), APInt (32 , " +100" , 2 ));
11131113
1114- EXPECT_EQ (APInt (32 , uint64_t (-0LL )), APInt (32 , " -0" , 2 ));
1115- EXPECT_EQ (APInt (32 , uint64_t (-1LL )), APInt (32 , " -1" , 2 ));
1116- EXPECT_EQ (APInt (32 , uint64_t (-2LL )), APInt (32 , " -10" , 2 ));
1117- EXPECT_EQ (APInt (32 , uint64_t (-3LL )), APInt (32 , " -11" , 2 ));
1118- EXPECT_EQ (APInt (32 , uint64_t (-4LL )), APInt (32 , " -100" , 2 ));
1114+ EXPECT_EQ (APInt (32 , uint32_t (-0LL )), APInt (32 , " -0" , 2 ));
1115+ EXPECT_EQ (APInt (32 , uint32_t (-1LL )), APInt (32 , " -1" , 2 ));
1116+ EXPECT_EQ (APInt (32 , uint32_t (-2LL )), APInt (32 , " -10" , 2 ));
1117+ EXPECT_EQ (APInt (32 , uint32_t (-3LL )), APInt (32 , " -11" , 2 ));
1118+ EXPECT_EQ (APInt (32 , uint32_t (-4LL )), APInt (32 , " -100" , 2 ));
11191119
11201120 EXPECT_EQ (APInt (32 , 0 ), APInt (32 , " 0" , 8 ));
11211121 EXPECT_EQ (APInt (32 , 1 ), APInt (32 , " 1" , 8 ));
@@ -1131,12 +1131,12 @@ TEST(APIntTest, fromString) {
11311131 EXPECT_EQ (APInt (32 , +15 ), APInt (32 , " +17" , 8 ));
11321132 EXPECT_EQ (APInt (32 , +16 ), APInt (32 , " +20" , 8 ));
11331133
1134- EXPECT_EQ (APInt (32 , uint64_t (-0LL )), APInt (32 , " -0" , 8 ));
1135- EXPECT_EQ (APInt (32 , uint64_t (-1LL )), APInt (32 , " -1" , 8 ));
1136- EXPECT_EQ (APInt (32 , uint64_t (-7LL )), APInt (32 , " -7" , 8 ));
1137- EXPECT_EQ (APInt (32 , uint64_t (-8LL )), APInt (32 , " -10" , 8 ));
1138- EXPECT_EQ (APInt (32 , uint64_t (-15LL )), APInt (32 , " -17" , 8 ));
1139- EXPECT_EQ (APInt (32 , uint64_t (-16LL )), APInt (32 , " -20" , 8 ));
1134+ EXPECT_EQ (APInt (32 , uint32_t (-0LL )), APInt (32 , " -0" , 8 ));
1135+ EXPECT_EQ (APInt (32 , uint32_t (-1LL )), APInt (32 , " -1" , 8 ));
1136+ EXPECT_EQ (APInt (32 , uint32_t (-7LL )), APInt (32 , " -7" , 8 ));
1137+ EXPECT_EQ (APInt (32 , uint32_t (-8LL )), APInt (32 , " -10" , 8 ));
1138+ EXPECT_EQ (APInt (32 , uint32_t (-15LL )), APInt (32 , " -17" , 8 ));
1139+ EXPECT_EQ (APInt (32 , uint32_t (-16LL )), APInt (32 , " -20" , 8 ));
11401140
11411141 EXPECT_EQ (APInt (32 , 0 ), APInt (32 , " 0" , 10 ));
11421142 EXPECT_EQ (APInt (32 , 1 ), APInt (32 , " 1" , 10 ));
@@ -1145,12 +1145,12 @@ TEST(APIntTest, fromString) {
11451145 EXPECT_EQ (APInt (32 , 19 ), APInt (32 , " 19" , 10 ));
11461146 EXPECT_EQ (APInt (32 , 20 ), APInt (32 , " 20" , 10 ));
11471147
1148- EXPECT_EQ (APInt (32 , uint64_t (-0LL )), APInt (32 , " -0" , 10 ));
1149- EXPECT_EQ (APInt (32 , uint64_t (-1LL )), APInt (32 , " -1" , 10 ));
1150- EXPECT_EQ (APInt (32 , uint64_t (-9LL )), APInt (32 , " -9" , 10 ));
1151- EXPECT_EQ (APInt (32 , uint64_t (-10LL )), APInt (32 , " -10" , 10 ));
1152- EXPECT_EQ (APInt (32 , uint64_t (-19LL )), APInt (32 , " -19" , 10 ));
1153- EXPECT_EQ (APInt (32 , uint64_t (-20LL )), APInt (32 , " -20" , 10 ));
1148+ EXPECT_EQ (APInt (32 , uint32_t (-0LL )), APInt (32 , " -0" , 10 ));
1149+ EXPECT_EQ (APInt (32 , uint32_t (-1LL )), APInt (32 , " -1" , 10 ));
1150+ EXPECT_EQ (APInt (32 , uint32_t (-9LL )), APInt (32 , " -9" , 10 ));
1151+ EXPECT_EQ (APInt (32 , uint32_t (-10LL )), APInt (32 , " -10" , 10 ));
1152+ EXPECT_EQ (APInt (32 , uint32_t (-19LL )), APInt (32 , " -19" , 10 ));
1153+ EXPECT_EQ (APInt (32 , uint32_t (-20LL )), APInt (32 , " -20" , 10 ));
11541154
11551155 EXPECT_EQ (APInt (32 , 0 ), APInt (32 , " 0" , 16 ));
11561156 EXPECT_EQ (APInt (32 , 1 ), APInt (32 , " 1" , 16 ));
@@ -1159,12 +1159,12 @@ TEST(APIntTest, fromString) {
11591159 EXPECT_EQ (APInt (32 , 31 ), APInt (32 , " 1F" , 16 ));
11601160 EXPECT_EQ (APInt (32 , 32 ), APInt (32 , " 20" , 16 ));
11611161
1162- EXPECT_EQ (APInt (32 , uint64_t (-0LL )), APInt (32 , " -0" , 16 ));
1163- EXPECT_EQ (APInt (32 , uint64_t (-1LL )), APInt (32 , " -1" , 16 ));
1164- EXPECT_EQ (APInt (32 , uint64_t (-15LL )), APInt (32 , " -F" , 16 ));
1165- EXPECT_EQ (APInt (32 , uint64_t (-16LL )), APInt (32 , " -10" , 16 ));
1166- EXPECT_EQ (APInt (32 , uint64_t (-31LL )), APInt (32 , " -1F" , 16 ));
1167- EXPECT_EQ (APInt (32 , uint64_t (-32LL )), APInt (32 , " -20" , 16 ));
1162+ EXPECT_EQ (APInt (32 , uint32_t (-0LL )), APInt (32 , " -0" , 16 ));
1163+ EXPECT_EQ (APInt (32 , uint32_t (-1LL )), APInt (32 , " -1" , 16 ));
1164+ EXPECT_EQ (APInt (32 , uint32_t (-15LL )), APInt (32 , " -F" , 16 ));
1165+ EXPECT_EQ (APInt (32 , uint32_t (-16LL )), APInt (32 , " -10" , 16 ));
1166+ EXPECT_EQ (APInt (32 , uint32_t (-31LL )), APInt (32 , " -1F" , 16 ));
1167+ EXPECT_EQ (APInt (32 , uint32_t (-32LL )), APInt (32 , " -20" , 16 ));
11681168
11691169 EXPECT_EQ (APInt (32 , 0 ), APInt (32 , " 0" , 36 ));
11701170 EXPECT_EQ (APInt (32 , 1 ), APInt (32 , " 1" , 36 ));
@@ -1173,12 +1173,12 @@ TEST(APIntTest, fromString) {
11731173 EXPECT_EQ (APInt (32 , 71 ), APInt (32 , " 1Z" , 36 ));
11741174 EXPECT_EQ (APInt (32 , 72 ), APInt (32 , " 20" , 36 ));
11751175
1176- EXPECT_EQ (APInt (32 , uint64_t (-0LL )), APInt (32 , " -0" , 36 ));
1177- EXPECT_EQ (APInt (32 , uint64_t (-1LL )), APInt (32 , " -1" , 36 ));
1178- EXPECT_EQ (APInt (32 , uint64_t (-35LL )), APInt (32 , " -Z" , 36 ));
1179- EXPECT_EQ (APInt (32 , uint64_t (-36LL )), APInt (32 , " -10" , 36 ));
1180- EXPECT_EQ (APInt (32 , uint64_t (-71LL )), APInt (32 , " -1Z" , 36 ));
1181- EXPECT_EQ (APInt (32 , uint64_t (-72LL )), APInt (32 , " -20" , 36 ));
1176+ EXPECT_EQ (APInt (32 , uint32_t (-0LL )), APInt (32 , " -0" , 36 ));
1177+ EXPECT_EQ (APInt (32 , uint32_t (-1LL )), APInt (32 , " -1" , 36 ));
1178+ EXPECT_EQ (APInt (32 , uint32_t (-35LL )), APInt (32 , " -Z" , 36 ));
1179+ EXPECT_EQ (APInt (32 , uint32_t (-36LL )), APInt (32 , " -10" , 36 ));
1180+ EXPECT_EQ (APInt (32 , uint32_t (-71LL )), APInt (32 , " -1Z" , 36 ));
1181+ EXPECT_EQ (APInt (32 , uint32_t (-72LL )), APInt (32 , " -20" , 36 ));
11821182}
11831183
11841184TEST (APIntTest, SaturatingMath) {
@@ -1202,63 +1202,64 @@ TEST(APIntTest, SaturatingMath) {
12021202 EXPECT_EQ (APInt (6 , 31 ), AP_42.truncSSat (6 ));
12031203 EXPECT_EQ (APInt (5 , 15 ), AP_42.truncSSat (5 ));
12041204
1205- EXPECT_EQ (APInt (8 , -56 ), AP_200.truncSSat (8 ));
1206- EXPECT_EQ (APInt (7 , -56 ), AP_200.truncSSat (7 ));
1207- EXPECT_EQ (APInt (6 , -32 ), AP_200.truncSSat (6 ));
1208- EXPECT_EQ (APInt (5 , -16 ), AP_200.truncSSat (5 ));
1205+ EXPECT_EQ (APInt (8 , -56 , true ), AP_200.truncSSat (8 ));
1206+ EXPECT_EQ (APInt (7 , -56 , true ), AP_200.truncSSat (7 ));
1207+ EXPECT_EQ (APInt (6 , -32 , true ), AP_200.truncSSat (6 ));
1208+ EXPECT_EQ (APInt (5 , -16 , true ), AP_200.truncSSat (5 ));
12091209
12101210 EXPECT_EQ (APInt (8 , 200 ), AP_100.uadd_sat (AP_100));
12111211 EXPECT_EQ (APInt (8 , 255 ), AP_100.uadd_sat (AP_200));
12121212 EXPECT_EQ (APInt (8 , 255 ), APInt (8 , 255 ).uadd_sat (APInt (8 , 255 )));
12131213
12141214 EXPECT_EQ (APInt (8 , 110 ), AP_10.sadd_sat (AP_100));
12151215 EXPECT_EQ (APInt (8 , 127 ), AP_100.sadd_sat (AP_100));
1216- EXPECT_EQ (APInt (8 , -128 ), (-AP_100).sadd_sat (-AP_100));
1217- EXPECT_EQ (APInt (8 , -128 ), APInt (8 , -128 ).sadd_sat (APInt (8 , -128 )));
1216+ EXPECT_EQ (APInt (8 , -128 , true ), (-AP_100).sadd_sat (-AP_100));
1217+ EXPECT_EQ (APInt (8 , -128 , true ),
1218+ APInt (8 , -128 , true ).sadd_sat (APInt (8 , -128 , true )));
12181219
12191220 EXPECT_EQ (APInt (8 , 90 ), AP_100.usub_sat (AP_10));
12201221 EXPECT_EQ (APInt (8 , 0 ), AP_100.usub_sat (AP_200));
12211222 EXPECT_EQ (APInt (8 , 0 ), APInt (8 , 0 ).usub_sat (APInt (8 , 255 )));
12221223
1223- EXPECT_EQ (APInt (8 , -90 ), AP_10.ssub_sat (AP_100));
1224+ EXPECT_EQ (APInt (8 , -90 , true ), AP_10.ssub_sat (AP_100));
12241225 EXPECT_EQ (APInt (8 , 127 ), AP_100.ssub_sat (-AP_100));
1225- EXPECT_EQ (APInt (8 , -128 ), (-AP_100).ssub_sat (AP_100));
1226- EXPECT_EQ (APInt (8 , -128 ), APInt (8 , -128 ).ssub_sat (APInt (8 , 127 )));
1226+ EXPECT_EQ (APInt (8 , -128 , true ), (-AP_100).ssub_sat (AP_100));
1227+ EXPECT_EQ (APInt (8 , -128 , true ), APInt (8 , -128 , true ).ssub_sat (APInt (8 , 127 )));
12271228
12281229 EXPECT_EQ (APInt (8 , 250 ), APInt (8 , 50 ).umul_sat (APInt (8 , 5 )));
12291230 EXPECT_EQ (APInt (8 , 255 ), APInt (8 , 50 ).umul_sat (APInt (8 , 6 )));
1230- EXPECT_EQ (APInt (8 , 255 ), APInt (8 , -128 ).umul_sat (APInt (8 , 3 )));
1231- EXPECT_EQ (APInt (8 , 255 ), APInt (8 , 3 ).umul_sat (APInt (8 , -128 )));
1232- EXPECT_EQ (APInt (8 , 255 ), APInt (8 , -128 ).umul_sat (APInt (8 , -128 )));
1231+ EXPECT_EQ (APInt (8 , 255 ), APInt (8 , -128 , true ).umul_sat (APInt (8 , 3 )));
1232+ EXPECT_EQ (APInt (8 , 255 ), APInt (8 , 3 ).umul_sat (APInt (8 , -128 , true )));
1233+ EXPECT_EQ (APInt (8 , 255 ), APInt (8 , -128 , true ).umul_sat (APInt (8 , -128 , true )));
12331234
12341235 EXPECT_EQ (APInt (8 , 125 ), APInt (8 , 25 ).smul_sat (APInt (8 , 5 )));
12351236 EXPECT_EQ (APInt (8 , 127 ), APInt (8 , 25 ).smul_sat (APInt (8 , 6 )));
12361237 EXPECT_EQ (APInt (8 , 127 ), APInt (8 , 127 ).smul_sat (APInt (8 , 127 )));
1237- EXPECT_EQ (APInt (8 , -125 ), APInt (8 , -25 ).smul_sat (APInt (8 , 5 )));
1238- EXPECT_EQ (APInt (8 , -125 ), APInt (8 , 25 ).smul_sat (APInt (8 , -5 )));
1239- EXPECT_EQ (APInt (8 , 125 ), APInt (8 , -25 ).smul_sat (APInt (8 , -5 )));
1238+ EXPECT_EQ (APInt (8 , -125 , true ), APInt (8 , -25 , true ).smul_sat (APInt (8 , 5 )));
1239+ EXPECT_EQ (APInt (8 , -125 , true ), APInt (8 , 25 ).smul_sat (APInt (8 , -5 , true )));
1240+ EXPECT_EQ (APInt (8 , 125 ), APInt (8 , -25 , true ).smul_sat (APInt (8 , -5 , true )));
12401241 EXPECT_EQ (APInt (8 , 125 ), APInt (8 , 25 ).smul_sat (APInt (8 , 5 )));
1241- EXPECT_EQ (APInt (8 , -128 ), APInt (8 , -25 ).smul_sat (APInt (8 , 6 )));
1242- EXPECT_EQ (APInt (8 , -128 ), APInt (8 , 25 ).smul_sat (APInt (8 , -6 )));
1243- EXPECT_EQ (APInt (8 , 127 ), APInt (8 , -25 ).smul_sat (APInt (8 , -6 )));
1242+ EXPECT_EQ (APInt (8 , -128 , true ), APInt (8 , -25 , true ).smul_sat (APInt (8 , 6 )));
1243+ EXPECT_EQ (APInt (8 , -128 , true ), APInt (8 , 25 ).smul_sat (APInt (8 , -6 , true )));
1244+ EXPECT_EQ (APInt (8 , 127 ), APInt (8 , -25 , true ).smul_sat (APInt (8 , -6 , true )));
12441245 EXPECT_EQ (APInt (8 , 127 ), APInt (8 , 25 ).smul_sat (APInt (8 , 6 )));
12451246
12461247 EXPECT_EQ (APInt (8 , 128 ), APInt (8 , 4 ).ushl_sat (APInt (8 , 5 )));
12471248 EXPECT_EQ (APInt (8 , 255 ), APInt (8 , 4 ).ushl_sat (APInt (8 , 6 )));
12481249 EXPECT_EQ (APInt (8 , 128 ), APInt (8 , 1 ).ushl_sat (APInt (8 , 7 )));
12491250 EXPECT_EQ (APInt (8 , 255 ), APInt (8 , 1 ).ushl_sat (APInt (8 , 8 )));
1250- EXPECT_EQ (APInt (8 , 255 ), APInt (8 , -128 ).ushl_sat (APInt (8 , 2 )));
1251+ EXPECT_EQ (APInt (8 , 255 ), APInt (8 , -128 , true ).ushl_sat (APInt (8 , 2 )));
12511252 EXPECT_EQ (APInt (8 , 255 ), APInt (8 , 64 ).ushl_sat (APInt (8 , 2 )));
1252- EXPECT_EQ (APInt (8 , 255 ), APInt (8 , 64 ).ushl_sat (APInt (8 , -2 )));
1253+ EXPECT_EQ (APInt (8 , 255 ), APInt (8 , 64 ).ushl_sat (APInt (8 , -2 , true )));
12531254
12541255 EXPECT_EQ (APInt (8 , 64 ), APInt (8 , 4 ).sshl_sat (APInt (8 , 4 )));
12551256 EXPECT_EQ (APInt (8 , 127 ), APInt (8 , 4 ).sshl_sat (APInt (8 , 5 )));
12561257 EXPECT_EQ (APInt (8 , 127 ), APInt (8 , 1 ).sshl_sat (APInt (8 , 8 )));
1257- EXPECT_EQ (APInt (8 , -64 ), APInt (8 , -4 ).sshl_sat (APInt (8 , 4 )));
1258- EXPECT_EQ (APInt (8 , -128 ), APInt (8 , -4 ).sshl_sat (APInt (8 , 5 )));
1259- EXPECT_EQ (APInt (8 , -128 ), APInt (8 , -4 ).sshl_sat (APInt (8 , 6 )));
1260- EXPECT_EQ (APInt (8 , -128 ), APInt (8 , -1 ).sshl_sat (APInt (8 , 7 )));
1261- EXPECT_EQ (APInt (8 , -128 ), APInt (8 , -1 ).sshl_sat (APInt (8 , 8 )));
1258+ EXPECT_EQ (APInt (8 , -64 , true ), APInt (8 , -4 , true ).sshl_sat (APInt (8 , 4 )));
1259+ EXPECT_EQ (APInt (8 , -128 , true ), APInt (8 , -4 , true ).sshl_sat (APInt (8 , 5 )));
1260+ EXPECT_EQ (APInt (8 , -128 , true ), APInt (8 , -4 , true ).sshl_sat (APInt (8 , 6 )));
1261+ EXPECT_EQ (APInt (8 , -128 , true ), APInt (8 , -1 , true ).sshl_sat (APInt (8 , 7 )));
1262+ EXPECT_EQ (APInt (8 , -128 , true ), APInt (8 , -1 , true ).sshl_sat (APInt (8 , 8 )));
12621263}
12631264
12641265TEST (APIntTest, FromArray) {
@@ -1400,39 +1401,39 @@ TEST(APIntTest, toString) {
14001401 S.clear ();
14011402
14021403 isSigned = false ;
1403- APInt (8 , 255 , isSigned ).toString (S, 2 , isSigned, true );
1404+ APInt (8 , 255 ).toString (S, 2 , isSigned, true );
14041405 EXPECT_EQ (std::string (S), " 0b11111111" );
14051406 S.clear ();
1406- APInt (8 , 255 , isSigned ).toString (S, 8 , isSigned, true );
1407+ APInt (8 , 255 ).toString (S, 8 , isSigned, true );
14071408 EXPECT_EQ (std::string (S), " 0377" );
14081409 S.clear ();
1409- APInt (8 , 255 , isSigned ).toString (S, 10 , isSigned, true );
1410+ APInt (8 , 255 ).toString (S, 10 , isSigned, true );
14101411 EXPECT_EQ (std::string (S), " 255" );
14111412 S.clear ();
1412- APInt (8 , 255 , isSigned ).toString (S, 16 , isSigned, true , /* UpperCase=*/ false );
1413+ APInt (8 , 255 ).toString (S, 16 , isSigned, true , /* UpperCase=*/ false );
14131414 EXPECT_EQ (std::string (S), " 0xff" );
14141415 S.clear ();
1415- APInt (8 , 255 , isSigned ).toString (S, 16 , isSigned, true );
1416+ APInt (8 , 255 ).toString (S, 16 , isSigned, true );
14161417 EXPECT_EQ (std::string (S), " 0xFF" );
14171418 S.clear ();
1418- APInt (8 , 255 , isSigned ).toString (S, 36 , isSigned, false );
1419+ APInt (8 , 255 ).toString (S, 36 , isSigned, false );
14191420 EXPECT_EQ (std::string (S), " 73" );
14201421 S.clear ();
14211422
14221423 isSigned = true ;
1423- APInt (8 , 255 , isSigned ).toString (S, 2 , isSigned, true );
1424+ APInt (8 , 255 ).toString (S, 2 , isSigned, true );
14241425 EXPECT_EQ (std::string (S), " -0b1" );
14251426 S.clear ();
1426- APInt (8 , 255 , isSigned ).toString (S, 8 , isSigned, true );
1427+ APInt (8 , 255 ).toString (S, 8 , isSigned, true );
14271428 EXPECT_EQ (std::string (S), " -01" );
14281429 S.clear ();
1429- APInt (8 , 255 , isSigned ).toString (S, 10 , isSigned, true );
1430+ APInt (8 , 255 ).toString (S, 10 , isSigned, true );
14301431 EXPECT_EQ (std::string (S), " -1" );
14311432 S.clear ();
1432- APInt (8 , 255 , isSigned ).toString (S, 16 , isSigned, true );
1433+ APInt (8 , 255 ).toString (S, 16 , isSigned, true );
14331434 EXPECT_EQ (std::string (S), " -0x1" );
14341435 S.clear ();
1435- APInt (8 , 255 , isSigned ).toString (S, 36 , isSigned, false );
1436+ APInt (8 , 255 ).toString (S, 36 , isSigned, false );
14361437 EXPECT_EQ (std::string (S), " -1" );
14371438 S.clear ();
14381439
@@ -1515,7 +1516,7 @@ TEST(APIntTest, Rotate) {
15151516 EXPECT_EQ (APInt (32 , 2 ), APInt (32 , 1 ).rotl (APInt (33 , 33 )));
15161517 EXPECT_EQ (APInt (32 , (1 << 8 )), APInt (32 , 1 ).rotl (APInt (32 , 40 )));
15171518 EXPECT_EQ (APInt (32 , (1 << 30 )), APInt (32 , 1 ).rotl (APInt (31 , 30 )));
1518- EXPECT_EQ (APInt (32 , (1 << 31 )), APInt (32 , 1 ).rotl (APInt (31 , 31 )));
1519+ EXPECT_EQ (APInt (32 , (1u << 31 )), APInt (32 , 1 ).rotl (APInt (31 , 31 )));
15191520
15201521 EXPECT_EQ (APInt (32 , 1 ), APInt (32 , 1 ).rotl (APInt (1 , 0 )));
15211522 EXPECT_EQ (APInt (32 , 2 ), APInt (32 , 1 ).rotl (APInt (1 , 1 )));
@@ -1542,24 +1543,24 @@ TEST(APIntTest, Rotate) {
15421543 EXPECT_EQ (APInt (8 , 16 ), APInt (8 , 1 ).rotr (4 ));
15431544 EXPECT_EQ (APInt (8 , 1 ), APInt (8 , 1 ).rotr (8 ));
15441545
1545- EXPECT_EQ (APInt (32 , (1 << 31 )), APInt (32 , 1 ).rotr (33 ));
1546- EXPECT_EQ (APInt (32 , (1 << 31 )), APInt (32 , 1 ).rotr (APInt (32 , 33 )));
1546+ EXPECT_EQ (APInt (32 , (1u << 31 )), APInt (32 , 1 ).rotr (33 ));
1547+ EXPECT_EQ (APInt (32 , (1u << 31 )), APInt (32 , 1 ).rotr (APInt (32 , 33 )));
15471548
1548- EXPECT_EQ (APInt (32 , (1 << 31 )), APInt (32 , 1 ).rotr (33 ));
1549- EXPECT_EQ (APInt (32 , (1 << 31 )), APInt (32 , 1 ).rotr (APInt (32 , 33 )));
1550- EXPECT_EQ (APInt (32 , (1 << 31 )), APInt (32 , 1 ).rotr (APInt (33 , 33 )));
1549+ EXPECT_EQ (APInt (32 , (1u << 31 )), APInt (32 , 1 ).rotr (33 ));
1550+ EXPECT_EQ (APInt (32 , (1u << 31 )), APInt (32 , 1 ).rotr (APInt (32 , 33 )));
1551+ EXPECT_EQ (APInt (32 , (1u << 31 )), APInt (32 , 1 ).rotr (APInt (33 , 33 )));
15511552 EXPECT_EQ (APInt (32 , (1 << 24 )), APInt (32 , 1 ).rotr (APInt (32 , 40 )));
15521553
15531554 EXPECT_EQ (APInt (32 , (1 << 2 )), APInt (32 , 1 ).rotr (APInt (31 , 30 )));
15541555 EXPECT_EQ (APInt (32 , (1 << 1 )), APInt (32 , 1 ).rotr (APInt (31 , 31 )));
15551556
15561557 EXPECT_EQ (APInt (32 , 1 ), APInt (32 , 1 ).rotr (APInt (1 , 0 )));
1557- EXPECT_EQ (APInt (32 , (1 << 31 )), APInt (32 , 1 ).rotr (APInt (1 , 1 )));
1558+ EXPECT_EQ (APInt (32 , (1u << 31 )), APInt (32 , 1 ).rotr (APInt (1 , 1 )));
15581559
15591560 EXPECT_EQ (APInt (32 , (1 << 28 )), APInt (32 , 1 ).rotr (APInt (3 , 4 )));
15601561
15611562 EXPECT_EQ (APInt (32 , 1 ), APInt (32 , 1 ).rotr (APInt (64 , 64 )));
1562- EXPECT_EQ (APInt (32 , (1 << 31 )), APInt (32 , 1 ).rotr (APInt (64 , 65 )));
1563+ EXPECT_EQ (APInt (32 , (1u << 31 )), APInt (32 , 1 ).rotr (APInt (64 , 65 )));
15631564
15641565 EXPECT_EQ (APInt (7 , 48 ), APInt (7 , 3 ).rotr (APInt (7 , 3 )));
15651566 EXPECT_EQ (APInt (7 , 48 ), APInt (7 , 3 ).rotr (APInt (7 , 10 )));
@@ -1581,7 +1582,7 @@ TEST(APIntTest, Splat) {
15811582
15821583 APInt ValB (3 , 5 );
15831584 EXPECT_EQ (APInt (4 , 0xD ), APInt::getSplat (4 , ValB));
1584- EXPECT_EQ (APInt (15 , 0xDB6D ), APInt::getSplat (15 , ValB));
1585+ EXPECT_EQ (APInt (15 , 0x5B6D ), APInt::getSplat (15 , ValB));
15851586}
15861587
15871588TEST (APIntTest, tcDecrement) {
@@ -2858,7 +2859,7 @@ TEST(APIntTest, sext) {
28582859 EXPECT_EQ (31U , i32_min.countr_zero ());
28592860 EXPECT_EQ (32U , i32_min.popcount ());
28602861
2861- APInt i32_neg1 (APInt (32 , ~uint64_t (0 )).sext (63 ));
2862+ APInt i32_neg1 (APInt (32 , ~uint32_t (0 )).sext (63 ));
28622863 EXPECT_EQ (i32_neg1, i32_neg1.sext (63 ));
28632864 EXPECT_EQ (63U , i32_neg1.countl_one ());
28642865 EXPECT_EQ (0U , i32_neg1.countr_zero ());
@@ -2991,7 +2992,7 @@ TEST(APIntTest, RoundingUDiv) {
29912992
29922993TEST (APIntTest, RoundingSDiv) {
29932994 for (int64_t Ai = -128 ; Ai <= 127 ; Ai++) {
2994- APInt A (8 , Ai);
2995+ APInt A (8 , Ai, true );
29952996
29962997 if (Ai != 0 ) {
29972998 APInt Zero (8 , 0 );
@@ -3004,7 +3005,7 @@ TEST(APIntTest, RoundingSDiv) {
30043005 if (Bi == 0 )
30053006 continue ;
30063007
3007- APInt B (8 , Bi);
3008+ APInt B (8 , Bi, true );
30083009 APInt QuoTowardZero = A.sdiv (B);
30093010 {
30103011 APInt Quo = APIntOps::RoundingSDiv (A, B, APInt::Rounding::UP);
@@ -3063,10 +3064,10 @@ TEST(APIntTest, Average) {
30633064 APInt Ap100 (32 , +100 );
30643065 APInt Ap101 (32 , +101 );
30653066 APInt Ap200 (32 , +200 );
3066- APInt Am1 (32 , -1 );
3067- APInt Am100 (32 , -100 );
3068- APInt Am101 (32 , -101 );
3069- APInt Am200 (32 , -200 );
3067+ APInt Am1 (32 , -1 , true );
3068+ APInt Am100 (32 , -100 , true );
3069+ APInt Am101 (32 , -101 , true );
3070+ APInt Am200 (32 , -200 , true );
30703071 APInt AmSMin = APInt::getSignedMinValue (32 );
30713072 APInt ApSMax = APInt::getSignedMaxValue (32 );
30723073
@@ -3076,7 +3077,7 @@ TEST(APIntTest, Average) {
30763077 EXPECT_EQ (APIntOps::RoundingSDiv (Ap100 + Ap200, A2, APInt::Rounding::UP),
30773078 APIntOps::avgCeilS (Ap100, Ap200));
30783079
3079- EXPECT_EQ (APInt (32 , -150 ), APIntOps::avgFloorS (Am100, Am200));
3080+ EXPECT_EQ (APInt (32 , -150 , true ), APIntOps::avgFloorS (Am100, Am200));
30803081 EXPECT_EQ (APIntOps::RoundingSDiv (Am100 + Am200, A2, APInt::Rounding::DOWN),
30813082 APIntOps::avgFloorS (Am100, Am200));
30823083 EXPECT_EQ (APIntOps::RoundingSDiv (Am100 + Am200, A2, APInt::Rounding::UP),
@@ -3089,10 +3090,10 @@ TEST(APIntTest, Average) {
30893090 EXPECT_EQ (APIntOps::RoundingSDiv (Ap100 + Ap101, A2, APInt::Rounding::UP),
30903091 APIntOps::avgCeilS (Ap100, Ap101));
30913092
3092- EXPECT_EQ (APInt (32 , -101 ), APIntOps::avgFloorS (Am100, Am101));
3093+ EXPECT_EQ (APInt (32 , -101 , true ), APIntOps::avgFloorS (Am100, Am101));
30933094 EXPECT_EQ (APIntOps::RoundingSDiv (Am100 + Am101, A2, APInt::Rounding::DOWN),
30943095 APIntOps::avgFloorS (Am100, Am101));
3095- EXPECT_EQ (APInt (32 , -100 ), APIntOps::avgCeilS (Am100, Am101));
3096+ EXPECT_EQ (APInt (32 , -100 , true ), APIntOps::avgCeilS (Am100, Am101));
30963097 EXPECT_EQ (APIntOps::RoundingSDiv (Am100 + Am101, A2, APInt::Rounding::UP),
30973098 APIntOps::avgCeilS (Am100, Am101));
30983099
@@ -3304,7 +3305,8 @@ TEST(APIntTest, SolveQuadraticEquationWrap) {
33043305 for (int B = Low; B != High; ++B) {
33053306 for (int C = Low; C != High; ++C) {
33063307 std::optional<APInt> S = APIntOps::SolveQuadraticEquationWrap (
3307- APInt (Width, A), APInt (Width, B), APInt (Width, C), Width);
3308+ APInt (Width, A, true ), APInt (Width, B, true ),
3309+ APInt (Width, C, true ), Width);
33083310 if (S)
33093311 Validate (A, B, C, Width, S->getSExtValue ());
33103312 }
@@ -3399,10 +3401,10 @@ TEST(APIntTest, GetMostSignificantDifferentBitExaustive) {
33993401}
34003402
34013403TEST (APIntTest, SignbitZeroChecks) {
3402- EXPECT_TRUE (APInt (8 , -1 ).isNegative ());
3403- EXPECT_FALSE (APInt (8 , -1 ).isNonNegative ());
3404- EXPECT_FALSE (APInt (8 , -1 ).isStrictlyPositive ());
3405- EXPECT_TRUE (APInt (8 , -1 ).isNonPositive ());
3404+ EXPECT_TRUE (APInt (8 , -1 , true ).isNegative ());
3405+ EXPECT_FALSE (APInt (8 , -1 , true ).isNonNegative ());
3406+ EXPECT_FALSE (APInt (8 , -1 , true ).isStrictlyPositive ());
3407+ EXPECT_TRUE (APInt (8 , -1 , true ).isNonPositive ());
34063408
34073409 EXPECT_FALSE (APInt (8 , 0 ).isNegative ());
34083410 EXPECT_TRUE (APInt (8 , 0 ).isNonNegative ());
0 commit comments