aboutsummaryrefslogtreecommitdiff
path: root/lib/Support/APFloat.cpp
AgeCommit message (Collapse)Author
2008-10-06Mark shortening NaN conversions as Inexact. PR 2856.Dale Johannesen
Improve description of unsupported formats. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57185 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17Rework the routines that convert AP[S]Int into a string. Now, instead ofChris Lattner
returning an std::string by value, it fills in a SmallString/SmallVector passed in. This significantly reduces string thrashing in some cases. More specifically, this: - Adds an operator<< and a print method for APInt that allows you to directly send them to an ostream. - Reimplements APInt::toString to be much simpler and more efficient algorithmically in addition to not thrashing strings quite as much. This speeds up llvm-dis on kc++ by 7%, and may also slightly speed up the asmprinter. This also fixes a bug I introduced into the asmwriter in a previous patch w.r.t. alias printing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54873 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17remove a dead APInt ctor.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54869 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-14Don't assume underlying APInt type is limitedDale Johannesen
to 64 bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51135 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-14Remove undefined behavior in hex string->APFloatDale Johannesen
conversion. Try 0x1.0000a4p+0f. Neil, please review. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51132 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-12Make firstEightPowers const.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50975 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-02Suppress -Wshorten-64-to-32 warnings for 64-bit hosts.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50590 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-20Check that APFloat::convert is not trying to targetDale Johannesen
ppc long double, which doesn't work. This may break some stuff temporarily, but I want to avoid the propagation of code that assumes this works. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49983 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10Make several symbols static.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49496 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-29Add a method to APFloat to convert directly from APInt.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47738 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-11Added "Profile" method to APFloat for use with FoldingSet.Ted Kremenek
Added member template "Add" to FoldingSetNodeID that allows "adding" arbitrary objects to a profile via dispatch to FoldingSetTrait<T>::Profile(). Removed FoldingSetNodeID::AddAPFloat and FoldingSetNodeID::APInt, as their functionality is now replaced using the above mentioned member template. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46957 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-31Chris' change to print an approximation to long doublesDale Johannesen
exposed a bug in APFloat's long double->double conversion of NaNs. Broke several things in the ieee part of gcc testsuite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46617 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-29Remove top-level const qualifiers from casts, avoiding associatedDan Gohman
compiler warnings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46509 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29Remove attribution from file headers, per discussion on llvmdev.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-08proper #include order.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44707 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-05Prior commit updated wrong if, apologies.Neil Booth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44614 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-05Handle zero correctly.Neil Booth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44613 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-05Handle 0 correctly in string->APFloat conversion.Dale Johannesen
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44594 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-17Fix denormal check in float->APInt conversion.Dale Johannesen
PR 1804. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44201 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-02Remove some unnecessary C-style statics.Neil Booth
Restore an assertion that arithmetic can be performed on this format. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43638 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-01Add back line whose removal somehow crept into prior patchNeil Booth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43627 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-01When converting to integer, do bit manipulations in the destinationNeil Booth
memory rather than in a copy of the APFloat. This avoids problems when the destination is wider than our significand and is cleaner. Also provide deterministic values in all cases where conversion fails, namely zero for NaNs and the minimal or maximal value respectively for underflow or overflow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43626 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-25Clarified operator precedence.Hartmut Kaiser
Silenced VC++ warning. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43372 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-15Fast-track obviously over-large and over-small exponents during decimal->Neil Booth
integer conversion. In some such cases this makes us one or two orders of magnitude faster than NetBSD's libc. Glibc seems to have a similar fast path. Also, tighten up some upper bounds to save a bit of memory. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42984 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-14Consolidate logic for creating NaNs. Silence compiler warning.Neil Booth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42966 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-14Whether arithmetic is supported is a property of the semantics. Make itNeil Booth
so, and clean up the checks by putting them in an inline function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42965 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-14Separate out parsing of decimal number. Use this to only allocateNeil Booth
memory for the significand once up-front. Also ignore insignificant trailing zeroes; this saves unnecessary multiplications later. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42964 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-13If the power of 5 is exact, and the reciprocal exact, the error is zero not ↵Neil Booth
one half-ulps. This prevents an infinite loop in rare cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42950 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-12Remove duplicate comment.Neil Booth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42913 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-12Implement correctly-rounded decimal->binary conversion, i.e. conversionNeil Booth
from user input strings. Such conversions are more intricate and subtle than they may appear; it is unlikely I have got it completely right first time. I would appreciate being informed of any bugs and incorrect roundings you might discover. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42912 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-12Remove a field that was never used.Neil Booth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42911 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-12If we're trying to be arbitrary precision, unsigned char clearly won't cut ↵Neil Booth
it. Needed for dec->bin conversions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42910 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-11Next PPC long double bits. First cut at constants.Dale Johannesen
No compile-time support for constant operations yet, just format transformations. Make readers and writers work. Split constants into 2 doubles in Legalize. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42865 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-08Use APInt::tcExtract. It's cleaner, and works :)Neil Booth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42746 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-07Add back convertFromSignExtendedInteger.Neil Booth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42735 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-07Now that convertFromUnsignedParts has a sane, constant interface,Neil Booth
convertFromZeroExtendedInteger can be simplified as it doesn't need to make a copy of the source bignum. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42734 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-07Reimplement convertFromUnsignedInteger so it is passed a const bignum.Neil Booth
It used to modify its argument in-place. This interface is saner and the implementation more efficient. It will be needed for decimal->binary conversion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42733 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-07convertFromInteger, as originally written, expected sign-extendedNeil Booth
input. APInt unfortunately zero-extends signed integers, so Dale modified the function to expect zero-extended input. Make this assumption explicit in the function name. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42732 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-07combineLostFractions does not need to be a member functionNeil Booth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42729 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-06Cleaner, more general exponent output.Neil Booth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42690 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-06silence warnings in no-assert build.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42687 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-06Generalize tcFullMultiply so that the operands can be of differingNeil Booth
part widths. Also, return the number of parts actually required to hold the result's value. Remove an over-cautious condition from rounding of float->hex conversion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42669 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-03Add APFloat -> hexadecimal string conversion, as per %a and %A in C99.Neil Booth
Useful for diagnostics and debugging. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42598 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-03Tweak RoundAwayFromZero the bit number below which is truncated, and makeNeil Booth
it const. Preparation for APFloat -> hexadecimal string conversion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42576 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-30Simplify and fix signed int -> FP conversions.Dale Johannesen
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42483 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-26Whitespace and compiler warning cleanup.Neil Booth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42373 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-25Make APFloat->int conversions deterministic even inDale Johannesen
cases with undefined behavior. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42328 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-25Fix long double<->shorter FP type conversionsDale Johannesen
of zero, infinity, and NaNs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42298 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-22Handle storage complications of float->float conversions.Neil Booth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42220 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-21Change APFloat::convertFromInteger to take the incomingDale Johannesen
bit width instead of number of words allocated, which makes it actually work for int->APF conversions. Adjust callers. Add const to one of the APInt constructors to prevent surprising match when called with const argument. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42210 91177308-0d34-0410-b5e6-96231b3b80d8