diff options
author | Michael Gottesman <mgottesman@apple.com> | 2013-06-24 09:58:02 +0000 |
---|---|---|
committer | Michael Gottesman <mgottesman@apple.com> | 2013-06-24 09:58:02 +0000 |
commit | fdec0c7a7302702d08f1221609221018af8085ec (patch) | |
tree | 322c301ab9e6ba9963310adf2fd4df04d3f30602 | |
parent | fb25071a18ef24949f2f422c919b85340d6c6e2a (diff) | |
download | external_llvm-fdec0c7a7302702d08f1221609221018af8085ec.tar.gz external_llvm-fdec0c7a7302702d08f1221609221018af8085ec.tar.bz2 external_llvm-fdec0c7a7302702d08f1221609221018af8085ec.zip |
[APFloat] Added make{Zero,Inf} methods and implemented get{Zero,Inf} on top of them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184712 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/ADT/APFloat.h | 10 | ||||
-rw-r--r-- | lib/Support/APFloat.cpp | 16 |
2 files changed, 24 insertions, 2 deletions
diff --git a/include/llvm/ADT/APFloat.h b/include/llvm/ADT/APFloat.h index e3b26f6ca1..3d4a632e53 100644 --- a/include/llvm/ADT/APFloat.h +++ b/include/llvm/ADT/APFloat.h @@ -211,14 +211,18 @@ public: /// /// \param Negative True iff the number should be negative. static APFloat getZero(const fltSemantics &Sem, bool Negative = false) { - return APFloat(Sem, fcZero, Negative); + APFloat Val(Sem, uninitialized); + Val.makeZero(Negative); + return Val; } /// Factory for Positive and Negative Infinity. /// /// \param Negative True iff the number should be negative. static APFloat getInf(const fltSemantics &Sem, bool Negative = false) { - return APFloat(Sem, fcInfinity, Negative); + APFloat Val(Sem, uninitialized); + Val.makeInf(Negative); + return Val; } /// Factory for QNaN values. @@ -498,6 +502,8 @@ private: void makeNaN(bool SNaN = false, bool Neg = false, const APInt *fill = 0); static APFloat makeNaN(const fltSemantics &Sem, bool SNaN, bool Negative, const APInt *fill); + void makeInf(bool Neg = false); + void makeZero(bool Neg = false); /// @} diff --git a/lib/Support/APFloat.cpp b/lib/Support/APFloat.cpp index db1d61c281..ec50064f42 100644 --- a/lib/Support/APFloat.cpp +++ b/lib/Support/APFloat.cpp @@ -3827,3 +3827,19 @@ APFloat::opStatus APFloat::next(bool nextDown) { return result; } + +void +APFloat::makeInf(bool Negative) { + category = fcInfinity; + sign = Negative; + exponent = semantics->maxExponent + 1; + APInt::tcSet(significandParts(), 0, partCount()); +} + +void +APFloat::makeZero(bool Negative) { + category = fcZero; + sign = Negative; + exponent = semantics->minExponent-1; + APInt::tcSet(significandParts(), 0, partCount()); +} |