xref: /netbsd-src/external/gpl3/gcc.old/dist/libgcc/config/tilegx/sfp-machine64.h (revision 36ac495d2b3ea2b9d96377b2143ebfedac224b92)
1*36ac495dSmrg #define _FP_W_TYPE_SIZE		64
2*36ac495dSmrg #define _FP_W_TYPE		unsigned long
3*36ac495dSmrg #define _FP_WS_TYPE		signed long
4*36ac495dSmrg #define _FP_I_TYPE		long
5*36ac495dSmrg 
6*36ac495dSmrg typedef int TItype __attribute__ ((mode (TI)));
7*36ac495dSmrg typedef unsigned int UTItype __attribute__ ((mode (TI)));
8*36ac495dSmrg 
9*36ac495dSmrg #define TI_BITS (__CHAR_BIT__ * (int)sizeof(TItype))
10*36ac495dSmrg 
11*36ac495dSmrg /* The type of the result of a floating point comparison.  This must
12*36ac495dSmrg    match `__libgcc_cmp_return__' in GCC for the target.  */
13*36ac495dSmrg typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
14*36ac495dSmrg #define CMPtype __gcc_CMPtype
15*36ac495dSmrg 
16*36ac495dSmrg #define _FP_MUL_MEAT_S(R,X,Y)				\
17*36ac495dSmrg   _FP_MUL_MEAT_1_imm(_FP_WFRACBITS_S,R,X,Y)
18*36ac495dSmrg #define _FP_MUL_MEAT_D(R,X,Y)				\
19*36ac495dSmrg   _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
20*36ac495dSmrg #define _FP_MUL_MEAT_Q(R,X,Y)				\
21*36ac495dSmrg   _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
22*36ac495dSmrg 
23*36ac495dSmrg #define _FP_DIV_MEAT_S(R,X,Y)	_FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm)
24*36ac495dSmrg #define _FP_DIV_MEAT_D(R,X,Y)	_FP_DIV_MEAT_1_udiv_norm(D,R,X,Y)
25*36ac495dSmrg #define _FP_DIV_MEAT_Q(R,X,Y)	_FP_DIV_MEAT_2_udiv(Q,R,X,Y)
26*36ac495dSmrg 
27*36ac495dSmrg #define _FP_NANFRAC_S		_FP_QNANBIT_S
28*36ac495dSmrg #define _FP_NANFRAC_D		_FP_QNANBIT_D
29*36ac495dSmrg #define _FP_NANFRAC_Q		_FP_QNANBIT_Q, 0
30*36ac495dSmrg #define _FP_NANSIGN_S		1
31*36ac495dSmrg #define _FP_NANSIGN_D		1
32*36ac495dSmrg #define _FP_NANSIGN_Q		1
33*36ac495dSmrg 
34*36ac495dSmrg #define _FP_KEEPNANFRACP 1
35*36ac495dSmrg #define _FP_QNANNEGATEDP 0
36*36ac495dSmrg 
37*36ac495dSmrg #define _FP_CHOOSENAN(fs, wc, R, X, Y, OP)			\
38*36ac495dSmrg   do {								\
39*36ac495dSmrg     if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs)		\
40*36ac495dSmrg 	&& !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs))	\
41*36ac495dSmrg       {								\
42*36ac495dSmrg 	R##_s = Y##_s;						\
43*36ac495dSmrg 	_FP_FRAC_COPY_##wc(R,Y);				\
44*36ac495dSmrg       }								\
45*36ac495dSmrg     else							\
46*36ac495dSmrg       {								\
47*36ac495dSmrg 	R##_s = X##_s;						\
48*36ac495dSmrg 	_FP_FRAC_COPY_##wc(R,X);				\
49*36ac495dSmrg       }								\
50*36ac495dSmrg     R##_c = FP_CLS_NAN;						\
51*36ac495dSmrg   } while (0)
52*36ac495dSmrg 
53*36ac495dSmrg #define _FP_TININESS_AFTER_ROUNDING 0
54*36ac495dSmrg 
55*36ac495dSmrg #define	__LITTLE_ENDIAN	1234
56*36ac495dSmrg #define	__BIG_ENDIAN	4321
57*36ac495dSmrg 
58*36ac495dSmrg #if defined __BIG_ENDIAN__
59*36ac495dSmrg #define __BYTE_ORDER __BIG_ENDIAN
60*36ac495dSmrg #else
61*36ac495dSmrg #define __BYTE_ORDER __LITTLE_ENDIAN
62*36ac495dSmrg #endif
63*36ac495dSmrg 
64*36ac495dSmrg /* Define ALIASNAME as a strong alias for NAME.  */
65*36ac495dSmrg # define strong_alias(name, aliasname) _strong_alias(name, aliasname)
66*36ac495dSmrg # define _strong_alias(name, aliasname) \
67*36ac495dSmrg   extern __typeof (name) aliasname __attribute__ ((alias (#name)));
68*36ac495dSmrg 
69