summaryrefslogtreecommitdiff
path: root/unittests/ADT/APFloatTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'unittests/ADT/APFloatTest.cpp')
-rw-r--r--unittests/ADT/APFloatTest.cpp38
1 files changed, 35 insertions, 3 deletions
diff --git a/unittests/ADT/APFloatTest.cpp b/unittests/ADT/APFloatTest.cpp
index 69da089f172b..84fb6fad1566 100644
--- a/unittests/ADT/APFloatTest.cpp
+++ b/unittests/ADT/APFloatTest.cpp
@@ -1349,6 +1349,24 @@ TEST(APFloatTest, isInteger) {
EXPECT_TRUE(T.isInteger());
}
+TEST(DoubleAPFloatTest, isInteger) {
+ APFloat F1(-0.0);
+ APFloat F2(-0.0);
+ llvm::detail::DoubleAPFloat T(APFloat::PPCDoubleDouble(), std::move(F1),
+ std::move(F2));
+ EXPECT_TRUE(T.isInteger());
+ APFloat F3(3.14159);
+ APFloat F4(-0.0);
+ llvm::detail::DoubleAPFloat T2(APFloat::PPCDoubleDouble(), std::move(F3),
+ std::move(F4));
+ EXPECT_FALSE(T2.isInteger());
+ APFloat F5(-0.0);
+ APFloat F6(3.14159);
+ llvm::detail::DoubleAPFloat T3(APFloat::PPCDoubleDouble(), std::move(F5),
+ std::move(F6));
+ EXPECT_FALSE(T3.isInteger());
+}
+
TEST(APFloatTest, getLargest) {
EXPECT_EQ(3.402823466e+38f, APFloat::getLargest(APFloat::IEEEsingle()).convertToFloat());
EXPECT_EQ(1.7976931348623158e+308, APFloat::getLargest(APFloat::IEEEdouble()).convertToDouble());
@@ -1437,16 +1455,16 @@ TEST(APFloatTest, getZero) {
const unsigned NumGetZeroTests = 12;
for (unsigned i = 0; i < NumGetZeroTests; ++i) {
APFloat test = APFloat::getZero(*GetZeroTest[i].semantics,
- GetZeroTest[i].sign);
+ GetZeroTest[i].sign);
const char *pattern = GetZeroTest[i].sign? "-0x0p+0" : "0x0p+0";
APFloat expected = APFloat(*GetZeroTest[i].semantics,
- pattern);
+ pattern);
EXPECT_TRUE(test.isZero());
EXPECT_TRUE(GetZeroTest[i].sign? test.isNegative() : !test.isNegative());
EXPECT_TRUE(test.bitwiseIsEqual(expected));
for (unsigned j = 0, je = GetZeroTest[i].bitPatternLength; j < je; ++j) {
EXPECT_EQ(GetZeroTest[i].bitPattern[j],
- test.bitcastToAPInt().getRawData()[j]);
+ test.bitcastToAPInt().getRawData()[j]);
}
}
}
@@ -3271,6 +3289,20 @@ TEST(APFloatTest, mod) {
EXPECT_EQ(f1.mod(f2), APFloat::opInvalidOp);
EXPECT_TRUE(f1.isNaN());
}
+ {
+ APFloat f1(APFloat::IEEEdouble(), "-4.0");
+ APFloat f2(APFloat::IEEEdouble(), "-2.0");
+ APFloat expected(APFloat::IEEEdouble(), "-0.0");
+ EXPECT_EQ(f1.mod(f2), APFloat::opOK);
+ EXPECT_TRUE(f1.bitwiseIsEqual(expected));
+ }
+ {
+ APFloat f1(APFloat::IEEEdouble(), "-4.0");
+ APFloat f2(APFloat::IEEEdouble(), "2.0");
+ APFloat expected(APFloat::IEEEdouble(), "-0.0");
+ EXPECT_EQ(f1.mod(f2), APFloat::opOK);
+ EXPECT_TRUE(f1.bitwiseIsEqual(expected));
+ }
}
TEST(APFloatTest, PPCDoubleDoubleAddSpecial) {