mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
Add getSizeInBits function to the APFloat class
The newly added function returns the size of the specified floating point semantics in bits. Differential revision: http://reviews.llvm.org/D8413 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241793 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b0205f5937
commit
6055ca7bf4
@ -276,6 +276,10 @@ public:
|
|||||||
/// \param isIEEE - If 128 bit number, select between PPC and IEEE
|
/// \param isIEEE - If 128 bit number, select between PPC and IEEE
|
||||||
static APFloat getAllOnesValue(unsigned BitWidth, bool isIEEE = false);
|
static APFloat getAllOnesValue(unsigned BitWidth, bool isIEEE = false);
|
||||||
|
|
||||||
|
/// Returns the size of the floating point number (in bits) in the given
|
||||||
|
/// semantics.
|
||||||
|
static unsigned getSizeInBits(const fltSemantics &Sem);
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
/// Used to insert APFloat objects, or objects that contain APFloat objects,
|
/// Used to insert APFloat objects, or objects that contain APFloat objects,
|
||||||
|
@ -52,14 +52,17 @@ namespace llvm {
|
|||||||
/* Number of bits in the significand. This includes the integer
|
/* Number of bits in the significand. This includes the integer
|
||||||
bit. */
|
bit. */
|
||||||
unsigned int precision;
|
unsigned int precision;
|
||||||
|
|
||||||
|
/* Number of bits actually used in the semantics. */
|
||||||
|
unsigned int sizeInBits;
|
||||||
};
|
};
|
||||||
|
|
||||||
const fltSemantics APFloat::IEEEhalf = { 15, -14, 11 };
|
const fltSemantics APFloat::IEEEhalf = { 15, -14, 11, 16 };
|
||||||
const fltSemantics APFloat::IEEEsingle = { 127, -126, 24 };
|
const fltSemantics APFloat::IEEEsingle = { 127, -126, 24, 32 };
|
||||||
const fltSemantics APFloat::IEEEdouble = { 1023, -1022, 53 };
|
const fltSemantics APFloat::IEEEdouble = { 1023, -1022, 53, 64 };
|
||||||
const fltSemantics APFloat::IEEEquad = { 16383, -16382, 113 };
|
const fltSemantics APFloat::IEEEquad = { 16383, -16382, 113, 128 };
|
||||||
const fltSemantics APFloat::x87DoubleExtended = { 16383, -16382, 64 };
|
const fltSemantics APFloat::x87DoubleExtended = { 16383, -16382, 64, 80 };
|
||||||
const fltSemantics APFloat::Bogus = { 0, 0, 0 };
|
const fltSemantics APFloat::Bogus = { 0, 0, 0, 0 };
|
||||||
|
|
||||||
/* The PowerPC format consists of two doubles. It does not map cleanly
|
/* The PowerPC format consists of two doubles. It does not map cleanly
|
||||||
onto the usual format above. It is approximated using twice the
|
onto the usual format above. It is approximated using twice the
|
||||||
@ -72,7 +75,7 @@ namespace llvm {
|
|||||||
to represent all possible values held by a PPC double-double number,
|
to represent all possible values held by a PPC double-double number,
|
||||||
for example: (long double) 1.0 + (long double) 0x1p-106
|
for example: (long double) 1.0 + (long double) 0x1p-106
|
||||||
Should this be replaced by a full emulation of PPC double-double? */
|
Should this be replaced by a full emulation of PPC double-double? */
|
||||||
const fltSemantics APFloat::PPCDoubleDouble = { 1023, -1022 + 53, 53 + 53 };
|
const fltSemantics APFloat::PPCDoubleDouble = { 1023, -1022 + 53, 53 + 53, 128 };
|
||||||
|
|
||||||
/* A tight upper bound on number of parts required to hold the value
|
/* A tight upper bound on number of parts required to hold the value
|
||||||
pow(5, power) is
|
pow(5, power) is
|
||||||
@ -2416,7 +2419,7 @@ APFloat::roundSignificandWithExponent(const integerPart *decSigParts,
|
|||||||
roundingMode rounding_mode)
|
roundingMode rounding_mode)
|
||||||
{
|
{
|
||||||
unsigned int parts, pow5PartCount;
|
unsigned int parts, pow5PartCount;
|
||||||
fltSemantics calcSemantics = { 32767, -32767, 0 };
|
fltSemantics calcSemantics = { 32767, -32767, 0, 0 };
|
||||||
integerPart pow5Parts[maxPowerOfFiveParts];
|
integerPart pow5Parts[maxPowerOfFiveParts];
|
||||||
bool isNearest;
|
bool isNearest;
|
||||||
|
|
||||||
@ -3368,6 +3371,10 @@ APFloat::getAllOnesValue(unsigned BitWidth, bool isIEEE)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned APFloat::getSizeInBits(const fltSemantics &Sem) {
|
||||||
|
return Sem.sizeInBits;
|
||||||
|
}
|
||||||
|
|
||||||
/// Make this number the largest magnitude normal number in the given
|
/// Make this number the largest magnitude normal number in the given
|
||||||
/// semantics.
|
/// semantics.
|
||||||
void APFloat::makeLargest(bool Negative) {
|
void APFloat::makeLargest(bool Negative) {
|
||||||
|
Loading…
Reference in New Issue
Block a user