Lines Matching refs:a

113 INLINE bits32 extractFloat32Frac( float32 a )  in extractFloat32Frac()  argument
116 return a & 0x007FFFFF; in extractFloat32Frac()
125 INLINE int16 extractFloat32Exp( float32 a ) in extractFloat32Exp() argument
128 return ( a>>23 ) & 0xFF; in extractFloat32Exp()
138 INLINE flag extractFloat32Sign( float32 a )
141 return a>>31;
294 INLINE bits64 extractFloat64Frac( float64 a ) in extractFloat64Frac() argument
297 return a & LIT64( 0x000FFFFFFFFFFFFF ); in extractFloat64Frac()
306 INLINE int16 extractFloat64Exp( float64 a ) in extractFloat64Exp() argument
309 return ( a>>52 ) & 0x7FF; in extractFloat64Exp()
319 INLINE flag extractFloat64Sign( float64 a )
322 return a>>63;
470 INLINE bits64 extractFloatx80Frac( floatx80 a ) in extractFloatx80Frac() argument
473 return a.low; in extractFloatx80Frac()
483 INLINE int32 extractFloatx80Exp( floatx80 a ) in extractFloatx80Exp() argument
486 return a.high & 0x7FFF; in extractFloatx80Exp()
496 INLINE flag extractFloatx80Sign( floatx80 a ) in extractFloatx80Sign() argument
499 return a.high>>15; in extractFloatx80Sign()
762 float32 int32_to_float32(struct roundingData *roundData, int32 a) in int32_to_float32() argument
766 if ( a == 0 ) return 0; in int32_to_float32()
767 if ( a == 0x80000000 ) return packFloat32( 1, 0x9E, 0 ); in int32_to_float32()
768 zSign = ( a < 0 ); in int32_to_float32()
769 return normalizeRoundAndPackFloat32( roundData, zSign, 0x9C, zSign ? - a : a ); in int32_to_float32()
780 float64 int32_to_float64( int32 a ) in int32_to_float64() argument
787 if ( a == 0 ) return 0; in int32_to_float64()
788 aSign = ( a < 0 ); in int32_to_float64()
789 absA = aSign ? - a : a; in int32_to_float64()
806 floatx80 int32_to_floatx80( int32 a ) in int32_to_floatx80() argument
813 if ( a == 0 ) return packFloatx80( 0, 0, 0 ); in int32_to_floatx80()
814 zSign = ( a < 0 ); in int32_to_floatx80()
815 absA = zSign ? - a : a; in int32_to_floatx80()
835 int32 float32_to_int32( struct roundingData *roundData, float32 a ) in float32_to_int32() argument
842 aSig = extractFloat32Frac( a ); in float32_to_int32()
843 aExp = extractFloat32Exp( a ); in float32_to_int32()
844 aSign = extractFloat32Sign( a ); in float32_to_int32()
866 int32 float32_to_int32_round_to_zero( float32 a ) in float32_to_int32_round_to_zero() argument
873 aSig = extractFloat32Frac( a ); in float32_to_int32_round_to_zero()
874 aExp = extractFloat32Exp( a ); in float32_to_int32_round_to_zero()
875 aSign = extractFloat32Sign( a ); in float32_to_int32_round_to_zero()
878 if ( a == 0xCF000000 ) return 0x80000000; in float32_to_int32_round_to_zero()
904 float64 float32_to_float64( float32 a ) in float32_to_float64() argument
910 aSig = extractFloat32Frac( a ); in float32_to_float64()
911 aExp = extractFloat32Exp( a ); in float32_to_float64()
912 aSign = extractFloat32Sign( a ); in float32_to_float64()
914 if ( aSig ) return commonNaNToFloat64( float32ToCommonNaN( a ) ); in float32_to_float64()
936 floatx80 float32_to_floatx80( float32 a ) in float32_to_floatx80() argument
942 aSig = extractFloat32Frac( a ); in float32_to_floatx80()
943 aExp = extractFloat32Exp( a ); in float32_to_floatx80()
944 aSign = extractFloat32Sign( a ); in float32_to_floatx80()
946 if ( aSig ) return commonNaNToFloatx80( float32ToCommonNaN( a ) ); in float32_to_floatx80()
968 float32 float32_round_to_int( struct roundingData *roundData, float32 a ) in float32_round_to_int() argument
976 aExp = extractFloat32Exp( a ); in float32_round_to_int()
978 if ( ( aExp == 0xFF ) && extractFloat32Frac( a ) ) { in float32_round_to_int()
979 return propagateFloat32NaN( a, a ); in float32_round_to_int()
981 return a; in float32_round_to_int()
985 if ( (bits32) ( a<<1 ) == 0 ) return a; in float32_round_to_int()
987 aSign = extractFloat32Sign( a ); in float32_round_to_int()
990 if ( ( aExp == 0x7E ) && extractFloat32Frac( a ) ) { in float32_round_to_int()
1004 z = a; in float32_round_to_int()
1015 if ( z != a ) roundData->exception |= float_flag_inexact; in float32_round_to_int()
1029 static float32 addFloat32Sigs( struct roundingData *roundData, float32 a, float32 b, flag zSign ) in addFloat32Sigs() argument
1035 aSig = extractFloat32Frac( a ); in addFloat32Sigs()
1036 aExp = extractFloat32Exp( a ); in addFloat32Sigs()
1044 if ( aSig ) return propagateFloat32NaN( a, b ); in addFloat32Sigs()
1045 return a; in addFloat32Sigs()
1058 if ( bSig ) return propagateFloat32NaN( a, b ); in addFloat32Sigs()
1072 if ( aSig | bSig ) return propagateFloat32NaN( a, b ); in addFloat32Sigs()
1073 return a; in addFloat32Sigs()
1101 static float32 subFloat32Sigs( struct roundingData *roundData, float32 a, float32 b, flag zSign ) in subFloat32Sigs() argument
1107 aSig = extractFloat32Frac( a ); in subFloat32Sigs()
1108 aExp = extractFloat32Exp( a ); in subFloat32Sigs()
1117 if ( aSig | bSig ) return propagateFloat32NaN( a, b ); in subFloat32Sigs()
1130 if ( bSig ) return propagateFloat32NaN( a, b ); in subFloat32Sigs()
1148 if ( aSig ) return propagateFloat32NaN( a, b ); in subFloat32Sigs()
1149 return a; in subFloat32Sigs()
1175 float32 float32_add( struct roundingData *roundData, float32 a, float32 b ) in float32_add() argument
1179 aSign = extractFloat32Sign( a ); in float32_add()
1182 return addFloat32Sigs( roundData, a, b, aSign ); in float32_add()
1185 return subFloat32Sigs( roundData, a, b, aSign ); in float32_add()
1197 float32 float32_sub( struct roundingData *roundData, float32 a, float32 b ) in float32_sub() argument
1201 aSign = extractFloat32Sign( a ); in float32_sub()
1204 return subFloat32Sigs( roundData, a, b, aSign ); in float32_sub()
1207 return addFloat32Sigs( roundData, a, b, aSign ); in float32_sub()
1219 float32 float32_mul( struct roundingData *roundData, float32 a, float32 b ) in float32_mul() argument
1227 aSig = extractFloat32Frac( a ); in float32_mul()
1228 aExp = extractFloat32Exp( a ); in float32_mul()
1229 aSign = extractFloat32Sign( a ); in float32_mul()
1236 return propagateFloat32NaN( a, b ); in float32_mul()
1245 if ( bSig ) return propagateFloat32NaN( a, b ); in float32_mul()
1280 float32 float32_div( struct roundingData *roundData, float32 a, float32 b ) in float32_div() argument
1286 aSig = extractFloat32Frac( a ); in float32_div()
1287 aExp = extractFloat32Exp( a ); in float32_div()
1288 aSign = extractFloat32Sign( a ); in float32_div()
1294 if ( aSig ) return propagateFloat32NaN( a, b ); in float32_div()
1296 if ( bSig ) return propagateFloat32NaN( a, b ); in float32_div()
1303 if ( bSig ) return propagateFloat32NaN( a, b ); in float32_div()
1347 float32 float32_rem( struct roundingData *roundData, float32 a, float32 b ) in float32_rem() argument
1357 aSig = extractFloat32Frac( a ); in float32_rem()
1358 aExp = extractFloat32Exp( a ); in float32_rem()
1359 aSign = extractFloat32Sign( a ); in float32_rem()
1365 return propagateFloat32NaN( a, b ); in float32_rem()
1371 if ( bSig ) return propagateFloat32NaN( a, b ); in float32_rem()
1372 return a; in float32_rem()
1382 if ( aSig == 0 ) return a; in float32_rem()
1392 if ( expDiff < -1 ) return a; in float32_rem()
1450 float32 float32_sqrt( struct roundingData *roundData, float32 a ) in float32_sqrt() argument
1457 aSig = extractFloat32Frac( a ); in float32_sqrt()
1458 aExp = extractFloat32Exp( a ); in float32_sqrt()
1459 aSign = extractFloat32Sign( a ); in float32_sqrt()
1461 if ( aSig ) return propagateFloat32NaN( a, 0 ); in float32_sqrt()
1462 if ( ! aSign ) return a; in float32_sqrt()
1467 if ( ( aExp | aSig ) == 0 ) return a; in float32_sqrt()
1505 flag float32_eq( float32 a, float32 b ) in float32_eq() argument
1508 if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) in float32_eq()
1511 if ( float32_is_signaling_nan( a ) || float32_is_signaling_nan( b ) ) { in float32_eq()
1516 return ( a == b ) || ( (bits32) ( ( a | b )<<1 ) == 0 ); in float32_eq()
1528 flag float32_le( float32 a, float32 b ) in float32_le() argument
1532 if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) in float32_le()
1538 aSign = extractFloat32Sign( a ); in float32_le()
1540 if ( aSign != bSign ) return aSign || ( (bits32) ( ( a | b )<<1 ) == 0 ); in float32_le()
1541 return ( a == b ) || ( aSign ^ ( a < b ) ); in float32_le()
1552 flag float32_lt( float32 a, float32 b ) in float32_lt() argument
1556 if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) in float32_lt()
1562 aSign = extractFloat32Sign( a ); in float32_lt()
1564 if ( aSign != bSign ) return aSign && ( (bits32) ( ( a | b )<<1 ) != 0 ); in float32_lt()
1565 return ( a != b ) && ( aSign ^ ( a < b ) ); in float32_lt()
1577 flag float32_eq_signaling( float32 a, float32 b ) in float32_eq_signaling() argument
1580 if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) in float32_eq_signaling()
1586 return ( a == b ) || ( (bits32) ( ( a | b )<<1 ) == 0 ); in float32_eq_signaling()
1598 flag float32_le_quiet( float32 a, float32 b ) in float32_le_quiet() argument
1603 if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) in float32_le_quiet()
1609 aSign = extractFloat32Sign( a ); in float32_le_quiet()
1611 if ( aSign != bSign ) return aSign || ( (bits32) ( ( a | b )<<1 ) == 0 ); in float32_le_quiet()
1612 return ( a == b ) || ( aSign ^ ( a < b ) ); in float32_le_quiet()
1624 flag float32_lt_quiet( float32 a, float32 b ) in float32_lt_quiet() argument
1628 if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) in float32_lt_quiet()
1634 aSign = extractFloat32Sign( a ); in float32_lt_quiet()
1636 if ( aSign != bSign ) return aSign && ( (bits32) ( ( a | b )<<1 ) != 0 ); in float32_lt_quiet()
1637 return ( a != b ) && ( aSign ^ ( a < b ) ); in float32_lt_quiet()
1652 int32 float64_to_int32( struct roundingData *roundData, float64 a ) in float64_to_int32() argument
1658 aSig = extractFloat64Frac( a ); in float64_to_int32()
1659 aExp = extractFloat64Exp( a ); in float64_to_int32()
1660 aSign = extractFloat64Sign( a ); in float64_to_int32()
1680 int32 float64_to_int32_round_to_zero( float64 a ) in float64_to_int32_round_to_zero() argument
1687 aSig = extractFloat64Frac( a ); in float64_to_int32_round_to_zero()
1688 aExp = extractFloat64Exp( a ); in float64_to_int32_round_to_zero()
1689 aSign = extractFloat64Sign( a ); in float64_to_int32_round_to_zero()
1727 int32 float64_to_uint32( struct roundingData *roundData, float64 a ) in float64_to_uint32() argument
1733 aSig = extractFloat64Frac( a ); in float64_to_uint32()
1734 aExp = extractFloat64Exp( a ); in float64_to_uint32()
1753 int32 float64_to_uint32_round_to_zero( float64 a ) in float64_to_uint32_round_to_zero() argument
1760 aSig = extractFloat64Frac( a ); in float64_to_uint32_round_to_zero()
1761 aExp = extractFloat64Exp( a ); in float64_to_uint32_round_to_zero()
1762 aSign = extractFloat64Sign( a ); in float64_to_uint32_round_to_zero()
1796 float32 float64_to_float32( struct roundingData *roundData, float64 a ) in float64_to_float32() argument
1803 aSig = extractFloat64Frac( a ); in float64_to_float32()
1804 aExp = extractFloat64Exp( a ); in float64_to_float32()
1805 aSign = extractFloat64Sign( a ); in float64_to_float32()
1807 if ( aSig ) return commonNaNToFloat32( float64ToCommonNaN( a ) ); in float64_to_float32()
1830 floatx80 float64_to_floatx80( float64 a ) in float64_to_floatx80() argument
1836 aSig = extractFloat64Frac( a ); in float64_to_floatx80()
1837 aExp = extractFloat64Exp( a ); in float64_to_floatx80()
1838 aSign = extractFloat64Sign( a ); in float64_to_floatx80()
1840 if ( aSig ) return commonNaNToFloatx80( float64ToCommonNaN( a ) ); in float64_to_floatx80()
1863 float64 float64_round_to_int( struct roundingData *roundData, float64 a ) in float64_round_to_int() argument
1871 aExp = extractFloat64Exp( a ); in float64_round_to_int()
1873 if ( ( aExp == 0x7FF ) && extractFloat64Frac( a ) ) { in float64_round_to_int()
1874 return propagateFloat64NaN( a, a ); in float64_round_to_int()
1876 return a; in float64_round_to_int()
1879 if ( (bits64) ( a<<1 ) == 0 ) return a; in float64_round_to_int()
1881 aSign = extractFloat64Sign( a ); in float64_round_to_int()
1884 if ( ( aExp == 0x3FE ) && extractFloat64Frac( a ) ) { in float64_round_to_int()
1899 z = a; in float64_round_to_int()
1911 if ( z != a ) roundData->exception |= float_flag_inexact; in float64_round_to_int()
1925 static float64 addFloat64Sigs( struct roundingData *roundData, float64 a, float64 b, flag zSign ) in addFloat64Sigs() argument
1931 aSig = extractFloat64Frac( a ); in addFloat64Sigs()
1932 aExp = extractFloat64Exp( a ); in addFloat64Sigs()
1940 if ( aSig ) return propagateFloat64NaN( a, b ); in addFloat64Sigs()
1941 return a; in addFloat64Sigs()
1954 if ( bSig ) return propagateFloat64NaN( a, b ); in addFloat64Sigs()
1968 if ( aSig | bSig ) return propagateFloat64NaN( a, b ); in addFloat64Sigs()
1969 return a; in addFloat64Sigs()
1997 static float64 subFloat64Sigs( struct roundingData *roundData, float64 a, float64 b, flag zSign ) in subFloat64Sigs() argument
2003 aSig = extractFloat64Frac( a ); in subFloat64Sigs()
2004 aExp = extractFloat64Exp( a ); in subFloat64Sigs()
2013 if ( aSig | bSig ) return propagateFloat64NaN( a, b ); in subFloat64Sigs()
2026 if ( bSig ) return propagateFloat64NaN( a, b ); in subFloat64Sigs()
2044 if ( aSig ) return propagateFloat64NaN( a, b ); in subFloat64Sigs()
2045 return a; in subFloat64Sigs()
2071 float64 float64_add( struct roundingData *roundData, float64 a, float64 b ) in float64_add() argument
2075 aSign = extractFloat64Sign( a ); in float64_add()
2078 return addFloat64Sigs( roundData, a, b, aSign ); in float64_add()
2081 return subFloat64Sigs( roundData, a, b, aSign ); in float64_add()
2093 float64 float64_sub( struct roundingData *roundData, float64 a, float64 b ) in float64_sub() argument
2097 aSign = extractFloat64Sign( a ); in float64_sub()
2100 return subFloat64Sigs( roundData, a, b, aSign ); in float64_sub()
2103 return addFloat64Sigs( roundData, a, b, aSign ); in float64_sub()
2115 float64 float64_mul( struct roundingData *roundData, float64 a, float64 b ) in float64_mul() argument
2121 aSig = extractFloat64Frac( a ); in float64_mul()
2122 aExp = extractFloat64Exp( a ); in float64_mul()
2123 aSign = extractFloat64Sign( a ); in float64_mul()
2130 return propagateFloat64NaN( a, b ); in float64_mul()
2139 if ( bSig ) return propagateFloat64NaN( a, b ); in float64_mul()
2174 float64 float64_div( struct roundingData *roundData, float64 a, float64 b ) in float64_div() argument
2182 aSig = extractFloat64Frac( a ); in float64_div()
2183 aExp = extractFloat64Exp( a ); in float64_div()
2184 aSign = extractFloat64Sign( a ); in float64_div()
2190 if ( aSig ) return propagateFloat64NaN( a, b ); in float64_div()
2192 if ( bSig ) return propagateFloat64NaN( a, b ); in float64_div()
2199 if ( bSig ) return propagateFloat64NaN( a, b ); in float64_div()
2245 float64 float64_rem( struct roundingData *roundData, float64 a, float64 b ) in float64_rem() argument
2253 aSig = extractFloat64Frac( a ); in float64_rem()
2254 aExp = extractFloat64Exp( a ); in float64_rem()
2255 aSign = extractFloat64Sign( a ); in float64_rem()
2261 return propagateFloat64NaN( a, b ); in float64_rem()
2267 if ( bSig ) return propagateFloat64NaN( a, b ); in float64_rem()
2268 return a; in float64_rem()
2278 if ( aSig == 0 ) return a; in float64_rem()
2285 if ( expDiff < -1 ) return a; in float64_rem()
2331 float64 float64_sqrt( struct roundingData *roundData, float64 a ) in float64_sqrt() argument
2339 aSig = extractFloat64Frac( a ); in float64_sqrt()
2340 aExp = extractFloat64Exp( a ); in float64_sqrt()
2341 aSign = extractFloat64Sign( a ); in float64_sqrt()
2343 if ( aSig ) return propagateFloat64NaN( a, a ); in float64_sqrt()
2344 if ( ! aSign ) return a; in float64_sqrt()
2349 if ( ( aExp | aSig ) == 0 ) return a; in float64_sqrt()
2392 flag float64_eq( float64 a, float64 b ) in float64_eq() argument
2395 if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) ) in float64_eq()
2398 if ( float64_is_signaling_nan( a ) || float64_is_signaling_nan( b ) ) { in float64_eq()
2403 return ( a == b ) || ( (bits64) ( ( a | b )<<1 ) == 0 ); in float64_eq()
2415 flag float64_le( float64 a, float64 b ) in float64_le() argument
2419 if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) ) in float64_le()
2425 aSign = extractFloat64Sign( a ); in float64_le()
2427 if ( aSign != bSign ) return aSign || ( (bits64) ( ( a | b )<<1 ) == 0 ); in float64_le()
2428 return ( a == b ) || ( aSign ^ ( a < b ) ); in float64_le()
2439 flag float64_lt( float64 a, float64 b ) in float64_lt() argument
2443 if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) ) in float64_lt()
2449 aSign = extractFloat64Sign( a ); in float64_lt()
2451 if ( aSign != bSign ) return aSign && ( (bits64) ( ( a | b )<<1 ) != 0 ); in float64_lt()
2452 return ( a != b ) && ( aSign ^ ( a < b ) ); in float64_lt()
2464 flag float64_eq_signaling( float64 a, float64 b ) in float64_eq_signaling() argument
2467 if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) ) in float64_eq_signaling()
2473 return ( a == b ) || ( (bits64) ( ( a | b )<<1 ) == 0 ); in float64_eq_signaling()
2485 flag float64_le_quiet( float64 a, float64 b ) in float64_le_quiet() argument
2490 if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) ) in float64_le_quiet()
2496 aSign = extractFloat64Sign( a ); in float64_le_quiet()
2498 if ( aSign != bSign ) return aSign || ( (bits64) ( ( a | b )<<1 ) == 0 ); in float64_le_quiet()
2499 return ( a == b ) || ( aSign ^ ( a < b ) ); in float64_le_quiet()
2511 flag float64_lt_quiet( float64 a, float64 b ) in float64_lt_quiet() argument
2515 if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) ) in float64_lt_quiet()
2521 aSign = extractFloat64Sign( a ); in float64_lt_quiet()
2523 if ( aSign != bSign ) return aSign && ( (bits64) ( ( a | b )<<1 ) != 0 ); in float64_lt_quiet()
2524 return ( a != b ) && ( aSign ^ ( a < b ) ); in float64_lt_quiet()
2541 int32 floatx80_to_int32( struct roundingData *roundData, floatx80 a ) in floatx80_to_int32() argument
2547 aSig = extractFloatx80Frac( a ); in floatx80_to_int32()
2548 aExp = extractFloatx80Exp( a ); in floatx80_to_int32()
2549 aSign = extractFloatx80Sign( a ); in floatx80_to_int32()
2569 int32 floatx80_to_int32_round_to_zero( floatx80 a ) in floatx80_to_int32_round_to_zero() argument
2576 aSig = extractFloatx80Frac( a ); in floatx80_to_int32_round_to_zero()
2577 aExp = extractFloatx80Exp( a ); in floatx80_to_int32_round_to_zero()
2578 aSign = extractFloatx80Sign( a ); in floatx80_to_int32_round_to_zero()
2612 float32 floatx80_to_float32( struct roundingData *roundData, floatx80 a ) in floatx80_to_float32() argument
2618 aSig = extractFloatx80Frac( a ); in floatx80_to_float32()
2619 aExp = extractFloatx80Exp( a ); in floatx80_to_float32()
2620 aSign = extractFloatx80Sign( a ); in floatx80_to_float32()
2623 return commonNaNToFloat32( floatx80ToCommonNaN( a ) ); in floatx80_to_float32()
2641 float64 floatx80_to_float64( struct roundingData *roundData, floatx80 a ) in floatx80_to_float64() argument
2647 aSig = extractFloatx80Frac( a ); in floatx80_to_float64()
2648 aExp = extractFloatx80Exp( a ); in floatx80_to_float64()
2649 aSign = extractFloatx80Sign( a ); in floatx80_to_float64()
2652 return commonNaNToFloat64( floatx80ToCommonNaN( a ) ); in floatx80_to_float64()
2670 floatx80 floatx80_round_to_int( struct roundingData *roundData, floatx80 a ) in floatx80_round_to_int() argument
2678 aExp = extractFloatx80Exp( a ); in floatx80_round_to_int()
2680 if ( ( aExp == 0x7FFF ) && (bits64) ( extractFloatx80Frac( a )<<1 ) ) { in floatx80_round_to_int()
2681 return propagateFloatx80NaN( a, a ); in floatx80_round_to_int()
2683 return a; in floatx80_round_to_int()
2687 && ( (bits64) ( extractFloatx80Frac( a )<<1 ) == 0 ) ) { in floatx80_round_to_int()
2688 return a; in floatx80_round_to_int()
2691 aSign = extractFloatx80Sign( a ); in floatx80_round_to_int()
2694 if ( ( aExp == 0x3FFE ) && (bits64) ( extractFloatx80Frac( a )<<1 ) in floatx80_round_to_int()
2715 z = a; in floatx80_round_to_int()
2731 if ( z.low != a.low ) roundData->exception |= float_flag_inexact; in floatx80_round_to_int()
2745 static floatx80 addFloatx80Sigs( struct roundingData *roundData, floatx80 a, floatx80 b, flag zSign… in addFloatx80Sigs() argument
2751 aSig = extractFloatx80Frac( a ); in addFloatx80Sigs()
2752 aExp = extractFloatx80Exp( a ); in addFloatx80Sigs()
2758 if ( (bits64) ( aSig<<1 ) ) return propagateFloatx80NaN( a, b ); in addFloatx80Sigs()
2759 return a; in addFloatx80Sigs()
2767 if ( (bits64) ( bSig<<1 ) ) return propagateFloatx80NaN( a, b ); in addFloatx80Sigs()
2777 return propagateFloatx80NaN( a, b ); in addFloatx80Sigs()
2779 return a; in addFloatx80Sigs()
2814 static floatx80 subFloatx80Sigs( struct roundingData *roundData, floatx80 a, floatx80 b, flag zSign… in subFloatx80Sigs() argument
2821 aSig = extractFloatx80Frac( a ); in subFloatx80Sigs()
2822 aExp = extractFloatx80Exp( a ); in subFloatx80Sigs()
2830 return propagateFloatx80NaN( a, b ); in subFloatx80Sigs()
2848 if ( (bits64) ( bSig<<1 ) ) return propagateFloatx80NaN( a, b ); in subFloatx80Sigs()
2860 if ( (bits64) ( aSig<<1 ) ) return propagateFloatx80NaN( a, b ); in subFloatx80Sigs()
2861 return a; in subFloatx80Sigs()
2882 floatx80 floatx80_add( struct roundingData *roundData, floatx80 a, floatx80 b ) in floatx80_add() argument
2886 aSign = extractFloatx80Sign( a ); in floatx80_add()
2889 return addFloatx80Sigs( roundData, a, b, aSign ); in floatx80_add()
2892 return subFloatx80Sigs( roundData, a, b, aSign ); in floatx80_add()
2904 floatx80 floatx80_sub( struct roundingData *roundData, floatx80 a, floatx80 b ) in floatx80_sub() argument
2908 aSign = extractFloatx80Sign( a ); in floatx80_sub()
2911 return subFloatx80Sigs( roundData, a, b, aSign ); in floatx80_sub()
2914 return addFloatx80Sigs( roundData, a, b, aSign ); in floatx80_sub()
2926 floatx80 floatx80_mul( struct roundingData *roundData, floatx80 a, floatx80 b ) in floatx80_mul() argument
2933 aSig = extractFloatx80Frac( a ); in floatx80_mul()
2934 aExp = extractFloatx80Exp( a ); in floatx80_mul()
2935 aSign = extractFloatx80Sign( a ); in floatx80_mul()
2943 return propagateFloatx80NaN( a, b ); in floatx80_mul()
2949 if ( (bits64) ( bSig<<1 ) ) return propagateFloatx80NaN( a, b ); in floatx80_mul()
2987 floatx80 floatx80_div( struct roundingData *roundData, floatx80 a, floatx80 b ) in floatx80_div() argument
2995 aSig = extractFloatx80Frac( a ); in floatx80_div()
2996 aExp = extractFloatx80Exp( a ); in floatx80_div()
2997 aSign = extractFloatx80Sign( a ); in floatx80_div()
3003 if ( (bits64) ( aSig<<1 ) ) return propagateFloatx80NaN( a, b ); in floatx80_div()
3005 if ( (bits64) ( bSig<<1 ) ) return propagateFloatx80NaN( a, b ); in floatx80_div()
3011 if ( (bits64) ( bSig<<1 ) ) return propagateFloatx80NaN( a, b ); in floatx80_div()
3069 floatx80 floatx80_rem( struct roundingData *roundData, floatx80 a, floatx80 b ) in floatx80_rem() argument
3077 aSig0 = extractFloatx80Frac( a ); in floatx80_rem()
3078 aExp = extractFloatx80Exp( a ); in floatx80_rem()
3079 aSign = extractFloatx80Sign( a ); in floatx80_rem()
3086 return propagateFloatx80NaN( a, b ); in floatx80_rem()
3091 if ( (bits64) ( bSig<<1 ) ) return propagateFloatx80NaN( a, b ); in floatx80_rem()
3092 return a; in floatx80_rem()
3106 if ( (bits64) ( aSig0<<1 ) == 0 ) return a; in floatx80_rem()
3114 if ( expDiff < -1 ) return a; in floatx80_rem()
3169 floatx80 floatx80_sqrt( struct roundingData *roundData, floatx80 a ) in floatx80_sqrt() argument
3178 aSig0 = extractFloatx80Frac( a ); in floatx80_sqrt()
3179 aExp = extractFloatx80Exp( a ); in floatx80_sqrt()
3180 aSign = extractFloatx80Sign( a ); in floatx80_sqrt()
3182 if ( (bits64) ( aSig0<<1 ) ) return propagateFloatx80NaN( a, a ); in floatx80_sqrt()
3183 if ( ! aSign ) return a; in floatx80_sqrt()
3187 if ( ( aExp | aSig0 ) == 0 ) return a; in floatx80_sqrt()
3247 flag floatx80_eq( floatx80 a, floatx80 b ) in floatx80_eq() argument
3250 if ( ( ( extractFloatx80Exp( a ) == 0x7FFF ) in floatx80_eq()
3251 && (bits64) ( extractFloatx80Frac( a )<<1 ) ) in floatx80_eq()
3255 if ( floatx80_is_signaling_nan( a ) in floatx80_eq()
3262 ( a.low == b.low ) in floatx80_eq()
3263 && ( ( a.high == b.high ) in floatx80_eq()
3264 || ( ( a.low == 0 ) in floatx80_eq()
3265 && ( (bits16) ( ( a.high | b.high )<<1 ) == 0 ) ) in floatx80_eq()
3278 flag floatx80_le( floatx80 a, floatx80 b ) in floatx80_le() argument
3282 if ( ( ( extractFloatx80Exp( a ) == 0x7FFF ) in floatx80_le()
3283 && (bits64) ( extractFloatx80Frac( a )<<1 ) ) in floatx80_le()
3290 aSign = extractFloatx80Sign( a ); in floatx80_le()
3295 || ( ( ( (bits16) ( ( a.high | b.high )<<1 ) ) | a.low | b.low ) in floatx80_le()
3299 aSign ? le128( b.high, b.low, a.high, a.low ) in floatx80_le()
3300 : le128( a.high, a.low, b.high, b.low ); in floatx80_le()
3312 flag floatx80_lt( floatx80 a, floatx80 b ) in floatx80_lt() argument
3316 if ( ( ( extractFloatx80Exp( a ) == 0x7FFF ) in floatx80_lt()
3317 && (bits64) ( extractFloatx80Frac( a )<<1 ) ) in floatx80_lt()
3324 aSign = extractFloatx80Sign( a ); in floatx80_lt()
3329 && ( ( ( (bits16) ( ( a.high | b.high )<<1 ) ) | a.low | b.low ) in floatx80_lt()
3333 aSign ? lt128( b.high, b.low, a.high, a.low ) in floatx80_lt()
3334 : lt128( a.high, a.low, b.high, b.low ); in floatx80_lt()
3346 flag floatx80_eq_signaling( floatx80 a, floatx80 b ) in floatx80_eq_signaling() argument
3349 if ( ( ( extractFloatx80Exp( a ) == 0x7FFF ) in floatx80_eq_signaling()
3350 && (bits64) ( extractFloatx80Frac( a )<<1 ) ) in floatx80_eq_signaling()
3358 ( a.low == b.low ) in floatx80_eq_signaling()
3359 && ( ( a.high == b.high ) in floatx80_eq_signaling()
3360 || ( ( a.low == 0 ) in floatx80_eq_signaling()
3361 && ( (bits16) ( ( a.high | b.high )<<1 ) == 0 ) ) in floatx80_eq_signaling()
3374 flag floatx80_le_quiet( floatx80 a, floatx80 b ) in floatx80_le_quiet() argument
3378 if ( ( ( extractFloatx80Exp( a ) == 0x7FFF ) in floatx80_le_quiet()
3379 && (bits64) ( extractFloatx80Frac( a )<<1 ) ) in floatx80_le_quiet()
3386 aSign = extractFloatx80Sign( a ); in floatx80_le_quiet()
3391 || ( ( ( (bits16) ( ( a.high | b.high )<<1 ) ) | a.low | b.low ) in floatx80_le_quiet()
3395 aSign ? le128( b.high, b.low, a.high, a.low ) in floatx80_le_quiet()
3396 : le128( a.high, a.low, b.high, b.low ); in floatx80_le_quiet()
3408 flag floatx80_lt_quiet( floatx80 a, floatx80 b ) in floatx80_lt_quiet() argument
3412 if ( ( ( extractFloatx80Exp( a ) == 0x7FFF ) in floatx80_lt_quiet()
3413 && (bits64) ( extractFloatx80Frac( a )<<1 ) ) in floatx80_lt_quiet()
3420 aSign = extractFloatx80Sign( a ); in floatx80_lt_quiet()
3425 && ( ( ( (bits16) ( ( a.high | b.high )<<1 ) ) | a.low | b.low ) in floatx80_lt_quiet()
3429 aSign ? lt128( b.high, b.low, a.high, a.low ) in floatx80_lt_quiet()
3430 : lt128( a.high, a.low, b.high, b.low ); in floatx80_lt_quiet()