Lines Matching refs:wc

31 #define _FP_DECL(wc, X)						\  argument
35 _FP_FRAC_DECL_##wc (X)
50 #define _FP_UNPACK_CANONICAL(fs, wc, X) \ argument
57 _FP_FRAC_SLL_##wc (X, _FP_WORKBITS); \
63 if (_FP_FRAC_ZEROP_##wc (X)) \
68 _FP_FRAC_SET_##wc (X, _FP_ZEROFRAC_##wc); \
75 _FP_FRAC_CLZ_##wc (_FP_UNPACK_CANONICAL_shift, \
78 _FP_FRAC_SLL_##wc (X, (_FP_UNPACK_CANONICAL_shift \
88 if (_FP_FRAC_ZEROP_##wc (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
115 && !_FP_FRAC_ZEROP_##wc (X)) \
117 _FP_FRAC_SET_##wc (X, _FP_ZEROFRAC_##wc); \
125 #define _FP_OVERFLOW_SEMIRAW(fs, wc, X) \ argument
133 _FP_FRAC_SET_##wc (X, _FP_ZEROFRAC_##wc); \
138 _FP_FRAC_SET_##wc (X, _FP_MAXFRAC_##wc); \
147 #define _FP_CHECK_SIGNAN_SEMIRAW(fs, wc, X) \ argument
151 && !_FP_FRAC_ZEROP_##wc (X) \
159 #define _FP_CHOOSENAN_SEMIRAW(fs, wc, R, X, Y, OP) \ argument
163 _FP_FRAC_SRL_##wc (X, _FP_WORKBITS); \
164 _FP_FRAC_SRL_##wc (Y, _FP_WORKBITS); \
165 _FP_CHOOSENAN (fs, wc, R, X, Y, OP); \
166 _FP_FRAC_SLL_##wc (R, _FP_WORKBITS); \
173 #define _FP_SETQNAN(fs, wc, X) \ argument
179 if (_FP_FRAC_ZEROP_##wc (X)) \
182 _FP_FRAC_SET_##wc (X, _FP_NANFRAC_##fs); \
189 #define _FP_SETQNAN_SEMIRAW(fs, wc, X) \ argument
195 if (_FP_FRAC_ZEROP_##wc (X)) \
198 _FP_FRAC_SET_##wc (X, _FP_NANFRAC_##fs); \
199 _FP_FRAC_SLL_##wc (X, _FP_WORKBITS); \
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
217 = X##_e == 0 && !_FP_FRAC_ZEROP_##wc (X); \
222 _FP_FRAC_COPY_##wc (_FP_PACK_SEMIRAW_T, X); \
225 _FP_FRAC_SLL_##wc (_FP_PACK_SEMIRAW_T, 1); \
226 _FP_ROUND (wc, _FP_PACK_SEMIRAW_T); \
227 if (_FP_FRAC_OVERP_##wc (fs, _FP_PACK_SEMIRAW_T)) \
230 _FP_ROUND (wc, X); \
243 _FP_OVERFLOW_SEMIRAW (fs, wc, X); \
245 _FP_FRAC_SRL_##wc (X, _FP_WORKBITS); \
246 if (X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc (X)) \
250 _FP_FRAC_SET_##wc (X, _FP_NANFRAC_##fs); \
254 _FP_SETQNAN (fs, wc, X); \
264 #define _FP_PACK_CANONICAL(fs, wc, X) \ argument
273 _FP_ROUND (wc, X); \
274 if (_FP_FRAC_OVERP_##wc (fs, X)) \
276 _FP_FRAC_CLEAR_OVERP_##wc (fs, X); \
279 _FP_FRAC_SRL_##wc (X, _FP_WORKBITS); \
301 _FP_FRAC_SET_##wc (X, _FP_ZEROFRAC_##wc); \
307 _FP_FRAC_SET_##wc (X, _FP_MAXFRAC_##wc); \
320 _FP_FRAC_COPY_##wc (_FP_PACK_CANONICAL_T, X); \
323 _FP_ROUND (wc, _FP_PACK_CANONICAL_T); \
324 if (_FP_FRAC_OVERP_##wc (fs, _FP_PACK_CANONICAL_T)) \
330 _FP_FRAC_SRS_##wc (X, X##_e, _FP_WFRACBITS_##fs); \
331 _FP_ROUND (wc, X); \
336 _FP_FRAC_SET_##wc (X, _FP_ZEROFRAC_##wc); \
342 _FP_FRAC_SRL_##wc (X, _FP_WORKBITS); \
354 if (!_FP_FRAC_ZEROP_##wc (X)) \
356 _FP_FRAC_SET_##wc (X, _FP_MINFRAC_##wc); \
357 _FP_ROUND (wc, X); \
358 _FP_FRAC_LOW_##wc (X) >>= (_FP_WORKBITS); \
367 _FP_FRAC_SET_##wc (X, _FP_ZEROFRAC_##wc); \
372 _FP_FRAC_SET_##wc (X, _FP_ZEROFRAC_##wc); \
379 _FP_FRAC_SET_##wc (X, _FP_NANFRAC_##fs); \
383 _FP_SETQNAN (fs, wc, X); \
391 #define _FP_ISSIGNAN(fs, wc, X) \ argument
396 if (!_FP_FRAC_ZEROP_##wc (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); \
425 if (_FP_FRAC_ZEROP_##wc (Y)) \
427 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
428 _FP_FRAC_COPY_##wc (R, X); \
437 _FP_FRAC_ADD_##wc (R, X, Y); \
442 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
443 _FP_FRAC_COPY_##wc (R, X); \
452 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
453 _FP_FRAC_COPY_##wc (R, X); \
465 _FP_FRAC_SRS_##wc (Y, _FP_ADD_INTERNAL_ediff, \
467 else if (!_FP_FRAC_ZEROP_##wc (Y)) \
468 _FP_FRAC_SET_##wc (Y, _FP_MINFRAC_##wc); \
469 _FP_FRAC_ADD_##wc (R, X, Y); \
478 if (_FP_FRAC_ZEROP_##wc (X)) \
480 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
481 _FP_FRAC_COPY_##wc (R, Y); \
490 _FP_FRAC_ADD_##wc (R, Y, X); \
495 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
496 _FP_FRAC_COPY_##wc (R, Y); \
505 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
506 _FP_FRAC_COPY_##wc (R, Y); \
518 _FP_FRAC_SRS_##wc (X, _FP_ADD_INTERNAL_ediff, \
520 else if (!_FP_FRAC_ZEROP_##wc (X)) \
521 _FP_FRAC_SET_##wc (X, _FP_MINFRAC_##wc); \
522 _FP_FRAC_ADD_##wc (R, Y, X); \
527 if (!_FP_EXP_NORMAL (fs, wc, X)) \
533 if (_FP_FRAC_ZEROP_##wc (X)) \
535 if (!_FP_FRAC_ZEROP_##wc (Y)) \
537 _FP_FRAC_COPY_##wc (R, Y); \
540 else if (_FP_FRAC_ZEROP_##wc (Y)) \
543 _FP_FRAC_COPY_##wc (R, X); \
549 _FP_FRAC_ADD_##wc (R, X, Y); \
563 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
564 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
566 if (_FP_FRAC_ZEROP_##wc (X)) \
567 _FP_FRAC_COPY_##wc (R, Y); \
568 else if (_FP_FRAC_ZEROP_##wc (Y)) \
569 _FP_FRAC_COPY_##wc (R, X); \
571 _FP_CHOOSENAN_SEMIRAW (fs, wc, R, X, Y, OP); \
578 _FP_FRAC_ADD_##wc (R, X, Y); \
580 _FP_FRAC_SRS_##wc (R, 1, _FP_WFRACBITS_##fs); \
583 _FP_OVERFLOW_SEMIRAW (fs, wc, R); \
592 _FP_FRAC_SRS_##wc (R, 1, _FP_WFRACBITS_##fs); \
595 _FP_OVERFLOW_SEMIRAW (fs, wc, R); \
611 if (_FP_FRAC_ZEROP_##wc (Y)) \
613 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
614 _FP_FRAC_COPY_##wc (R, X); \
623 _FP_FRAC_SUB_##wc (R, X, Y); \
628 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
629 _FP_FRAC_COPY_##wc (R, X); \
638 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
639 _FP_FRAC_COPY_##wc (R, X); \
651 _FP_FRAC_SRS_##wc (Y, _FP_ADD_INTERNAL_ediff, \
653 else if (!_FP_FRAC_ZEROP_##wc (Y)) \
654 _FP_FRAC_SET_##wc (Y, _FP_MINFRAC_##wc); \
655 _FP_FRAC_SUB_##wc (R, X, Y); \
665 if (_FP_FRAC_ZEROP_##wc (X)) \
667 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
668 _FP_FRAC_COPY_##wc (R, Y); \
677 _FP_FRAC_SUB_##wc (R, Y, X); \
682 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
683 _FP_FRAC_COPY_##wc (R, Y); \
692 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
693 _FP_FRAC_COPY_##wc (R, Y); \
705 _FP_FRAC_SRS_##wc (X, _FP_ADD_INTERNAL_ediff, \
707 else if (!_FP_FRAC_ZEROP_##wc (X)) \
708 _FP_FRAC_SET_##wc (X, _FP_MINFRAC_##wc); \
709 _FP_FRAC_SUB_##wc (R, Y, X); \
714 if (!_FP_EXP_NORMAL (fs, wc, X)) \
720 if (_FP_FRAC_ZEROP_##wc (X)) \
722 _FP_FRAC_COPY_##wc (R, Y); \
723 if (_FP_FRAC_ZEROP_##wc (Y)) \
732 else if (_FP_FRAC_ZEROP_##wc (Y)) \
735 _FP_FRAC_COPY_##wc (R, X); \
742 _FP_FRAC_SUB_##wc (R, X, Y); \
747 _FP_FRAC_SUB_##wc (R, Y, X); \
750 else if (_FP_FRAC_ZEROP_##wc (R)) \
758 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, X); \
759 _FP_CHECK_SIGNAN_SEMIRAW (fs, wc, Y); \
761 if (_FP_FRAC_ZEROP_##wc (X)) \
763 if (_FP_FRAC_ZEROP_##wc (Y)) \
767 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
768 _FP_FRAC_SLL_##wc (R, _FP_WORKBITS); \
776 _FP_FRAC_COPY_##wc (R, Y); \
781 if (_FP_FRAC_ZEROP_##wc (Y)) \
785 _FP_FRAC_COPY_##wc (R, X); \
790 _FP_CHOOSENAN_SEMIRAW (fs, wc, R, X, Y, OP); \
799 _FP_FRAC_SUB_##wc (R, X, Y); \
804 _FP_FRAC_SUB_##wc (R, Y, X); \
807 else if (_FP_FRAC_ZEROP_##wc (R)) \
823 _FP_FRAC_CLZ_##wc (_FP_ADD_INTERNAL_diff, R); \
825 _FP_FRAC_SLL_##wc (R, _FP_ADD_INTERNAL_diff); \
831 _FP_FRAC_SRS_##wc (R, _FP_ADD_INTERNAL_diff, \
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
862 _FP_FRAC_COPY_##wc (R, X); \
871 #define _FP_MUL(fs, wc, R, X, Y) \ argument
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, '*'); \
903 _FP_FRAC_COPY_##wc (R, X); \
915 _FP_FRAC_COPY_##wc (R, Y); \
923 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
936 #define _FP_FMA(fs, wc, dwc, R, X, Y, Z) \ argument
951 _FP_FRAC_COPY_##wc (R, Z); \
962 if (_FP_FRAC_OVERP_##wc (fs, R)) \
963 _FP_FRAC_SRS_##wc (R, 1, _FP_WFRACBITS_##fs); \
986 _FP_FRAC_COPY_##dwc##_##wc (_FP_FMA_ZD, Z); \
1013 _FP_FRAC_COPY_##dwc##_##wc (_FP_FMA_ZD, Z); \
1034 _FP_FRAC_SET_##wc (R, _FP_ZEROFRAC_##wc); \
1049 _FP_FRAC_COPY_##wc##_##dwc (R, _FP_FMA_RD); \
1057 _FP_CHOOSENAN (fs, wc, _FP_FMA_T, X, Y, '*'); \
1070 _FP_FRAC_COPY_##wc (_FP_FMA_T, X); \
1082 _FP_FRAC_COPY_##wc (_FP_FMA_T, Y); \
1090 _FP_FRAC_SET_##wc (_FP_FMA_T, _FP_NANFRAC_##fs); \
1102 _FP_CHOOSENAN (fs, wc, R, _FP_FMA_T, Z, '+'); \
1111 _FP_FRAC_COPY_##wc (R, _FP_FMA_T); \
1120 _FP_FRAC_COPY_##wc (R, Z); \
1129 _FP_FRAC_COPY_##wc (R, Z); \
1136 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
1146 _FP_FRAC_COPY_##wc (R, Z); \
1160 #define _FP_DIV(fs, wc, R, X, Y) \ argument
1174 _FP_CHOOSENAN (fs, wc, R, X, Y, '/'); \
1181 _FP_FRAC_COPY_##wc (R, X); \
1189 _FP_FRAC_COPY_##wc (R, Y); \
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); \
1278 if ((X##_e == 0 && !_FP_FRAC_ZEROP_##wc (X)) \
1279 || (Y##_e == 0 && !_FP_FRAC_ZEROP_##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); \
1322 = (!X##_e && _FP_FRAC_ZEROP_##wc (X)) ? 1 : 0; \
1324 = (!Y##_e && _FP_FRAC_ZEROP_##wc (Y)) ? 1 : 0; \
1338 else if (_FP_FRAC_GT_##wc (X, Y)) \
1340 else if (_FP_FRAC_GT_##wc (Y, X)) \
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); \
1367 && _FP_FRAC_EQ_##wc (X, Y) \
1369 || (!X##_e && _FP_FRAC_ZEROP_##wc (X)))); \
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
1392 _FP_FRAC_DECL_##wc (_FP_SQRT_T); \
1393 _FP_FRAC_DECL_##wc (_FP_SQRT_S); \
1398 _FP_FRAC_COPY_##wc (R, X); \
1407 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
1426 _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
1432 _FP_FRAC_SLL_##wc (X, 1); \
1434 _FP_FRAC_SET_##wc (_FP_SQRT_S, _FP_ZEROFRAC_##wc); \
1435 _FP_FRAC_SET_##wc (R, _FP_ZEROFRAC_##wc); \
1437 _FP_SQRT_MEAT_##wc (R, _FP_SQRT_S, _FP_SQRT_T, X, \
1457 #define _FP_TO_INT(fs, wc, r, X, rsize, rsigned) \ argument
1465 if (!_FP_FRAC_ZEROP_##wc (X)) \
1487 && _FP_ISSIGNAN (fs, wc, X)) \
1522 _FP_FRAC_SRST_##wc (X, _FP_TO_INT_inexact, \
1528 if (!_FP_FRAC_ZEROP_##wc (X)) \
1537 && _FP_ISSIGNAN (fs, wc, X)) \
1547 _FP_FRAC_ASSEMBLE_##wc ((r), X, (rsize)); \
1552 _FP_FRAC_SRST_##wc (X, _FP_TO_INT_inexact, \
1556 _FP_FRAC_ASSEMBLE_##wc ((r), X, (rsize)); \
1580 #define _FP_TO_INT_ROUND(fs, wc, r, X, rsize, rsigned) \ argument
1589 if (_FP_FRAC_ZEROP_##wc (X)) \
1611 && !_FP_FRAC_ZEROP_##wc (X)); \
1657 && _FP_ISSIGNAN (fs, wc, X)) \
1685 && _FP_ISSIGNAN (fs, wc, X)) \
1703 _FP_FRAC_ASSEMBLE_##wc ((r), X, (rsize)); \
1714 _FP_FRAC_SRS_##wc (X, _FP_TO_INT_ROUND_rshift, \
1717 _FP_FRAC_SLL_##wc (X, -_FP_TO_INT_ROUND_rshift); \
1722 if (_FP_FRAC_LOW_##wc (X) & 7) \
1728 _FP_ROUND_NEAREST (wc, X); \
1731 _FP_ROUND_ZERO (wc, X); \
1734 _FP_ROUND_PINF (wc, X); \
1737 _FP_ROUND_MINF (wc, X); \
1741 _FP_FRAC_SRL_##wc (X, _FP_WORKBITS); \
1742 _FP_FRAC_ASSEMBLE_##wc ((r), X, (rsize)); \
1792 #define _FP_FROM_INT(fs, wc, X, r, rsize, rtype) \ argument
1828 _FP_OVERFLOW_SEMIRAW (fs, wc, X); \
1836 _FP_FRAC_DISASSEMBLE_##wc (X, _FP_FROM_INT_ur, (rsize)); \
1838 _FP_FRAC_SLL_##wc (X, (_FP_EXPBIAS_##fs \
1853 _FP_FRAC_DISASSEMBLE_##wc (X, _FP_FROM_INT_ur, (rsize)); \
1855 _FP_FRAC_SLL_##wc (X, (_FP_EXPBIAS_##fs \
1859 _FP_PACK_SEMIRAW (fs, wc, X); \
1866 _FP_FRAC_SET_##wc (X, _FP_ZEROFRAC_##wc); \
2096 #define _FP_DIV_MEAT_N_loop(fs, wc, R, X, Y) \ argument
2100 _FP_FRAC_DECL_##wc (_FP_DIV_MEAT_N_loop_u); \
2101 _FP_FRAC_DECL_##wc (_FP_DIV_MEAT_N_loop_v); \
2102 _FP_FRAC_COPY_##wc (_FP_DIV_MEAT_N_loop_u, X); \
2103 _FP_FRAC_COPY_##wc (_FP_DIV_MEAT_N_loop_v, Y); \
2104 _FP_FRAC_SET_##wc (R, _FP_ZEROFRAC_##wc); \
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); \
2114 _FP_FRAC_SUB_##wc (_FP_DIV_MEAT_N_loop_u, \
2117 _FP_FRAC_LOW_##wc (R) |= 1; \
2126 = (_FP_WS_TYPE) _FP_FRAC_HIGH_##wc (_FP_DIV_MEAT_N_loop_u) < 0; \
2127 _FP_FRAC_SLL_##wc (_FP_DIV_MEAT_N_loop_u, 1); \
2128 _FP_FRAC_SLL_##wc (R, 1); \
2133 _FP_FRAC_SUB_##wc (_FP_DIV_MEAT_N_loop_u, \
2136 _FP_FRAC_LOW_##wc (R) |= 1; \
2142 _FP_FRAC_LOW_##wc (R) \
2143 |= !_FP_FRAC_ZEROP_##wc (_FP_DIV_MEAT_N_loop_u); \