41#include "specialize.h"
62 (*addCarryMRoutinePtr)(
81 if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
84 if ( expB == 0x7FFF ) {
86 if ( (expA == 0x7FFF) && (uiZ96 != uiA96) ) {
101 negateB = (signZ != signB);
116 sig96A |= 0x00010000;
119 sig96B |= 0x00010000;
124 addCarryMRoutinePtr =
126 expDiff = expA - expB;
145 (*addCarryMRoutinePtr)(
152 wordSigZ = sig96A + sig96B + carry;
158 (*addCarryMRoutinePtr)(
166 wordSigZ = sig96A + ~sig96B + carry;
167 if ( wordSigZ & 0x80000000 ) {
176 wordSigZ = sig96B + ~sig96A + carry;
179 ! wordSigZ && ! extSigZ[
indexWord( 5, 3 )]
194 wordSigZ = sig96A + sig96B + carry;
201 if ( 0x00010000 <= wordSigZ ) {
202 if ( 0x00020000 <= wordSigZ ) {
208 (*roundPackRoutinePtr)( signZ, expA, extSigZ, zWPtr );
void softfloat_invalidF128M(uint32_t *)
void softfloat_normRoundPackMToF128M(bool, int32_t, uint32_t *, uint32_t *)
#define fracF128UI96(a96)
void softfloat_roundPackMToF128M(bool, int32_t, uint32_t *, uint32_t *)
#define packToF128UI96(sign, exp, sig96)
bool softfloat_tryPropagateNaNF128M(const uint32_t *, const uint32_t *, uint32_t *)
#define signF128UI96(a96)
#define indexMultiwordLo(total, n)
#define indexWordLo(total)
#define indexWord(total, n)
#define indexMultiword(total, m, n)
#define indexWordHi(total)
#define softfloat_shiftRightJam160M(aPtr, dist, zPtr)
uint_fast8_t softfloat_addCarryM(uint_fast8_t size_words, const uint32_t *aPtr, const uint32_t *bPtr, uint_fast8_t carry, uint32_t *zPtr)
uint_fast8_t softfloat_addComplCarryM(uint_fast8_t size_words, const uint32_t *aPtr, const uint32_t *bPtr, uint_fast8_t carry, uint32_t *zPtr)
#define softfloat_shortShiftRightJam160M(aPtr, dist, zPtr)
#define softfloat_addComplCarry96M(aPtr, bPtr, carry, zPtr)
THREAD_LOCAL uint_fast8_t softfloat_roundingMode
void softfloat_addF128M(const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr, bool negateB)