42 #include "softfloat.h" 67 expDiff = expA - expB;
71 if ( expA == 0x7FF ) {
72 if ( sigA | sigB )
goto propagateNaN;
77 sigDiff = sigA - sigB;
90 expZ = expA - shiftDist;
95 uiZ =
packToF64UI( signZ, expZ, sigDiff<<shiftDist );
106 if ( expB == 0x7FF ) {
107 if ( sigB )
goto propagateNaN;
111 sigA += expA ?
UINT64_C( 0x4000000000000000 ) : sigA;
113 sigB |=
UINT64_C( 0x4000000000000000 );
119 if ( expA == 0x7FF ) {
120 if ( sigA )
goto propagateNaN;
124 sigB += expB ?
UINT64_C( 0x4000000000000000 ) : sigB;
126 sigA |=
UINT64_C( 0x4000000000000000 );
uint64_t softfloat_shiftRightJam64(uint64_t a, uint_fast32_t dist)
float64_t softfloat_subMagsF64(uint_fast64_t uiA, uint_fast64_t uiB, bool signZ)
void softfloat_raiseFlags(uint_fast8_t)
#define softfloat_countLeadingZeros64
THREAD_LOCAL uint_fast8_t softfloat_roundingMode
float64_t softfloat_normRoundPackToF64(bool, int_fast16_t, uint_fast64_t)
#define packToF64UI(sign, exp, sig)
uint_fast64_t softfloat_propagateNaNF64UI(uint_fast64_t uiA, uint_fast64_t uiB)