Lines Matching refs:fs

42 #define _FP_FRAC_SNANP(fs, X)				\  argument
44 ? (_FP_FRAC_HIGH_RAW_##fs (X) & _FP_QNANBIT_##fs) \
45 : !(_FP_FRAC_HIGH_RAW_##fs (X) & _FP_QNANBIT_##fs))
46 #define _FP_FRAC_SNANP_SEMIRAW(fs, X) \ argument
48 ? (_FP_FRAC_HIGH_##fs (X) & _FP_QNANBIT_SH_##fs) \
49 : !(_FP_FRAC_HIGH_##fs (X) & _FP_QNANBIT_SH_##fs))
54 #define _FP_UNPACK_CANONICAL(fs, wc, X) \ argument
60 _FP_FRAC_HIGH_RAW_##fs (X) |= _FP_IMPLBIT_##fs; \
62 X##_e -= _FP_EXPBIAS_##fs; \
81 _FP_UNPACK_CANONICAL_shift -= _FP_FRACXBITS_##fs; \
84 X##_e -= (_FP_EXPBIAS_##fs - 1 \
91 case _FP_EXPMAX_##fs: \
98 if (_FP_FRAC_SNANP (fs, X)) \
110 #define _FP_UNPACK_SEMIRAW(fs, wc, X) _FP_FRAC_SLL_##wc (X, _FP_WORKBITS) argument
114 #define _FP_CHECK_FLUSH_ZERO(fs, wc, X) \ argument
129 #define _FP_OVERFLOW_SEMIRAW(fs, wc, X) \ argument
136 X##_e = _FP_EXPMAX_##fs; \
141 X##_e = _FP_EXPMAX_##fs - 1; \
151 #define _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, X) \ argument
154 if (X##_e == _FP_EXPMAX_##fs \
156 && _FP_FRAC_SNANP_SEMIRAW (fs, X)) \
163 #define _FP_CHOOSENAN_SEMIRAW(fs, wc, R, X, Y, OP) \ argument
169 _FP_CHOOSENAN (fs, wc, R, X, Y, OP); \
177 #define _FP_SETQNAN(fs, wc, X) \ argument
182 _FP_FRAC_HIGH_RAW_##fs (X) &= _FP_QNANBIT_##fs - 1; \
185 X##_s = _FP_NANSIGN_##fs; \
186 _FP_FRAC_SET_##wc (X, _FP_NANFRAC_##fs); \
190 _FP_FRAC_HIGH_RAW_##fs (X) |= _FP_QNANBIT_##fs; \
193 #define _FP_SETQNAN_SEMIRAW(fs, wc, X) \ argument
198 _FP_FRAC_HIGH_##fs (X) &= _FP_QNANBIT_SH_##fs - 1; \
201 X##_s = _FP_NANSIGN_##fs; \
202 _FP_FRAC_SET_##wc (X, _FP_NANFRAC_##fs); \
207 _FP_FRAC_HIGH_##fs (X) |= _FP_QNANBIT_SH_##fs; \
212 #define _FP_EXP_NORMAL(fs, wc, X) (((X##_e + 1) & _FP_EXPMAX_##fs) > 1) argument
217 #define _FP_PACK_SEMIRAW(fs, wc, X) \ argument
225 FP_DECL_##fs (_FP_PACK_SEMIRAW_T); \
231 if (_FP_FRAC_OVERP_##wc (fs, _FP_PACK_SEMIRAW_T)) \
241 if (_FP_FRAC_HIGH_##fs (X) \
242 & (_FP_OVERFLOW_##fs >> 1)) \
244 _FP_FRAC_HIGH_##fs (X) &= ~(_FP_OVERFLOW_##fs >> 1); \
246 if (X##_e == _FP_EXPMAX_##fs) \
247 _FP_OVERFLOW_SEMIRAW (fs, wc, X); \
250 if (X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (X)) \
254 _FP_FRAC_SET_##wc (X, _FP_NANFRAC_##fs); \
255 X##_s = _FP_NANSIGN_##fs; \
258 _FP_SETQNAN (fs, wc, X); \
268 #define _FP_PACK_CANONICAL(fs, wc, X) \ argument
274 X##_e += _FP_EXPBIAS_##fs; \
278 if (_FP_FRAC_OVERP_##wc (fs, X)) \
280 _FP_FRAC_CLEAR_OVERP_##wc (fs, X); \
284 if (X##_e >= _FP_EXPMAX_##fs) \
304 X##_e = _FP_EXPMAX_##fs; \
310 X##_e = _FP_EXPMAX_##fs - 1; \
323 FP_DECL_##fs (_FP_PACK_CANONICAL_T); \
328 if (_FP_FRAC_OVERP_##wc (fs, _FP_PACK_CANONICAL_T)) \
332 if (X##_e <= _FP_WFRACBITS_##fs) \
334 _FP_FRAC_SRS_##wc (X, X##_e, _FP_WFRACBITS_##fs); \
336 if (_FP_FRAC_HIGH_##fs (X) \
337 & (_FP_OVERFLOW_##fs >> 1)) \
375 X##_e = _FP_EXPMAX_##fs; \
380 X##_e = _FP_EXPMAX_##fs; \
383 _FP_FRAC_SET_##wc (X, _FP_NANFRAC_##fs); \
384 X##_s = _FP_NANSIGN_##fs; \
387 _FP_SETQNAN (fs, wc, X); \
395 #define _FP_ISSIGNAN(fs, wc, X) \ argument
398 if (X##_e == _FP_EXPMAX_##fs) \
401 && _FP_FRAC_SNANP (fs, X)) \
412 #define _FP_ADD_INTERNAL(fs, wc, R, X, Y, OP) \ argument
415 _FP_CHECK_FLUSH_ZERO (fs, wc, X); \
416 _FP_CHECK_FLUSH_ZERO (fs, wc, Y); \
431 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
444 if (X##_e == _FP_EXPMAX_##fs) \
446 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
453 else if (X##_e == _FP_EXPMAX_##fs) \
456 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
462 _FP_FRAC_HIGH_##fs (Y) |= _FP_IMPLBIT_SH_##fs; \
468 if (_FP_ADD_INTERNAL_ediff <= _FP_WFRACBITS_##fs) \
470 _FP_WFRACBITS_##fs); \
484 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
497 if (Y##_e == _FP_EXPMAX_##fs) \
499 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
506 else if (Y##_e == _FP_EXPMAX_##fs) \
509 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
515 _FP_FRAC_HIGH_##fs (X) |= _FP_IMPLBIT_SH_##fs; \
521 if (_FP_ADD_INTERNAL_ediff <= _FP_WFRACBITS_##fs) \
523 _FP_WFRACBITS_##fs); \
531 if (!_FP_EXP_NORMAL (fs, wc, X)) \
554 if (_FP_FRAC_HIGH_##fs (R) & _FP_IMPLBIT_SH_##fs) \
557 _FP_FRAC_HIGH_##fs (R) \
558 &= ~(_FP_W_TYPE) _FP_IMPLBIT_SH_##fs; \
567 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
568 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
569 R##_e = _FP_EXPMAX_##fs; \
575 _FP_CHOOSENAN_SEMIRAW (fs, wc, R, X, Y, OP); \
584 _FP_FRAC_SRS_##wc (R, 1, _FP_WFRACBITS_##fs); \
585 if (R##_e == _FP_EXPMAX_##fs) \
587 _FP_OVERFLOW_SEMIRAW (fs, wc, R); \
591 if (_FP_FRAC_HIGH_##fs (R) & _FP_IMPLBIT_SH_##fs) \
594 _FP_FRAC_HIGH_##fs (R) &= ~(_FP_W_TYPE) _FP_IMPLBIT_SH_##fs; \
596 _FP_FRAC_SRS_##wc (R, 1, _FP_WFRACBITS_##fs); \
597 if (R##_e == _FP_EXPMAX_##fs) \
599 _FP_OVERFLOW_SEMIRAW (fs, wc, R); \
617 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
630 if (X##_e == _FP_EXPMAX_##fs) \
632 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
639 else if (X##_e == _FP_EXPMAX_##fs) \
642 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
648 _FP_FRAC_HIGH_##fs (Y) |= _FP_IMPLBIT_SH_##fs; \
654 if (_FP_ADD_INTERNAL_ediff <= _FP_WFRACBITS_##fs) \
656 _FP_WFRACBITS_##fs); \
671 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
684 if (Y##_e == _FP_EXPMAX_##fs) \
686 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
693 else if (Y##_e == _FP_EXPMAX_##fs) \
696 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
702 _FP_FRAC_HIGH_##fs (X) |= _FP_IMPLBIT_SH_##fs; \
708 if (_FP_ADD_INTERNAL_ediff <= _FP_WFRACBITS_##fs) \
710 _FP_WFRACBITS_##fs); \
718 if (!_FP_EXP_NORMAL (fs, wc, X)) \
748 if (_FP_FRAC_HIGH_##fs (R) & _FP_IMPLBIT_SH_##fs) \
762 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
763 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
764 R##_e = _FP_EXPMAX_##fs; \
770 R##_s = _FP_NANSIGN_##fs; \
771 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
794 _FP_CHOOSENAN_SEMIRAW (fs, wc, R, X, Y, OP); \
805 if (_FP_FRAC_HIGH_##fs (R) & _FP_IMPLBIT_SH_##fs) \
820 if (_FP_FRAC_HIGH_##fs (R) & _FP_IMPLBIT_SH_##fs) \
825 _FP_FRAC_HIGH_##fs (R) &= _FP_IMPLBIT_SH_##fs - 1; \
828 _FP_ADD_INTERNAL_diff -= _FP_WFRACXBITS_##fs; \
836 _FP_WFRACBITS_##fs); \
842 _FP_FRAC_HIGH_##fs (R) &= ~(_FP_W_TYPE) _FP_IMPLBIT_SH_##fs; \
850 #define _FP_ADD(fs, wc, R, X, Y) _FP_ADD_INTERNAL (fs, wc, R, X, Y, '+') argument
851 #define _FP_SUB(fs, wc, R, X, Y) \ argument
854 if (!(Y##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (Y))) \
856 _FP_ADD_INTERNAL (fs, wc, R, X, Y, '-'); \
863 #define _FP_NEG(fs, wc, R, X) \ argument
875 #define _FP_MUL(fs, wc, R, X, Y) \ argument
885 _FP_MUL_MEAT_##fs (R, X, Y); \
887 if (_FP_FRAC_OVERP_##wc (fs, R)) \
888 _FP_FRAC_SRS_##wc (R, 1, _FP_WFRACBITS_##fs); \
894 _FP_CHOOSENAN (fs, wc, R, X, Y, '*'); \
925 R##_s = _FP_NANSIGN_##fs; \
927 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
940 #define _FP_FMA(fs, wc, dwc, R, X, Y, Z) \ argument
944 FP_DECL_##fs (_FP_FMA_T); \
964 _FP_MUL_MEAT_##fs (R, X, Y); \
966 if (_FP_FRAC_OVERP_##wc (fs, R)) \
967 _FP_FRAC_SRS_##wc (R, 1, _FP_WFRACBITS_##fs); \
976 _FP_MUL_MEAT_DW_##fs (_FP_FMA_TD, X, Y); \
979 = _FP_FRAC_HIGHBIT_DW_##dwc (fs, _FP_FMA_TD) == 0; \
985 = _FP_WFRACBITS_##fs - _FP_FMA_tsh - _FP_FMA_ediff; \
986 if (_FP_FMA_shift <= -_FP_WFRACBITS_##fs) \
993 _FP_WFRACBITS_DW_##fs); \
1018 _FP_FRAC_SLL_##dwc (_FP_FMA_ZD, _FP_WFRACBITS_##fs); \
1020 if (_FP_FMA_shift >= _FP_WFRACBITS_DW_##fs) \
1024 _FP_WFRACBITS_DW_##fs); \
1045 _FP_FMA_rlz -= _FP_WFRACXBITS_DW_##fs; \
1047 int _FP_FMA_shift = _FP_WFRACBITS_##fs - _FP_FMA_rlz; \
1050 _FP_WFRACBITS_DW_##fs); \
1061 _FP_CHOOSENAN (fs, wc, _FP_FMA_T, X, Y, '*'); \
1092 _FP_FMA_T##_s = _FP_NANSIGN_##fs; \
1094 _FP_FRAC_SET_##wc (_FP_FMA_T, _FP_NANFRAC_##fs); \
1106 _FP_CHOOSENAN (fs, wc, R, _FP_FMA_T, Z, '+'); \
1138 R##_s = _FP_NANSIGN_##fs; \
1140 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
1164 #define _FP_DIV(fs, wc, R, X, Y) \ argument
1174 _FP_DIV_MEAT_##fs (R, X, Y); \
1178 _FP_CHOOSENAN (fs, wc, R, X, Y, '/'); \
1213 R##_s = _FP_NANSIGN_##fs; \
1215 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
1234 #define _FP_CMP_CHECK_NAN(fs, wc, X, Y, ex) \ argument
1249 if (_FP_ISSIGNAN (fs, wc, X) \
1250 || _FP_ISSIGNAN (fs, wc, Y)) \
1256 || _FP_ISSIGNAN (fs, wc, X) \
1257 || _FP_ISSIGNAN (fs, wc, Y)) \
1267 #define _FP_CMP_CHECK_DENORM(fs, wc, X, Y) \ argument
1277 _FP_CHECK_FLUSH_ZERO (fs, wc, X); \
1278 _FP_CHECK_FLUSH_ZERO (fs, wc, Y); \
1292 #define _FP_CMP_CHECK_FLUSH_ZERO(fs, wc, X, Y) \ argument
1297 _FP_CHECK_FLUSH_ZERO (fs, wc, X); \
1298 _FP_CHECK_FLUSH_ZERO (fs, wc, Y); \
1307 #define _FP_CMP(fs, wc, ret, X, Y, un, ex) \ argument
1310 _FP_CMP_CHECK_DENORM (fs, wc, X, Y); \
1312 if ((X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (X)) \
1313 || (Y##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (Y))) \
1316 _FP_CMP_CHECK_NAN (fs, wc, X, Y, (ex)); \
1323 _FP_CMP_CHECK_FLUSH_ZERO (fs, wc, X, Y); \
1355 #define _FP_CMP_EQ(fs, wc, ret, X, Y, ex) \ argument
1358 _FP_CMP_CHECK_DENORM (fs, wc, X, Y); \
1360 if ((X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (X)) \
1361 || (Y##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (Y))) \
1364 _FP_CMP_CHECK_NAN (fs, wc, X, Y, (ex)); \
1368 _FP_CMP_CHECK_FLUSH_ZERO (fs, wc, X, Y); \
1380 #define _FP_CMP_UNORD(fs, wc, ret, X, Y, ex) \ argument
1383 _FP_CMP_CHECK_DENORM (fs, wc, X, Y); \
1384 (ret) = ((X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (X)) \
1385 || (Y##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (Y))); \
1387 _FP_CMP_CHECK_NAN (fs, wc, X, Y, (ex)); \
1393 #define _FP_SQRT(fs, wc, R, X) \ argument
1409 R##_s = _FP_NANSIGN_##fs; \
1411 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
1429 R##_s = _FP_NANSIGN_##fs; \
1430 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
1440 _FP_SQRT_q = _FP_OVERFLOW_##fs >> 1; \
1461 #define _FP_TO_INT(fs, wc, r, X, rsize, rsigned) \ argument
1464 if (X##_e < _FP_EXPBIAS_##fs) \
1481 >= ((_FP_EXPMAX_##fs \
1482 < _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs + (rsize) - 1) \
1483 ? _FP_EXPMAX_##fs \
1484 : _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs + (rsize) - 1))) \
1491 && _FP_ISSIGNAN (fs, wc, X)) \
1496 && (X##_e >= (_FP_EXPMAX_##fs < _FP_EXPBIAS_##fs + (rsize) \
1497 ? _FP_EXPMAX_##fs \
1498 : (_FP_EXPBIAS_##fs + (rsize) \
1516 if (_FP_EXPBIAS_##fs + (rsize) - 1 < _FP_EXPMAX_##fs \
1519 && X##_e == _FP_EXPBIAS_##fs + (rsize) - 1) \
1524 (void) ((_FP_FRACBITS_##fs > (rsize)) \
1527 _FP_FRACBITS_##fs - (rsize), \
1528 _FP_FRACBITS_##fs); \
1541 && _FP_ISSIGNAN (fs, wc, X)) \
1548 _FP_FRAC_HIGH_RAW_##fs (X) |= _FP_IMPLBIT_##fs; \
1549 if (X##_e >= _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs - 1) \
1552 (r) <<= X##_e - _FP_EXPBIAS_##fs - _FP_FRACBITS_##fs + 1; \
1557 (_FP_FRACBITS_##fs + _FP_EXPBIAS_##fs - 1 \
1559 _FP_FRACBITS_##fs); \
1564 if ((rsigned) == 2 && X##_e >= _FP_EXPBIAS_##fs + (rsize) - 1) \
1567 if (X##_e > _FP_EXPBIAS_##fs + (rsize) - 1 \
1584 #define _FP_TO_INT_ROUND(fs, wc, r, X, rsize, rsigned) \ argument
1588 if (X##_e < _FP_EXPBIAS_##fs) \
1614 = (X##_e == _FP_EXPBIAS_##fs - 1 \
1651 >= ((_FP_EXPMAX_##fs \
1652 < _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs + (rsize) - 1) \
1653 ? _FP_EXPMAX_##fs \
1654 : _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs + (rsize) - 1))) \
1661 && _FP_ISSIGNAN (fs, wc, X)) \
1666 && (X##_e >= (_FP_EXPMAX_##fs < _FP_EXPBIAS_##fs + (rsize) \
1667 ? _FP_EXPMAX_##fs \
1668 : (_FP_EXPBIAS_##fs + (rsize) \
1689 && _FP_ISSIGNAN (fs, wc, X)) \
1703 _FP_FRAC_HIGH_RAW_##fs (X) |= _FP_IMPLBIT_##fs; \
1704 if (X##_e >= _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs - 1) \
1708 (r) <<= X##_e - _FP_EXPBIAS_##fs - _FP_FRACBITS_##fs + 1; \
1715 = (_FP_FRACBITS_##fs + _FP_EXPBIAS_##fs \
1719 _FP_WFRACBITS_##fs); \
1756 if (X##_e >= (_FP_EXPBIAS_##fs + (rsize) - 1 \
1759 if (X##_e > _FP_EXPBIAS_##fs + (rsize) - 1 \
1760 || (X##_e == _FP_EXPBIAS_##fs + (rsize) - 1 \
1766 && X##_e == _FP_EXPBIAS_##fs + (rsize) - 2 \
1796 #define _FP_FROM_INT(fs, wc, X, r, rsize, rtype) \ argument
1814 X##_e = (_FP_EXPBIAS_##fs + _FP_W_TYPE_SIZE - 1 \
1823 X##_e = (_FP_EXPBIAS_##fs + 2 * _FP_W_TYPE_SIZE - 1 \
1827 if ((rsize) - 1 + _FP_EXPBIAS_##fs >= _FP_EXPMAX_##fs \
1828 && X##_e >= _FP_EXPMAX_##fs) \
1832 _FP_OVERFLOW_SEMIRAW (fs, wc, X); \
1836 if ((rsize) <= _FP_FRACBITS_##fs \
1837 || X##_e < _FP_EXPBIAS_##fs + _FP_FRACBITS_##fs) \
1841 if (_FP_EXPBIAS_##fs + _FP_FRACBITS_##fs - 1 - X##_e > 0) \
1842 _FP_FRAC_SLL_##wc (X, (_FP_EXPBIAS_##fs \
1843 + _FP_FRACBITS_##fs - 1 - X##_e)); \
1849 if (_FP_EXPBIAS_##fs + _FP_WFRACBITS_##fs - 1 < X##_e) \
1851 = ((_FP_FROM_INT_ur >> (X##_e - _FP_EXPBIAS_##fs \
1852 - _FP_WFRACBITS_##fs + 1)) \
1854 << ((rsize) - (X##_e - _FP_EXPBIAS_##fs \
1855 - _FP_WFRACBITS_##fs + 1))) \
1858 if ((_FP_EXPBIAS_##fs + _FP_WFRACBITS_##fs - 1 - X##_e) > 0) \
1859 _FP_FRAC_SLL_##wc (X, (_FP_EXPBIAS_##fs \
1860 + _FP_WFRACBITS_##fs - 1 - X##_e)); \
1861 _FP_FRAC_HIGH_##fs (X) &= ~(_FP_W_TYPE) _FP_IMPLBIT_SH_##fs; \
1863 _FP_PACK_SEMIRAW (fs, wc, X); \
2079 #define _FP_DIV_MEAT_N_loop(fs, wc, R, X, Y) \ argument
2082 int _FP_DIV_MEAT_N_loop_count = _FP_WFRACBITS_##fs; \
2089 _FP_FRAC_SLL_##wc (_FP_DIV_MEAT_N_loop_u, _FP_WFRACXBITS_##fs); \
2090 _FP_FRAC_SLL_##wc (_FP_DIV_MEAT_N_loop_v, _FP_WFRACXBITS_##fs); \
2130 #define _FP_DIV_MEAT_1_loop(fs, R, X, Y) _FP_DIV_MEAT_N_loop (fs, 1, R, X, Y) argument
2131 #define _FP_DIV_MEAT_2_loop(fs, R, X, Y) _FP_DIV_MEAT_N_loop (fs, 2, R, X, Y) argument
2132 #define _FP_DIV_MEAT_4_loop(fs, R, X, Y) _FP_DIV_MEAT_N_loop (fs, 4, R, X, Y) argument