xref: /netbsd-src/external/gpl3/gcc.old/dist/libgcc/config/gcn/sfp-machine.h (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
1*627f7eb2Smrg /* Use 32-bit types here to prevent longlong.h trying to use TImode.
2*627f7eb2Smrg    Once TImode works we might be better to use 64-bit here.  */
3*627f7eb2Smrg 
4*627f7eb2Smrg #define _FP_W_TYPE_SIZE		32
5*627f7eb2Smrg #define _FP_W_TYPE		unsigned int
6*627f7eb2Smrg #define _FP_WS_TYPE		signed int
7*627f7eb2Smrg #define _FP_I_TYPE		int
8*627f7eb2Smrg 
9*627f7eb2Smrg #define _FP_MUL_MEAT_S(R,X,Y)				\
10*627f7eb2Smrg   _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
11*627f7eb2Smrg #define _FP_MUL_MEAT_D(R,X,Y)				\
12*627f7eb2Smrg   _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
13*627f7eb2Smrg 
14*627f7eb2Smrg #define _FP_DIV_MEAT_S(R,X,Y)	_FP_DIV_MEAT_1_loop(S,R,X,Y)
15*627f7eb2Smrg #define _FP_DIV_MEAT_D(R,X,Y)	_FP_DIV_MEAT_2_udiv(D,R,X,Y)
16*627f7eb2Smrg 
17*627f7eb2Smrg #define _FP_NANFRAC_S		((_FP_QNANBIT_S << 1) - 1)
18*627f7eb2Smrg #define _FP_NANFRAC_D		((_FP_QNANBIT_D << 1) - 1), -1
19*627f7eb2Smrg #define _FP_NANSIGN_S		0
20*627f7eb2Smrg #define _FP_NANSIGN_D		0
21*627f7eb2Smrg 
22*627f7eb2Smrg #define _FP_KEEPNANFRACP 1
23*627f7eb2Smrg #define _FP_QNANNEGATEDP 0
24*627f7eb2Smrg 
25*627f7eb2Smrg /* Someone please check this.  */
26*627f7eb2Smrg #define _FP_CHOOSENAN(fs, wc, R, X, Y, OP)			\
27*627f7eb2Smrg   do {								\
28*627f7eb2Smrg     if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs)		\
29*627f7eb2Smrg 	&& !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs))	\
30*627f7eb2Smrg       {								\
31*627f7eb2Smrg 	R##_s = Y##_s;						\
32*627f7eb2Smrg 	_FP_FRAC_COPY_##wc(R,Y);				\
33*627f7eb2Smrg       }								\
34*627f7eb2Smrg     else							\
35*627f7eb2Smrg       {								\
36*627f7eb2Smrg 	R##_s = X##_s;						\
37*627f7eb2Smrg 	_FP_FRAC_COPY_##wc(R,X);				\
38*627f7eb2Smrg       }								\
39*627f7eb2Smrg     R##_c = FP_CLS_NAN;						\
40*627f7eb2Smrg   } while (0)
41*627f7eb2Smrg 
42*627f7eb2Smrg #define _FP_TININESS_AFTER_ROUNDING 0
43*627f7eb2Smrg 
44*627f7eb2Smrg #define __LITTLE_ENDIAN 1234
45*627f7eb2Smrg #define	__BIG_ENDIAN	4321
46*627f7eb2Smrg #define __BYTE_ORDER __LITTLE_ENDIAN
47*627f7eb2Smrg 
48*627f7eb2Smrg /* Define ALIASNAME as a strong alias for NAME.  */
49*627f7eb2Smrg # define strong_alias(name, aliasname) _strong_alias(name, aliasname)
50*627f7eb2Smrg # define _strong_alias(name, aliasname) \
51*627f7eb2Smrg   extern __typeof (name) aliasname __attribute__ ((alias (#name)));
52