49#ifdef SOFTFLOAT_FAST_INT64
51union ui128_f128 {
struct uint128 ui;
float128_t f; };
63#ifdef SOFTFLOAT_FAST_INT64
73#ifdef SOFTFLOAT_FAST_INT64
83#define signF16UI( a ) ((bool) ((uint16_t) (a)>>15))
84#define expF16UI( a ) ((int_fast8_t) ((a)>>10) & 0x1F)
85#define fracF16UI( a ) ((a) & 0x03FF)
86#define packToF16UI( sign, exp, sig ) (((uint16_t) (sign)<<15) + ((uint16_t) (exp)<<10) + (sig))
88#define isNaNF16UI( a ) (((~(a) & 0x7C00) == 0) && ((a) & 0x03FF))
104#define signF32UI( a ) ((bool) ((uint32_t) (a)>>31))
105#define expF32UI( a ) ((int_fast16_t) ((a)>>23) & 0xFF)
106#define fracF32UI( a ) ((a) & 0x007FFFFF)
107#define packToF32UI( sign, exp, sig ) (((uint32_t) (sign)<<31) + ((uint32_t) (exp)<<23) + (sig))
109#define isNaNF32UI( a ) (((~(a) & 0x7F800000) == 0) && ((a) & 0x007FFFFF))
125#define signF64UI( a ) ((bool) ((uint64_t) (a)>>63))
126#define expF64UI( a ) ((int_fast16_t) ((a)>>52) & 0x7FF)
127#define fracF64UI( a ) ((a) & UINT64_C( 0x000FFFFFFFFFFFFF ))
128#define packToF64UI( sign, exp, sig ) ((uint64_t) (((uint_fast64_t) (sign)<<63) + ((uint_fast64_t) (exp)<<52) + (sig)))
130#define isNaNF64UI( a ) (((~(a) & UINT64_C( 0x7FF0000000000000 )) == 0) && ((a) & UINT64_C( 0x000FFFFFFFFFFFFF )))
146#define signExtF80UI64( a64 ) ((bool) ((uint16_t) (a64)>>15))
147#define expExtF80UI64( a64 ) ((a64) & 0x7FFF)
148#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
150#define isNaNExtF80UI( a64, a0 ) ((((a64) & 0x7FFF) == 0x7FFF) && ((a0) & UINT64_C( 0x7FFFFFFFFFFFFFFF )))
152#ifdef SOFTFLOAT_FAST_INT64
176#define signF128UI64( a64 ) ((bool) ((uint64_t) (a64)>>63))
177#define expF128UI64( a64 ) ((int_fast32_t) ((a64)>>48) & 0x7FFF)
178#define fracF128UI64( a64 ) ((a64) & UINT64_C( 0x0000FFFFFFFFFFFF ))
179#define packToF128UI64( sign, exp, sig64 ) (((uint_fast64_t) (sign)<<63) + ((uint_fast64_t) (exp)<<48) + (sig64))
181#define isNaNF128UI( a64, a0 ) (((~(a64) & UINT64_C( 0x7FFF000000000000 )) == 0) && (a0 || ((a64) & UINT64_C( 0x0000FFFFFFFFFFFF ))))
183struct exp32_sig128 {
int_fast32_t exp;
struct uint128 sig; };
247#define signF128UI96( a96 ) ((bool) ((uint32_t) (a96)>>31))
248#define expF128UI96( a96 ) ((int32_t) ((a96)>>16) & 0x7FFF)
249#define fracF128UI96( a96 ) ((a96) & 0x0000FFFF)
250#define packToF128UI96( sign, exp, sig96 ) (((uint32_t) (sign)<<31) + ((uint32_t) (exp)<<16) + (sig96))
void softfloat_invalidF128M(uint32_t *)
int softfloat_compareNonnormExtF80M(const struct extFloat80M *, const struct extFloat80M *)
void softfloat_normRoundPackMToF128M(bool, int32_t, uint32_t *, uint32_t *)
float64_t softfloat_mulAddF64(uint_fast64_t, uint_fast64_t, uint_fast64_t, uint_fast8_t)
float32_t softfloat_addMagsF32(uint_fast32_t, uint_fast32_t)
bool softfloat_isNaNF128M(const uint32_t *)
void softfloat_roundPackMToF128M(bool, int32_t, uint32_t *, uint32_t *)
float64_t softfloat_roundPackToF64(bool, int_fast16_t, uint_fast64_t)
void softfloat_mulAddF128M(const uint32_t *, const uint32_t *, const uint32_t *, uint32_t *, uint_fast8_t)
int softfloat_shiftNormSigF128M(const uint32_t *, uint_fast8_t, uint32_t *)
void softfloat_normRoundPackMToExtF80M(bool, int32_t, uint32_t *, uint_fast8_t, struct extFloat80M *)
float16_t softfloat_roundPackToF16(bool, int_fast16_t, uint_fast16_t)
float64_t softfloat_subMagsF64(uint_fast64_t, uint_fast64_t, bool)
struct exp16_sig64 softfloat_normSubnormalF64Sig(uint_fast64_t)
float32_t softfloat_mulAddF32(uint_fast32_t, uint_fast32_t, uint_fast32_t, uint_fast8_t)
uint_fast64_t softfloat_roundMToUI64(bool, uint32_t *, uint_fast8_t, bool)
float64_t softfloat_addMagsF64(uint_fast64_t, uint_fast64_t, bool)
void softfloat_addF128M(const uint32_t *, const uint32_t *, uint32_t *, bool)
float32_t softfloat_roundPackToF32(bool, int_fast16_t, uint_fast32_t)
struct exp8_sig16 softfloat_normSubnormalF16Sig(uint_fast16_t)
struct exp16_sig32 softfloat_normSubnormalF32Sig(uint_fast32_t)
float64_t softfloat_normRoundPackToF64(bool, int_fast16_t, uint_fast64_t)
float16_t softfloat_subMagsF16(uint_fast16_t, uint_fast16_t)
bool softfloat_tryPropagateNaNF128M(const uint32_t *, const uint32_t *, uint32_t *)
void softfloat_invalidExtF80M(struct extFloat80M *)
float16_t softfloat_normRoundPackToF16(bool, int_fast16_t, uint_fast16_t)
void softfloat_roundPackMToExtF80M(bool, int32_t, uint32_t *, uint_fast8_t, struct extFloat80M *)
float32_t softfloat_normRoundPackToF32(bool, int_fast16_t, uint_fast32_t)
float32_t softfloat_subMagsF32(uint_fast32_t, uint_fast32_t)
uint_fast32_t softfloat_roundToUI32(bool, uint_fast64_t, uint_fast8_t, bool)
int_fast64_t softfloat_roundMToI64(bool, uint32_t *, uint_fast8_t, bool)
void softfloat_addExtF80M(const struct extFloat80M *, const struct extFloat80M *, struct extFloat80M *, bool)
bool softfloat_tryPropagateNaNExtF80M(const struct extFloat80M *, const struct extFloat80M *, struct extFloat80M *)
@ softfloat_mulAdd_subProd
int_fast32_t softfloat_roundToI32(bool, uint_fast64_t, uint_fast8_t, bool)
float16_t softfloat_addMagsF16(uint_fast16_t, uint_fast16_t)
float16_t softfloat_mulAddF16(uint_fast16_t, uint_fast16_t, uint_fast16_t, uint_fast8_t)
int softfloat_normExtF80SigM(uint64_t *)
extFloat80_t softfloat_addMagsExtF80(uint_fast16_t uiA64, uint_fast64_t uiA0, uint_fast16_t uiB64, uint_fast64_t uiB0, bool signZ)
float128_t softfloat_addMagsF128(uint_fast64_t uiA64, uint_fast64_t uiA0, uint_fast64_t uiB64, uint_fast64_t uiB0, bool signZ)
float128_t softfloat_mulAddF128(uint_fast64_t uiA64, uint_fast64_t uiA0, uint_fast64_t uiB64, uint_fast64_t uiB0, uint_fast64_t uiC64, uint_fast64_t uiC0, uint_fast8_t op)
extFloat80_t softfloat_normRoundPackToExtF80(bool sign, int_fast32_t exp, uint_fast64_t sig, uint_fast64_t sigExtra, uint_fast8_t roundingPrecision)
float128_t softfloat_normRoundPackToF128(bool sign, int_fast32_t exp, uint_fast64_t sig64, uint_fast64_t sig0)
struct exp32_sig64 softfloat_normSubnormalExtF80Sig(uint_fast64_t sig)
struct exp32_sig128 softfloat_normSubnormalF128Sig(uint_fast64_t sig64, uint_fast64_t sig0)
extFloat80_t softfloat_roundPackToExtF80(bool sign, int_fast32_t exp, uint_fast64_t sig, uint_fast64_t sigExtra, uint_fast8_t roundingPrecision)
float128_t softfloat_roundPackToF128(bool sign, int_fast32_t exp, uint_fast64_t sig64, uint_fast64_t sig0, uint_fast64_t sigExtra)
int_fast64_t softfloat_roundToI64(bool sign, uint_fast64_t sig, uint_fast64_t sigExtra, uint_fast8_t roundingMode, bool exact)
uint_fast64_t softfloat_roundToUI64(bool sign, uint_fast64_t sig, uint_fast64_t sigExtra, uint_fast8_t roundingMode, bool exact)
extFloat80_t softfloat_subMagsExtF80(uint_fast16_t uiA64, uint_fast64_t uiA0, uint_fast16_t uiB64, uint_fast64_t uiB0, bool signZ)
float128_t softfloat_subMagsF128(uint_fast64_t uiA64, uint_fast64_t uiA0, uint_fast64_t uiB64, uint_fast64_t uiB0, bool signZ)
unsigned __int64 uint64_t