56{
59 bool sign;
66
67
68
74
75
76 shiftDist = 0x403E - exp;
77 if ( shiftDist < 0 ) goto invalid;
78 if ( exact ) {
79 if ( exp ) sig96 |= 0x00010000;
86 if ( uiZ>>63 && (! sign || (uiZ !=
UINT64_C( 0x8000000000000000 ))) ) {
87 goto invalid;
88 }
91 }
92 } else {
93 if ( 64 <= shiftDist ) return 0;
94 uiZ =
98 if ( shiftDist ) {
99 uiZ |=
UINT64_C( 0x8000000000000000 );
100 uiZ >>= shiftDist;
101 } else {
102 if ( uiZ || ! sign ) goto invalid;
103 uiZ |=
UINT64_C( 0x8000000000000000 );
104 }
105 }
106 if ( sign ) uiZ = -uiZ;
107 uZ.ui = uiZ;
108 return uZ.i;
109
110
111 invalid:
113 return
114 (exp == 0x7FFF)
115 && (sig96
120
121}
void softfloat_raiseFlags(uint_fast8_t flags)
#define i64_fromNegOverflow
#define i64_fromPosOverflow
#define fracF128UI96(a96)
#define signF128UI96(a96)
#define indexWordLo(total)
#define indexWord(total, n)
#define indexWordHi(total)
#define softfloat_shiftRightJam128M(aPtr, dist, zPtr)
THREAD_LOCAL uint_fast8_t softfloat_exceptionFlags
unsigned __int64 uint64_t