| lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame] | 1 | #define _FP_W_TYPE_SIZE		32 | 
|  | 2 | #define _FP_W_TYPE		unsigned long | 
|  | 3 | #define _FP_WS_TYPE		signed long | 
|  | 4 | #define _FP_I_TYPE		long | 
|  | 5 |  | 
|  | 6 | #define _FP_MUL_MEAT_S(R,X,Y)				\ | 
|  | 7 | _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) | 
|  | 8 | #define _FP_MUL_MEAT_D(R,X,Y)				\ | 
|  | 9 | _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) | 
|  | 10 | #define _FP_MUL_MEAT_Q(R,X,Y)				\ | 
|  | 11 | _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) | 
|  | 12 |  | 
|  | 13 | #define _FP_MUL_MEAT_DW_S(R,X,Y)				\ | 
|  | 14 | _FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) | 
|  | 15 | #define _FP_MUL_MEAT_DW_D(R,X,Y)				\ | 
|  | 16 | _FP_MUL_MEAT_DW_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) | 
|  | 17 | #define _FP_MUL_MEAT_DW_Q(R,X,Y)				\ | 
|  | 18 | _FP_MUL_MEAT_DW_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) | 
|  | 19 |  | 
|  | 20 | #define _FP_DIV_MEAT_S(R,X,Y)	_FP_DIV_MEAT_1_loop(S,R,X,Y) | 
|  | 21 | #define _FP_DIV_MEAT_D(R,X,Y)	_FP_DIV_MEAT_2_udiv(D,R,X,Y) | 
|  | 22 | #define _FP_DIV_MEAT_Q(R,X,Y)	_FP_DIV_MEAT_4_udiv(Q,R,X,Y) | 
|  | 23 |  | 
|  | 24 | #define _FP_NANFRAC_S		((_FP_QNANBIT_S << 1) - 1) | 
|  | 25 | #define _FP_NANFRAC_D		((_FP_QNANBIT_D << 1) - 1), -1 | 
|  | 26 | #define _FP_NANFRAC_Q		((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1 | 
|  | 27 | #define _FP_NANSIGN_S		0 | 
|  | 28 | #define _FP_NANSIGN_D		0 | 
|  | 29 | #define _FP_NANSIGN_Q		0 | 
|  | 30 |  | 
|  | 31 | #define _FP_KEEPNANFRACP 1 | 
|  | 32 | #define _FP_QNANNEGATEDP 0 | 
|  | 33 |  | 
|  | 34 | /* This is arbitrarily taken from the PowerPC version.  */ | 
|  | 35 | #define _FP_CHOOSENAN(fs, wc, R, X, Y, OP)			\ | 
|  | 36 | do {								\ | 
|  | 37 | if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs)		\ | 
|  | 38 | && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs))	\ | 
|  | 39 | {								\ | 
|  | 40 | R##_s = Y##_s;						\ | 
|  | 41 | _FP_FRAC_COPY_##wc(R,Y);				\ | 
|  | 42 | }								\ | 
|  | 43 | else							\ | 
|  | 44 | {								\ | 
|  | 45 | R##_s = X##_s;						\ | 
|  | 46 | _FP_FRAC_COPY_##wc(R,X);				\ | 
|  | 47 | }								\ | 
|  | 48 | R##_c = FP_CLS_NAN;						\ | 
|  | 49 | } while (0) | 
|  | 50 |  | 
|  | 51 | #define _FP_TININESS_AFTER_ROUNDING 0 |