mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 04:33:05 +00:00
Drop the limitation to IEEE floating point types from the fdiv of pow2 -> fmul transform.
This is safe for x87 long doubles and ppc double doubles too. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167582 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
214fd3d244
commit
6b370e615c
@ -3553,11 +3553,6 @@ void APFloat::toString(SmallVectorImpl<char> &Str,
|
||||
}
|
||||
|
||||
bool APFloat::getExactInverse(APFloat *inv) const {
|
||||
// We can only guarantee the existence of an exact inverse for IEEE floats.
|
||||
if (semantics != &IEEEhalf && semantics != &IEEEsingle &&
|
||||
semantics != &IEEEdouble && semantics != &IEEEquad)
|
||||
return false;
|
||||
|
||||
// Special floats and denormals have no exact inverse.
|
||||
if (category != fcNormal)
|
||||
return false;
|
||||
|
@ -635,6 +635,12 @@ TEST(APFloatTest, exactInverse) {
|
||||
EXPECT_TRUE(inv.bitwiseIsEqual(APFloat(0.5)));
|
||||
EXPECT_TRUE(APFloat(2.0f).getExactInverse(&inv));
|
||||
EXPECT_TRUE(inv.bitwiseIsEqual(APFloat(0.5f)));
|
||||
EXPECT_TRUE(APFloat(APFloat::IEEEquad, "2.0").getExactInverse(&inv));
|
||||
EXPECT_TRUE(inv.bitwiseIsEqual(APFloat(APFloat::IEEEquad, "0.5")));
|
||||
EXPECT_TRUE(APFloat(APFloat::PPCDoubleDouble, "2.0").getExactInverse(&inv));
|
||||
EXPECT_TRUE(inv.bitwiseIsEqual(APFloat(APFloat::PPCDoubleDouble, "0.5")));
|
||||
EXPECT_TRUE(APFloat(APFloat::x87DoubleExtended, "2.0").getExactInverse(&inv));
|
||||
EXPECT_TRUE(inv.bitwiseIsEqual(APFloat(APFloat::x87DoubleExtended, "0.5")));
|
||||
|
||||
// FLT_MIN
|
||||
EXPECT_TRUE(APFloat(1.17549435e-38f).getExactInverse(&inv));
|
||||
|
Loading…
Reference in New Issue
Block a user