49 #ifdef SOFTFLOAT_FAST_INT64 51 union ui128_f128 {
struct uint128 ui;
float128_t f; };
63 #ifdef SOFTFLOAT_FAST_INT64 65 softfloat_roundToUI64(
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 158 struct exp32_sig64 softfloat_normSubnormalExtF80Sig(
uint_fast64_t );
161 softfloat_roundPackToExtF80(
164 softfloat_normRoundPackToExtF80(
168 softfloat_addMagsExtF80(
171 softfloat_subMagsExtF80(
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 )))) 188 softfloat_roundPackToF128(
191 softfloat_normRoundPackToF128(
195 softfloat_addMagsF128(
198 softfloat_subMagsF128(
201 softfloat_mulAddF128(
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_normRoundPackMToExtF80M(bool, int32_t, uint32_t *, uint_fast8_t, struct extFloat80M *)
void softfloat_addExtF80M(const struct extFloat80M *, const struct extFloat80M *, struct extFloat80M *, bool)
struct exp16_sig32 softfloat_normSubnormalF32Sig(uint_fast32_t)
void softfloat_roundPackMToExtF80M(bool, int32_t, uint32_t *, uint_fast8_t, struct extFloat80M *)
struct exp16_sig64 softfloat_normSubnormalF64Sig(uint_fast64_t)
float32_t softfloat_mulAddF32(uint_fast32_t, uint_fast32_t, uint_fast32_t, uint_fast8_t)
void softfloat_invalidExtF80M(struct extFloat80M *)
struct exp8_sig16 softfloat_normSubnormalF16Sig(uint_fast16_t)
bool softfloat_tryPropagateNaNF128M(const uint32_t *, const uint32_t *, uint32_t *)
float32_t softfloat_normRoundPackToF32(bool, int_fast16_t, uint_fast32_t)
float64_t softfloat_mulAddF64(uint_fast64_t, uint_fast64_t, uint_fast64_t, uint_fast8_t)
float64_t softfloat_addMagsF64(uint_fast64_t, uint_fast64_t, bool)
float16_t softfloat_addMagsF16(uint_fast16_t, uint_fast16_t)
void softfloat_mulAddF128M(const uint32_t *, const uint32_t *, const uint32_t *, uint32_t *, uint_fast8_t)
unsigned long long uint64_t
void softfloat_normRoundPackMToF128M(bool, int32_t, uint32_t *, uint32_t *)
float32_t softfloat_addMagsF32(uint_fast32_t, uint_fast32_t)
uint_fast32_t softfloat_roundToUI32(bool, uint_fast64_t, uint_fast8_t, bool)
bool softfloat_isNaNF128M(const uint32_t *)
void softfloat_invalidF128M(uint32_t *)
int softfloat_compareNonnormExtF80M(const struct extFloat80M *, const struct extFloat80M *)
float16_t softfloat_normRoundPackToF16(bool, int_fast16_t, uint_fast16_t)
float64_t softfloat_roundPackToF64(bool, int_fast16_t, uint_fast64_t)
float16_t softfloat_subMagsF16(uint_fast16_t, uint_fast16_t)
float16_t softfloat_mulAddF16(uint_fast16_t, uint_fast16_t, uint_fast16_t, uint_fast8_t)
uint_fast64_t softfloat_roundMToUI64(bool, uint32_t *, uint_fast8_t, bool)
int_fast64_t softfloat_roundMToI64(bool, uint32_t *, uint_fast8_t, bool)
float16_t softfloat_roundPackToF16(bool, int_fast16_t, uint_fast16_t)
void softfloat_addF128M(const uint32_t *, const uint32_t *, uint32_t *, bool)
float64_t softfloat_normRoundPackToF64(bool, int_fast16_t, uint_fast64_t)
int_fast32_t softfloat_roundToI32(bool, uint_fast64_t, uint_fast8_t, bool)
int softfloat_normExtF80SigM(uint64_t *)
bool softfloat_tryPropagateNaNExtF80M(const struct extFloat80M *, const struct extFloat80M *, struct extFloat80M *)
float32_t softfloat_roundPackToF32(bool, int_fast16_t, uint_fast32_t)
void softfloat_roundPackMToF128M(bool, int32_t, uint32_t *, uint32_t *)
float32_t softfloat_subMagsF32(uint_fast32_t, uint_fast32_t)
float64_t softfloat_subMagsF64(uint_fast64_t, uint_fast64_t, bool)
int softfloat_shiftNormSigF128M(const uint32_t *, uint_fast8_t, uint32_t *)