45{
46 union ui128_f128 uA;
51 bool sign;
53
54
55
57 uiA64 = uA.ui.v64;
58 uiA0 = uA.ui.v0;
59 exp = expF128UI64( uiA64 );
60 sig64 = fracF128UI64( uiA64 ) | (uiA0 != 0);
61
62
63 shiftDist = 0x402F - exp;
64 if ( 49 <= shiftDist ) {
65 if ( exact && (exp | sig64) ) {
67 }
68 return 0;
69 }
70
71
72 sign = signF128UI64( uiA64 );
73 if ( shiftDist < 18 ) {
74 if (
75 sign && (shiftDist == 17)
76 && (sig64 <
UINT64_C( 0x0000000000020000 ))
77 ) {
78 if ( exact && sig64 ) {
80 }
81 return -0x7FFFFFFF - 1;
82 }
84 return
87 }
88
89
90 sig64 |=
UINT64_C( 0x0001000000000000 );
91 absZ = sig64>>shiftDist;
92 if (
94 ) {
96 }
97 return sign ? -absZ : absZ;
98
99}
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
void softfloat_raiseFlags(uint_fast8_t flags)
#define i32_fromNegOverflow
#define i32_fromPosOverflow
THREAD_LOCAL uint_fast8_t softfloat_exceptionFlags