[llvm] b2c4663 - [APFloat] add tests for convert of NAN; NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 24 04:43:16 PDT 2020


Author: Sanjay Patel
Date: 2020-09-24T07:43:07-04:00
New Revision: b2c46633d1296a9080098abc4e6c6214d19005c0

URL: https://github.com/llvm/llvm-project/commit/b2c46633d1296a9080098abc4e6c6214d19005c0
DIFF: https://github.com/llvm/llvm-project/commit/b2c46633d1296a9080098abc4e6c6214d19005c0.diff

LOG: [APFloat] add tests for convert of NAN; NFC

More coverage for the bug fix proposed in D87835.

Added: 
    

Modified: 
    llvm/unittests/ADT/APFloatTest.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/unittests/ADT/APFloatTest.cpp b/llvm/unittests/ADT/APFloatTest.cpp
index b24b43d09a40..e3b4e5c03c17 100644
--- a/llvm/unittests/ADT/APFloatTest.cpp
+++ b/llvm/unittests/ADT/APFloatTest.cpp
@@ -1817,10 +1817,10 @@ TEST(APFloatTest, convert) {
 
   test = APFloat::getSNaN(APFloat::IEEEsingle());
   APFloat X87SNaN = APFloat::getSNaN(APFloat::x87DoubleExtended());
-  test.convert(APFloat::x87DoubleExtended(), APFloat::rmNearestTiesToEven,
-               &losesInfo);
+  APFloat::opStatus status = test.convert(APFloat::x87DoubleExtended(), APFloat::rmNearestTiesToEven, &losesInfo);
   EXPECT_TRUE(test.bitwiseIsEqual(X87SNaN));
   EXPECT_FALSE(losesInfo);
+  EXPECT_EQ(status, APFloat::opOK);
 
   test = APFloat::getQNaN(APFloat::IEEEsingle());
   APFloat X87QNaN = APFloat::getQNaN(APFloat::x87DoubleExtended());
@@ -1840,6 +1840,20 @@ TEST(APFloatTest, convert) {
                &losesInfo);
   EXPECT_TRUE(test.bitwiseIsEqual(X87QNaN));
   EXPECT_FALSE(losesInfo);
+
+  // FIXME: This is wrong - NaN becomes Inf.
+  APInt payload(52, 1);
+  test = APFloat::getSNaN(APFloat::IEEEdouble(), false, &payload);
+  status = test.convert(APFloat::IEEEsingle(), APFloat::rmNearestTiesToEven, &losesInfo);
+  EXPECT_EQ(0x7f800000, test.bitcastToAPInt());
+  EXPECT_TRUE(losesInfo);
+  EXPECT_EQ(status, APFloat::opOK);
+
+  test = APFloat::getQNaN(APFloat::IEEEdouble(), false, &payload);
+  status = test.convert(APFloat::IEEEsingle(), APFloat::rmNearestTiesToEven, &losesInfo);
+  EXPECT_EQ(0x7fc00000, test.bitcastToAPInt());
+  EXPECT_TRUE(losesInfo);
+  EXPECT_EQ(status, APFloat::opOK);
 }
 
 TEST(APFloatTest, PPCDoubleDouble) {


        


More information about the llvm-commits mailing list