41#include "specialize.h"
61 (*roundPackRoutinePtr)(
74 if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
77 if ( expB == 0x7FFF ) {
79 if ( (expA == 0x7FFF) && (uiZ64 != uiA64) ) {
92 negateB = (signZ != signB);
103 if ( ! expA ) expA = 1;
110 expDiff = expA - expB;
126 sigZExtra = -sigZExtra;
128 if ( ! (sigZ &
UINT64_C( 0x8000000000000000 )) ) {
129 if ( sigZ &
UINT64_C( 0x4000000000000000 ) ) {
131 sigZ = sigZ<<1 | sigZExtra>>31;
139 if ( sigZ &
UINT64_C( 0x8000000000000000 ) )
goto sigZ;
141 goto completeNormAfterAdd;
165 completeNormAfterAdd:
167 sigZ =
UINT64_C( 0x8000000000000000 ) | sigZ>>1;
169 if ( ! (sigZ &
UINT64_C( 0x8000000000000000 )) ) {
182 (*roundPackRoutinePtr)(
void softfloat_normRoundPackMToExtF80M(bool, int32_t, uint32_t *, uint_fast8_t, struct extFloat80M *)
#define packToExtF80UI64(sign, exp)
#define expExtF80UI64(a64)
void softfloat_invalidExtF80M(struct extFloat80M *)
void softfloat_roundPackMToExtF80M(bool, int32_t, uint32_t *, uint_fast8_t, struct extFloat80M *)
#define signExtF80UI64(a64)
bool softfloat_tryPropagateNaNExtF80M(const struct extFloat80M *, const struct extFloat80M *, struct extFloat80M *)
#define indexWordLo(total)
#define indexWord(total, n)
#define softfloat_shiftRightJam96M(aPtr, dist, zPtr)
THREAD_LOCAL uint_fast8_t softfloat_roundingMode
THREAD_LOCAL uint_fast8_t extF80_roundingPrecision
void softfloat_addExtF80M(const struct extFloat80M *aSPtr, const struct extFloat80M *bSPtr, struct extFloat80M *zSPtr, bool negateB)
unsigned __int64 uint64_t