IEEE-754R 5.7.2 General Operations is* operations (except for isCanonical).

Specifically the following work was done:

1. If the operation was not implemented, I implemented it.

2. If the operation was already implemented, I just moved its location
in the APFloat header into the IEEE-754R 5.7.2 section. If the name was
incorrect, I put in a comment giving the true IEEE-754R name.

Also unittests have been added for all of the functions which did not
already have a unittest.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183179 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/unittests/ADT/APFloatTest.cpp b/unittests/ADT/APFloatTest.cpp
index 14e9915..e1b9158 100644
--- a/unittests/ADT/APFloatTest.cpp
+++ b/unittests/ADT/APFloatTest.cpp
@@ -1397,4 +1397,65 @@
   EXPECT_EQ(0x0000000000000000ull, test.bitcastToAPInt().getRawData()[1]);
 #endif
 }
+
+TEST(APFloatTest, isNegative) {
+  APFloat t(APFloat::IEEEsingle, "0x1p+0");
+  EXPECT_FALSE(t.isNegative());
+  t = APFloat(APFloat::IEEEsingle, "-0x1p+0");
+  EXPECT_TRUE(t.isNegative());
+  
+  EXPECT_FALSE(APFloat::getInf(APFloat::IEEEsingle, false).isNegative());
+  EXPECT_TRUE(APFloat::getInf(APFloat::IEEEsingle, true).isNegative());
+  
+  EXPECT_FALSE(APFloat::getZero(APFloat::IEEEsingle, false).isNegative());
+  EXPECT_TRUE(APFloat::getZero(APFloat::IEEEsingle, true).isNegative());
+
+  EXPECT_FALSE(APFloat::getNaN(APFloat::IEEEsingle, false).isNegative());
+  EXPECT_TRUE(APFloat::getNaN(APFloat::IEEEsingle, true).isNegative());
+
+  EXPECT_FALSE(APFloat::getSNaN(APFloat::IEEEsingle, false).isNegative());
+  EXPECT_TRUE(APFloat::getSNaN(APFloat::IEEEsingle, true).isNegative());
+}
+
+TEST(APFloatTest, isIEEENormal) {
+  APFloat t(APFloat::IEEEsingle, "0x1p+0");
+  EXPECT_TRUE(t.isIEEENormal());
+  
+  EXPECT_FALSE(APFloat::getInf(APFloat::IEEEsingle, false).isIEEENormal());
+  EXPECT_FALSE(APFloat::getZero(APFloat::IEEEsingle, false).isIEEENormal());
+  EXPECT_FALSE(APFloat::getNaN(APFloat::IEEEsingle, false).isIEEENormal());
+  EXPECT_FALSE(APFloat::getSNaN(APFloat::IEEEsingle, false).isIEEENormal());  
+  EXPECT_FALSE(APFloat(APFloat::IEEEsingle, "0x1p-159").isIEEENormal());
+}
+
+TEST(APFloatTest, isFinite) {
+  APFloat t(APFloat::IEEEsingle, "0x1p+0");
+  EXPECT_TRUE(t.isFinite());  
+  EXPECT_FALSE(APFloat::getInf(APFloat::IEEEsingle, false).isFinite());
+  EXPECT_TRUE(APFloat::getZero(APFloat::IEEEsingle, false).isFinite());
+  EXPECT_FALSE(APFloat::getNaN(APFloat::IEEEsingle, false).isFinite());
+  EXPECT_FALSE(APFloat::getSNaN(APFloat::IEEEsingle, false).isFinite());  
+  EXPECT_TRUE(APFloat(APFloat::IEEEsingle, "0x1p-159").isFinite());  
+}
+
+TEST(APFloatTest, isInfinity) {
+  APFloat t(APFloat::IEEEsingle, "0x1p+0");
+  EXPECT_FALSE(t.isInfinity());
+  EXPECT_TRUE(APFloat::getInf(APFloat::IEEEsingle, false).isInfinity());
+  EXPECT_FALSE(APFloat::getZero(APFloat::IEEEsingle, false).isInfinity());
+  EXPECT_FALSE(APFloat::getNaN(APFloat::IEEEsingle, false).isInfinity());
+  EXPECT_FALSE(APFloat::getSNaN(APFloat::IEEEsingle, false).isInfinity());  
+  EXPECT_FALSE(APFloat(APFloat::IEEEsingle, "0x1p-159").isInfinity());
+}
+
+TEST(APFloatTest, isNaN) {
+  APFloat t(APFloat::IEEEsingle, "0x1p+0");
+  EXPECT_FALSE(t.isNaN());  
+  EXPECT_FALSE(APFloat::getInf(APFloat::IEEEsingle, false).isNaN());
+  EXPECT_FALSE(APFloat::getZero(APFloat::IEEEsingle, false).isNaN());
+  EXPECT_TRUE(APFloat::getNaN(APFloat::IEEEsingle, false).isNaN());
+  EXPECT_TRUE(APFloat::getSNaN(APFloat::IEEEsingle, false).isNaN());  
+  EXPECT_FALSE(APFloat(APFloat::IEEEsingle, "0x1p-159").isNaN());
+}
+
 }