41#include "specialize.h"
69 expDiff = expA - expB;
78 if ( sigA | sigB )
goto propagateNaN;
84 sigZ = 0x0800 + sigA + sigB;
85 if ( ! (sigZ & 1) && (expZ < 0x1E) ) {
98 if ( sigB )
goto propagateNaN;
102 if ( expDiff <= -13 ) {
104 if ( expA | sigA )
goto addEpsilon;
108 sigX = sigB | 0x0400;
109 sigY = sigA + (expA ? 0x0400 : sigA);
110 shiftDist = 19 + expDiff;
115 if ( expA == 0x1F ) {
116 if ( sigA )
goto propagateNaN;
119 if ( 13 <= expDiff ) {
120 if ( expB | sigB )
goto addEpsilon;
124 sigX = sigA | 0x0400;
125 sigY = sigB + (expB ? 0x0400 : sigB);
126 shiftDist = 19 - expDiff;
130 if ( sig32Z < 0x40000000 ) {
135 if ( sig32Z & 0xFFFF ) {
138 if ( ! (sigZ & 0xF) && (expZ < 0x1E) ) {
161 if ( (
uint16_t) (uiZ<<1) == 0xF800 ) {
166#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
@ softfloat_flag_overflow
THREAD_LOCAL uint_fast8_t softfloat_exceptionFlags
@ softfloat_round_near_even
float16_t softfloat_addMagsF16(uint_fast16_t uiA, uint_fast16_t uiB)