diff --git a/llvm/unittests/ADT/APIntTest.cpp b/llvm/unittests/ADT/APIntTest.cpp index fff29d24a05299..7a9ac5562e7722 100644 --- a/llvm/unittests/ADT/APIntTest.cpp +++ b/llvm/unittests/ADT/APIntTest.cpp @@ -1111,11 +1111,11 @@ TEST(APIntTest, fromString) { EXPECT_EQ(APInt(32, 3), APInt(32, "+11", 2)); EXPECT_EQ(APInt(32, 4), APInt(32, "+100", 2)); - EXPECT_EQ(APInt(32, uint64_t(-0LL)), APInt(32, "-0", 2)); - EXPECT_EQ(APInt(32, uint64_t(-1LL)), APInt(32, "-1", 2)); - EXPECT_EQ(APInt(32, uint64_t(-2LL)), APInt(32, "-10", 2)); - EXPECT_EQ(APInt(32, uint64_t(-3LL)), APInt(32, "-11", 2)); - EXPECT_EQ(APInt(32, uint64_t(-4LL)), APInt(32, "-100", 2)); + EXPECT_EQ(APInt(32, uint32_t(-0LL)), APInt(32, "-0", 2)); + EXPECT_EQ(APInt(32, uint32_t(-1LL)), APInt(32, "-1", 2)); + EXPECT_EQ(APInt(32, uint32_t(-2LL)), APInt(32, "-10", 2)); + EXPECT_EQ(APInt(32, uint32_t(-3LL)), APInt(32, "-11", 2)); + EXPECT_EQ(APInt(32, uint32_t(-4LL)), APInt(32, "-100", 2)); EXPECT_EQ(APInt(32, 0), APInt(32, "0", 8)); EXPECT_EQ(APInt(32, 1), APInt(32, "1", 8)); @@ -1131,12 +1131,12 @@ TEST(APIntTest, fromString) { EXPECT_EQ(APInt(32, +15), APInt(32, "+17", 8)); EXPECT_EQ(APInt(32, +16), APInt(32, "+20", 8)); - EXPECT_EQ(APInt(32, uint64_t(-0LL)), APInt(32, "-0", 8)); - EXPECT_EQ(APInt(32, uint64_t(-1LL)), APInt(32, "-1", 8)); - EXPECT_EQ(APInt(32, uint64_t(-7LL)), APInt(32, "-7", 8)); - EXPECT_EQ(APInt(32, uint64_t(-8LL)), APInt(32, "-10", 8)); - EXPECT_EQ(APInt(32, uint64_t(-15LL)), APInt(32, "-17", 8)); - EXPECT_EQ(APInt(32, uint64_t(-16LL)), APInt(32, "-20", 8)); + EXPECT_EQ(APInt(32, uint32_t(-0LL)), APInt(32, "-0", 8)); + EXPECT_EQ(APInt(32, uint32_t(-1LL)), APInt(32, "-1", 8)); + EXPECT_EQ(APInt(32, uint32_t(-7LL)), APInt(32, "-7", 8)); + EXPECT_EQ(APInt(32, uint32_t(-8LL)), APInt(32, "-10", 8)); + EXPECT_EQ(APInt(32, uint32_t(-15LL)), APInt(32, "-17", 8)); + EXPECT_EQ(APInt(32, uint32_t(-16LL)), APInt(32, "-20", 8)); EXPECT_EQ(APInt(32, 0), APInt(32, "0", 10)); EXPECT_EQ(APInt(32, 1), APInt(32, "1", 10)); @@ -1145,12 +1145,12 @@ TEST(APIntTest, fromString) { EXPECT_EQ(APInt(32, 19), APInt(32, "19", 10)); EXPECT_EQ(APInt(32, 20), APInt(32, "20", 10)); - EXPECT_EQ(APInt(32, uint64_t(-0LL)), APInt(32, "-0", 10)); - EXPECT_EQ(APInt(32, uint64_t(-1LL)), APInt(32, "-1", 10)); - EXPECT_EQ(APInt(32, uint64_t(-9LL)), APInt(32, "-9", 10)); - EXPECT_EQ(APInt(32, uint64_t(-10LL)), APInt(32, "-10", 10)); - EXPECT_EQ(APInt(32, uint64_t(-19LL)), APInt(32, "-19", 10)); - EXPECT_EQ(APInt(32, uint64_t(-20LL)), APInt(32, "-20", 10)); + EXPECT_EQ(APInt(32, uint32_t(-0LL)), APInt(32, "-0", 10)); + EXPECT_EQ(APInt(32, uint32_t(-1LL)), APInt(32, "-1", 10)); + EXPECT_EQ(APInt(32, uint32_t(-9LL)), APInt(32, "-9", 10)); + EXPECT_EQ(APInt(32, uint32_t(-10LL)), APInt(32, "-10", 10)); + EXPECT_EQ(APInt(32, uint32_t(-19LL)), APInt(32, "-19", 10)); + EXPECT_EQ(APInt(32, uint32_t(-20LL)), APInt(32, "-20", 10)); EXPECT_EQ(APInt(32, 0), APInt(32, "0", 16)); EXPECT_EQ(APInt(32, 1), APInt(32, "1", 16)); @@ -1159,12 +1159,12 @@ TEST(APIntTest, fromString) { EXPECT_EQ(APInt(32, 31), APInt(32, "1F", 16)); EXPECT_EQ(APInt(32, 32), APInt(32, "20", 16)); - EXPECT_EQ(APInt(32, uint64_t(-0LL)), APInt(32, "-0", 16)); - EXPECT_EQ(APInt(32, uint64_t(-1LL)), APInt(32, "-1", 16)); - EXPECT_EQ(APInt(32, uint64_t(-15LL)), APInt(32, "-F", 16)); - EXPECT_EQ(APInt(32, uint64_t(-16LL)), APInt(32, "-10", 16)); - EXPECT_EQ(APInt(32, uint64_t(-31LL)), APInt(32, "-1F", 16)); - EXPECT_EQ(APInt(32, uint64_t(-32LL)), APInt(32, "-20", 16)); + EXPECT_EQ(APInt(32, uint32_t(-0LL)), APInt(32, "-0", 16)); + EXPECT_EQ(APInt(32, uint32_t(-1LL)), APInt(32, "-1", 16)); + EXPECT_EQ(APInt(32, uint32_t(-15LL)), APInt(32, "-F", 16)); + EXPECT_EQ(APInt(32, uint32_t(-16LL)), APInt(32, "-10", 16)); + EXPECT_EQ(APInt(32, uint32_t(-31LL)), APInt(32, "-1F", 16)); + EXPECT_EQ(APInt(32, uint32_t(-32LL)), APInt(32, "-20", 16)); EXPECT_EQ(APInt(32, 0), APInt(32, "0", 36)); EXPECT_EQ(APInt(32, 1), APInt(32, "1", 36)); @@ -1173,12 +1173,12 @@ TEST(APIntTest, fromString) { EXPECT_EQ(APInt(32, 71), APInt(32, "1Z", 36)); EXPECT_EQ(APInt(32, 72), APInt(32, "20", 36)); - EXPECT_EQ(APInt(32, uint64_t(-0LL)), APInt(32, "-0", 36)); - EXPECT_EQ(APInt(32, uint64_t(-1LL)), APInt(32, "-1", 36)); - EXPECT_EQ(APInt(32, uint64_t(-35LL)), APInt(32, "-Z", 36)); - EXPECT_EQ(APInt(32, uint64_t(-36LL)), APInt(32, "-10", 36)); - EXPECT_EQ(APInt(32, uint64_t(-71LL)), APInt(32, "-1Z", 36)); - EXPECT_EQ(APInt(32, uint64_t(-72LL)), APInt(32, "-20", 36)); + EXPECT_EQ(APInt(32, uint32_t(-0LL)), APInt(32, "-0", 36)); + EXPECT_EQ(APInt(32, uint32_t(-1LL)), APInt(32, "-1", 36)); + EXPECT_EQ(APInt(32, uint32_t(-35LL)), APInt(32, "-Z", 36)); + EXPECT_EQ(APInt(32, uint32_t(-36LL)), APInt(32, "-10", 36)); + EXPECT_EQ(APInt(32, uint32_t(-71LL)), APInt(32, "-1Z", 36)); + EXPECT_EQ(APInt(32, uint32_t(-72LL)), APInt(32, "-20", 36)); } TEST(APIntTest, SaturatingMath) { @@ -1202,10 +1202,10 @@ TEST(APIntTest, SaturatingMath) { EXPECT_EQ(APInt(6, 31), AP_42.truncSSat(6)); EXPECT_EQ(APInt(5, 15), AP_42.truncSSat(5)); - EXPECT_EQ(APInt(8, -56), AP_200.truncSSat(8)); - EXPECT_EQ(APInt(7, -56), AP_200.truncSSat(7)); - EXPECT_EQ(APInt(6, -32), AP_200.truncSSat(6)); - EXPECT_EQ(APInt(5, -16), AP_200.truncSSat(5)); + EXPECT_EQ(APInt(8, -56, true), AP_200.truncSSat(8)); + EXPECT_EQ(APInt(7, -56, true), AP_200.truncSSat(7)); + EXPECT_EQ(APInt(6, -32, true), AP_200.truncSSat(6)); + EXPECT_EQ(APInt(5, -16, true), AP_200.truncSSat(5)); EXPECT_EQ(APInt(8, 200), AP_100.uadd_sat(AP_100)); EXPECT_EQ(APInt(8, 255), AP_100.uadd_sat(AP_200)); @@ -1213,52 +1213,53 @@ TEST(APIntTest, SaturatingMath) { EXPECT_EQ(APInt(8, 110), AP_10.sadd_sat(AP_100)); EXPECT_EQ(APInt(8, 127), AP_100.sadd_sat(AP_100)); - EXPECT_EQ(APInt(8, -128), (-AP_100).sadd_sat(-AP_100)); - EXPECT_EQ(APInt(8, -128), APInt(8, -128).sadd_sat(APInt(8, -128))); + EXPECT_EQ(APInt(8, -128, true), (-AP_100).sadd_sat(-AP_100)); + EXPECT_EQ(APInt(8, -128, true), + APInt(8, -128, true).sadd_sat(APInt(8, -128, true))); EXPECT_EQ(APInt(8, 90), AP_100.usub_sat(AP_10)); EXPECT_EQ(APInt(8, 0), AP_100.usub_sat(AP_200)); EXPECT_EQ(APInt(8, 0), APInt(8, 0).usub_sat(APInt(8, 255))); - EXPECT_EQ(APInt(8, -90), AP_10.ssub_sat(AP_100)); + EXPECT_EQ(APInt(8, -90, true), AP_10.ssub_sat(AP_100)); EXPECT_EQ(APInt(8, 127), AP_100.ssub_sat(-AP_100)); - EXPECT_EQ(APInt(8, -128), (-AP_100).ssub_sat(AP_100)); - EXPECT_EQ(APInt(8, -128), APInt(8, -128).ssub_sat(APInt(8, 127))); + EXPECT_EQ(APInt(8, -128, true), (-AP_100).ssub_sat(AP_100)); + EXPECT_EQ(APInt(8, -128, true), APInt(8, -128, true).ssub_sat(APInt(8, 127))); EXPECT_EQ(APInt(8, 250), APInt(8, 50).umul_sat(APInt(8, 5))); EXPECT_EQ(APInt(8, 255), APInt(8, 50).umul_sat(APInt(8, 6))); - EXPECT_EQ(APInt(8, 255), APInt(8, -128).umul_sat(APInt(8, 3))); - EXPECT_EQ(APInt(8, 255), APInt(8, 3).umul_sat(APInt(8, -128))); - EXPECT_EQ(APInt(8, 255), APInt(8, -128).umul_sat(APInt(8, -128))); + EXPECT_EQ(APInt(8, 255), APInt(8, -128, true).umul_sat(APInt(8, 3))); + EXPECT_EQ(APInt(8, 255), APInt(8, 3).umul_sat(APInt(8, -128, true))); + EXPECT_EQ(APInt(8, 255), APInt(8, -128, true).umul_sat(APInt(8, -128, true))); EXPECT_EQ(APInt(8, 125), APInt(8, 25).smul_sat(APInt(8, 5))); EXPECT_EQ(APInt(8, 127), APInt(8, 25).smul_sat(APInt(8, 6))); EXPECT_EQ(APInt(8, 127), APInt(8, 127).smul_sat(APInt(8, 127))); - EXPECT_EQ(APInt(8, -125), APInt(8, -25).smul_sat(APInt(8, 5))); - EXPECT_EQ(APInt(8, -125), APInt(8, 25).smul_sat(APInt(8, -5))); - EXPECT_EQ(APInt(8, 125), APInt(8, -25).smul_sat(APInt(8, -5))); + EXPECT_EQ(APInt(8, -125, true), APInt(8, -25, true).smul_sat(APInt(8, 5))); + EXPECT_EQ(APInt(8, -125, true), APInt(8, 25).smul_sat(APInt(8, -5, true))); + EXPECT_EQ(APInt(8, 125), APInt(8, -25, true).smul_sat(APInt(8, -5, true))); EXPECT_EQ(APInt(8, 125), APInt(8, 25).smul_sat(APInt(8, 5))); - EXPECT_EQ(APInt(8, -128), APInt(8, -25).smul_sat(APInt(8, 6))); - EXPECT_EQ(APInt(8, -128), APInt(8, 25).smul_sat(APInt(8, -6))); - EXPECT_EQ(APInt(8, 127), APInt(8, -25).smul_sat(APInt(8, -6))); + EXPECT_EQ(APInt(8, -128, true), APInt(8, -25, true).smul_sat(APInt(8, 6))); + EXPECT_EQ(APInt(8, -128, true), APInt(8, 25).smul_sat(APInt(8, -6, true))); + EXPECT_EQ(APInt(8, 127), APInt(8, -25, true).smul_sat(APInt(8, -6, true))); EXPECT_EQ(APInt(8, 127), APInt(8, 25).smul_sat(APInt(8, 6))); EXPECT_EQ(APInt(8, 128), APInt(8, 4).ushl_sat(APInt(8, 5))); EXPECT_EQ(APInt(8, 255), APInt(8, 4).ushl_sat(APInt(8, 6))); EXPECT_EQ(APInt(8, 128), APInt(8, 1).ushl_sat(APInt(8, 7))); EXPECT_EQ(APInt(8, 255), APInt(8, 1).ushl_sat(APInt(8, 8))); - EXPECT_EQ(APInt(8, 255), APInt(8, -128).ushl_sat(APInt(8, 2))); + EXPECT_EQ(APInt(8, 255), APInt(8, -128, true).ushl_sat(APInt(8, 2))); EXPECT_EQ(APInt(8, 255), APInt(8, 64).ushl_sat(APInt(8, 2))); - EXPECT_EQ(APInt(8, 255), APInt(8, 64).ushl_sat(APInt(8, -2))); + EXPECT_EQ(APInt(8, 255), APInt(8, 64).ushl_sat(APInt(8, -2, true))); EXPECT_EQ(APInt(8, 64), APInt(8, 4).sshl_sat(APInt(8, 4))); EXPECT_EQ(APInt(8, 127), APInt(8, 4).sshl_sat(APInt(8, 5))); EXPECT_EQ(APInt(8, 127), APInt(8, 1).sshl_sat(APInt(8, 8))); - EXPECT_EQ(APInt(8, -64), APInt(8, -4).sshl_sat(APInt(8, 4))); - EXPECT_EQ(APInt(8, -128), APInt(8, -4).sshl_sat(APInt(8, 5))); - EXPECT_EQ(APInt(8, -128), APInt(8, -4).sshl_sat(APInt(8, 6))); - EXPECT_EQ(APInt(8, -128), APInt(8, -1).sshl_sat(APInt(8, 7))); - EXPECT_EQ(APInt(8, -128), APInt(8, -1).sshl_sat(APInt(8, 8))); + EXPECT_EQ(APInt(8, -64, true), APInt(8, -4, true).sshl_sat(APInt(8, 4))); + EXPECT_EQ(APInt(8, -128, true), APInt(8, -4, true).sshl_sat(APInt(8, 5))); + EXPECT_EQ(APInt(8, -128, true), APInt(8, -4, true).sshl_sat(APInt(8, 6))); + EXPECT_EQ(APInt(8, -128, true), APInt(8, -1, true).sshl_sat(APInt(8, 7))); + EXPECT_EQ(APInt(8, -128, true), APInt(8, -1, true).sshl_sat(APInt(8, 8))); } TEST(APIntTest, FromArray) { @@ -1400,39 +1401,39 @@ TEST(APIntTest, toString) { S.clear(); isSigned = false; - APInt(8, 255, isSigned).toString(S, 2, isSigned, true); + APInt(8, 255).toString(S, 2, isSigned, true); EXPECT_EQ(std::string(S), "0b11111111"); S.clear(); - APInt(8, 255, isSigned).toString(S, 8, isSigned, true); + APInt(8, 255).toString(S, 8, isSigned, true); EXPECT_EQ(std::string(S), "0377"); S.clear(); - APInt(8, 255, isSigned).toString(S, 10, isSigned, true); + APInt(8, 255).toString(S, 10, isSigned, true); EXPECT_EQ(std::string(S), "255"); S.clear(); - APInt(8, 255, isSigned).toString(S, 16, isSigned, true, /*UpperCase=*/false); + APInt(8, 255).toString(S, 16, isSigned, true, /*UpperCase=*/false); EXPECT_EQ(std::string(S), "0xff"); S.clear(); - APInt(8, 255, isSigned).toString(S, 16, isSigned, true); + APInt(8, 255).toString(S, 16, isSigned, true); EXPECT_EQ(std::string(S), "0xFF"); S.clear(); - APInt(8, 255, isSigned).toString(S, 36, isSigned, false); + APInt(8, 255).toString(S, 36, isSigned, false); EXPECT_EQ(std::string(S), "73"); S.clear(); isSigned = true; - APInt(8, 255, isSigned).toString(S, 2, isSigned, true); + APInt(8, 255).toString(S, 2, isSigned, true); EXPECT_EQ(std::string(S), "-0b1"); S.clear(); - APInt(8, 255, isSigned).toString(S, 8, isSigned, true); + APInt(8, 255).toString(S, 8, isSigned, true); EXPECT_EQ(std::string(S), "-01"); S.clear(); - APInt(8, 255, isSigned).toString(S, 10, isSigned, true); + APInt(8, 255).toString(S, 10, isSigned, true); EXPECT_EQ(std::string(S), "-1"); S.clear(); - APInt(8, 255, isSigned).toString(S, 16, isSigned, true); + APInt(8, 255).toString(S, 16, isSigned, true); EXPECT_EQ(std::string(S), "-0x1"); S.clear(); - APInt(8, 255, isSigned).toString(S, 36, isSigned, false); + APInt(8, 255).toString(S, 36, isSigned, false); EXPECT_EQ(std::string(S), "-1"); S.clear(); @@ -1515,7 +1516,7 @@ TEST(APIntTest, Rotate) { EXPECT_EQ(APInt(32, 2), APInt(32, 1).rotl(APInt(33, 33))); EXPECT_EQ(APInt(32, (1 << 8)), APInt(32, 1).rotl(APInt(32, 40))); EXPECT_EQ(APInt(32, (1 << 30)), APInt(32, 1).rotl(APInt(31, 30))); - EXPECT_EQ(APInt(32, (1 << 31)), APInt(32, 1).rotl(APInt(31, 31))); + EXPECT_EQ(APInt(32, (1u << 31)), APInt(32, 1).rotl(APInt(31, 31))); EXPECT_EQ(APInt(32, 1), APInt(32, 1).rotl(APInt(1, 0))); EXPECT_EQ(APInt(32, 2), APInt(32, 1).rotl(APInt(1, 1))); @@ -1542,24 +1543,24 @@ TEST(APIntTest, Rotate) { EXPECT_EQ(APInt(8, 16), APInt(8, 1).rotr(4)); EXPECT_EQ(APInt(8, 1), APInt(8, 1).rotr(8)); - EXPECT_EQ(APInt(32, (1 << 31)), APInt(32, 1).rotr(33)); - EXPECT_EQ(APInt(32, (1 << 31)), APInt(32, 1).rotr(APInt(32, 33))); + EXPECT_EQ(APInt(32, (1u << 31)), APInt(32, 1).rotr(33)); + EXPECT_EQ(APInt(32, (1u << 31)), APInt(32, 1).rotr(APInt(32, 33))); - EXPECT_EQ(APInt(32, (1 << 31)), APInt(32, 1).rotr(33)); - EXPECT_EQ(APInt(32, (1 << 31)), APInt(32, 1).rotr(APInt(32, 33))); - EXPECT_EQ(APInt(32, (1 << 31)), APInt(32, 1).rotr(APInt(33, 33))); + EXPECT_EQ(APInt(32, (1u << 31)), APInt(32, 1).rotr(33)); + EXPECT_EQ(APInt(32, (1u << 31)), APInt(32, 1).rotr(APInt(32, 33))); + EXPECT_EQ(APInt(32, (1u << 31)), APInt(32, 1).rotr(APInt(33, 33))); EXPECT_EQ(APInt(32, (1 << 24)), APInt(32, 1).rotr(APInt(32, 40))); EXPECT_EQ(APInt(32, (1 << 2)), APInt(32, 1).rotr(APInt(31, 30))); EXPECT_EQ(APInt(32, (1 << 1)), APInt(32, 1).rotr(APInt(31, 31))); EXPECT_EQ(APInt(32, 1), APInt(32, 1).rotr(APInt(1, 0))); - EXPECT_EQ(APInt(32, (1 << 31)), APInt(32, 1).rotr(APInt(1, 1))); + EXPECT_EQ(APInt(32, (1u << 31)), APInt(32, 1).rotr(APInt(1, 1))); EXPECT_EQ(APInt(32, (1 << 28)), APInt(32, 1).rotr(APInt(3, 4))); EXPECT_EQ(APInt(32, 1), APInt(32, 1).rotr(APInt(64, 64))); - EXPECT_EQ(APInt(32, (1 << 31)), APInt(32, 1).rotr(APInt(64, 65))); + EXPECT_EQ(APInt(32, (1u << 31)), APInt(32, 1).rotr(APInt(64, 65))); EXPECT_EQ(APInt(7, 48), APInt(7, 3).rotr(APInt(7, 3))); EXPECT_EQ(APInt(7, 48), APInt(7, 3).rotr(APInt(7, 10))); @@ -1581,7 +1582,7 @@ TEST(APIntTest, Splat) { APInt ValB(3, 5); EXPECT_EQ(APInt(4, 0xD), APInt::getSplat(4, ValB)); - EXPECT_EQ(APInt(15, 0xDB6D), APInt::getSplat(15, ValB)); + EXPECT_EQ(APInt(15, 0x5B6D), APInt::getSplat(15, ValB)); } TEST(APIntTest, tcDecrement) { @@ -2858,7 +2859,7 @@ TEST(APIntTest, sext) { EXPECT_EQ(31U, i32_min.countr_zero()); EXPECT_EQ(32U, i32_min.popcount()); - APInt i32_neg1(APInt(32, ~uint64_t(0)).sext(63)); + APInt i32_neg1(APInt(32, ~uint32_t(0)).sext(63)); EXPECT_EQ(i32_neg1, i32_neg1.sext(63)); EXPECT_EQ(63U, i32_neg1.countl_one()); EXPECT_EQ(0U, i32_neg1.countr_zero()); @@ -2991,7 +2992,7 @@ TEST(APIntTest, RoundingUDiv) { TEST(APIntTest, RoundingSDiv) { for (int64_t Ai = -128; Ai <= 127; Ai++) { - APInt A(8, Ai); + APInt A(8, Ai, true); if (Ai != 0) { APInt Zero(8, 0); @@ -3004,7 +3005,7 @@ TEST(APIntTest, RoundingSDiv) { if (Bi == 0) continue; - APInt B(8, Bi); + APInt B(8, Bi, true); APInt QuoTowardZero = A.sdiv(B); { APInt Quo = APIntOps::RoundingSDiv(A, B, APInt::Rounding::UP); @@ -3063,10 +3064,10 @@ TEST(APIntTest, Average) { APInt Ap100(32, +100); APInt Ap101(32, +101); APInt Ap200(32, +200); - APInt Am1(32, -1); - APInt Am100(32, -100); - APInt Am101(32, -101); - APInt Am200(32, -200); + APInt Am1(32, -1, true); + APInt Am100(32, -100, true); + APInt Am101(32, -101, true); + APInt Am200(32, -200, true); APInt AmSMin = APInt::getSignedMinValue(32); APInt ApSMax = APInt::getSignedMaxValue(32); @@ -3076,7 +3077,7 @@ TEST(APIntTest, Average) { EXPECT_EQ(APIntOps::RoundingSDiv(Ap100 + Ap200, A2, APInt::Rounding::UP), APIntOps::avgCeilS(Ap100, Ap200)); - EXPECT_EQ(APInt(32, -150), APIntOps::avgFloorS(Am100, Am200)); + EXPECT_EQ(APInt(32, -150, true), APIntOps::avgFloorS(Am100, Am200)); EXPECT_EQ(APIntOps::RoundingSDiv(Am100 + Am200, A2, APInt::Rounding::DOWN), APIntOps::avgFloorS(Am100, Am200)); EXPECT_EQ(APIntOps::RoundingSDiv(Am100 + Am200, A2, APInt::Rounding::UP), @@ -3089,10 +3090,10 @@ TEST(APIntTest, Average) { EXPECT_EQ(APIntOps::RoundingSDiv(Ap100 + Ap101, A2, APInt::Rounding::UP), APIntOps::avgCeilS(Ap100, Ap101)); - EXPECT_EQ(APInt(32, -101), APIntOps::avgFloorS(Am100, Am101)); + EXPECT_EQ(APInt(32, -101, true), APIntOps::avgFloorS(Am100, Am101)); EXPECT_EQ(APIntOps::RoundingSDiv(Am100 + Am101, A2, APInt::Rounding::DOWN), APIntOps::avgFloorS(Am100, Am101)); - EXPECT_EQ(APInt(32, -100), APIntOps::avgCeilS(Am100, Am101)); + EXPECT_EQ(APInt(32, -100, true), APIntOps::avgCeilS(Am100, Am101)); EXPECT_EQ(APIntOps::RoundingSDiv(Am100 + Am101, A2, APInt::Rounding::UP), APIntOps::avgCeilS(Am100, Am101)); @@ -3304,7 +3305,8 @@ TEST(APIntTest, SolveQuadraticEquationWrap) { for (int B = Low; B != High; ++B) { for (int C = Low; C != High; ++C) { std::optional S = APIntOps::SolveQuadraticEquationWrap( - APInt(Width, A), APInt(Width, B), APInt(Width, C), Width); + APInt(Width, A, true), APInt(Width, B, true), + APInt(Width, C, true), Width); if (S) Validate(A, B, C, Width, S->getSExtValue()); } @@ -3399,10 +3401,10 @@ TEST(APIntTest, GetMostSignificantDifferentBitExaustive) { } TEST(APIntTest, SignbitZeroChecks) { - EXPECT_TRUE(APInt(8, -1).isNegative()); - EXPECT_FALSE(APInt(8, -1).isNonNegative()); - EXPECT_FALSE(APInt(8, -1).isStrictlyPositive()); - EXPECT_TRUE(APInt(8, -1).isNonPositive()); + EXPECT_TRUE(APInt(8, -1, true).isNegative()); + EXPECT_FALSE(APInt(8, -1, true).isNonNegative()); + EXPECT_FALSE(APInt(8, -1, true).isStrictlyPositive()); + EXPECT_TRUE(APInt(8, -1, true).isNonPositive()); EXPECT_FALSE(APInt(8, 0).isNegative()); EXPECT_TRUE(APInt(8, 0).isNonNegative()); diff --git a/llvm/unittests/ADT/APSIntTest.cpp b/llvm/unittests/ADT/APSIntTest.cpp index f804eba3ca83eb..2d2a64433da94d 100644 --- a/llvm/unittests/ADT/APSIntTest.cpp +++ b/llvm/unittests/ADT/APSIntTest.cpp @@ -74,14 +74,14 @@ TEST(APSIntTest, getExtValue) { EXPECT_TRUE(APSInt(APInt(3, 7), false).isSigned()); EXPECT_TRUE(APSInt(APInt(4, 7), true).isUnsigned()); EXPECT_TRUE(APSInt(APInt(4, 7), false).isSigned()); - EXPECT_TRUE(APSInt(APInt(4, -7), true).isUnsigned()); - EXPECT_TRUE(APSInt(APInt(4, -7), false).isSigned()); + EXPECT_TRUE(APSInt(APInt(4, -7, true), true).isUnsigned()); + EXPECT_TRUE(APSInt(APInt(4, -7, true), false).isSigned()); EXPECT_EQ(7, APSInt(APInt(3, 7), true).getExtValue()); EXPECT_EQ(-1, APSInt(APInt(3, 7), false).getExtValue()); EXPECT_EQ(7, APSInt(APInt(4, 7), true).getExtValue()); EXPECT_EQ(7, APSInt(APInt(4, 7), false).getExtValue()); - EXPECT_EQ(9, APSInt(APInt(4, -7), true).getExtValue()); - EXPECT_EQ(-7, APSInt(APInt(4, -7), false).getExtValue()); + EXPECT_EQ(9, APSInt(APInt(4, -7, true), true).getExtValue()); + EXPECT_EQ(-7, APSInt(APInt(4, -7, true), false).getExtValue()); } TEST(APSIntTest, tryExtValue) { ASSERT_EQ(-7, APSInt(APInt(64, -7), false).tryExtValue().value_or(42)); diff --git a/llvm/unittests/ADT/StringExtrasTest.cpp b/llvm/unittests/ADT/StringExtrasTest.cpp index 51f7c3948a3146..36908a98aa2ae7 100644 --- a/llvm/unittests/ADT/StringExtrasTest.cpp +++ b/llvm/unittests/ADT/StringExtrasTest.cpp @@ -308,11 +308,11 @@ TEST(StringExtrasTest, toStringAPInt) { EXPECT_EQ(toString(APInt(8, 255, isSigned), 36, isSigned, false), "73"); isSigned = true; - EXPECT_EQ(toString(APInt(8, 255, isSigned), 2, isSigned, true), "-0b1"); - EXPECT_EQ(toString(APInt(8, 255, isSigned), 8, isSigned, true), "-01"); - EXPECT_EQ(toString(APInt(8, 255, isSigned), 10, isSigned, true), "-1"); - EXPECT_EQ(toString(APInt(8, 255, isSigned), 16, isSigned, true), "-0x1"); - EXPECT_EQ(toString(APInt(8, 255, isSigned), 36, isSigned, false), "-1"); + EXPECT_EQ(toString(APInt(8, -1, isSigned), 2, isSigned, true), "-0b1"); + EXPECT_EQ(toString(APInt(8, -1, isSigned), 8, isSigned, true), "-01"); + EXPECT_EQ(toString(APInt(8, -1, isSigned), 10, isSigned, true), "-1"); + EXPECT_EQ(toString(APInt(8, -1, isSigned), 16, isSigned, true), "-0x1"); + EXPECT_EQ(toString(APInt(8, -1, isSigned), 36, isSigned, false), "-1"); } TEST(StringExtrasTest, toStringAPSInt) { diff --git a/llvm/unittests/Analysis/ScalarEvolutionTest.cpp b/llvm/unittests/Analysis/ScalarEvolutionTest.cpp index d4d90d80f4cea1..37c61e4e4fa714 100644 --- a/llvm/unittests/Analysis/ScalarEvolutionTest.cpp +++ b/llvm/unittests/Analysis/ScalarEvolutionTest.cpp @@ -984,7 +984,7 @@ TEST_F(ScalarEvolutionsTest, SCEVAddRecFromPHIwithLargeConstantAccum) { // entry: BranchInst::Create(LoopBB, EntryBB); // loop: - auto *MinInt32 = ConstantInt::get(Context, APInt(32, 0x80000000U, true)); + auto *MinInt32 = ConstantInt::get(Context, APInt(32, 0x80000000U)); auto *Int32_16 = ConstantInt::get(Context, APInt(32, 16)); auto *Br = BranchInst::Create( LoopBB, ExitBB, UndefValue::get(Type::getInt1Ty(Context)), LoopBB); diff --git a/llvm/unittests/IR/MetadataTest.cpp b/llvm/unittests/IR/MetadataTest.cpp index e99893498dde58..4572ec622ef624 100644 --- a/llvm/unittests/IR/MetadataTest.cpp +++ b/llvm/unittests/IR/MetadataTest.cpp @@ -4223,16 +4223,18 @@ TEST_F(DIExpressionTest, foldConstant) { DIExpression *Expr; DIExpression *NewExpr; -#define EXPECT_FOLD_CONST(StartWidth, StartValue, EndWidth, EndValue, NumElts) \ - Int = ConstantInt::get(Context, APInt(StartWidth, StartValue)); \ - std::tie(NewExpr, NewInt) = Expr->constantFold(Int); \ - ASSERT_EQ(NewInt->getBitWidth(), EndWidth##u); \ - EXPECT_EQ(NewInt->getValue(), APInt(EndWidth, EndValue)); \ +#define EXPECT_FOLD_CONST(StartWidth, StartValue, StartIsSigned, EndWidth, \ + EndValue, EndIsSigned, NumElts) \ + Int = \ + ConstantInt::get(Context, APInt(StartWidth, StartValue, StartIsSigned)); \ + std::tie(NewExpr, NewInt) = Expr->constantFold(Int); \ + ASSERT_EQ(NewInt->getBitWidth(), EndWidth##u); \ + EXPECT_EQ(NewInt->getValue(), APInt(EndWidth, EndValue, EndIsSigned)); \ EXPECT_EQ(NewExpr->getNumElements(), NumElts##u) // Unfoldable expression should return the original unmodified Int/Expr. Expr = DIExpression::get(Context, {dwarf::DW_OP_deref}); - EXPECT_FOLD_CONST(32, 117, 32, 117, 1); + EXPECT_FOLD_CONST(32, 117, false, 32, 117, false, 1); EXPECT_EQ(NewExpr, Expr); EXPECT_EQ(NewInt, Int); EXPECT_TRUE(NewExpr->startsWithDeref()); @@ -4240,18 +4242,18 @@ TEST_F(DIExpressionTest, foldConstant) { // One unsigned bit-width conversion. Expr = DIExpression::get( Context, {dwarf::DW_OP_LLVM_convert, 72, dwarf::DW_ATE_unsigned}); - EXPECT_FOLD_CONST(8, 12, 72, 12, 0); + EXPECT_FOLD_CONST(8, 12, false, 72, 12, false, 0); // Two unsigned bit-width conversions (mask truncation). Expr = DIExpression::get( Context, {dwarf::DW_OP_LLVM_convert, 8, dwarf::DW_ATE_unsigned, dwarf::DW_OP_LLVM_convert, 16, dwarf::DW_ATE_unsigned}); - EXPECT_FOLD_CONST(32, -1, 16, 0xff, 0); + EXPECT_FOLD_CONST(32, -1, true, 16, 0xff, false, 0); // Sign extension. Expr = DIExpression::get( Context, {dwarf::DW_OP_LLVM_convert, 32, dwarf::DW_ATE_signed}); - EXPECT_FOLD_CONST(16, -1, 32, -1, 0); + EXPECT_FOLD_CONST(16, -1, true, 32, -1, true, 0); // Get non-foldable operations back in the new Expr. uint64_t Elements[] = {dwarf::DW_OP_deref, dwarf::DW_OP_stack_value}; @@ -4260,7 +4262,7 @@ TEST_F(DIExpressionTest, foldConstant) { Context, {dwarf::DW_OP_LLVM_convert, 32, dwarf::DW_ATE_signed}); Expr = DIExpression::append(Expr, Expected); ASSERT_EQ(Expr->getNumElements(), 5u); - EXPECT_FOLD_CONST(16, -1, 32, -1, 2); + EXPECT_FOLD_CONST(16, -1, true, 32, -1, true, 2); EXPECT_EQ(NewExpr->getElements(), Expected); #undef EXPECT_FOLD_CONST diff --git a/llvm/unittests/Support/DivisionByConstantTest.cpp b/llvm/unittests/Support/DivisionByConstantTest.cpp index 2b17f98bb75b2f..715dded68ff017 100644 --- a/llvm/unittests/Support/DivisionByConstantTest.cpp +++ b/llvm/unittests/Support/DivisionByConstantTest.cpp @@ -32,7 +32,7 @@ APInt SignedDivideUsingMagic(APInt Numerator, APInt Divisor, unsigned Bits = Numerator.getBitWidth(); APInt Factor(Bits, 0); - APInt ShiftMask(Bits, -1); + APInt ShiftMask(Bits, -1, true); if (Divisor.isOne() || Divisor.isAllOnes()) { // If d is +1/-1, we just multiply the numerator by +1/-1. Factor = Divisor.getSExtValue();