[llvm] ded1630 - APFloat: Add isPosInfinity and isNegInfinity helpers
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 13 06:03:22 PST 2022
Author: Matt Arsenault
Date: 2022-12-13T09:02:58-05:00
New Revision: ded163027e47b4782fd72080a523cdeaed996d44
URL: https://github.com/llvm/llvm-project/commit/ded163027e47b4782fd72080a523cdeaed996d44
DIFF: https://github.com/llvm/llvm-project/commit/ded163027e47b4782fd72080a523cdeaed996d44.diff
LOG: APFloat: Add isPosInfinity and isNegInfinity helpers
Added:
Modified:
llvm/include/llvm/ADT/APFloat.h
llvm/unittests/ADT/APFloatTest.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/ADT/APFloat.h b/llvm/include/llvm/ADT/APFloat.h
index bc312df5a07d..d86f72bf20db 100644
--- a/llvm/include/llvm/ADT/APFloat.h
+++ b/llvm/include/llvm/ADT/APFloat.h
@@ -1240,6 +1240,8 @@ class APFloat : public APFloatBase {
bool isFiniteNonZero() const { return isFinite() && !isZero(); }
bool isPosZero() const { return isZero() && !isNegative(); }
bool isNegZero() const { return isZero() && isNegative(); }
+ bool isPosInfinity() const { return isInfinity() && !isNegative(); }
+ bool isNegInfinity() const { return isInfinity() && isNegative(); }
bool isSmallest() const { APFLOAT_DISPATCH_ON_SEMANTICS(isSmallest()); }
bool isLargest() const { APFLOAT_DISPATCH_ON_SEMANTICS(isLargest()); }
bool isInteger() const { APFLOAT_DISPATCH_ON_SEMANTICS(isInteger()); }
diff --git a/llvm/unittests/ADT/APFloatTest.cpp b/llvm/unittests/ADT/APFloatTest.cpp
index 468b936cfd34..c46508a87a9d 100644
--- a/llvm/unittests/ADT/APFloatTest.cpp
+++ b/llvm/unittests/ADT/APFloatTest.cpp
@@ -1995,7 +1995,17 @@ TEST(APFloatTest, isFinite) {
TEST(APFloatTest, isInfinity) {
APFloat t(APFloat::IEEEsingle(), "0x1p+0");
EXPECT_FALSE(t.isInfinity());
- EXPECT_TRUE(APFloat::getInf(APFloat::IEEEsingle(), false).isInfinity());
+
+ APFloat PosInf = APFloat::getInf(APFloat::IEEEsingle(), false);
+ APFloat NegInf = APFloat::getInf(APFloat::IEEEsingle(), true);
+
+ EXPECT_TRUE(PosInf.isInfinity());
+ EXPECT_TRUE(PosInf.isPosInfinity());
+ EXPECT_FALSE(PosInf.isNegInfinity());
+ EXPECT_TRUE(NegInf.isInfinity());
+ EXPECT_FALSE(NegInf.isPosInfinity());
+ EXPECT_TRUE(NegInf.isNegInfinity());
+
EXPECT_FALSE(APFloat::getZero(APFloat::IEEEsingle(), false).isInfinity());
EXPECT_FALSE(APFloat::getNaN(APFloat::IEEEsingle(), false).isInfinity());
EXPECT_FALSE(APFloat::getSNaN(APFloat::IEEEsingle(), false).isInfinity());
More information about the llvm-commits
mailing list