summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/APFloat.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* Implement APInt <-> APFloat conversion for IEEE 128-bit floats.Anton Korobeynikov2009-08-211-3/+83
| | | | | | This fixes PR2555 llvm-svn: 79677
* Add support for including '+' in APFloat strings, more asserts,Erick Tryzelaar2009-08-201-28/+34
| | | | | | and many new unit tests. llvm-svn: 79574
* Fix two APFloat bugs in converting hexadecimal constants.Daniel Dunbar2009-08-201-2/+2
| | | | llvm-svn: 79540
* Fix an uninitialized value warning in APFloat.Erick Tryzelaar2009-08-181-2/+1
| | | | llvm-svn: 79353
* Modify APFloat to take a StringRef instead of a c string.Erick Tryzelaar2009-08-161-63/+106
| | | | | | | 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
* llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.Torok Edwin2009-07-141-7/+7
| | | | | | | | | This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed"). llvm-svn: 75640
* assert(0) -> LLVM_UNREACHABLE.Torok Edwin2009-07-111-7/+8
| | | | | | | | | Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG builds. llvm-svn: 75379
* Add support for letting the client choose different flavors of NaNs. ↵Mike Stump2009-05-301-6/+12
| | | | | | | | Testcase to be added in clang. llvm-svn: 72606
* Fix whitespacing (space after switch).Mike Stump2009-05-131-6/+6
| | | | llvm-svn: 71738
* Fix internal representation of fp80 to be theDale Johannesen2009-03-231-8/+6
| | | | | | | | | | same as a normal i80 {low64, high16} rather than its own {high64, low16}. A depressing number of places know about this; I think I got them all. Bitcode readers and writers convert back to the old form to avoid breaking compatibility. llvm-svn: 67562
* just initialize the first element, we don't need to set the rest to zeros.Chris Lattner2009-03-131-3/+3
| | | | llvm-svn: 66850
* Eliminate a 9640 byte static mutable initialized data item by moving itChris Lattner2009-03-131-2/+2
| | | | | | to the stack. This shrinks all llvm tools by 9k, and improves reentrancy. llvm-svn: 66847
* static functions don't need an anonymous namespace.Chris Lattner2009-03-121-373/+371
| | | | llvm-svn: 66845
OpenPOWER on IntegriCloud