mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
Add support for letting the client choose different flavors of NaNs. Testcase to be
added in clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72606 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -598,12 +598,18 @@ APFloat::copySignificand(const APFloat &rhs)
|
||||
|
||||
/* Make this number a NaN, with an arbitrary but deterministic value
|
||||
for the significand. If double or longer, this is a signalling NaN,
|
||||
which may not be ideal. */
|
||||
which may not be ideal. If float, this is QNaN(0). */
|
||||
void
|
||||
APFloat::makeNaN(void)
|
||||
APFloat::makeNaN(unsigned type)
|
||||
{
|
||||
category = fcNaN;
|
||||
APInt::tcSet(significandParts(), ~0U, partCount());
|
||||
// FIXME: Add double and long double support for QNaN(0).
|
||||
if (semantics->precision == 24 && semantics->maxExponent == 127) {
|
||||
type |= 0x7fc00000U;
|
||||
type &= ~0x80000000U;
|
||||
} else
|
||||
type = ~0U;
|
||||
APInt::tcSet(significandParts(), type, partCount());
|
||||
}
|
||||
|
||||
APFloat &
|
||||
@ -662,16 +668,16 @@ APFloat::APFloat(const fltSemantics &ourSemantics, integerPart value)
|
||||
}
|
||||
|
||||
APFloat::APFloat(const fltSemantics &ourSemantics,
|
||||
fltCategory ourCategory, bool negative)
|
||||
fltCategory ourCategory, bool negative, unsigned type)
|
||||
{
|
||||
assertArithmeticOK(ourSemantics);
|
||||
initialize(&ourSemantics);
|
||||
category = ourCategory;
|
||||
sign = negative;
|
||||
if(category == fcNormal)
|
||||
if (category == fcNormal)
|
||||
category = fcZero;
|
||||
else if (ourCategory == fcNaN)
|
||||
makeNaN();
|
||||
makeNaN(type);
|
||||
}
|
||||
|
||||
APFloat::APFloat(const fltSemantics &ourSemantics, const char *text)
|
||||
|
Reference in New Issue
Block a user