41#include "specialize.h"
60 struct exp32_sig64 normExpSig;
62 struct uint64_extra sig64Extra;
74 expDiff = expA - expB;
76 if ( expA == 0x7FFF ) {
77 if ( (sigA | sigB) &
UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
88 expZ = normExpSig.exp + 1;
89 sigZ = normExpSig.sig;
98 if ( expB == 0x7FFF ) {
99 if ( sigB &
UINT64_C( 0x7FFFFFFFFFFFFFFF ) )
goto propagateNaN;
108 if ( ! expDiff )
goto newlyAligned;
112 sigZExtra = sig64Extra.extra;
114 if ( expA == 0x7FFF ) {
115 if ( sigA &
UINT64_C( 0x7FFFFFFFFFFFFFFF ) )
goto propagateNaN;
124 if ( ! expDiff )
goto newlyAligned;
128 sigZExtra = sig64Extra.extra;
132 if ( sigZ &
UINT64_C( 0x8000000000000000 ) )
goto roundAndPack;
137 sigZ = sig64Extra.v |
UINT64_C( 0x8000000000000000 );
138 sigZExtra = sig64Extra.extra;
151 uZ.s.signExp = uiZ64;
struct uint128 softfloat_propagateNaNExtF80UI(uint_fast16_t uiA64, uint_fast64_t uiA0, uint_fast16_t uiB64, uint_fast64_t uiB0)
#define packToExtF80UI64(sign, exp)
#define expExtF80UI64(a64)
THREAD_LOCAL uint_fast8_t extF80_roundingPrecision
extFloat80_t softfloat_addMagsExtF80(uint_fast16_t uiA64, uint_fast64_t uiA0, uint_fast16_t uiB64, uint_fast64_t uiB0, bool signZ)
struct exp32_sig64 softfloat_normSubnormalExtF80Sig(uint_fast64_t sig)
extFloat80_t softfloat_roundPackToExtF80(bool sign, int_fast32_t exp, uint_fast64_t sig, uint_fast64_t sigExtra, uint_fast8_t roundingPrecision)