diff options
author | Michael Gottesman <mgottesman@apple.com> | 2013-06-19 21:00:17 +0000 |
---|---|---|
committer | Michael Gottesman <mgottesman@apple.com> | 2013-06-19 21:00:17 +0000 |
commit | 7032c883cdf8da579fbf9bf499d36a711eef676f (patch) | |
tree | 6864217019cdb7d6def9efa578d959a11df56e44 /unittests/ADT | |
parent | ea44281d5da5096de50ce1cb358ff0c6f20e1a2a (diff) | |
download | external_llvm-7032c883cdf8da579fbf9bf499d36a711eef676f.zip external_llvm-7032c883cdf8da579fbf9bf499d36a711eef676f.tar.gz external_llvm-7032c883cdf8da579fbf9bf499d36a711eef676f.tar.bz2 |
[APFloat] Added isFiniteNonZero predicate.
This is the first patch in a series of patches to rename isNormal =>
isFiniteNonZero and isIEEENormal => isNormal. In order to prevent careless
errors on my part the overall plan is:
1. Add the isFiniteNonZero predicate with tests. I can do this in a method
independent of isNormal. (This step is this patch).
2. Convert all references to isNormal with isFiniteNonZero. My plan is to
comment out isNormal locally and continually convert isNormal references =>
isFiniteNonZero until llvm/clang compiles.
3. Remove old isNormal and rename isIEEENormal to isNormal.
4. Look through all of said references from patch 2 and see if we can simplify
them by using the new isNormal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184350 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/ADT')
-rw-r--r-- | unittests/ADT/APFloatTest.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/unittests/ADT/APFloatTest.cpp b/unittests/ADT/APFloatTest.cpp index e1b9158..186b15a 100644 --- a/unittests/ADT/APFloatTest.cpp +++ b/unittests/ADT/APFloatTest.cpp @@ -1458,4 +1458,32 @@ TEST(APFloatTest, isNaN) { EXPECT_FALSE(APFloat(APFloat::IEEEsingle, "0x1p-159").isNaN()); } +TEST(APFloatTest, isFiniteNonZero) { + // Test positive/negative normal value. + EXPECT_TRUE(APFloat(APFloat::IEEEsingle, "0x1p+0").isFiniteNonZero()); + EXPECT_TRUE(APFloat(APFloat::IEEEsingle, "-0x1p+0").isFiniteNonZero()); + + // Test positive/negative denormal value. + EXPECT_TRUE(APFloat(APFloat::IEEEsingle, "0x1p-149").isFiniteNonZero()); + EXPECT_TRUE(APFloat(APFloat::IEEEsingle, "-0x1p-149").isFiniteNonZero()); + + // Test +/- Infinity. + EXPECT_FALSE(APFloat::getInf(APFloat::IEEEsingle, false).isFiniteNonZero()); + EXPECT_FALSE(APFloat::getInf(APFloat::IEEEsingle, true).isFiniteNonZero()); + + // Test +/- Zero. + EXPECT_FALSE(APFloat::getZero(APFloat::IEEEsingle, false).isFiniteNonZero()); + EXPECT_FALSE(APFloat::getZero(APFloat::IEEEsingle, true).isFiniteNonZero()); + + // Test +/- qNaN. +/- dont mean anything with qNaN but paranoia can't hurt in + // this instance. + EXPECT_FALSE(APFloat::getNaN(APFloat::IEEEsingle, false).isFiniteNonZero()); + EXPECT_FALSE(APFloat::getNaN(APFloat::IEEEsingle, true).isFiniteNonZero()); + + // Test +/- sNaN. +/- dont mean anything with sNaN but paranoia can't hurt in + // this instance. + EXPECT_FALSE(APFloat::getSNaN(APFloat::IEEEsingle, false).isFiniteNonZero()); + EXPECT_FALSE(APFloat::getSNaN(APFloat::IEEEsingle, true).isFiniteNonZero()); +} + } |