<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Removed in r184974.<div><br></div><div>Thanks again. = ).</div><div><br></div><div>Michael</div><div><br><div><div>On Jun 26, 2013, at 10:57 AM, Michael Gottesman <<a href="mailto:mgottesman@apple.com">mgottesman@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">You are right. I actually meant to remove that printf before commit (it was for debugging). = /<br><div><div>On Jun 26, 2013, at 1:00 AM, Patrik Hägglund H <<a href="mailto:patrik.h.hagglund@ericsson.com">patrik.h.hagglund@ericsson.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Note that the conversion specifier %a is a C++11 (C99) feature. I get the following warning (and I always use -Werror) when compiling with gcc:<br><br>/var/tmp/hudson/workspace/llvm-master/unittests/ADT/APFloatTest.cpp: In member function 'virtual void {anonymous}::APFloatTest_add_Test::TestBody()':<br>/var/tmp/hudson/workspace/llvm-master/unittests/ADT/APFloatTest.cpp:1783:55: error: ISO C++ does not support the '%a' gnu_printf format [-Werror=format]<br>/var/tmp/hudson/workspace/llvm-master/unittests/ADT/APFloatTest.cpp:1783:55: error: ISO C++ does not support the '%a' gnu_printf format [-Werror=format]<br>/var/tmp/hudson/workspace/llvm-master/unittests/ADT/APFloatTest.cpp:1783:55: error: ISO C++ does not support the '%a' gnu_printf format [-Werror=format]<br>/var/tmp/hudson/workspace/llvm-master/unittests/ADT/APFloatTest.cpp:1783:55: error: ISO C++ does not support the '%a' gnu_printf format [-Werror=format]<br><br>/Patrik Hägglund<br><br>-----Original Message-----<br>From:<span class="Apple-converted-space"> </span><a href="mailto:llvm-commits-bounces@cs.uiuc.edu">llvm-commits-bounces@cs.uiuc.edu</a><span class="Apple-converted-space"> </span>[<a href="mailto:llvm-commits-bounces@cs.uiuc.edu">mailto:llvm-commits-bounces@cs.uiuc.edu</a>] On Behalf Of Michael Gottesman<br>Sent: den 24 juni 2013 11:58<br>To:<span class="Apple-converted-space"> </span><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>Subject: [llvm] r184714 - [APFloat] Added a large unittest for APFloat.add that checks that special values are computed correctly.<br><br>Author: mgottesman<br>Date: Mon Jun 24 04:58:07 2013<br>New Revision: 184714<br><br>URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project?rev=184714&view=rev">http://llvm.org/viewvc/llvm-project?rev=184714&view=rev</a><br>Log:<br>[APFloat] Added a large unittest for APFloat.add that checks that special values are computed correctly.<br><br>Modified:<br> llvm/trunk/unittests/ADT/APFloatTest.cpp<br><br>Modified: llvm/trunk/unittests/ADT/APFloatTest.cpp<br>URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/APFloatTest.cpp?rev=184714&r1=184713&r2=184714&view=diff">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/APFloatTest.cpp?rev=184714&r1=184713&r2=184714&view=diff</a><br>==============================================================================<br>--- llvm/trunk/unittests/ADT/APFloatTest.cpp (original)<br>+++ llvm/trunk/unittests/ADT/APFloatTest.cpp Mon Jun 24 04:58:07 2013<br>@@ -1486,4 +1486,306 @@ TEST(APFloatTest, isFiniteNonZero) {<br> EXPECT_FALSE(APFloat::getSNaN(APFloat::IEEEsingle, true).isFiniteNonZero());<span class="Apple-converted-space"> </span><br>}<br><br>+TEST(APFloatTest, add) {<br>+ // Test Special Cases against each other and normal values.<br>+<br>+ // TODOS/NOTES:<br>+ // 1. Since we perform only default exception handling all operations with<br>+ // signaling NaNs should have a result that is a quiet NaN. Currently they<br>+ // return sNaN.<br>+ // 2. It seems that add(-x, NaN) = -NaN but add(NaN, -x) = NaN. This is an<br>+ // inconsistency that should be looked into. IEEE-754R specifies that the<br>+ // interpretation of the sign of NaN is unspecified. We should always have NaN<br>+ // be positive since that is one less thing for the compiler to deal with.<br>+<br>+ APFloat PInf = APFloat::getInf(APFloat::IEEEsingle, false);<br>+ APFloat MInf = APFloat::getInf(APFloat::IEEEsingle, true);<br>+ APFloat PZero = APFloat::getZero(APFloat::IEEEsingle, false);<br>+ APFloat MZero = APFloat::getZero(APFloat::IEEEsingle, true);<br>+ APFloat QNaN = APFloat::getNaN(APFloat::IEEEsingle, false);<br>+ APFloat SNaN = APFloat::getSNaN(APFloat::IEEEsingle, false);<br>+ APFloat PNormalValue = APFloat(APFloat::IEEEsingle, "0x1p+0");<br>+ APFloat MNormalValue = APFloat(APFloat::IEEEsingle, "-0x1p+0");<br>+ APFloat PLargestValue = APFloat::getLargest(APFloat::IEEEsingle, false);<br>+ APFloat MLargestValue = APFloat::getLargest(APFloat::IEEEsingle, true);<br>+ APFloat PSmallestValue = APFloat::getSmallest(APFloat::IEEEsingle, false);<br>+ APFloat MSmallestValue = APFloat::getSmallest(APFloat::IEEEsingle, true);<br>+ APFloat PSmallestNormalized =<br>+ APFloat::getSmallestNormalized(APFloat::IEEEsingle, false);<br>+ APFloat MSmallestNormalized =<br>+ APFloat::getSmallestNormalized(APFloat::IEEEsingle, true);<br>+<br>+ const int OverflowStatus = APFloat::opOverflow | APFloat::opInexact;<br>+<br>+ const unsigned NumTests = 169;<br>+ struct {<br>+ APFloat x;<br>+ APFloat y;<br>+ const char *result;<br>+ int status;<br>+ int category;<br>+ } SpecialCaseTests[NumTests] = {<br>+ { PInf, PInf, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PInf, MInf, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { PInf, PZero, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PInf, MZero, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PInf, QNaN, "nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { PInf, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { PInf, PNormalValue, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PInf, MNormalValue, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PInf, PLargestValue, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PInf, MLargestValue, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PInf, PSmallestValue, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PInf, MSmallestValue, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PInf, PSmallestNormalized, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PInf, MSmallestNormalized, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MInf, PInf, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { MInf, MInf, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MInf, PZero, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MInf, MZero, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ // See Note 2.<br>+ { MInf, QNaN, "-nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { MInf, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { MInf, PNormalValue, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MInf, MNormalValue, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MInf, PLargestValue, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MInf, MLargestValue, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MInf, PSmallestValue, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MInf, MSmallestValue, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MInf, PSmallestNormalized, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MInf, MSmallestNormalized, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PZero, PInf, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PZero, MInf, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PZero, PZero, "0x0p+0", APFloat::opOK, APFloat::fcZero },<br>+ { PZero, MZero, "0x0p+0", APFloat::opOK, APFloat::fcZero },<br>+ { PZero, QNaN, "nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { PZero, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { PZero, PNormalValue, "0x1p+0", APFloat::opOK, APFloat::fcNormal },<br>+ { PZero, MNormalValue, "-0x1p+0", APFloat::opOK, APFloat::fcNormal },<br>+ { PZero, PLargestValue, "0x1.fffffep+127", APFloat::opOK, APFloat::fcNormal },<br>+ { PZero, MLargestValue, "-0x1.fffffep+127", APFloat::opOK, APFloat::fcNormal },<br>+ { PZero, PSmallestValue, "0x1p-149", APFloat::opOK, APFloat::fcNormal },<br>+ { PZero, MSmallestValue, "-0x1p-149", APFloat::opOK, APFloat::fcNormal },<br>+ { PZero, PSmallestNormalized, "0x1p-126", APFloat::opOK, APFloat::fcNormal },<br>+ { PZero, MSmallestNormalized, "-0x1p-126", APFloat::opOK, APFloat::fcNormal },<br>+ { MZero, PInf, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MZero, MInf, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MZero, PZero, "0x0p+0", APFloat::opOK, APFloat::fcZero },<br>+ { MZero, MZero, "-0x0p+0", APFloat::opOK, APFloat::fcZero },<br>+ // See Note 2.<br>+ { MZero, QNaN, "-nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { MZero, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { MZero, PNormalValue, "0x1p+0", APFloat::opOK, APFloat::fcNormal },<br>+ { MZero, MNormalValue, "-0x1p+0", APFloat::opOK, APFloat::fcNormal },<br>+ { MZero, PLargestValue, "0x1.fffffep+127", APFloat::opOK, APFloat::fcNormal },<br>+ { MZero, MLargestValue, "-0x1.fffffep+127", APFloat::opOK, APFloat::fcNormal },<br>+ { MZero, PSmallestValue, "0x1p-149", APFloat::opOK, APFloat::fcNormal },<br>+ { MZero, MSmallestValue, "-0x1p-149", APFloat::opOK, APFloat::fcNormal },<br>+ { MZero, PSmallestNormalized, "0x1p-126", APFloat::opOK, APFloat::fcNormal },<br>+ { MZero, MSmallestNormalized, "-0x1p-126", APFloat::opOK, APFloat::fcNormal },<br>+ { QNaN, PInf, "nan", APFloat::opOK, APFloat::fcNaN },<br>+ { QNaN, MInf, "nan", APFloat::opOK, APFloat::fcNaN },<br>+ { QNaN, PZero, "nan", APFloat::opOK, APFloat::fcNaN },<br>+ { QNaN, MZero, "nan", APFloat::opOK, APFloat::fcNaN },<br>+ { QNaN, QNaN, "nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { QNaN, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { QNaN, PNormalValue, "nan", APFloat::opOK, APFloat::fcNaN },<br>+ { QNaN, MNormalValue, "nan", APFloat::opOK, APFloat::fcNaN },<br>+ { QNaN, PLargestValue, "nan", APFloat::opOK, APFloat::fcNaN },<br>+ { QNaN, MLargestValue, "nan", APFloat::opOK, APFloat::fcNaN },<br>+ { QNaN, PSmallestValue, "nan", APFloat::opOK, APFloat::fcNaN },<br>+ { QNaN, MSmallestValue, "nan", APFloat::opOK, APFloat::fcNaN },<br>+ { QNaN, PSmallestNormalized, "nan", APFloat::opOK, APFloat::fcNaN },<br>+ { QNaN, MSmallestNormalized, "nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { SNaN, PInf, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, MInf, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, PZero, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, MZero, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, QNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, PNormalValue, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, MNormalValue, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, PLargestValue, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, MLargestValue, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, PSmallestValue, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, MSmallestValue, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, PSmallestNormalized, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+ { SNaN, MSmallestNormalized, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { PNormalValue, PInf, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PNormalValue, MInf, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PNormalValue, PZero, "0x1p+0", APFloat::opOK, APFloat::fcNormal },<br>+ { PNormalValue, MZero, "0x1p+0", APFloat::opOK, APFloat::fcNormal },<br>+ { PNormalValue, QNaN, "nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { PNormalValue, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { PNormalValue, PNormalValue, "0x1p+1", APFloat::opOK, APFloat::fcNormal },<br>+ { PNormalValue, MNormalValue, "0x0p+0", APFloat::opOK, APFloat::fcZero },<br>+ { PNormalValue, PLargestValue, "0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { PNormalValue, MLargestValue, "-0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { PNormalValue, PSmallestValue, "0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { PNormalValue, MSmallestValue, "0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { PNormalValue, PSmallestNormalized, "0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { PNormalValue, MSmallestNormalized, "0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { MNormalValue, PInf, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MNormalValue, MInf, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MNormalValue, PZero, "-0x1p+0", APFloat::opOK, APFloat::fcNormal },<br>+ { MNormalValue, MZero, "-0x1p+0", APFloat::opOK, APFloat::fcNormal },<br>+ // See Note 2.<br>+ { MNormalValue, QNaN, "-nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { MNormalValue, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { MNormalValue, PNormalValue, "0x0p+0", APFloat::opOK, APFloat::fcZero },<br>+ { MNormalValue, MNormalValue, "-0x1p+1", APFloat::opOK, APFloat::fcNormal },<br>+ { MNormalValue, PLargestValue, "0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { MNormalValue, MLargestValue, "-0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { MNormalValue, PSmallestValue, "-0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { MNormalValue, MSmallestValue, "-0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { MNormalValue, PSmallestNormalized, "-0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { MNormalValue, MSmallestNormalized, "-0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { PLargestValue, PInf, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PLargestValue, MInf, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PLargestValue, PZero, "0x1.fffffep+127", APFloat::opOK, APFloat::fcNormal },<br>+ { PLargestValue, MZero, "0x1.fffffep+127", APFloat::opOK, APFloat::fcNormal },<br>+ { PLargestValue, QNaN, "nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { PLargestValue, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { PLargestValue, PNormalValue, "0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { PLargestValue, MNormalValue, "0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { PLargestValue, PLargestValue, "inf", OverflowStatus, APFloat::fcInfinity },<br>+ { PLargestValue, MLargestValue, "0x0p+0", APFloat::opOK, APFloat::fcZero },<br>+ { PLargestValue, PSmallestValue, "0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { PLargestValue, MSmallestValue, "0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { PLargestValue, PSmallestNormalized, "0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { PLargestValue, MSmallestNormalized, "0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { MLargestValue, PInf, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MLargestValue, MInf, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MLargestValue, PZero, "-0x1.fffffep+127", APFloat::opOK, APFloat::fcNormal },<br>+ { MLargestValue, MZero, "-0x1.fffffep+127", APFloat::opOK, APFloat::fcNormal },<br>+ // See Note 2.<br>+ { MLargestValue, QNaN, "-nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { MLargestValue, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { MLargestValue, PNormalValue, "-0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { MLargestValue, MNormalValue, "-0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { MLargestValue, PLargestValue, "0x0p+0", APFloat::opOK, APFloat::fcZero },<br>+ { MLargestValue, MLargestValue, "-inf", OverflowStatus, APFloat::fcInfinity },<br>+ { MLargestValue, PSmallestValue, "-0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { MLargestValue, MSmallestValue, "-0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { MLargestValue, PSmallestNormalized, "-0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { MLargestValue, MSmallestNormalized, "-0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { PSmallestValue, PInf, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PSmallestValue, MInf, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PSmallestValue, PZero, "0x1p-149", APFloat::opOK, APFloat::fcNormal },<br>+ { PSmallestValue, MZero, "0x1p-149", APFloat::opOK, APFloat::fcNormal },<br>+ { PSmallestValue, QNaN, "nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { PSmallestValue, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { PSmallestValue, PNormalValue, "0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { PSmallestValue, MNormalValue, "-0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { PSmallestValue, PLargestValue, "0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { PSmallestValue, MLargestValue, "-0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { PSmallestValue, PSmallestValue, "0x1p-148", APFloat::opOK, APFloat::fcNormal },<br>+ { PSmallestValue, MSmallestValue, "0x0p+0", APFloat::opOK, APFloat::fcZero },<br>+ { PSmallestValue, PSmallestNormalized, "0x1.000002p-126", APFloat::opOK, APFloat::fcNormal },<br>+ { PSmallestValue, MSmallestNormalized, "-0x1.fffffcp-127", APFloat::opOK, APFloat::fcNormal },<br>+ { MSmallestValue, PInf, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MSmallestValue, MInf, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MSmallestValue, PZero, "-0x1p-149", APFloat::opOK, APFloat::fcNormal },<br>+ { MSmallestValue, MZero, "-0x1p-149", APFloat::opOK, APFloat::fcNormal },<br>+ // See Note 2.<br>+ { MSmallestValue, QNaN, "-nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { MSmallestValue, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { MSmallestValue, PNormalValue, "0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { MSmallestValue, MNormalValue, "-0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { MSmallestValue, PLargestValue, "0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { MSmallestValue, MLargestValue, "-0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { MSmallestValue, PSmallestValue, "0x0p+0", APFloat::opOK, APFloat::fcZero },<br>+ { MSmallestValue, MSmallestValue, "-0x1p-148", APFloat::opOK, APFloat::fcNormal },<br>+ { MSmallestValue, PSmallestNormalized, "0x1.fffffcp-127", APFloat::opOK, APFloat::fcNormal },<br>+ { MSmallestValue, MSmallestNormalized, "-0x1.000002p-126", APFloat::opOK, APFloat::fcNormal },<br>+ { PSmallestNormalized, PInf, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PSmallestNormalized, MInf, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { PSmallestNormalized, PZero, "0x1p-126", APFloat::opOK, APFloat::fcNormal },<br>+ { PSmallestNormalized, MZero, "0x1p-126", APFloat::opOK, APFloat::fcNormal },<br>+ { PSmallestNormalized, QNaN, "nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+// See Note 1.<br>+ { PSmallestNormalized, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { PSmallestNormalized, PNormalValue, "0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { PSmallestNormalized, MNormalValue, "-0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { PSmallestNormalized, PLargestValue, "0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { PSmallestNormalized, MLargestValue, "-0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { PSmallestNormalized, PSmallestValue, "0x1.000002p-126", APFloat::opOK, APFloat::fcNormal },<br>+ { PSmallestNormalized, MSmallestValue, "0x1.fffffcp-127", APFloat::opOK, APFloat::fcNormal },<br>+ { PSmallestNormalized, PSmallestNormalized, "0x1p-125", APFloat::opOK, APFloat::fcNormal },<br>+ { PSmallestNormalized, MSmallestNormalized, "0x0p+0", APFloat::opOK, APFloat::fcZero },<br>+ { MSmallestNormalized, PInf, "inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MSmallestNormalized, MInf, "-inf", APFloat::opOK, APFloat::fcInfinity },<br>+ { MSmallestNormalized, PZero, "-0x1p-126", APFloat::opOK, APFloat::fcNormal },<br>+ { MSmallestNormalized, MZero, "-0x1p-126", APFloat::opOK, APFloat::fcNormal },<br>+ // See Note 2.<br>+ { MSmallestNormalized, QNaN, "-nan", APFloat::opOK, APFloat::fcNaN },<br>+#if 0<br>+ // See Note 1.<br>+ { MSmallestNormalized, SNaN, "nan", APFloat::opInvalidOp, APFloat::fcNaN },<br>+#endif<br>+ { MSmallestNormalized, PNormalValue, "0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { MSmallestNormalized, MNormalValue, "-0x1p+0", APFloat::opInexact, APFloat::fcNormal },<br>+ { MSmallestNormalized, PLargestValue, "0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { MSmallestNormalized, MLargestValue, "-0x1.fffffep+127", APFloat::opInexact, APFloat::fcNormal },<br>+ { MSmallestNormalized, PSmallestValue, "-0x1.fffffcp-127", APFloat::opOK, APFloat::fcNormal },<br>+ { MSmallestNormalized, MSmallestValue, "-0x1.000002p-126", APFloat::opOK, APFloat::fcNormal },<br>+ { MSmallestNormalized, PSmallestNormalized, "0x0p+0", APFloat::opOK, APFloat::fcZero },<br>+ { MSmallestNormalized, MSmallestNormalized, "-0x1p-125", APFloat::opOK, APFloat::fcNormal }<br>+ };<br>+<br>+ for (size_t i = 0; i < NumTests; ++i) {<br>+ APFloat x(SpecialCaseTests[i].x);<br>+ APFloat y(SpecialCaseTests[i].y);<br>+ APFloat::opStatus status = x.add(y, APFloat::rmNearestTiesToEven);<br>+<br>+ APFloat result(APFloat::IEEEsingle, SpecialCaseTests[i].result);<br>+<br>+ printf("%a, %a, %a, %a\n", SpecialCaseTests[i].x.convertToFloat(),<br>+ SpecialCaseTests[i].y.convertToFloat(),<br>+ x.convertToFloat(), result.convertToFloat());<br>+<br>+ EXPECT_TRUE(result.bitwiseIsEqual(x));<br>+ EXPECT_TRUE((int)status == SpecialCaseTests[i].status);<br>+ EXPECT_TRUE((int)x.getCategory() == SpecialCaseTests[i].category);<br>+ }<br>+}<br>+<br>}<br><br><br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a></div></blockquote></div><br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a></div></blockquote></div><br></div></body></html>