Lines Matching refs:fs
38 #define _FP_FRAC_SNANP(fs, X) \ argument
40 ? (_FP_FRAC_HIGH_RAW_##fs (X) & _FP_QNANBIT_##fs) \
41 : !(_FP_FRAC_HIGH_RAW_##fs (X) & _FP_QNANBIT_##fs))
42 #define _FP_FRAC_SNANP_SEMIRAW(fs, X) \ argument
44 ? (_FP_FRAC_HIGH_##fs (X) & _FP_QNANBIT_SH_##fs) \
45 : !(_FP_FRAC_HIGH_##fs (X) & _FP_QNANBIT_SH_##fs))
50 #define _FP_UNPACK_CANONICAL(fs, wc, X) \ argument
56 _FP_FRAC_HIGH_RAW_##fs (X) |= _FP_IMPLBIT_##fs; \
58 X##_e -= _FP_EXPBIAS_##fs; \
77 _FP_UNPACK_CANONICAL_shift -= _FP_FRACXBITS_##fs; \
80 X##_e -= (_FP_EXPBIAS_##fs - 1 \
87 case _FP_EXPMAX_##fs: \
94 if (_FP_FRAC_SNANP (fs, X)) \
106 #define _FP_UNPACK_SEMIRAW(fs, wc, X) _FP_FRAC_SLL_##wc (X, _FP_WORKBITS) argument
110 #define _FP_CHECK_FLUSH_ZERO(fs, wc, X) \ argument
125 #define _FP_OVERFLOW_SEMIRAW(fs, wc, X) \ argument
132 X##_e = _FP_EXPMAX_##fs; \
137 X##_e = _FP_EXPMAX_##fs - 1; \
147 #define _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, X) \ argument
150 if (X##_e == _FP_EXPMAX_##fs \
152 && _FP_FRAC_SNANP_SEMIRAW (fs, X)) \
159 #define _FP_CHOOSENAN_SEMIRAW(fs, wc, R, X, Y, OP) \ argument
165 _FP_CHOOSENAN (fs, wc, R, X, Y, OP); \
173 #define _FP_SETQNAN(fs, wc, X) \ argument
178 _FP_FRAC_HIGH_RAW_##fs (X) &= _FP_QNANBIT_##fs - 1; \
181 X##_s = _FP_NANSIGN_##fs; \
182 _FP_FRAC_SET_##wc (X, _FP_NANFRAC_##fs); \
186 _FP_FRAC_HIGH_RAW_##fs (X) |= _FP_QNANBIT_##fs; \
189 #define _FP_SETQNAN_SEMIRAW(fs, wc, X) \ argument
194 _FP_FRAC_HIGH_##fs (X) &= _FP_QNANBIT_SH_##fs - 1; \
197 X##_s = _FP_NANSIGN_##fs; \
198 _FP_FRAC_SET_##wc (X, _FP_NANFRAC_##fs); \
203 _FP_FRAC_HIGH_##fs (X) |= _FP_QNANBIT_SH_##fs; \
208 #define _FP_EXP_NORMAL(fs, wc, X) (((X##_e + 1) & _FP_EXPMAX_##fs) > 1) argument
213 #define _FP_PACK_SEMIRAW(fs, wc, X) \ argument
221 FP_DECL_##fs (_FP_PACK_SEMIRAW_T); \
227 if (_FP_FRAC_OVERP_##wc (fs, _FP_PACK_SEMIRAW_T)) \
237 if (_FP_FRAC_HIGH_##fs (X) \
238 & (_FP_OVERFLOW_##fs >> 1)) \
240 _FP_FRAC_HIGH_##fs (X) &= ~(_FP_OVERFLOW_##fs >> 1); \
242 if (X##_e == _FP_EXPMAX_##fs) \
243 _FP_OVERFLOW_SEMIRAW (fs, wc, X); \
246 if (X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (X)) \
250 _FP_FRAC_SET_##wc (X, _FP_NANFRAC_##fs); \
251 X##_s = _FP_NANSIGN_##fs; \
254 _FP_SETQNAN (fs, wc, X); \
264 #define _FP_PACK_CANONICAL(fs, wc, X) \ argument
270 X##_e += _FP_EXPBIAS_##fs; \
274 if (_FP_FRAC_OVERP_##wc (fs, X)) \
276 _FP_FRAC_CLEAR_OVERP_##wc (fs, X); \
280 if (X##_e >= _FP_EXPMAX_##fs) \
300 X##_e = _FP_EXPMAX_##fs; \
306 X##_e = _FP_EXPMAX_##fs - 1; \
319 FP_DECL_##fs (_FP_PACK_CANONICAL_T); \
324 if (_FP_FRAC_OVERP_##wc (fs, _FP_PACK_CANONICAL_T)) \
328 if (X##_e <= _FP_WFRACBITS_##fs) \
330 _FP_FRAC_SRS_##wc (X, X##_e, _FP_WFRACBITS_##fs); \
332 if (_FP_FRAC_HIGH_##fs (X) \
333 & (_FP_OVERFLOW_##fs >> 1)) \
371 X##_e = _FP_EXPMAX_##fs; \
376 X##_e = _FP_EXPMAX_##fs; \
379 _FP_FRAC_SET_##wc (X, _FP_NANFRAC_##fs); \
380 X##_s = _FP_NANSIGN_##fs; \
383 _FP_SETQNAN (fs, wc, X); \
391 #define _FP_ISSIGNAN(fs, wc, X) \ argument
394 if (X##_e == _FP_EXPMAX_##fs) \
397 && _FP_FRAC_SNANP (fs, X)) \
408 #define _FP_ADD_INTERNAL(fs, wc, R, X, Y, OP) \ argument
411 _FP_CHECK_FLUSH_ZERO (fs, wc, X); \
412 _FP_CHECK_FLUSH_ZERO (fs, wc, Y); \
427 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
440 if (X##_e == _FP_EXPMAX_##fs) \
442 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
449 else if (X##_e == _FP_EXPMAX_##fs) \
452 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
458 _FP_FRAC_HIGH_##fs (Y) |= _FP_IMPLBIT_SH_##fs; \
464 if (_FP_ADD_INTERNAL_ediff <= _FP_WFRACBITS_##fs) \
466 _FP_WFRACBITS_##fs); \
480 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
493 if (Y##_e == _FP_EXPMAX_##fs) \
495 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
502 else if (Y##_e == _FP_EXPMAX_##fs) \
505 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
511 _FP_FRAC_HIGH_##fs (X) |= _FP_IMPLBIT_SH_##fs; \
517 if (_FP_ADD_INTERNAL_ediff <= _FP_WFRACBITS_##fs) \
519 _FP_WFRACBITS_##fs); \
527 if (!_FP_EXP_NORMAL (fs, wc, X)) \
550 if (_FP_FRAC_HIGH_##fs (R) & _FP_IMPLBIT_SH_##fs) \
553 _FP_FRAC_HIGH_##fs (R) \
554 &= ~(_FP_W_TYPE) _FP_IMPLBIT_SH_##fs; \
563 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
564 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
565 R##_e = _FP_EXPMAX_##fs; \
571 _FP_CHOOSENAN_SEMIRAW (fs, wc, R, X, Y, OP); \
580 _FP_FRAC_SRS_##wc (R, 1, _FP_WFRACBITS_##fs); \
581 if (R##_e == _FP_EXPMAX_##fs) \
583 _FP_OVERFLOW_SEMIRAW (fs, wc, R); \
587 if (_FP_FRAC_HIGH_##fs (R) & _FP_IMPLBIT_SH_##fs) \
590 _FP_FRAC_HIGH_##fs (R) &= ~(_FP_W_TYPE) _FP_IMPLBIT_SH_##fs; \
592 _FP_FRAC_SRS_##wc (R, 1, _FP_WFRACBITS_##fs); \
593 if (R##_e == _FP_EXPMAX_##fs) \
595 _FP_OVERFLOW_SEMIRAW (fs, wc, R); \
613 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
626 if (X##_e == _FP_EXPMAX_##fs) \
628 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
635 else if (X##_e == _FP_EXPMAX_##fs) \
638 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
644 _FP_FRAC_HIGH_##fs (Y) |= _FP_IMPLBIT_SH_##fs; \
650 if (_FP_ADD_INTERNAL_ediff <= _FP_WFRACBITS_##fs) \
652 _FP_WFRACBITS_##fs); \
667 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
680 if (Y##_e == _FP_EXPMAX_##fs) \
682 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
689 else if (Y##_e == _FP_EXPMAX_##fs) \
692 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
698 _FP_FRAC_HIGH_##fs (X) |= _FP_IMPLBIT_SH_##fs; \
704 if (_FP_ADD_INTERNAL_ediff <= _FP_WFRACBITS_##fs) \
706 _FP_WFRACBITS_##fs); \
714 if (!_FP_EXP_NORMAL (fs, wc, X)) \
744 if (_FP_FRAC_HIGH_##fs (R) & _FP_IMPLBIT_SH_##fs) \
758 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
759 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
760 R##_e = _FP_EXPMAX_##fs; \
766 R##_s = _FP_NANSIGN_##fs; \
767 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
790 _FP_CHOOSENAN_SEMIRAW (fs, wc, R, X, Y, OP); \
801 if (_FP_FRAC_HIGH_##fs (R) & _FP_IMPLBIT_SH_##fs) \
816 if (_FP_FRAC_HIGH_##fs (R) & _FP_IMPLBIT_SH_##fs) \
821 _FP_FRAC_HIGH_##fs (R) &= _FP_IMPLBIT_SH_##fs - 1; \
824 _FP_ADD_INTERNAL_diff -= _FP_WFRACXBITS_##fs; \
832 _FP_WFRACBITS_##fs); \
838 _FP_FRAC_HIGH_##fs (R) &= ~(_FP_W_TYPE) _FP_IMPLBIT_SH_##fs; \
846 #define _FP_ADD(fs, wc, R, X, Y) _FP_ADD_INTERNAL (fs, wc, R, X, Y, '+') argument
847 #define _FP_SUB(fs, wc, R, X, Y) \ argument
850 if (!(Y##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (Y))) \
852 _FP_ADD_INTERNAL (fs, wc, R, X, Y, '-'); \
859 #define _FP_NEG(fs, wc, R, X) \ argument
871 #define _FP_MUL(fs, wc, R, X, Y) \ argument
881 _FP_MUL_MEAT_##fs (R, X, Y); \
883 if (_FP_FRAC_OVERP_##wc (fs, R)) \
884 _FP_FRAC_SRS_##wc (R, 1, _FP_WFRACBITS_##fs); \
890 _FP_CHOOSENAN (fs, wc, R, X, Y, '*'); \
921 R##_s = _FP_NANSIGN_##fs; \
923 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
936 #define _FP_FMA(fs, wc, dwc, R, X, Y, Z) \ argument
940 FP_DECL_##fs (_FP_FMA_T); \
960 _FP_MUL_MEAT_##fs (R, X, Y); \
962 if (_FP_FRAC_OVERP_##wc (fs, R)) \
963 _FP_FRAC_SRS_##wc (R, 1, _FP_WFRACBITS_##fs); \
972 _FP_MUL_MEAT_DW_##fs (_FP_FMA_TD, X, Y); \
975 = _FP_FRAC_HIGHBIT_DW_##dwc (fs, _FP_FMA_TD) == 0; \
981 = _FP_WFRACBITS_##fs - _FP_FMA_tsh - _FP_FMA_ediff; \
982 if (_FP_FMA_shift <= -_FP_WFRACBITS_##fs) \
989 _FP_WFRACBITS_DW_##fs); \
1014 _FP_FRAC_SLL_##dwc (_FP_FMA_ZD, _FP_WFRACBITS_##fs); \
1016 if (_FP_FMA_shift >= _FP_WFRACBITS_DW_##fs) \
1020 _FP_WFRACBITS_DW_##fs); \
1041 _FP_FMA_rlz -= _FP_WFRACXBITS_DW_##fs; \
1043 int _FP_FMA_shift = _FP_WFRACBITS_##fs - _FP_FMA_rlz; \
1046 _FP_WFRACBITS_DW_##fs); \
1057 _FP_CHOOSENAN (fs, wc, _FP_FMA_T, X, Y, '*'); \
1088 _FP_FMA_T##_s = _FP_NANSIGN_##fs; \
1090 _FP_FRAC_SET_##wc (_FP_FMA_T, _FP_NANFRAC_##fs); \
1102 _FP_CHOOSENAN (fs, wc, R, _FP_FMA_T, Z, '+'); \
1134 R##_s = _FP_NANSIGN_##fs; \
1136 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
1160 #define _FP_DIV(fs, wc, R, X, Y) \ argument
1170 _FP_DIV_MEAT_##fs (R, X, Y); \
1174 _FP_CHOOSENAN (fs, wc, R, X, Y, '/'); \
1209 R##_s = _FP_NANSIGN_##fs; \
1211 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
1230 #define _FP_CMP_CHECK_NAN(fs, wc, X, Y, ex) \ argument
1245 if (_FP_ISSIGNAN (fs, wc, X) \
1246 || _FP_ISSIGNAN (fs, wc, Y)) \
1252 || _FP_ISSIGNAN (fs, wc, X) \
1253 || _FP_ISSIGNAN (fs, wc, Y)) \
1263 #define _FP_CMP_CHECK_DENORM(fs, wc, X, Y) \ argument
1273 _FP_CHECK_FLUSH_ZERO (fs, wc, X); \
1274 _FP_CHECK_FLUSH_ZERO (fs, wc, Y); \
1288 #define _FP_CMP_CHECK_FLUSH_ZERO(fs, wc, X, Y) \ argument
1293 _FP_CHECK_FLUSH_ZERO (fs, wc, X); \
1294 _FP_CHECK_FLUSH_ZERO (fs, wc, Y); \
1303 #define _FP_CMP(fs, wc, ret, X, Y, un, ex) \ argument
1306 _FP_CMP_CHECK_DENORM (fs, wc, X, Y); \
1308 if ((X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (X)) \
1309 || (Y##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (Y))) \
1312 _FP_CMP_CHECK_NAN (fs, wc, X, Y, (ex)); \
1319 _FP_CMP_CHECK_FLUSH_ZERO (fs, wc, X, Y); \
1351 #define _FP_CMP_EQ(fs, wc, ret, X, Y, ex) \ argument
1354 _FP_CMP_CHECK_DENORM (fs, wc, X, Y); \
1356 if ((X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (X)) \
1357 || (Y##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (Y))) \
1360 _FP_CMP_CHECK_NAN (fs, wc, X, Y, (ex)); \
1364 _FP_CMP_CHECK_FLUSH_ZERO (fs, wc, X, Y); \
1376 #define _FP_CMP_UNORD(fs, wc, ret, X, Y, ex) \ argument
1379 _FP_CMP_CHECK_DENORM (fs, wc, X, Y); \
1380 (ret) = ((X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (X)) \
1381 || (Y##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (Y))); \
1383 _FP_CMP_CHECK_NAN (fs, wc, X, Y, (ex)); \
1389 #define _FP_SQRT(fs, wc, R, X) \ argument
1405 R##_s = _FP_NANSIGN_##fs; \
1407 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
1425 R##_s = _FP_NANSIGN_##fs; \
1426 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
1436 _FP_SQRT_q = _FP_OVERFLOW_##fs >> 1; \
1457 #define _FP_TO_INT(fs, wc, r, X, rsize, rsigned) \ argument
1460 if (X##_e < _FP_EXPBIAS_##fs) \
1477 >= ((_FP_EXPMAX_##fs \
1478 < _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs + (rsize) - 1) \
1479 ? _FP_EXPMAX_##fs \
1480 : _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs + (rsize) - 1))) \
1487 && _FP_ISSIGNAN (fs, wc, X)) \
1492 && (X##_e >= (_FP_EXPMAX_##fs < _FP_EXPBIAS_##fs + (rsize) \
1493 ? _FP_EXPMAX_##fs \
1494 : (_FP_EXPBIAS_##fs + (rsize) \
1512 if (_FP_EXPBIAS_##fs + (rsize) - 1 < _FP_EXPMAX_##fs \
1515 && X##_e == _FP_EXPBIAS_##fs + (rsize) - 1) \
1520 (void) ((_FP_FRACBITS_##fs > (rsize)) \
1523 _FP_FRACBITS_##fs - (rsize), \
1524 _FP_FRACBITS_##fs); \
1537 && _FP_ISSIGNAN (fs, wc, X)) \
1544 _FP_FRAC_HIGH_RAW_##fs (X) |= _FP_IMPLBIT_##fs; \
1545 if (X##_e >= _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs - 1) \
1548 (r) <<= X##_e - _FP_EXPBIAS_##fs - _FP_FRACBITS_##fs + 1; \
1553 (_FP_FRACBITS_##fs + _FP_EXPBIAS_##fs - 1 \
1555 _FP_FRACBITS_##fs); \
1560 if ((rsigned) == 2 && X##_e >= _FP_EXPBIAS_##fs + (rsize) - 1) \
1563 if (X##_e > _FP_EXPBIAS_##fs + (rsize) - 1 \
1580 #define _FP_TO_INT_ROUND(fs, wc, r, X, rsize, rsigned) \ argument
1584 if (X##_e < _FP_EXPBIAS_##fs) \
1610 = (X##_e == _FP_EXPBIAS_##fs - 1 \
1647 >= ((_FP_EXPMAX_##fs \
1648 < _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs + (rsize) - 1) \
1649 ? _FP_EXPMAX_##fs \
1650 : _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs + (rsize) - 1))) \
1657 && _FP_ISSIGNAN (fs, wc, X)) \
1662 && (X##_e >= (_FP_EXPMAX_##fs < _FP_EXPBIAS_##fs + (rsize) \
1663 ? _FP_EXPMAX_##fs \
1664 : (_FP_EXPBIAS_##fs + (rsize) \
1685 && _FP_ISSIGNAN (fs, wc, X)) \
1699 _FP_FRAC_HIGH_RAW_##fs (X) |= _FP_IMPLBIT_##fs; \
1700 if (X##_e >= _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs - 1) \
1704 (r) <<= X##_e - _FP_EXPBIAS_##fs - _FP_FRACBITS_##fs + 1; \
1711 = (_FP_FRACBITS_##fs + _FP_EXPBIAS_##fs \
1715 _FP_WFRACBITS_##fs); \
1752 if (X##_e >= (_FP_EXPBIAS_##fs + (rsize) - 1 \
1755 if (X##_e > _FP_EXPBIAS_##fs + (rsize) - 1 \
1756 || (X##_e == _FP_EXPBIAS_##fs + (rsize) - 1 \
1762 && X##_e == _FP_EXPBIAS_##fs + (rsize) - 2 \
1792 #define _FP_FROM_INT(fs, wc, X, r, rsize, rtype) \ argument
1810 X##_e = (_FP_EXPBIAS_##fs + _FP_W_TYPE_SIZE - 1 \
1819 X##_e = (_FP_EXPBIAS_##fs + 2 * _FP_W_TYPE_SIZE - 1 \
1823 if ((rsize) - 1 + _FP_EXPBIAS_##fs >= _FP_EXPMAX_##fs \
1824 && X##_e >= _FP_EXPMAX_##fs) \
1828 _FP_OVERFLOW_SEMIRAW (fs, wc, X); \
1832 if ((rsize) <= _FP_FRACBITS_##fs \
1833 || X##_e < _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs) \
1837 if (_FP_EXPBIAS_##fs + _FP_FRACBITS_##fs - 1 - X##_e > 0) \
1838 _FP_FRAC_SLL_##wc (X, (_FP_EXPBIAS_##fs \
1839 + _FP_FRACBITS_##fs - 1 - X##_e)); \
1845 if (_FP_EXPBIAS_##fs + _FP_WFRACBITS_##fs - 1 < X##_e) \
1847 = ((_FP_FROM_INT_ur >> (X##_e - _FP_EXPBIAS_##fs \
1848 - _FP_WFRACBITS_##fs + 1)) \
1850 << ((rsize) - (X##_e - _FP_EXPBIAS_##fs \
1851 - _FP_WFRACBITS_##fs + 1))) \
1854 if ((_FP_EXPBIAS_##fs + _FP_WFRACBITS_##fs - 1 - X##_e) > 0) \
1855 _FP_FRAC_SLL_##wc (X, (_FP_EXPBIAS_##fs \
1856 + _FP_WFRACBITS_##fs - 1 - X##_e)); \
1857 _FP_FRAC_HIGH_##fs (X) &= ~(_FP_W_TYPE) _FP_IMPLBIT_SH_##fs; \
1859 _FP_PACK_SEMIRAW (fs, wc, X); \
2096 #define _FP_DIV_MEAT_N_loop(fs, wc, R, X, Y) \ argument
2099 int _FP_DIV_MEAT_N_loop_count = _FP_WFRACBITS_##fs; \
2106 _FP_FRAC_SLL_##wc (_FP_DIV_MEAT_N_loop_u, _FP_WFRACXBITS_##fs); \
2107 _FP_FRAC_SLL_##wc (_FP_DIV_MEAT_N_loop_v, _FP_WFRACXBITS_##fs); \
2147 #define _FP_DIV_MEAT_1_loop(fs, R, X, Y) _FP_DIV_MEAT_N_loop (fs, 1, R, X, Y) argument
2148 #define _FP_DIV_MEAT_2_loop(fs, R, X, Y) _FP_DIV_MEAT_N_loop (fs, 2, R, X, Y) argument
2149 #define _FP_DIV_MEAT_4_loop(fs, R, X, Y) _FP_DIV_MEAT_N_loop (fs, 4, R, X, Y) argument