41#include "specialize.h"
68 expDiff = expA - expB;
73 if ( sigA | sigB )
goto propagateNaN;
78 sigDiff = sigA - sigB;
92 expZ = expA - shiftDist;
97 sigZ = sigDiff<<shiftDist;
107 if ( expB == 0x1F ) {
108 if ( sigB )
goto propagateNaN;
112 if ( expDiff <= -13 ) {
114 if ( expA | sigA )
goto subEpsilon;
118 sigX = sigB | 0x0400;
119 sigY = sigA + (expA ? 0x0400 : sigA);
125 if ( expA == 0x1F ) {
126 if ( sigA )
goto propagateNaN;
129 if ( 13 <= expDiff ) {
130 if ( expB | sigB )
goto subEpsilon;
134 sigX = sigA | 0x0400;
135 sigY = sigB + (expB ? 0x0400 : sigB);
139 sig32Z <<= shiftDist;
142 if ( sig32Z & 0xFFFF ) {
145 if ( ! (sigZ & 0xF) && ((
unsigned int) expZ < 0x1E) ) {
170#ifdef SOFTFLOAT_ROUND_ODD
uint_fast16_t softfloat_propagateNaNF16UI(uint_fast16_t uiA, uint_fast16_t uiB)
void softfloat_raiseFlags(uint_fast8_t flags)
float16_t softfloat_roundPackToF16(bool, int_fast16_t, uint_fast16_t)
#define packToF16UI(sign, exp, sig)
THREAD_LOCAL uint_fast8_t softfloat_roundingMode
THREAD_LOCAL uint_fast8_t softfloat_exceptionFlags
@ softfloat_round_near_even
#define softfloat_countLeadingZeros16
#define softfloat_countLeadingZeros32
float16_t softfloat_subMagsF16(uint_fast16_t uiA, uint_fast16_t uiB)