summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/APFloat.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Implement arithmetic on APFloat with PPCDoubleDouble semantics byUlrich Weigand2012-10-291-76/+65
| | | | | | | | | | | | 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
* APFloat::roundToIntegral: Special values don't keep the exponent value up to ↵Benjamin Kramer2012-09-261-1/+1
| | | | | | | | date, don't rely on it. Add a couple of unit tests for special floats. Fixes 13929, found by MemorySanitizer. llvm-svn: 164698
* Fix undefined behavior (signed integer overflow) when Clang parses a ↵Richard Smith2012-08-241-1/+3
| | | | | | hexfloat with an enormous exponent. Caught by an existing unit test + -ftrapv. llvm-svn: 162505
* Fix another roundToIntegral bug where very large values could become ↵Owen Anderson2012-08-151-0/+6
| | | | | | infinity. Problem and solution identified by Steve Canon. llvm-svn: 161969
* Fix typo in comment.Owen Anderson2012-08-151-1/+1
| | | | llvm-svn: 161956
* Fix a problem with APFloat::roundToIntegral where it would return incorrect ↵Owen Anderson2012-08-151-0/+12
| | | | | | results for negative inputs to trunc. Add unit tests to verify this behavior. llvm-svn: 161929
* Fix the construction of the magic constant for roundToIntegral to be 64-bit ↵Owen Anderson2012-08-141-2/+2
| | | | | | safe. Fixes c-torture/execute/990826-0.c llvm-svn: 161885
* Add a roundToIntegral method to APFloat, which can be parameterized over ↵Owen Anderson2012-08-131-0/+26
| | | | | | various rounding modes. Use this to implement SelectionDAG constant folding of FFLOOR, FCEIL, and FTRUNC. llvm-svn: 161807
* Don't add null characters to the end of the APFloat string buffer.David Blaikie2012-07-251-10/+2
| | | | | | Report/patch inspiration by Olaf Krzikalla. llvm-svn: 160744
* Replace the hashing functions on APInt and APFloat with overloads of theChandler Carruth2012-03-041-16/+15
| | | | | | | | | | | | | | new hash_value infrastructure, and replace their implementations using hash_combine. This removes a complete copy of Jenkin's lookup3 hash function (which is both significantly slower and lower quality than the one implemented in hash_combine) along with a somewhat scary xor-only hash function. Now that APInt and APFloat can be passed directly to hash_combine, simplify the rest of the LLVMContextImpl hashing to use the new infrastructure. llvm-svn: 152004
* APFloat::toString(): Fix overrun at scanning.NAKAMURA Takumi2012-02-191-1/+1
| | | | | | FYI, clang/test/SemaTemplate/template-id-printing.cpp had been failing due to it on cygwin-clang. llvm-svn: 150911
* Add 'llvm_unreachable' to passify GCC's understanding of the constraintsChandler Carruth2012-01-101-0/+1
| | | | | | | | of several newly un-defaulted switches. This also helps optimizers (including LLVM's) recognize that every case is covered, and we should assume as much. llvm-svn: 147861
* Remove unnecessary default cases in switches that cover all enum values.David Blaikie2012-01-101-3/+0
| | | | llvm-svn: 147855
* Add back a line I deleted by accident in r145141. Fixes uninitialized ↵Eli Friedman2011-11-281-0/+1
| | | | | | variable warnings and runtime failures. llvm-svn: 145256
* Fix APFloat::convert so that it handles narrowing conversions correctly; itEli Friedman2011-11-261-49/+36
| | | | | | | | 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
* Fix APFloat::getSmallestNormalized so the shift doesn't depend on undefined ↵Eli Friedman2011-10-121-1/+1
| | | | | | behavior. Patch from Ahmed Charles. llvm-svn: 141818
* Fix APFloat::getLargest so that it actually returns the correct value. ↵Eli Friedman2011-10-121-2/+3
| | | | | | Found by accident while reviewing a patch to nearby code. llvm-svn: 141816
* Fix APInt::operator*= so that it computes the correct result for large ↵Eli Friedman2011-10-071-1/+1
| | | | | | integers where there is unsigned overflow. Fix APFloat::toString so that it doesn't depend on the incorrect behavior in common cases (and computes the correct result in some rare cases). Fixes PR11086. llvm-svn: 141441
* Fix typo in comments.Nick Lewycky2011-10-031-2/+2
| | | | llvm-svn: 141032
* Silence a bunch (but not all) "variable written but not read" warningsDuncan Sands2011-08-121-0/+4
| | | | | | when building with assertions disabled. llvm-svn: 137460
* Add APInt(numBits, ArrayRef<uint64_t> bigVal) constructor to prevent future ↵Jeffrey Yasskin2011-07-181-7/+7
| | | | | | | | | ambiguity errors like the one corrected by r135261. Migrate all LLVM callers of the old constructor to the new one. llvm-svn: 135431
* Explicitly cast the second argument to unsigned in order to select theChandler Carruth2011-07-151-1/+1
| | | | | | | | | desired overload. This is a bit of a hackish workaround to fix the compile after r135259. Let me know if there is a better approach. llvm-svn: 135261
* Add an APFloat::convertToInt(APSInt) function that automatically manages theJeffrey Yasskin2011-07-151-0/+18
| | | | | | memory for the result. llvm-svn: 135259
* Fix a ton of comment typos found by codespell. Patch byChris Lattner2011-04-151-1/+1
| | | | | | Luis Felipe Strano Moraes! llvm-svn: 129558
* Avoid turning a floating point division with a constant power of two into a ↵Benjamin Kramer2011-03-301-0/+8
| | | | | | | | | 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
* Add APFloat::getExactInverse.Benjamin Kramer2011-03-301-0/+26
| | | | | | | | | | | | | | 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
* Initialize the only-used-with-PPC-double-double parts of the APFloat class. ThisBill Wendling2011-03-181-13/+10
| | | | | | | makes valgrind stop complaining about uninitialized variables being read when it accesses a bitfield (category) that shares its bits with these variables. llvm-svn: 127871
* Enhance constant folding of bitcast operations on vectors of floats.Nadav Rotem2011-02-171-0/+6
| | | | | | | Add getAllOnesValue of FP numbers to Constants and APFloat. Add more tests. llvm-svn: 125776
* Null initialize a few variables flagged byTed Kremenek2011-01-231-1/+1
| | | | | | | | | | clang's -Wuninitialized-experimental warning. While these don't look like real bugs, clang's -Wuninitialized-experimental analysis is stricter than GCC's, and these fixes have the benefit of being general nice cleanups. llvm-svn: 124073
* Fixed parsing of hex floats.Abramo Bagnara2011-01-061-4/+4
| | | | llvm-svn: 122963
* PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() andJay Foad2010-12-071-3/+3
| | | | | | | | zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method trunc(), to be const and to return a new value instead of modifying the object in place. llvm-svn: 121120
* PR5207: change APInt::doubleToBits() and APInt::floatToBits() to beJay Foad2010-11-281-4/+2
| | | | | | static methods that return a new APInt. llvm-svn: 120261
* Do not assert when reading an exponent out of range.Dale Johannesen2010-08-191-0/+1
| | | | llvm-svn: 111534
* Don't pass StringRef by reference.Benjamin Kramer2010-07-141-5/+4
| | | | llvm-svn: 108366
* Fix minor style issues.Dan Gohman2010-03-241-143/+141
| | | | llvm-svn: 99414
* make APFloat::toString be const.Chris Lattner2010-03-061-1/+1
| | | | llvm-svn: 97883
* Don't potentially read past the end of the fill data when making a NaN fromJohn McCall2010-03-011-1/+2
| | | | | | an APInt. llvm-svn: 97467
* Properly clear all the extra bits in a significand when making a NaN from anJohn McCall2010-02-281-8/+28
| | | | | | | APInt. Be certain to set the integer bit in an x87 extended-precision significand so that we don't accidentally make a pseudo-NaN. llvm-svn: 97382
* Teach APFloat how to create both QNaNs and SNaNs and with arbitrary-widthJohn McCall2010-02-281-11/+36
| | | | | | | | 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
* Make APFloat's string-parsing routines a bit safer against very large exponents.John McCall2010-02-261-2/+16
| | | | llvm-svn: 97278
* Implement support for converting to string at "natural precision", and fix someJohn McCall2009-12-241-16/+26
| | | | | | major bugs in long-precision conversion. llvm-svn: 92150
* Substantially optimize APFloat::toString() by doing a single large divide toJohn McCall2009-12-241-0/+37
| | | | | | | | | | | | cut the significand down to the desired precision *before* entering the core divmod loop. Makes the overall algorithm logarithmic in the exponent. There's still a lot of room for improvement here, but this gets the performance back down to acceptable-for-diagnostics levels, even for long doubles. negligible, even on long doubles. llvm-svn: 92130
* Add accessors for the largest-magnitude, smallest-magnitude, andJohn McCall2009-12-241-0/+301
| | | | | | | | 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
* Remove getIEEEFloatParts and getIEEEDoubleParts. They are not needed.Evan Cheng2009-10-281-50/+0
| | | | llvm-svn: 85358
* Add new APFloat methods that return sign, exp, and mantissa of ieee float ↵Evan Cheng2009-10-271-12/+62
| | | | | | and double values. llvm-svn: 85318
* Commit fixes for half precision I noted in review, soDale Johannesen2009-10-231-3/+3
| | | | | | | they don't get lost; I don't think the originator has write access. llvm-svn: 84928
* Add half precision floating point support (float16) to APFloat,Chris Lattner2009-10-161-1/+69
| | | | | | patch by Peter Johnson! (PR5195) llvm-svn: 84239
* wrap long lines.Chris Lattner2009-09-241-2/+4
| | | | llvm-svn: 82715
* add a version of the APFloat constructor that initializes to 0.0Chris Lattner2009-09-171-0/+8
| | | | llvm-svn: 82110
* Fix typo.Anton Korobeynikov2009-08-211-1/+1
| | | | llvm-svn: 79688
OpenPOWER on IntegriCloud