Michael Gottesman
0c622ea8d3
Implement IEEE-754R 2008 nextUp/nextDown functions in the guise of the function APFloat::next(bool nextDown).
...
rdar://13852078
llvm-svn: 182945
2013-05-30 18:07:13 +00:00
Michael Gottesman
0db7c27c2d
Added a unittest for APFloat::getSmallestNormalized.
...
llvm-svn: 182897
2013-05-30 00:18:47 +00:00
Michael Gottesman
5455d5b987
Added code to the unittest for APFloat::getSmallest to double check that we consider the result to be denormal.
...
I additionally changed certain checks to use EXPECT_FALSE instead of a boolean
complement with EXPECT_TRUE.
llvm-svn: 182896
2013-05-30 00:18:44 +00:00
Michael Gottesman
63e6d21c72
Add a unittest for APFloat::getSmallest.
...
llvm-svn: 182894
2013-05-29 23:58:29 +00:00
Shuxin Yang
bbddbacd2e
Fix a bug that APFloat::fusedMultiplyAdd() mistakenly evaluate "14.5f * -14.5f + 225.0f" to 225.0f.
...
llvm-svn: 181715
2013-05-13 18:03:12 +00:00
Benjamin Kramer
b361adbb64
APFloat: Make sure that we get a well-formed x87 NaN when converting from a smaller type.
...
Fixes PR15054.
llvm-svn: 173459
2013-01-25 17:01:00 +00:00
Shuxin Yang
4fb504fec1
Implement APFloat::isDenormal()
...
llvm-svn: 171764
2013-01-07 18:59:35 +00:00
Chandler Carruth
130cec21b9
Sort the #include lines for unittest/...
...
llvm-svn: 169250
2012-12-04 10:23:08 +00:00
Benjamin Kramer
08be41adbf
Drop the limitation to IEEE floating point types from the fdiv of pow2 -> fmul transform.
...
This is safe for x87 long doubles and ppc double doubles too.
llvm-svn: 167582
2012-11-08 13:58:10 +00:00
Ulrich Weigand
d9f7e259aa
Implement arithmetic on APFloat with PPCDoubleDouble semantics by
...
treating it as if it were an IEEE floating-point type with 106-bit
mantissa.
This makes compile-time arithmetic on "long double" for PowerPC
in clang (in particular parsing of floating point constants)
work, and fixes all "long double" related failures in the test
suite.
llvm-svn: 166951
2012-10-29 18:09:01 +00:00
Benjamin Kramer
c38fab2013
APFloat::roundToIntegral: Special values don't keep the exponent value up to date, don't rely on it.
...
Add a couple of unit tests for special floats. Fixes 13929, found by MemorySanitizer.
llvm-svn: 164698
2012-09-26 14:06:58 +00:00
Owen Anderson
352dfff447
Fix another roundToIntegral bug where very large values could become infinity. Problem and solution identified by Steve Canon.
...
llvm-svn: 161969
2012-08-15 18:28:45 +00:00
Owen Anderson
1ff74b0d2d
Fix a problem with APFloat::roundToIntegral where it would return incorrect results for negative inputs to trunc. Add unit tests to verify this behavior.
...
llvm-svn: 161929
2012-08-15 05:39:46 +00:00
Eli Friedman
a84ad7d0d0
Fix APFloat::convert so that it handles narrowing conversions correctly; it
...
was returning incorrect values in rare cases, and incorrectly marking
exact conversions as inexact in some more common cases. Fixes PR11406, and a
missed optimization in test/CodeGen/X86/fp-stack-O0.ll.
llvm-svn: 145141
2011-11-26 03:38:02 +00:00
Eli Friedman
212e447967
Attempt to fix MSVC build.
...
llvm-svn: 141831
2011-10-12 23:14:41 +00:00
Eli Friedman
c53220134a
Fix APFloat::getLargest so that it actually returns the correct value. Found by accident while reviewing a patch to nearby code.
...
llvm-svn: 141816
2011-10-12 21:51:36 +00:00
Matt Beaumont-Gay
a421ee10b2
Fix a test that wasn't testing the right thing.
...
The APFloat "Zero" test was actually calling the
APFloat(const fltSemantics &, integerPart) constructor, and EXPECT_EQ was
treating 0 and -0 as equal.
llvm-svn: 138745
2011-08-29 17:54:20 +00:00
Jeffrey Yasskin
03b81a2eb4
Add an APFloat::convertToInt(APSInt) function that automatically manages the
...
memory for the result.
llvm-svn: 135259
2011-07-15 07:04:56 +00:00
Benjamin Kramer
af0ed953c5
Avoid turning a floating point division with a constant power of two into a denormal multiplication.
...
Some platforms may treat denormals as zero, on other platforms multiplication
with a subnormal is slower than dividing by a normal.
llvm-svn: 128555
2011-03-30 17:02:54 +00:00
Benjamin Kramer
03fd672609
Add APFloat::getExactInverse.
...
The idea is, that if an ieee 754 float is divided by a power of two, we can
turn the division into a cheaper multiplication. This function sees if we can
get an exact multiplicative inverse for a divisor and returns it if possible.
This is the hard part of PR9587.
I tested many inputs against llvm-gcc's frotend implementation of this
optimization and didn't find any difference. However, floating point is the
land of weird edge cases, so any review would be appreciated.
llvm-svn: 128545
2011-03-30 15:42:27 +00:00
Jeffrey Yasskin
b5cd01335b
Fix death tests in -Asserts builds.
...
llvm-svn: 98701
2010-03-17 01:18:45 +00:00
John McCall
dcb9a7ad3d
Teach APFloat how to create both QNaNs and SNaNs and with arbitrary-width
...
payloads. APFloat's internal folding routines always make QNaNs now,
instead of sometimes making QNaNs and sometimes SNaNs depending on the
type.
llvm-svn: 97364
2010-02-28 02:51:25 +00:00
John McCall
b42cc681ba
Make APFloat's string-parsing routines a bit safer against very large exponents.
...
llvm-svn: 97278
2010-02-26 22:20:41 +00:00
John McCall
df951bddb8
Make APInt::countLeadingZerosSlowCase() treat the contents of padding bits
...
as undefined. Fixes an assertion in APFloat::toString noticed by Dale.
llvm-svn: 95196
2010-02-03 03:42:44 +00:00
John McCall
dd5044ac55
Implement support for converting to string at "natural precision", and fix some
...
major bugs in long-precision conversion.
llvm-svn: 92150
2009-12-24 23:18:09 +00:00
John McCall
29b5c284ae
Add accessors for the largest-magnitude, smallest-magnitude, and
...
smallest-normalized-magnitude values in a given FP semantics.
Provide an APFloat-to-string conversion which I am quite ready to admit could
be much more efficient.
llvm-svn: 92126
2009-12-24 08:56:26 +00:00
Daniel Dunbar
bc52e4fe73
Add test for PR4873, which works for me.
...
llvm-svn: 80965
2009-09-03 22:57:02 +00:00
Erick Tryzelaar
da666c801c
Add support for including '+' in APFloat strings, more asserts,
...
and many new unit tests.
llvm-svn: 79574
2009-08-20 23:30:43 +00:00
Daniel Dunbar
bf5998edfb
Fix two APFloat bugs in converting hexadecimal constants.
...
llvm-svn: 79540
2009-08-20 17:12:33 +00:00
Erick Tryzelaar
927191f179
Wrap unit test death tests in GTEST_HAS_DEATH_TEST
...
llvm-svn: 79218
2009-08-17 00:55:33 +00:00
Erick Tryzelaar
bc0d74944e
Change APFloatTest from using ASSERTs to EXPECTs
...
llvm-svn: 79216
2009-08-17 00:14:11 +00:00
Erick Tryzelaar
19f63b2e4d
Modify APFloat to take a StringRef instead of a c string.
...
This also adds unit tests to APFloat that mainly tests the
string handling of APFloat, but not much else of it's api.
llvm-svn: 79210
2009-08-16 23:36:19 +00:00