[PATCH] D88340: Patch IEEEFloat::isSignificandAllZeros and IEEEFloat::isSignificandAllOnes (bug 34579)
Andrew Briand via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 30 11:11:12 PDT 2020
andrewbriand updated this revision to Diff 295352.
andrewbriand added a comment.
Use partCountForBits(semantics->precision) to calculate part count without guard bit.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D88340/new/
https://reviews.llvm.org/D88340
Files:
llvm/lib/Support/APFloat.cpp
llvm/unittests/ADT/APFloatTest.cpp
Index: llvm/unittests/ADT/APFloatTest.cpp
===================================================================
--- llvm/unittests/ADT/APFloatTest.cpp
+++ llvm/unittests/ADT/APFloatTest.cpp
@@ -4696,4 +4696,15 @@
EXPECT_EQ(0x3fe8000000000000ull, Result.bitcastToAPInt().getRawData()[0]);
EXPECT_EQ(0x3c98000000000000ull, Result.bitcastToAPInt().getRawData()[1]);
}
+
+TEST(APFloatTest, x87Largest) {
+ APFloat MaxX87Val = APFloat::getLargest(APFloat::x87DoubleExtended());
+ EXPECT_TRUE(MaxX87Val.isLargest());
+}
+
+TEST(APFloatTest, x87Next) {
+ APFloat F(APFloat::x87DoubleExtended(), "-1.0");
+ F.next(false);
+ EXPECT_TRUE(ilogb(F) == -1);
+}
}
Index: llvm/lib/Support/APFloat.cpp
===================================================================
--- llvm/lib/Support/APFloat.cpp
+++ llvm/lib/Support/APFloat.cpp
@@ -842,7 +842,7 @@
// Test if the significand excluding the integral bit is all ones. This allows
// us to test for binade boundaries.
const integerPart *Parts = significandParts();
- const unsigned PartCount = partCount();
+ const unsigned PartCount = partCountForBits(semantics->precision);
for (unsigned i = 0; i < PartCount - 1; i++)
if (~Parts[i])
return false;
@@ -864,7 +864,7 @@
// Test if the significand excluding the integral bit is all zeros. This
// allows us to test for binade boundaries.
const integerPart *Parts = significandParts();
- const unsigned PartCount = partCount();
+ const unsigned PartCount = partCountForBits(semantics->precision);
for (unsigned i = 0; i < PartCount - 1; i++)
if (Parts[i])
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D88340.295352.patch
Type: text/x-patch
Size: 1600 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200930/01af87a8/attachment.bin>
More information about the llvm-commits
mailing list