mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-03-01 00:35:43 +00:00
[APInt] Fix tests that had wrong assumption about sdivs with negative quotient.
Reviewers: sanjoy Subscribers: bixia, dexonsmith, sanjoy.google, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D70156
This commit is contained in:
parent
8cece4c2f5
commit
d64d54da75
@ -2604,31 +2604,36 @@ TEST(APIntTest, RoundingSDiv) {
|
||||
EXPECT_EQ(0, APIntOps::RoundingSDiv(Zero, A, APInt::Rounding::TOWARD_ZERO));
|
||||
}
|
||||
|
||||
for (uint64_t Bi = -128; Bi <= 127; Bi++) {
|
||||
for (int64_t Bi = -128; Bi <= 127; Bi++) {
|
||||
if (Bi == 0)
|
||||
continue;
|
||||
|
||||
APInt B(8, Bi);
|
||||
APInt QuoTowardZero = A.sdiv(B);
|
||||
{
|
||||
APInt Quo = APIntOps::RoundingSDiv(A, B, APInt::Rounding::UP);
|
||||
auto Prod = Quo.sext(16) * B.sext(16);
|
||||
EXPECT_TRUE(Prod.uge(A));
|
||||
if (Prod.ugt(A)) {
|
||||
EXPECT_TRUE(((Quo - 1).sext(16) * B.sext(16)).ult(A));
|
||||
if (A.srem(B).isNullValue()) {
|
||||
EXPECT_EQ(QuoTowardZero, Quo);
|
||||
} else if (A.isNegative() !=
|
||||
B.isNegative()) { // if the math quotient is negative.
|
||||
EXPECT_EQ(QuoTowardZero, Quo);
|
||||
} else {
|
||||
EXPECT_EQ(QuoTowardZero + 1, Quo);
|
||||
}
|
||||
}
|
||||
{
|
||||
APInt Quo = APIntOps::RoundingSDiv(A, B, APInt::Rounding::DOWN);
|
||||
auto Prod = Quo.sext(16) * B.sext(16);
|
||||
EXPECT_TRUE(Prod.ule(A));
|
||||
if (Prod.ult(A)) {
|
||||
EXPECT_TRUE(((Quo + 1).sext(16) * B.sext(16)).ugt(A));
|
||||
if (A.srem(B).isNullValue()) {
|
||||
EXPECT_EQ(QuoTowardZero, Quo);
|
||||
} else if (A.isNegative() !=
|
||||
B.isNegative()) { // if the math quotient is negative.
|
||||
EXPECT_EQ(QuoTowardZero - 1, Quo);
|
||||
} else {
|
||||
EXPECT_EQ(QuoTowardZero, Quo);
|
||||
}
|
||||
}
|
||||
{
|
||||
APInt Quo = A.sdiv(B);
|
||||
EXPECT_EQ(Quo, APIntOps::RoundingSDiv(A, B, APInt::Rounding::TOWARD_ZERO));
|
||||
}
|
||||
EXPECT_EQ(QuoTowardZero,
|
||||
APIntOps::RoundingSDiv(A, B, APInt::Rounding::TOWARD_ZERO));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user