42#include "primitiveTypes.h"
48#define init_detectTininess softfloat_tininess_afterRounding
54#define ui32_fromPosOverflow 0xFFFFFFFF
55#define ui32_fromNegOverflow 0
56#define ui32_fromNaN 0xFFFFFFFF
57#define i32_fromPosOverflow 0x7FFFFFFF
58#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
59#define i32_fromNaN 0x7FFFFFFF
65#define ui64_fromPosOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
66#define ui64_fromNegOverflow 0
67#define ui64_fromNaN UINT64_C( 0xFFFFFFFFFFFFFFFF )
68#define i64_fromPosOverflow INT64_C( 0x7FFFFFFFFFFFFFFF )
69#define i64_fromNegOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
70#define i64_fromNaN INT64_C( 0x7FFFFFFFFFFFFFFF )
81#define defaultNaNF16UI 0x7E00
88#define softfloat_isSigNaNF16UI( uiA ) ((((uiA) & 0x7E00) == 0x7C00) && ((uiA) & 0x01FF))
96#define softfloat_f16UIToCommonNaN( uiA, zPtr ) if ( ! ((uiA) & 0x0200) ) softfloat_raiseFlags( softfloat_flag_invalid )
102#define softfloat_commonNaNToF16UI( aPtr ) ((uint_fast16_t) defaultNaNF16UI)
116#define defaultNaNF32UI 0x7FC00000
123#define softfloat_isSigNaNF32UI( uiA ) ((((uiA) & 0x7FC00000) == 0x7F800000) && ((uiA) & 0x003FFFFF))
131#define softfloat_f32UIToCommonNaN( uiA, zPtr ) if ( ! ((uiA) & 0x00400000) ) softfloat_raiseFlags( softfloat_flag_invalid )
137#define softfloat_commonNaNToF32UI( aPtr ) ((uint_fast32_t) defaultNaNF32UI)
151#define defaultNaNF64UI UINT64_C( 0x7FF8000000000000 )
158#define softfloat_isSigNaNF64UI( uiA ) ((((uiA) & UINT64_C( 0x7FF8000000000000 )) == UINT64_C( 0x7FF0000000000000 )) && ((uiA) & UINT64_C( 0x0007FFFFFFFFFFFF )))
166#define softfloat_f64UIToCommonNaN( uiA, zPtr ) if ( ! ((uiA) & UINT64_C( 0x0008000000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
172#define softfloat_commonNaNToF64UI( aPtr ) ((uint_fast64_t) defaultNaNF64UI)
186#define defaultNaNExtF80UI64 0x7FFF
187#define defaultNaNExtF80UI0 UINT64_C( 0xC000000000000000 )
195#define softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ((((uiA64) & 0x7FFF) == 0x7FFF) && ! ((uiA0) & UINT64_C( 0x4000000000000000 )) && ((uiA0) & UINT64_C( 0x3FFFFFFFFFFFFFFF )))
197#ifdef SOFTFLOAT_FAST_INT64
211#define softfloat_extF80UIToCommonNaN( uiA64, uiA0, zPtr ) if ( ! ((uiA0) & UINT64_C( 0x4000000000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
218#if defined INLINE && ! defined softfloat_commonNaNToExtF80UI
251#define defaultNaNF128UI64 UINT64_C( 0x7FFF800000000000 )
252#define defaultNaNF128UI0 UINT64_C( 0 )
260#define softfloat_isSigNaNF128UI( uiA64, uiA0 ) ((((uiA64) & UINT64_C( 0x7FFF800000000000 )) == UINT64_C( 0x7FFF000000000000 )) && ((uiA0) || ((uiA64) & UINT64_C( 0x00007FFFFFFFFFFF ))))
269#define softfloat_f128UIToCommonNaN( uiA64, uiA0, zPtr ) if ( ! ((uiA64) & UINT64_C( 0x0000800000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
275#if defined INLINE && ! defined softfloat_commonNaNToF128UI
318#define softfloat_extF80MToCommonNaN( aSPtr, zPtr ) if ( ! ((aSPtr)->signif & UINT64_C( 0x4000000000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
325#if defined INLINE && ! defined softfloat_commonNaNToExtF80M
356#define defaultNaNF128UI96 0x7FFF8000
357#define defaultNaNF128UI64 0
358#define defaultNaNF128UI32 0
359#define defaultNaNF128UI0 0
369#define softfloat_f128MToCommonNaN( aWPtr, zPtr ) if ( ! ((aWPtr)[indexWordHi( 4 )] & UINT64_C( 0x0000800000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
377#if defined INLINE && ! defined softfloat_commonNaNToF128M
struct uint128 softfloat_propagateNaNExtF80UI(uint_fast16_t uiA64, uint_fast64_t uiA0, uint_fast16_t uiB64, uint_fast64_t uiB0)
struct uint128 softfloat_propagateNaNF128UI(uint_fast64_t uiA64, uint_fast64_t uiA0, uint_fast64_t uiB64, uint_fast64_t uiB0)
void softfloat_propagateNaNF128M(const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr)
uint_fast16_t softfloat_propagateNaNF16UI(uint_fast16_t uiA, uint_fast16_t uiB)
uint_fast64_t softfloat_propagateNaNF64UI(uint_fast64_t uiA, uint_fast64_t uiB)
void softfloat_propagateNaNExtF80M(const struct extFloat80M *aSPtr, const struct extFloat80M *bSPtr, struct extFloat80M *zSPtr)
uint_fast32_t softfloat_propagateNaNF32UI(uint_fast32_t uiA, uint_fast32_t uiB)
#define softfloat_commonNaNToExtF80M
#define softfloat_commonNaNToExtF80UI
#define softfloat_commonNaNToF128M
#define softfloat_commonNaNToF128UI
#define defaultNaNF128UI64
#define defaultNaNExtF80UI0
#define defaultNaNF128UI96
#define defaultNaNExtF80UI64
#define defaultNaNF128UI32
#define defaultNaNF128UI0
#define indexWord(total, n)