mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 02:52:53 +02:00
[NFC][APInt] Add (exhaustive) test for multiplicativeInverse()
Else there is no direct test coverage at all. The function should either return '0' or precise answer. llvm-svn: 364599
This commit is contained in:
parent
a1c156d73e
commit
d7dea4e0f0
@ -2505,4 +2505,21 @@ TEST(APIntTest, SolveQuadraticEquationWrap) {
|
||||
Iterate(i);
|
||||
}
|
||||
|
||||
TEST(APIntTest, MultiplicativeInverseExaustive) {
|
||||
for (unsigned BitWidth = 1; BitWidth <= 16; ++BitWidth) {
|
||||
for (unsigned Value = 0; Value < (1 << BitWidth); ++Value) {
|
||||
APInt V = APInt(BitWidth, Value);
|
||||
APInt MulInv =
|
||||
V.zext(BitWidth + 1)
|
||||
.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)";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // end anonymous namespace
|
||||
|
Loading…
Reference in New Issue
Block a user