41#include "specialize.h"
44#ifdef SOFTFLOAT_FAST_INT64
69 uint32_t rem[3], x[3], sig32B, q, recip32, rem2[3], *remPtr, *altRemPtr;
84 if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
86 if ( expA == 0x7FFF )
goto invalid;
97 if ( ! expB ) expB = 1;
99 if ( ! (x64 &
UINT64_C( 0x8000000000000000 )) ) {
100 if ( ! x64 )
goto invalid;
104 if ( ! expA ) expA = 1;
106 if ( ! (sigA &
UINT64_C( 0x8000000000000000 )) ) {
115 expDiff = expA - expB;
116 if ( expDiff < -1 )
goto copyA;
139 if ( expDiff < 0 )
break;
140 q = (x64 + 0x80000000)>>32;
150 q = (
uint32_t) (x64>>32)>>(~expDiff & 31);
165 newRemPtr = altRemPtr;
169 }
while ( ! (remPtr[
indexWordHi( 3 )] & 0x80000000) );
174 (wordMeanRem & 0x80000000)
175 || (! wordMeanRem && (q & 1) && ! x[
indexWord( 3, 0 )]
extFloat80_t extF80_rem(extFloat80_t a, extFloat80_t b)
void extF80M_rem(const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr)
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 *)
#define signExtF80UI64(a64)
bool softfloat_tryPropagateNaNExtF80M(const struct extFloat80M *, const struct extFloat80M *, struct extFloat80M *)
int softfloat_normExtF80SigM(uint64_t *)
#define indexWord(total, n)
#define indexWordHi(total)
int_fast8_t softfloat_compare96M(const uint32_t *aPtr, const uint32_t *bPtr)
#define softfloat_negX96M(zPtr)
#define softfloat_add96M(aPtr, bPtr, zPtr)
#define softfloat_sub96M(aPtr, bPtr, zPtr)
#define softfloat_remStep96MBy32(remPtr, dist, bPtr, q, zPtr)
uint32_t softfloat_approxRecip32_1(uint32_t a)
unsigned __int64 uint64_t