Lines Matching refs:X

27 #define _FP_DECL(wc, X)			\  argument
28 _FP_I_TYPE X##_c=0, X##_s=0, X##_e=0; \
29 _FP_FRAC_DECL_##wc(X)
36 #define _FP_UNPACK_CANONICAL(fs, wc, X) \ argument
38 switch (X##_e) \
41 _FP_FRAC_HIGH_RAW_##fs(X) |= _FP_IMPLBIT_##fs; \
42 _FP_FRAC_SLL_##wc(X, _FP_WORKBITS); \
43 X##_e -= _FP_EXPBIAS_##fs; \
44 X##_c = FP_CLS_NORMAL; \
48 if (_FP_FRAC_ZEROP_##wc(X)) \
49 X##_c = FP_CLS_ZERO; \
54 _FP_FRAC_CLZ_##wc(_shift, X); \
56 _FP_FRAC_SLL_##wc(X, (_shift+_FP_WORKBITS)); \
57 X##_e -= _FP_EXPBIAS_##fs - 1 + _shift; \
58 X##_c = FP_CLS_NORMAL; \
63 X##_c = FP_CLS_ZERO; \
69 if (_FP_FRAC_ZEROP_##wc(X)) \
70 X##_c = FP_CLS_INF; \
73 X##_c = FP_CLS_NAN; \
75 if (!(_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs)) \
89 #define _FP_PACK_CANONICAL(fs, wc, X) \ argument
91 switch (X##_c) \
94 X##_e += _FP_EXPBIAS_##fs; \
95 if (X##_e > 0) \
97 _FP_ROUND(wc, X); \
98 if (_FP_FRAC_OVERP_##wc(fs, X)) \
100 _FP_FRAC_CLEAR_OVERP_##wc(fs, X); \
101 X##_e++; \
103 _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \
104 if (X##_e >= _FP_EXPMAX_##fs) \
110 X##_c = FP_CLS_INF; \
113 if (!X##_s) X##_c = FP_CLS_INF; \
116 if (X##_s) X##_c = FP_CLS_INF; \
119 if (X##_c == FP_CLS_INF) \
122 X##_e = _FP_EXPMAX_##fs; \
123 _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \
128 X##_e = _FP_EXPMAX_##fs - 1; \
129 _FP_FRAC_SET_##wc(X, _FP_MAXFRAC_##wc); \
138 X##_e = -X##_e + 1; \
139 if (X##_e <= _FP_WFRACBITS_##fs) \
141 _FP_FRAC_SRS_##wc(X, X##_e, _FP_WFRACBITS_##fs); \
142 if (_FP_FRAC_HIGH_##fs(X) \
145 X##_e = 1; \
146 _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \
150 _FP_ROUND(wc, X); \
151 if (_FP_FRAC_HIGH_##fs(X) \
154 X##_e = 1; \
155 _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \
160 X##_e = 0; \
161 _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \
171 X##_e = 0; \
172 if (!_FP_FRAC_ZEROP_##wc(X)) \
174 _FP_FRAC_SET_##wc(X, _FP_MINFRAC_##wc); \
175 _FP_ROUND(wc, X); \
176 _FP_FRAC_LOW_##wc(X) >>= (_FP_WORKBITS); \
184 X##_e = 0; \
185 _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \
189 X##_e = _FP_EXPMAX_##fs; \
190 _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \
194 X##_e = _FP_EXPMAX_##fs; \
197 _FP_FRAC_SET_##wc(X, _FP_NANFRAC_##fs); \
198 X##_s = _FP_NANSIGN_##fs; \
201 _FP_FRAC_HIGH_RAW_##fs(X) |= _FP_QNANBIT_##fs; \
209 #define _FP_ISSIGNAN(fs, wc, X) \ argument
212 if (X##_e == _FP_EXPMAX_##fs) \
214 if (!_FP_FRAC_ZEROP_##wc(X) \
215 && !(_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs)) \
229 #define _FP_ADD_INTERNAL(fs, wc, R, X, Y, OP) \ argument
231 switch (_FP_CLS_COMBINE(X##_c, Y##_c)) \
236 _FP_I_TYPE diff = X##_e - Y##_e; \
242 _FP_FRAC_SRS_##wc(X, diff, _FP_WFRACBITS_##fs); \
243 else if (!_FP_FRAC_ZEROP_##wc(X)) \
244 _FP_FRAC_SET_##wc(X, _FP_MINFRAC_##wc); \
256 R##_e = X##_e; \
261 if (X##_s == Y##_s) \
263 R##_s = X##_s; \
264 _FP_FRAC_ADD_##wc(R, X, Y); \
273 R##_s = X##_s; \
274 _FP_FRAC_SUB_##wc(R, X, Y); \
288 _FP_FRAC_SUB_##wc(R, Y, X); \
306 _FP_CHOOSENAN(fs, wc, R, X, Y, OP); \
310 R##_e = X##_e; \
314 _FP_FRAC_COPY_##wc(R, X); \
315 R##_s = X##_s; \
316 R##_c = X##_c; \
330 if (X##_s != Y##_s) \
343 R##_s = X##_s; \
356 R##_s = X##_s | Y##_s; \
358 R##_s = X##_s & Y##_s; \
367 #define _FP_ADD(fs, wc, R, X, Y) _FP_ADD_INTERNAL(fs, wc, R, X, Y, '+') argument
368 #define _FP_SUB(fs, wc, R, X, Y) \ argument
371 _FP_ADD_INTERNAL(fs, wc, R, X, Y, '-'); \
380 #define _FP_NEG(fs, wc, R, X) \ argument
382 _FP_FRAC_COPY_##wc(R, X); \
383 R##_c = X##_c; \
384 R##_e = X##_e; \
385 R##_s = 1 ^ X##_s; \
393 #define _FP_MUL(fs, wc, R, X, Y) \ argument
395 R##_s = X##_s ^ Y##_s; \
396 switch (_FP_CLS_COMBINE(X##_c, Y##_c)) \
400 R##_e = X##_e + Y##_e + 1; \
402 _FP_MUL_MEAT_##fs(R,X,Y); \
411 _FP_CHOOSENAN(fs, wc, R, X, Y, '*'); \
417 R##_s = X##_s; \
423 _FP_FRAC_COPY_##wc(R, X); \
424 R##_c = X##_c; \
456 #define _FP_DIV(fs, wc, R, X, Y) \ argument
458 R##_s = X##_s ^ Y##_s; \
459 switch (_FP_CLS_COMBINE(X##_c, Y##_c)) \
463 R##_e = X##_e - Y##_e; \
465 _FP_DIV_MEAT_##fs(R,X,Y); \
469 _FP_CHOOSENAN(fs, wc, R, X, Y, '/'); \
475 R##_s = X##_s; \
476 _FP_FRAC_COPY_##wc(R, X); \
477 R##_c = X##_c; \
526 #define _FP_CMP(fs, wc, ret, X, Y, un) \ argument
529 if ((X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc(X)) \
539 __is_zero_x = (!X##_e && _FP_FRAC_ZEROP_##wc(X)) ? 1 : 0; \
547 ret = X##_s ? -1 : 1; \
548 else if (X##_s != Y##_s) \
549 ret = X##_s ? -1 : 1; \
550 else if (X##_e > Y##_e) \
551 ret = X##_s ? -1 : 1; \
552 else if (X##_e < Y##_e) \
553 ret = X##_s ? 1 : -1; \
554 else if (_FP_FRAC_GT_##wc(X, Y)) \
555 ret = X##_s ? -1 : 1; \
556 else if (_FP_FRAC_GT_##wc(Y, X)) \
557 ret = X##_s ? 1 : -1; \
566 #define _FP_CMP_EQ(fs, wc, ret, X, Y) \ argument
569 if ((X##_e == _FP_EXPMAX_##fs && !_FP_FRAC_ZEROP_##wc(X)) \
576 ret = !(X##_e == Y##_e \
577 && _FP_FRAC_EQ_##wc(X, Y) \
578 && (X##_s == Y##_s || !X##_e && _FP_FRAC_ZEROP_##wc(X))); \
586 #define _FP_SQRT(fs, wc, R, X) \ argument
590 switch (X##_c) \
593 _FP_FRAC_COPY_##wc(R, X); \
594 R##_s = X##_s; \
598 if (X##_s) \
612 R##_s = X##_s; \
617 if (X##_s) \
626 if (X##_e & 1) \
627 _FP_FRAC_SLL_##wc(X, 1); \
628 R##_e = X##_e >> 1; \
632 _FP_SQRT_MEAT_##wc(R, S, T, X, q); \
652 #define _FP_TO_INT(fs, wc, r, X, rsize, rsigned) \ argument
654 switch (X##_c) \
657 if (X##_e < 0) \
663 else if (X##_e >= rsize - (rsigned > 0 || X##_s) \
664 || (!rsigned && X##_s)) \
670 if (X##_c != FP_CLS_NORMAL \
671 || X##_e >= rsize - 1 + _FP_WFRACBITS_##fs) \
675 _FP_FRAC_SLL_##wc(X, (X##_e - _FP_WFRACBITS_##fs + 1)); \
676 _FP_FRAC_ASSEMBLE_##wc(r, X, rsize); \
683 r -= 1 - X##_s; \
688 if (!X##_s) \
697 _FP_FRAC_ASSEMBLE_##wc(r, X, rsize); \
698 r <<= X##_e - _FP_WFRACBITS_##fs; \
702 if (X##_e >= _FP_WFRACBITS_##fs) \
703 _FP_FRAC_SLL_##wc(X, (X##_e - _FP_WFRACBITS_##fs + 1)); \
704 else if (X##_e < _FP_WFRACBITS_##fs - 1) \
706 _FP_FRAC_SRS_##wc(X, (_FP_WFRACBITS_##fs - X##_e - 2), \
708 if (_FP_FRAC_LOW_##wc(X) & 1) \
710 _FP_FRAC_SRL_##wc(X, 1); \
712 _FP_FRAC_ASSEMBLE_##wc(r, X, rsize); \
714 if (rsigned && X##_s) \
721 #define _FP_TO_INT_ROUND(fs, wc, r, X, rsize, rsigned) \ argument
724 switch (X##_c) \
727 if (X##_e >= _FP_FRACBITS_##fs - 1) \
729 if (X##_e < rsize - 1 + _FP_WFRACBITS_##fs) \
731 if (X##_e >= _FP_WFRACBITS_##fs - 1) \
733 _FP_FRAC_ASSEMBLE_##wc(r, X, rsize); \
734 r <<= X##_e - _FP_WFRACBITS_##fs + 1; \
738 _FP_FRAC_SRL_##wc(X, _FP_WORKBITS - X##_e \
740 _FP_FRAC_ASSEMBLE_##wc(r, X, rsize); \
747 if (X##_e <= -_FP_WORKBITS - 1) \
748 _FP_FRAC_SET_##wc(X, _FP_MINFRAC_##wc); \
750 _FP_FRAC_SRS_##wc(X, _FP_FRACBITS_##fs - 1 - X##_e, \
752 _FP_FRAC_CLZ_##wc(_lz0, X); \
753 _FP_ROUND(wc, X); \
754 _FP_FRAC_CLZ_##wc(_lz1, X); \
756 X##_e++; /* For overflow detection. */ \
757 _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \
758 _FP_FRAC_ASSEMBLE_##wc(r, X, rsize); \
760 if (rsigned && X##_s) \
762 if (X##_e >= rsize - (rsigned > 0 || X##_s) \
763 || (!rsigned && X##_s)) \
770 if (!X##_s) \
777 r -= 1 - X##_s; \
787 #define _FP_FROM_INT(fs, wc, X, r, rsize, rtype) \ argument
792 X##_c = FP_CLS_NORMAL; \
794 if ((X##_s = (r < 0))) \
799 __FP_CLZ(X##_e, ur_); \
801 __FP_CLZ_2(X##_e, (_FP_W_TYPE)(ur_ >> _FP_W_TYPE_SIZE), \
804 X##_e -= (_FP_W_TYPE_SIZE - rsize); \
805 X##_e = rsize - X##_e - 1; \
807 if (_FP_FRACBITS_##fs < rsize && _FP_WFRACBITS_##fs <= X##_e) \
808 __FP_FRAC_SRS_1(ur_, (X##_e - _FP_WFRACBITS_##fs + 1), rsize);\
809 _FP_FRAC_DISASSEMBLE_##wc(X, ur_, rsize); \
810 if ((_FP_WFRACBITS_##fs - X##_e - 1) > 0) \
811 _FP_FRAC_SLL_##wc(X, (_FP_WFRACBITS_##fs - X##_e - 1)); \
815 X##_c = FP_CLS_ZERO, X##_s = 0; \