[APIntTest] multiplicativeInverse(): clarify test

Clarify that multiplicative inverse exists for all odd numbers,
and does not exist for all even numbers (including 0).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364920 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Roman Lebedev 2019-07-02 13:21:17 +00:00
parent 6eae0f89c9
commit 123cdacd90

View File

@ -2527,10 +2527,13 @@ TEST(APIntTest, MultiplicativeInverseExaustive) {
.multiplicativeInverse(APInt::getSignedMinValue(BitWidth + 1))
.trunc(BitWidth);
APInt One = V * MulInv;
EXPECT_TRUE(MulInv.isNullValue() || One.isOneValue())
<< " bitwidth = " << BitWidth << ", value = " << Value
<< ", computed multiplicative inverse = " << MulInv
<< ", value * multiplicative inverse = " << One << " (should be 1)";
if (!V.isNullValue() && V.countTrailingZeros() == 0) {
// Multiplicative inverse exists for all odd numbers.
EXPECT_TRUE(One.isOneValue());
} else {
// Multiplicative inverse does not exist for even numbers (and 0).
EXPECT_TRUE(MulInv.isNullValue());
}
}
}
}