xref: /netbsd-src/external/gpl3/gcc/dist/libgcc/fixed-bit.h (revision b1e838363e3c6fc78a55519254d99869742dd33c)
148fb7bfaSmrg /* This is a software fixed-point library.
2*b1e83836Smrg    Copyright (C) 2007-2022 Free Software Foundation, Inc.
348fb7bfaSmrg 
448fb7bfaSmrg This file is part of GCC.
548fb7bfaSmrg 
648fb7bfaSmrg GCC is free software; you can redistribute it and/or modify it under
748fb7bfaSmrg the terms of the GNU General Public License as published by the Free
848fb7bfaSmrg Software Foundation; either version 3, or (at your option) any later
948fb7bfaSmrg version.
1048fb7bfaSmrg 
1148fb7bfaSmrg GCC is distributed in the hope that it will be useful, but WITHOUT ANY
1248fb7bfaSmrg WARRANTY; without even the implied warranty of MERCHANTABILITY or
1348fb7bfaSmrg FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1448fb7bfaSmrg for more details.
1548fb7bfaSmrg 
1648fb7bfaSmrg Under Section 7 of GPL version 3, you are granted additional
1748fb7bfaSmrg permissions described in the GCC Runtime Library Exception, version
1848fb7bfaSmrg 3.1, as published by the Free Software Foundation.
1948fb7bfaSmrg 
2048fb7bfaSmrg You should have received a copy of the GNU General Public License and
2148fb7bfaSmrg a copy of the GCC Runtime Library Exception along with this program;
2248fb7bfaSmrg see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
2348fb7bfaSmrg <http://www.gnu.org/licenses/>.  */
2448fb7bfaSmrg 
2548fb7bfaSmrg #ifndef _FIXED_BIT_H
2648fb7bfaSmrg #define _FIXED_BIT_H
2748fb7bfaSmrg 
2848fb7bfaSmrg #ifdef LIBGCC2_GNU_PREFIX
2948fb7bfaSmrg #define LIBGCC2_FIXEDBIT_GNU_PREFIX
3048fb7bfaSmrg #endif
3148fb7bfaSmrg 
3248fb7bfaSmrg /* To use this file we need to define one of the following:
3348fb7bfaSmrg    QQ_MODE, UQQ_MODE, HQ_MODE, UHQ_MODE, SQ_MODE, USQ_MODE, DQ_MODE, UDQ_MODE,
3448fb7bfaSmrg    TQ_MODE, UTQ_MODE, HA_MODE, UHA_MODE, SA_MODE, USA_MODE, DA_MODE, UDA_MODE,
3548fb7bfaSmrg    TA_MODE, UTA_MODE.
3648fb7bfaSmrg    Then, all operators for this machine mode will be created.
3748fb7bfaSmrg 
3848fb7bfaSmrg    Or, we need to define FROM_* TO_* for conversions from one mode to another
3948fb7bfaSmrg    mode.  The mode could be one of the following:
4048fb7bfaSmrg    Fract: QQ, UQQ, HQ, UHQ, SQ, USQ, DQ, UDQ, TQ, UTQ
4148fb7bfaSmrg    Accum: HA, UHA, SA, USA, DA, UDA, TA, UTA
4248fb7bfaSmrg    Signed integer: QI, HI, SI, DI, TI
4348fb7bfaSmrg    Unsigned integer: UQI, UHI, USI, UDI, UTI
4448fb7bfaSmrg    Floating-point: SF, DF
4548fb7bfaSmrg    Ex: If we define FROM_QQ and TO_SI, the conversion from QQ to SI is
4648fb7bfaSmrg    generated.  */
4748fb7bfaSmrg 
484d5abbe8Smrg #ifdef __LIBGCC_HAS_SF_MODE__
494d5abbe8Smrg #define LIBGCC2_HAS_SF_MODE 1
504d5abbe8Smrg #else
514d5abbe8Smrg #define LIBGCC2_HAS_SF_MODE 0
5248fb7bfaSmrg #endif
5348fb7bfaSmrg 
544d5abbe8Smrg #ifdef __LIBGCC_HAS_DF_MODE__
554d5abbe8Smrg #define LIBGCC2_HAS_DF_MODE 1
564d5abbe8Smrg #else
574d5abbe8Smrg #define LIBGCC2_HAS_DF_MODE 0
5848fb7bfaSmrg #endif
5948fb7bfaSmrg 
6048fb7bfaSmrg typedef          int QItype     __attribute__ ((mode (QI)));
6148fb7bfaSmrg typedef unsigned int UQItype    __attribute__ ((mode (QI)));
6248fb7bfaSmrg typedef          int HItype     __attribute__ ((mode (HI)));
6348fb7bfaSmrg typedef unsigned int UHItype    __attribute__ ((mode (HI)));
6448fb7bfaSmrg typedef          _Fract QQtype  __attribute__ ((mode (QQ)));
6548fb7bfaSmrg typedef unsigned _Fract UQQtype __attribute__ ((mode (UQQ)));
6648fb7bfaSmrg typedef          _Fract HQtype  __attribute__ ((mode (HQ)));
6748fb7bfaSmrg typedef unsigned _Fract UHQtype __attribute__ ((mode (UHQ)));
6848fb7bfaSmrg typedef          _Fract HAtype  __attribute__ ((mode (HA)));
6948fb7bfaSmrg typedef unsigned _Fract UHAtype __attribute__ ((mode (UHA)));
7048fb7bfaSmrg #define HAVE_QQ		1
7148fb7bfaSmrg #define HAVE_UQQ	1
7248fb7bfaSmrg #define HAVE_HQ		1
7348fb7bfaSmrg #define HAVE_UHQ	1
7448fb7bfaSmrg #define HAVE_HA		1
7548fb7bfaSmrg #define HAVE_UHA	1
7648fb7bfaSmrg #define HAVE_QI		1
7748fb7bfaSmrg #define HAVE_UQI	1
7848fb7bfaSmrg #define HAVE_HI		1
7948fb7bfaSmrg #define HAVE_UHI	1
8048fb7bfaSmrg #if MIN_UNITS_PER_WORD > 1
8148fb7bfaSmrg /* These typedefs are usually forbidden on dsp's with UNITS_PER_WORD 1.  */
8248fb7bfaSmrg typedef          int SItype     __attribute__ ((mode (SI)));
8348fb7bfaSmrg typedef unsigned int USItype    __attribute__ ((mode (SI)));
8448fb7bfaSmrg typedef          _Fract SQtype  __attribute__ ((mode (SQ)));
8548fb7bfaSmrg typedef unsigned _Fract USQtype __attribute__ ((mode (USQ)));
8648fb7bfaSmrg typedef          _Fract SAtype  __attribute__ ((mode (SA)));
8748fb7bfaSmrg typedef unsigned _Fract USAtype __attribute__ ((mode (USA)));
8848fb7bfaSmrg #define HAVE_SQ		1
8948fb7bfaSmrg #define HAVE_USQ	1
9048fb7bfaSmrg #define HAVE_SA		1
9148fb7bfaSmrg #define HAVE_USA	1
9248fb7bfaSmrg #define HAVE_SI		1
9348fb7bfaSmrg #define HAVE_USI	1
9448fb7bfaSmrg #if LONG_LONG_TYPE_SIZE > 32
9548fb7bfaSmrg /* These typedefs are usually forbidden on archs with UNITS_PER_WORD 2.  */
9648fb7bfaSmrg typedef          int DItype     __attribute__ ((mode (DI)));
9748fb7bfaSmrg typedef unsigned int UDItype    __attribute__ ((mode (DI)));
9848fb7bfaSmrg typedef          _Fract DQtype  __attribute__ ((mode (DQ)));
9948fb7bfaSmrg typedef unsigned _Fract UDQtype __attribute__ ((mode (UDQ)));
10048fb7bfaSmrg typedef          _Fract DAtype  __attribute__ ((mode (DA)));
10148fb7bfaSmrg typedef unsigned _Fract UDAtype __attribute__ ((mode (UDA)));
10248fb7bfaSmrg #define HAVE_DQ		1
10348fb7bfaSmrg #define HAVE_UDQ	1
10448fb7bfaSmrg #define HAVE_DA		1
10548fb7bfaSmrg #define HAVE_UDA	1
10648fb7bfaSmrg #define HAVE_DI		1
10748fb7bfaSmrg #define HAVE_UDI	1
10848fb7bfaSmrg #if MIN_UNITS_PER_WORD > 4
10948fb7bfaSmrg /* These typedefs are usually forbidden on archs with UNITS_PER_WORD 4.  */
11048fb7bfaSmrg typedef          int TItype     __attribute__ ((mode (TI)));
11148fb7bfaSmrg typedef unsigned int UTItype    __attribute__ ((mode (TI)));
11248fb7bfaSmrg typedef          _Fract TQtype  __attribute__ ((mode (TQ)));
11348fb7bfaSmrg typedef unsigned _Fract UTQtype __attribute__ ((mode (UTQ)));
11448fb7bfaSmrg typedef          _Fract TAtype  __attribute__ ((mode (TA)));
11548fb7bfaSmrg typedef unsigned _Fract UTAtype __attribute__ ((mode (UTA)));
11648fb7bfaSmrg #define HAVE_TQ		1
11748fb7bfaSmrg #define HAVE_UTQ	1
11848fb7bfaSmrg #define HAVE_TA		1
11948fb7bfaSmrg #define HAVE_UTA	1
12048fb7bfaSmrg #define HAVE_TI		1
12148fb7bfaSmrg #define HAVE_UTI	1
12248fb7bfaSmrg #endif
12348fb7bfaSmrg #endif
12448fb7bfaSmrg #endif
12548fb7bfaSmrg 
12648fb7bfaSmrg #if LIBGCC2_HAS_SF_MODE
12748fb7bfaSmrg typedef float SFtype __attribute__ ((mode (SF)));
12848fb7bfaSmrg #define HAVE_SF		1
12948fb7bfaSmrg #endif
13048fb7bfaSmrg #if LIBGCC2_HAS_DF_MODE
13148fb7bfaSmrg typedef float DFtype __attribute__ ((mode (DF)));
13248fb7bfaSmrg #define HAVE_DF		1
13348fb7bfaSmrg #endif
13448fb7bfaSmrg 
13548fb7bfaSmrg typedef int word_type __attribute__ ((mode (__word__)));
13648fb7bfaSmrg 
13748fb7bfaSmrg /* Based on modes, we create many defines.  */
13848fb7bfaSmrg 
13948fb7bfaSmrg #if defined (QQ_MODE) && (HAVE_QQ == 1)
14048fb7bfaSmrg #define FIXED_SIZE	1	/* in bytes.  */
14148fb7bfaSmrg #define INT_C_TYPE	QItype
14248fb7bfaSmrg #define UINT_C_TYPE	UQItype
14348fb7bfaSmrg #define DINT_C_TYPE	HItype
14448fb7bfaSmrg #define DUINT_C_TYPE	UHItype
14548fb7bfaSmrg #define MODE_NAME	QQ
14648fb7bfaSmrg #define MODE_NAME_S	qq
14748fb7bfaSmrg #define MODE_UNSIGNED	0
14848fb7bfaSmrg #endif
14948fb7bfaSmrg 
15048fb7bfaSmrg #if defined (UQQ_MODE) && (HAVE_UQQ == 1)
15148fb7bfaSmrg #define FIXED_SIZE	1	/* in bytes.  */
15248fb7bfaSmrg #define INT_C_TYPE	UQItype
15348fb7bfaSmrg #define UINT_C_TYPE	UQItype
15448fb7bfaSmrg #define DINT_C_TYPE	UHItype
15548fb7bfaSmrg #define DUINT_C_TYPE	UHItype
15648fb7bfaSmrg #define MODE_NAME	UQQ
15748fb7bfaSmrg #define MODE_NAME_S	uqq
15848fb7bfaSmrg #define MODE_UNSIGNED	1
15948fb7bfaSmrg #endif
16048fb7bfaSmrg 
16148fb7bfaSmrg #if defined (HQ_MODE) && (HAVE_HQ == 1)
16248fb7bfaSmrg #define FIXED_SIZE	2	/* in bytes.  */
16348fb7bfaSmrg #define INT_C_TYPE	HItype
16448fb7bfaSmrg #define UINT_C_TYPE	UHItype
16548fb7bfaSmrg 
16648fb7bfaSmrg #if HAVE_SI == 1
16748fb7bfaSmrg #define DINT_C_TYPE	SItype
16848fb7bfaSmrg #define DUINT_C_TYPE	USItype
16948fb7bfaSmrg #else
17048fb7bfaSmrg #define HINT_C_TYPE	QItype
17148fb7bfaSmrg #define HUINT_C_TYPE	UQItype
17248fb7bfaSmrg #endif
17348fb7bfaSmrg 
17448fb7bfaSmrg #define MODE_NAME	HQ
17548fb7bfaSmrg #define MODE_NAME_S	hq
17648fb7bfaSmrg #define MODE_UNSIGNED	0
17748fb7bfaSmrg #endif
17848fb7bfaSmrg 
17948fb7bfaSmrg #if defined (UHQ_MODE) && (HAVE_UHQ == 1)
18048fb7bfaSmrg #define FIXED_SIZE	2	/* in bytes.  */
18148fb7bfaSmrg #define INT_C_TYPE	UHItype
18248fb7bfaSmrg #define UINT_C_TYPE	UHItype
18348fb7bfaSmrg 
18448fb7bfaSmrg #if HAVE_SI == 1
18548fb7bfaSmrg #define DINT_C_TYPE	USItype
18648fb7bfaSmrg #define DUINT_C_TYPE	USItype
18748fb7bfaSmrg #else
18848fb7bfaSmrg #define HINT_C_TYPE	UQItype
18948fb7bfaSmrg #define HUINT_C_TYPE	UQItype
19048fb7bfaSmrg #endif
19148fb7bfaSmrg 
19248fb7bfaSmrg #define MODE_NAME	UHQ
19348fb7bfaSmrg #define MODE_NAME_S	uhq
19448fb7bfaSmrg #define MODE_UNSIGNED	1
19548fb7bfaSmrg #endif
19648fb7bfaSmrg 
19748fb7bfaSmrg #if defined (SQ_MODE) && (HAVE_SQ == 1)
19848fb7bfaSmrg #define FIXED_SIZE	4	/* in bytes.  */
19948fb7bfaSmrg #define INT_C_TYPE	SItype
20048fb7bfaSmrg #define UINT_C_TYPE	USItype
20148fb7bfaSmrg 
20248fb7bfaSmrg #if HAVE_DI == 1
20348fb7bfaSmrg #define DINT_C_TYPE	DItype
20448fb7bfaSmrg #define DUINT_C_TYPE	UDItype
20548fb7bfaSmrg #else
20648fb7bfaSmrg #define HINT_C_TYPE	HItype
20748fb7bfaSmrg #define HUINT_C_TYPE	UHItype
20848fb7bfaSmrg #endif
20948fb7bfaSmrg 
21048fb7bfaSmrg #define MODE_NAME	SQ
21148fb7bfaSmrg #define MODE_NAME_S	sq
21248fb7bfaSmrg #define MODE_UNSIGNED	0
21348fb7bfaSmrg #endif
21448fb7bfaSmrg 
21548fb7bfaSmrg #if defined (USQ_MODE) && (HAVE_USQ == 1)
21648fb7bfaSmrg #define FIXED_SIZE	4	/* in bytes.  */
21748fb7bfaSmrg #define INT_C_TYPE	USItype
21848fb7bfaSmrg #define UINT_C_TYPE	USItype
21948fb7bfaSmrg 
22048fb7bfaSmrg #if HAVE_DI == 1
22148fb7bfaSmrg #define DINT_C_TYPE	UDItype
22248fb7bfaSmrg #define DUINT_C_TYPE	UDItype
22348fb7bfaSmrg #else
22448fb7bfaSmrg #define HINT_C_TYPE	UHItype
22548fb7bfaSmrg #define HUINT_C_TYPE	UHItype
22648fb7bfaSmrg #endif
22748fb7bfaSmrg 
22848fb7bfaSmrg #define MODE_NAME	USQ
22948fb7bfaSmrg #define MODE_NAME_S	usq
23048fb7bfaSmrg #define MODE_UNSIGNED	1
23148fb7bfaSmrg #endif
23248fb7bfaSmrg 
23348fb7bfaSmrg #if defined (DQ_MODE) && (HAVE_DQ == 1)
23448fb7bfaSmrg #define FIXED_SIZE	8	/* in bytes.  */
23548fb7bfaSmrg #define INT_C_TYPE	DItype
23648fb7bfaSmrg #define UINT_C_TYPE	UDItype
23748fb7bfaSmrg 
23848fb7bfaSmrg #if HAVE_TI == 1
23948fb7bfaSmrg #define DINT_C_TYPE	TItype
24048fb7bfaSmrg #define DUINT_C_TYPE	UTItype
24148fb7bfaSmrg #else
24248fb7bfaSmrg #define HINT_C_TYPE	SItype
24348fb7bfaSmrg #define HUINT_C_TYPE	USItype
24448fb7bfaSmrg #endif
24548fb7bfaSmrg 
24648fb7bfaSmrg #define MODE_NAME	DQ
24748fb7bfaSmrg #define MODE_NAME_S	dq
24848fb7bfaSmrg #define MODE_UNSIGNED	0
24948fb7bfaSmrg #endif
25048fb7bfaSmrg 
25148fb7bfaSmrg #if defined (UDQ_MODE) && (HAVE_UDQ == 1)
25248fb7bfaSmrg #define FIXED_SIZE	8	/* in bytes.  */
25348fb7bfaSmrg #define INT_C_TYPE	UDItype
25448fb7bfaSmrg #define UINT_C_TYPE	UDItype
25548fb7bfaSmrg 
25648fb7bfaSmrg #if HAVE_TI == 1
25748fb7bfaSmrg #define DINT_C_TYPE	UTItype
25848fb7bfaSmrg #define DUINT_C_TYPE	UTItype
25948fb7bfaSmrg #else
26048fb7bfaSmrg #define HINT_C_TYPE	USItype
26148fb7bfaSmrg #define HUINT_C_TYPE	USItype
26248fb7bfaSmrg #endif
26348fb7bfaSmrg 
26448fb7bfaSmrg #define MODE_NAME	UDQ
26548fb7bfaSmrg #define MODE_NAME_S	udq
26648fb7bfaSmrg #define MODE_UNSIGNED	1
26748fb7bfaSmrg #endif
26848fb7bfaSmrg 
26948fb7bfaSmrg #if defined (TQ_MODE) && (HAVE_TQ == 1)
27048fb7bfaSmrg #define FIXED_SIZE	16	/* in bytes.  */
27148fb7bfaSmrg #define INT_C_TYPE	TItype
27248fb7bfaSmrg #define UINT_C_TYPE	UTItype
27348fb7bfaSmrg #define HINT_C_TYPE	DItype
27448fb7bfaSmrg #define HUINT_C_TYPE	UDItype
27548fb7bfaSmrg #define MODE_NAME	TQ
27648fb7bfaSmrg #define MODE_NAME_S	tq
27748fb7bfaSmrg #define MODE_UNSIGNED	0
27848fb7bfaSmrg #endif
27948fb7bfaSmrg 
28048fb7bfaSmrg #if defined (UTQ_MODE) && (HAVE_UTQ == 1)
28148fb7bfaSmrg #define FIXED_SIZE	16	/* in bytes.  */
28248fb7bfaSmrg #define INT_C_TYPE	UTItype
28348fb7bfaSmrg #define UINT_C_TYPE	UTItype
28448fb7bfaSmrg #define HINT_C_TYPE	UDItype
28548fb7bfaSmrg #define HUINT_C_TYPE	UDItype
28648fb7bfaSmrg #define MODE_NAME	UTQ
28748fb7bfaSmrg #define MODE_NAME_S	utq
28848fb7bfaSmrg #define MODE_UNSIGNED	1
28948fb7bfaSmrg #endif
29048fb7bfaSmrg 
29148fb7bfaSmrg #if defined (HA_MODE) && (HAVE_HA == 1)
29248fb7bfaSmrg #define FIXED_SIZE	2	/* in bytes.  */
29348fb7bfaSmrg #define INT_C_TYPE	HItype
29448fb7bfaSmrg #define UINT_C_TYPE	UHItype
29548fb7bfaSmrg 
29648fb7bfaSmrg #if HAVE_SI == 1
29748fb7bfaSmrg #define DINT_C_TYPE	SItype
29848fb7bfaSmrg #define DUINT_C_TYPE	USItype
29948fb7bfaSmrg #else
30048fb7bfaSmrg #define HINT_C_TYPE	QItype
30148fb7bfaSmrg #define HUINT_C_TYPE	UQItype
30248fb7bfaSmrg #endif
30348fb7bfaSmrg 
30448fb7bfaSmrg #define MODE_NAME	HA
30548fb7bfaSmrg #define MODE_NAME_S	ha
30648fb7bfaSmrg #define MODE_UNSIGNED	0
30748fb7bfaSmrg #endif
30848fb7bfaSmrg 
30948fb7bfaSmrg #if defined (UHA_MODE) && (HAVE_UHA == 1)
31048fb7bfaSmrg #define FIXED_SIZE	2	/* in bytes.  */
31148fb7bfaSmrg #define INT_C_TYPE	UHItype
31248fb7bfaSmrg #define UINT_C_TYPE	UHItype
31348fb7bfaSmrg 
31448fb7bfaSmrg #if HAVE_SI == 1
31548fb7bfaSmrg #define DINT_C_TYPE	USItype
31648fb7bfaSmrg #define DUINT_C_TYPE	USItype
31748fb7bfaSmrg #else
31848fb7bfaSmrg #define HINT_C_TYPE	UQItype
31948fb7bfaSmrg #define HUINT_C_TYPE	UQItype
32048fb7bfaSmrg #endif
32148fb7bfaSmrg 
32248fb7bfaSmrg #define MODE_NAME	UHA
32348fb7bfaSmrg #define MODE_NAME_S	uha
32448fb7bfaSmrg #define MODE_UNSIGNED	1
32548fb7bfaSmrg #endif
32648fb7bfaSmrg 
32748fb7bfaSmrg #if defined (SA_MODE) && (HAVE_SA == 1)
32848fb7bfaSmrg #define FIXED_SIZE	4	/* in bytes.  */
32948fb7bfaSmrg #define INT_C_TYPE	SItype
33048fb7bfaSmrg #define UINT_C_TYPE	USItype
33148fb7bfaSmrg 
33248fb7bfaSmrg #if HAVE_DI == 1
33348fb7bfaSmrg #define DINT_C_TYPE	DItype
33448fb7bfaSmrg #define DUINT_C_TYPE	UDItype
33548fb7bfaSmrg #else
33648fb7bfaSmrg #define HINT_C_TYPE	HItype
33748fb7bfaSmrg #define HUINT_C_TYPE	UHItype
33848fb7bfaSmrg #endif
33948fb7bfaSmrg 
34048fb7bfaSmrg #define MODE_NAME	SA
34148fb7bfaSmrg #define MODE_NAME_S	sa
34248fb7bfaSmrg #define MODE_UNSIGNED	0
34348fb7bfaSmrg #endif
34448fb7bfaSmrg 
34548fb7bfaSmrg #if defined (USA_MODE) && (HAVE_USA == 1)
34648fb7bfaSmrg #define FIXED_SIZE	4	/* in bytes.  */
34748fb7bfaSmrg #define INT_C_TYPE	USItype
34848fb7bfaSmrg #define UINT_C_TYPE	USItype
34948fb7bfaSmrg 
35048fb7bfaSmrg #if HAVE_DI == 1
35148fb7bfaSmrg #define DINT_C_TYPE	UDItype
35248fb7bfaSmrg #define DUINT_C_TYPE	UDItype
35348fb7bfaSmrg #else
35448fb7bfaSmrg #define HINT_C_TYPE	UHItype
35548fb7bfaSmrg #define HUINT_C_TYPE	UHItype
35648fb7bfaSmrg #endif
35748fb7bfaSmrg 
35848fb7bfaSmrg #define MODE_NAME	USA
35948fb7bfaSmrg #define MODE_NAME_S	usa
36048fb7bfaSmrg #define MODE_UNSIGNED	1
36148fb7bfaSmrg #endif
36248fb7bfaSmrg 
36348fb7bfaSmrg #if defined (DA_MODE) && (HAVE_DA == 1)
36448fb7bfaSmrg #define FIXED_SIZE	8	/* in bytes.  */
36548fb7bfaSmrg #define INT_C_TYPE	DItype
36648fb7bfaSmrg #define UINT_C_TYPE	UDItype
36748fb7bfaSmrg 
36848fb7bfaSmrg #if HAVE_TI == 1
36948fb7bfaSmrg #define DINT_C_TYPE	TItype
37048fb7bfaSmrg #define DUINT_C_TYPE	UTItype
37148fb7bfaSmrg #else
37248fb7bfaSmrg #define HINT_C_TYPE	SItype
37348fb7bfaSmrg #define HUINT_C_TYPE	USItype
37448fb7bfaSmrg #endif
37548fb7bfaSmrg 
37648fb7bfaSmrg #define MODE_NAME	DA
37748fb7bfaSmrg #define MODE_NAME_S	da
37848fb7bfaSmrg #define MODE_UNSIGNED	0
37948fb7bfaSmrg #endif
38048fb7bfaSmrg 
38148fb7bfaSmrg #if defined (UDA_MODE) && (HAVE_UDA == 1)
38248fb7bfaSmrg #define FIXED_SIZE	8	/* in bytes.  */
38348fb7bfaSmrg #define INT_C_TYPE	UDItype
38448fb7bfaSmrg #define UINT_C_TYPE	UDItype
38548fb7bfaSmrg 
38648fb7bfaSmrg #if HAVE_TI == 1
38748fb7bfaSmrg #define DINT_C_TYPE	UTItype
38848fb7bfaSmrg #define DUINT_C_TYPE	UTItype
38948fb7bfaSmrg #else
39048fb7bfaSmrg #define HINT_C_TYPE	USItype
39148fb7bfaSmrg #define HUINT_C_TYPE	USItype
39248fb7bfaSmrg #endif
39348fb7bfaSmrg 
39448fb7bfaSmrg #define MODE_NAME	UDA
39548fb7bfaSmrg #define MODE_NAME_S	uda
39648fb7bfaSmrg #define MODE_UNSIGNED	1
39748fb7bfaSmrg #endif
39848fb7bfaSmrg 
39948fb7bfaSmrg #if defined (TA_MODE) && (HAVE_TA == 1)
40048fb7bfaSmrg #define FIXED_SIZE	16	/* in bytes.  */
40148fb7bfaSmrg #define INT_C_TYPE	TItype
40248fb7bfaSmrg #define UINT_C_TYPE	UTItype
40348fb7bfaSmrg #define HINT_C_TYPE	DItype
40448fb7bfaSmrg #define HUINT_C_TYPE	UDItype
40548fb7bfaSmrg #define MODE_NAME	TA
40648fb7bfaSmrg #define MODE_NAME_S	ta
40748fb7bfaSmrg #define MODE_UNSIGNED	0
40848fb7bfaSmrg #endif
40948fb7bfaSmrg 
41048fb7bfaSmrg #if defined (UTA_MODE) && (HAVE_UTA == 1)
41148fb7bfaSmrg #define FIXED_SIZE	16	/* in bytes.  */
41248fb7bfaSmrg #define INT_C_TYPE	UTItype
41348fb7bfaSmrg #define UINT_C_TYPE	UTItype
41448fb7bfaSmrg #define HINT_C_TYPE	UDItype
41548fb7bfaSmrg #define HUINT_C_TYPE	UDItype
41648fb7bfaSmrg #define MODE_NAME	UTA
41748fb7bfaSmrg #define MODE_NAME_S	uta
41848fb7bfaSmrg #define MODE_UNSIGNED	1
41948fb7bfaSmrg #endif
42048fb7bfaSmrg 
42148fb7bfaSmrg /* The following defines are based on the previous defines.  */
42248fb7bfaSmrg 
42348fb7bfaSmrg #if defined (HINT_C_TYPE)
42448fb7bfaSmrg #if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
42548fb7bfaSmrg   struct INTstruct {HINT_C_TYPE high, low;};
42648fb7bfaSmrg #else
42748fb7bfaSmrg   struct INTstruct {HINT_C_TYPE low, high;};
42848fb7bfaSmrg #endif
42948fb7bfaSmrg 
43048fb7bfaSmrg typedef union
43148fb7bfaSmrg {
43248fb7bfaSmrg   struct INTstruct s;
43348fb7bfaSmrg   INT_C_TYPE ll;
43448fb7bfaSmrg } INTunion;
43548fb7bfaSmrg #endif
43648fb7bfaSmrg 
437f9a78e0eSmrg #define FIXED_WIDTH	(FIXED_SIZE * __CHAR_BIT__) /* in bits.  */
43848fb7bfaSmrg #define FIXED_C_TYPE1(NAME)	NAME ## type
43948fb7bfaSmrg #define FIXED_C_TYPE2(NAME)	FIXED_C_TYPE1(NAME)
44048fb7bfaSmrg #define FIXED_C_TYPE	FIXED_C_TYPE2(MODE_NAME)
44148fb7bfaSmrg #define FBITS1(NAME)	__ ## NAME ## _FBIT__
44248fb7bfaSmrg #define FBITS2(NAME)	FBITS1(NAME)
44348fb7bfaSmrg #define FBITS		FBITS2(MODE_NAME)
44448fb7bfaSmrg #define IBITS1(NAME)	__ ## NAME ## _IBIT__
44548fb7bfaSmrg #define IBITS2(NAME)	IBITS1(NAME)
44648fb7bfaSmrg #define IBITS		IBITS2(MODE_NAME)
44748fb7bfaSmrg #define I_F_BITS	(FBITS + IBITS)
44848fb7bfaSmrg 
44948fb7bfaSmrg #ifdef LIBGCC2_FIXEDBIT_GNU_PREFIX
45048fb7bfaSmrg #define FIXED_OP(OP,MODE,NUM)	__gnu_ ## OP ## MODE ## NUM
45148fb7bfaSmrg #else
45248fb7bfaSmrg #define FIXED_OP(OP,MODE,NUM)	__ ## OP ## MODE ## NUM
45348fb7bfaSmrg #endif
45448fb7bfaSmrg 
45548fb7bfaSmrg #define FIXED_SATURATE1_TEMP(NAME)	FIXED_OP(saturate1,NAME,)
45648fb7bfaSmrg #define FIXED_SATURATE2_TEMP(NAME)	FIXED_OP(saturate2,NAME,)
45748fb7bfaSmrg #define FIXED_MULHELPER_TEMP(NAME)	FIXED_OP(mulhelper,NAME,)
45848fb7bfaSmrg #define FIXED_DIVHELPER_TEMP(NAME)	FIXED_OP(divhelper,NAME,)
45948fb7bfaSmrg #define FIXED_ASHLHELPER_TEMP(NAME)	FIXED_OP(ashlhelper,NAME,)
46048fb7bfaSmrg #define FIXED_ADD_TEMP(NAME)	FIXED_OP(add,NAME,3)
46148fb7bfaSmrg #define FIXED_SSADD_TEMP(NAME)	FIXED_OP(ssadd,NAME,3)
46248fb7bfaSmrg #define FIXED_USADD_TEMP(NAME)	FIXED_OP(usadd,NAME,3)
46348fb7bfaSmrg #define FIXED_SUB_TEMP(NAME)	FIXED_OP(sub,NAME,3)
46448fb7bfaSmrg #define FIXED_SSSUB_TEMP(NAME)	FIXED_OP(sssub,NAME,3)
46548fb7bfaSmrg #define FIXED_USSUB_TEMP(NAME)	FIXED_OP(ussub,NAME,3)
46648fb7bfaSmrg #define FIXED_MUL_TEMP(NAME)	FIXED_OP(mul,NAME,3)
46748fb7bfaSmrg #define FIXED_SSMUL_TEMP(NAME)	FIXED_OP(ssmul,NAME,3)
46848fb7bfaSmrg #define FIXED_USMUL_TEMP(NAME)	FIXED_OP(usmul,NAME,3)
46948fb7bfaSmrg #define FIXED_DIV_TEMP(NAME)	FIXED_OP(div,NAME,3)
47048fb7bfaSmrg #define FIXED_UDIV_TEMP(NAME)	FIXED_OP(udiv,NAME,3)
47148fb7bfaSmrg #define FIXED_SSDIV_TEMP(NAME)	FIXED_OP(ssdiv,NAME,3)
47248fb7bfaSmrg #define FIXED_USDIV_TEMP(NAME)	FIXED_OP(usdiv,NAME,3)
47348fb7bfaSmrg #define FIXED_NEG_TEMP(NAME)	FIXED_OP(neg,NAME,2)
47448fb7bfaSmrg #define FIXED_SSNEG_TEMP(NAME)	FIXED_OP(ssneg,NAME,2)
47548fb7bfaSmrg #define FIXED_USNEG_TEMP(NAME)	FIXED_OP(usneg,NAME,2)
47648fb7bfaSmrg #define FIXED_ASHL_TEMP(NAME)	FIXED_OP(ashl,NAME,3)
47748fb7bfaSmrg #define FIXED_ASHR_TEMP(NAME)	FIXED_OP(ashr,NAME,3)
47848fb7bfaSmrg #define FIXED_LSHR_TEMP(NAME)	FIXED_OP(lshr,NAME,3)
47948fb7bfaSmrg #define FIXED_SSASHL_TEMP(NAME)	FIXED_OP(ssashl,NAME,3)
48048fb7bfaSmrg #define FIXED_USASHL_TEMP(NAME)	FIXED_OP(usashl,NAME,3)
48148fb7bfaSmrg #define FIXED_CMP_TEMP(NAME)	FIXED_OP(cmp,NAME,2)
48248fb7bfaSmrg 
48348fb7bfaSmrg #if defined (MODE_NAME)
48448fb7bfaSmrg #if defined (DINT_C_TYPE)
48548fb7bfaSmrg #define FIXED_SATURATE1	FIXED_SATURATE1_TEMP(MODE_NAME_S)
48648fb7bfaSmrg #else
48748fb7bfaSmrg #define FIXED_SATURATE2	FIXED_SATURATE2_TEMP(MODE_NAME_S)
48848fb7bfaSmrg #endif
48948fb7bfaSmrg #define FIXED_MULHELPER	FIXED_MULHELPER_TEMP(MODE_NAME_S)
49048fb7bfaSmrg #define FIXED_DIVHELPER	FIXED_DIVHELPER_TEMP(MODE_NAME_S)
49148fb7bfaSmrg #define FIXED_ASHLHELPER	FIXED_ASHLHELPER_TEMP(MODE_NAME_S)
49248fb7bfaSmrg #define FIXED_ADD	FIXED_ADD_TEMP(MODE_NAME_S)
49348fb7bfaSmrg #define FIXED_SUB	FIXED_SUB_TEMP(MODE_NAME_S)
49448fb7bfaSmrg #define FIXED_MUL	FIXED_MUL_TEMP(MODE_NAME_S)
49548fb7bfaSmrg #define FIXED_NEG	FIXED_NEG_TEMP(MODE_NAME_S)
49648fb7bfaSmrg #define FIXED_ASHL	FIXED_ASHL_TEMP(MODE_NAME_S)
49748fb7bfaSmrg #define FIXED_CMP	FIXED_CMP_TEMP(MODE_NAME_S)
49848fb7bfaSmrg 
49948fb7bfaSmrg /* The following functions are for all fixed-point modes.  */
50048fb7bfaSmrg #if defined (DINT_C_TYPE)
50148fb7bfaSmrg extern void FIXED_SATURATE1 (DINT_C_TYPE *);
50248fb7bfaSmrg #else
50348fb7bfaSmrg extern void FIXED_SATURATE2 (INT_C_TYPE *, INT_C_TYPE *);
50448fb7bfaSmrg #endif
50548fb7bfaSmrg extern FIXED_C_TYPE FIXED_MULHELPER (FIXED_C_TYPE, FIXED_C_TYPE, word_type);
50648fb7bfaSmrg extern FIXED_C_TYPE FIXED_DIVHELPER (FIXED_C_TYPE, FIXED_C_TYPE, word_type);
50748fb7bfaSmrg extern FIXED_C_TYPE FIXED_ASHLHELPER (FIXED_C_TYPE, word_type, word_type);
50848fb7bfaSmrg extern FIXED_C_TYPE FIXED_ADD (FIXED_C_TYPE, FIXED_C_TYPE);
50948fb7bfaSmrg extern FIXED_C_TYPE FIXED_SUB (FIXED_C_TYPE, FIXED_C_TYPE);
51048fb7bfaSmrg extern FIXED_C_TYPE FIXED_MUL (FIXED_C_TYPE, FIXED_C_TYPE);
51148fb7bfaSmrg extern FIXED_C_TYPE FIXED_NEG (FIXED_C_TYPE);
51248fb7bfaSmrg extern FIXED_C_TYPE FIXED_ASHL (FIXED_C_TYPE, word_type);
51348fb7bfaSmrg extern word_type FIXED_CMP (FIXED_C_TYPE, FIXED_C_TYPE);
51448fb7bfaSmrg #endif
51548fb7bfaSmrg 
51648fb7bfaSmrg #if MODE_UNSIGNED == 0 /* Signed types.  */
51748fb7bfaSmrg #define PADDING_BITS	(FIXED_WIDTH - 1 - I_F_BITS)
51848fb7bfaSmrg #define NONPADDING_BITS	(1 + I_F_BITS)
51948fb7bfaSmrg 
52048fb7bfaSmrg #if defined (MODE_NAME)
52148fb7bfaSmrg #define FIXED_DIV	FIXED_DIV_TEMP(MODE_NAME_S)
52248fb7bfaSmrg #define FIXED_ASHR	FIXED_ASHR_TEMP(MODE_NAME_S)
52348fb7bfaSmrg #define FIXED_SSADD	FIXED_SSADD_TEMP(MODE_NAME_S)
52448fb7bfaSmrg #define FIXED_SSSUB	FIXED_SSSUB_TEMP(MODE_NAME_S)
52548fb7bfaSmrg #define FIXED_SSMUL	FIXED_SSMUL_TEMP(MODE_NAME_S)
52648fb7bfaSmrg #define FIXED_SSDIV	FIXED_SSDIV_TEMP(MODE_NAME_S)
52748fb7bfaSmrg #define FIXED_SSNEG	FIXED_SSNEG_TEMP(MODE_NAME_S)
52848fb7bfaSmrg #define FIXED_SSASHL	FIXED_SSASHL_TEMP(MODE_NAME_S)
52948fb7bfaSmrg 
53048fb7bfaSmrg /* The following functions are for signed fixed-point modes.  */
53148fb7bfaSmrg extern FIXED_C_TYPE FIXED_DIV (FIXED_C_TYPE, FIXED_C_TYPE);
53248fb7bfaSmrg extern FIXED_C_TYPE FIXED_ASHR (FIXED_C_TYPE, word_type);
53348fb7bfaSmrg extern FIXED_C_TYPE FIXED_SSADD (FIXED_C_TYPE, FIXED_C_TYPE);
53448fb7bfaSmrg extern FIXED_C_TYPE FIXED_SSSUB (FIXED_C_TYPE, FIXED_C_TYPE);
53548fb7bfaSmrg extern FIXED_C_TYPE FIXED_SSMUL (FIXED_C_TYPE, FIXED_C_TYPE);
53648fb7bfaSmrg extern FIXED_C_TYPE FIXED_SSDIV (FIXED_C_TYPE, FIXED_C_TYPE);
53748fb7bfaSmrg extern FIXED_C_TYPE FIXED_SSNEG (FIXED_C_TYPE);
53848fb7bfaSmrg extern FIXED_C_TYPE FIXED_SSASHL (FIXED_C_TYPE, word_type);
53948fb7bfaSmrg #endif
54048fb7bfaSmrg 
54148fb7bfaSmrg #else /* Unsigned types.  */
54248fb7bfaSmrg #define PADDING_BITS	(FIXED_WIDTH - I_F_BITS)
54348fb7bfaSmrg #define NONPADDING_BITS	(I_F_BITS)
54448fb7bfaSmrg 
54548fb7bfaSmrg #if defined (MODE_NAME)
54648fb7bfaSmrg #define FIXED_UDIV	FIXED_UDIV_TEMP(MODE_NAME_S)
54748fb7bfaSmrg #define FIXED_LSHR	FIXED_LSHR_TEMP(MODE_NAME_S)
54848fb7bfaSmrg #define FIXED_USDIV	FIXED_USDIV_TEMP(MODE_NAME_S)
54948fb7bfaSmrg #define FIXED_USADD	FIXED_USADD_TEMP(MODE_NAME_S)
55048fb7bfaSmrg #define FIXED_USSUB	FIXED_USSUB_TEMP(MODE_NAME_S)
55148fb7bfaSmrg #define FIXED_USMUL	FIXED_USMUL_TEMP(MODE_NAME_S)
55248fb7bfaSmrg #define FIXED_USNEG	FIXED_USNEG_TEMP(MODE_NAME_S)
55348fb7bfaSmrg #define FIXED_USASHL	FIXED_USASHL_TEMP(MODE_NAME_S)
55448fb7bfaSmrg 
55548fb7bfaSmrg /* The following functions are for unsigned fixed-point modes.  */
55648fb7bfaSmrg extern FIXED_C_TYPE FIXED_UDIV (FIXED_C_TYPE, FIXED_C_TYPE);
55748fb7bfaSmrg extern FIXED_C_TYPE FIXED_LSHR (FIXED_C_TYPE, word_type);
55848fb7bfaSmrg extern FIXED_C_TYPE FIXED_USADD (FIXED_C_TYPE, FIXED_C_TYPE);
55948fb7bfaSmrg extern FIXED_C_TYPE FIXED_USSUB (FIXED_C_TYPE, FIXED_C_TYPE);
56048fb7bfaSmrg extern FIXED_C_TYPE FIXED_USMUL (FIXED_C_TYPE, FIXED_C_TYPE);
56148fb7bfaSmrg extern FIXED_C_TYPE FIXED_USDIV (FIXED_C_TYPE, FIXED_C_TYPE);
56248fb7bfaSmrg extern FIXED_C_TYPE FIXED_USNEG (FIXED_C_TYPE);
56348fb7bfaSmrg extern FIXED_C_TYPE FIXED_USASHL (FIXED_C_TYPE, word_type);
56448fb7bfaSmrg #endif
56548fb7bfaSmrg 
56648fb7bfaSmrg #endif /* End of testing MODE_UNSIGNED.  */
56748fb7bfaSmrg 
56848fb7bfaSmrg /* This define is to check if this mode have any padding bits.  */
56948fb7bfaSmrg #define HAVE_PADDING_BITS	(PADDING_BITS > 0)
57048fb7bfaSmrg 
57148fb7bfaSmrg /* ------------------------------------------------------------------------ */
57248fb7bfaSmrg /* The following defines are for conversions.  */
57348fb7bfaSmrg 
57448fb7bfaSmrg #if defined (FROM_QI) && HAVE_QI == 1
57548fb7bfaSmrg #define FROM_TYPE		1	/* Signed integer.  */
57648fb7bfaSmrg #define FROM_INT_C_TYPE		QItype
57748fb7bfaSmrg #define FROM_SINT_C_TYPE	QItype
57848fb7bfaSmrg #define FROM_UINT_C_TYPE	UQItype
57948fb7bfaSmrg #define FROM_MODE_NAME_S	qi
58048fb7bfaSmrg #define FROM_INT_SIZE		1	/* in bytes.  */
58148fb7bfaSmrg 
58248fb7bfaSmrg #elif defined (FROM_HI) && HAVE_HI == 1
58348fb7bfaSmrg #define FROM_TYPE		1	/* Signed integer.  */
58448fb7bfaSmrg #define FROM_INT_C_TYPE		HItype
58548fb7bfaSmrg #define FROM_SINT_C_TYPE	HItype
58648fb7bfaSmrg #define FROM_UINT_C_TYPE	UHItype
58748fb7bfaSmrg #define FROM_MODE_NAME_S	hi
58848fb7bfaSmrg #define FROM_INT_SIZE		2	/* in bytes.  */
58948fb7bfaSmrg 
59048fb7bfaSmrg #elif defined (FROM_SI) && HAVE_SI == 1
59148fb7bfaSmrg #define FROM_TYPE		1	/* Signed integer.  */
59248fb7bfaSmrg #define FROM_INT_C_TYPE		SItype
59348fb7bfaSmrg #define FROM_SINT_C_TYPE	SItype
59448fb7bfaSmrg #define FROM_UINT_C_TYPE	USItype
59548fb7bfaSmrg #define FROM_MODE_NAME_S	si
59648fb7bfaSmrg #define FROM_INT_SIZE		4	/* in bytes.  */
59748fb7bfaSmrg 
59848fb7bfaSmrg #elif defined (FROM_DI) && HAVE_DI == 1
59948fb7bfaSmrg #define FROM_TYPE		1	/* Signed integer.  */
60048fb7bfaSmrg #define FROM_INT_C_TYPE		DItype
60148fb7bfaSmrg #define FROM_SINT_C_TYPE	DItype
60248fb7bfaSmrg #define FROM_UINT_C_TYPE	UDItype
60348fb7bfaSmrg #define FROM_MODE_NAME_S	di
60448fb7bfaSmrg #define FROM_INT_SIZE		8	/* in bytes.  */
60548fb7bfaSmrg 
60648fb7bfaSmrg #elif defined (FROM_TI) && HAVE_TI == 1
60748fb7bfaSmrg #define FROM_TYPE		1	/* Signed integer.  */
60848fb7bfaSmrg #define FROM_INT_C_TYPE		TItype
60948fb7bfaSmrg #define FROM_SINT_C_TYPE	TItype
61048fb7bfaSmrg #define FROM_UINT_C_TYPE	UTItype
61148fb7bfaSmrg #define FROM_MODE_NAME_S	ti
61248fb7bfaSmrg #define FROM_INT_SIZE		16	/* in bytes.  */
61348fb7bfaSmrg 
61448fb7bfaSmrg #elif defined (FROM_UQI) && HAVE_UQI == 1
61548fb7bfaSmrg #define FROM_TYPE		2	/* Unsigned integer.  */
61648fb7bfaSmrg #define FROM_INT_C_TYPE		QItype
61748fb7bfaSmrg #define FROM_SINT_C_TYPE	QItype
61848fb7bfaSmrg #define FROM_UINT_C_TYPE	UQItype
61948fb7bfaSmrg #define FROM_MODE_NAME_S	qi
62048fb7bfaSmrg #define FROM_INT_SIZE		1	/* in bytes.  */
62148fb7bfaSmrg 
62248fb7bfaSmrg #elif defined (FROM_UHI) && HAVE_UHI == 1
62348fb7bfaSmrg #define FROM_TYPE		2	/* Unsigned integer.  */
62448fb7bfaSmrg #define FROM_INT_C_TYPE		UHItype
62548fb7bfaSmrg #define FROM_SINT_C_TYPE	HItype
62648fb7bfaSmrg #define FROM_UINT_C_TYPE	UHItype
62748fb7bfaSmrg #define FROM_MODE_NAME_S	hi
62848fb7bfaSmrg #define FROM_INT_SIZE		2	/* in bytes.  */
62948fb7bfaSmrg 
63048fb7bfaSmrg #elif defined (FROM_USI) && HAVE_USI == 1
63148fb7bfaSmrg #define FROM_TYPE		2	/* Unsigned integer.  */
63248fb7bfaSmrg #define FROM_INT_C_TYPE		USItype
63348fb7bfaSmrg #define FROM_SINT_C_TYPE	SItype
63448fb7bfaSmrg #define FROM_UINT_C_TYPE	USItype
63548fb7bfaSmrg #define FROM_MODE_NAME_S	si
63648fb7bfaSmrg #define FROM_INT_SIZE		4	/* in bytes.  */
63748fb7bfaSmrg 
63848fb7bfaSmrg #elif defined (FROM_UDI) && HAVE_UDI == 1
63948fb7bfaSmrg #define FROM_TYPE		2	/* Unsigned integer.  */
64048fb7bfaSmrg #define FROM_INT_C_TYPE		UDItype
64148fb7bfaSmrg #define FROM_SINT_C_TYPE	DItype
64248fb7bfaSmrg #define FROM_UINT_C_TYPE	UDItype
64348fb7bfaSmrg #define FROM_MODE_NAME_S	di
64448fb7bfaSmrg #define FROM_INT_SIZE		8	/* in bytes.  */
64548fb7bfaSmrg 
64648fb7bfaSmrg #elif defined (FROM_UTI) && HAVE_UTI == 1
64748fb7bfaSmrg #define FROM_TYPE		2	/* Unsigned integer.  */
64848fb7bfaSmrg #define FROM_INT_C_TYPE		UTItype
64948fb7bfaSmrg #define FROM_SINT_C_TYPE	TItype
65048fb7bfaSmrg #define FROM_UINT_C_TYPE	UTItype
65148fb7bfaSmrg #define FROM_MODE_NAME_S	ti
65248fb7bfaSmrg #define FROM_INT_SIZE		16	/* in bytes.  */
65348fb7bfaSmrg 
65448fb7bfaSmrg #elif defined (FROM_SF) && HAVE_SF == 1
65548fb7bfaSmrg #define FROM_TYPE		3	/* Floating-point.  */
65648fb7bfaSmrg #define FROM_FLOAT_C_TYPE	SFtype
65748fb7bfaSmrg #define FROM_MODE_NAME_S	sf
65848fb7bfaSmrg 
65948fb7bfaSmrg #elif defined (FROM_DF) && HAVE_DF == 1
66048fb7bfaSmrg #define FROM_TYPE		3	/* Floating-point.  */
66148fb7bfaSmrg #define FROM_FLOAT_C_TYPE	DFtype
66248fb7bfaSmrg #define FROM_MODE_NAME_S	df
66348fb7bfaSmrg 
66448fb7bfaSmrg #elif defined (FROM_QQ) && HAVE_QQ == 1
66548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
66648fb7bfaSmrg #define FROM_MODE_NAME		QQ
66748fb7bfaSmrg #define FROM_MODE_NAME_S	qq
66848fb7bfaSmrg #define FROM_INT_C_TYPE		QItype
66948fb7bfaSmrg #define FROM_SINT_C_TYPE	QItype
67048fb7bfaSmrg #define FROM_UINT_C_TYPE	UQItype
67148fb7bfaSmrg #define FROM_MODE_UNSIGNED	0
67248fb7bfaSmrg #define FROM_FIXED_SIZE		1	/* in bytes.  */
67348fb7bfaSmrg 
67448fb7bfaSmrg #elif defined (FROM_HQ) && HAVE_HQ == 1
67548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
67648fb7bfaSmrg #define FROM_MODE_NAME		HQ
67748fb7bfaSmrg #define FROM_MODE_NAME_S	hq
67848fb7bfaSmrg #define FROM_INT_C_TYPE		HItype
67948fb7bfaSmrg #define FROM_SINT_C_TYPE	HItype
68048fb7bfaSmrg #define FROM_UINT_C_TYPE	UHItype
68148fb7bfaSmrg #define FROM_MODE_UNSIGNED	0
68248fb7bfaSmrg #define FROM_FIXED_SIZE		2	/* in bytes.  */
68348fb7bfaSmrg 
68448fb7bfaSmrg #elif defined (FROM_SQ) && HAVE_SQ == 1
68548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
68648fb7bfaSmrg #define FROM_MODE_NAME		SQ
68748fb7bfaSmrg #define FROM_MODE_NAME_S	sq
68848fb7bfaSmrg #define FROM_INT_C_TYPE		SItype
68948fb7bfaSmrg #define FROM_SINT_C_TYPE	SItype
69048fb7bfaSmrg #define FROM_UINT_C_TYPE	USItype
69148fb7bfaSmrg #define FROM_MODE_UNSIGNED	0
69248fb7bfaSmrg #define FROM_FIXED_SIZE		4	/* in bytes.  */
69348fb7bfaSmrg 
69448fb7bfaSmrg #elif defined (FROM_DQ) && HAVE_DQ == 1
69548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
69648fb7bfaSmrg #define FROM_MODE_NAME		DQ
69748fb7bfaSmrg #define FROM_MODE_NAME_S	dq
69848fb7bfaSmrg #define FROM_INT_C_TYPE		DItype
69948fb7bfaSmrg #define FROM_SINT_C_TYPE	DItype
70048fb7bfaSmrg #define FROM_UINT_C_TYPE	UDItype
70148fb7bfaSmrg #define FROM_MODE_UNSIGNED	0
70248fb7bfaSmrg #define FROM_FIXED_SIZE		8	/* in bytes.  */
70348fb7bfaSmrg 
70448fb7bfaSmrg #elif defined (FROM_TQ) && HAVE_TQ == 1
70548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
70648fb7bfaSmrg #define FROM_MODE_NAME		TQ
70748fb7bfaSmrg #define FROM_MODE_NAME_S	tq
70848fb7bfaSmrg #define FROM_INT_C_TYPE		TItype
70948fb7bfaSmrg #define FROM_SINT_C_TYPE	TItype
71048fb7bfaSmrg #define FROM_UINT_C_TYPE	UTItype
71148fb7bfaSmrg #define FROM_MODE_UNSIGNED	0
71248fb7bfaSmrg #define FROM_FIXED_SIZE		16	/* in bytes.  */
71348fb7bfaSmrg 
71448fb7bfaSmrg #elif defined (FROM_UQQ) && HAVE_UQQ == 1
71548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
71648fb7bfaSmrg #define FROM_MODE_NAME		UQQ
71748fb7bfaSmrg #define FROM_MODE_NAME_S	uqq
71848fb7bfaSmrg #define FROM_INT_C_TYPE		UQItype
71948fb7bfaSmrg #define FROM_SINT_C_TYPE	QItype
72048fb7bfaSmrg #define FROM_UINT_C_TYPE	UQItype
72148fb7bfaSmrg #define FROM_MODE_UNSIGNED	1
72248fb7bfaSmrg #define FROM_FIXED_SIZE		1	/* in bytes.  */
72348fb7bfaSmrg 
72448fb7bfaSmrg #elif defined (FROM_UHQ) && HAVE_UHQ == 1
72548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
72648fb7bfaSmrg #define FROM_MODE_NAME		UHQ
72748fb7bfaSmrg #define FROM_MODE_NAME_S	uhq
72848fb7bfaSmrg #define FROM_INT_C_TYPE		UHItype
72948fb7bfaSmrg #define FROM_SINT_C_TYPE	HItype
73048fb7bfaSmrg #define FROM_UINT_C_TYPE	UHItype
73148fb7bfaSmrg #define FROM_MODE_UNSIGNED	1
73248fb7bfaSmrg #define FROM_FIXED_SIZE		2	/* in bytes.  */
73348fb7bfaSmrg 
73448fb7bfaSmrg #elif defined (FROM_USQ) && HAVE_USQ == 1
73548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
73648fb7bfaSmrg #define FROM_MODE_NAME		USQ
73748fb7bfaSmrg #define FROM_MODE_NAME_S	usq
73848fb7bfaSmrg #define FROM_INT_C_TYPE		USItype
73948fb7bfaSmrg #define FROM_SINT_C_TYPE	SItype
74048fb7bfaSmrg #define FROM_UINT_C_TYPE	USItype
74148fb7bfaSmrg #define FROM_MODE_UNSIGNED	1
74248fb7bfaSmrg #define FROM_FIXED_SIZE		4	/* in bytes.  */
74348fb7bfaSmrg 
74448fb7bfaSmrg #elif defined (FROM_UDQ) && HAVE_UDQ == 1
74548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
74648fb7bfaSmrg #define FROM_MODE_NAME		UDQ
74748fb7bfaSmrg #define FROM_MODE_NAME_S	udq
74848fb7bfaSmrg #define FROM_INT_C_TYPE		UDItype
74948fb7bfaSmrg #define FROM_SINT_C_TYPE	DItype
75048fb7bfaSmrg #define FROM_UINT_C_TYPE	UDItype
75148fb7bfaSmrg #define FROM_MODE_UNSIGNED	1
75248fb7bfaSmrg #define FROM_FIXED_SIZE		8	/* in bytes.  */
75348fb7bfaSmrg 
75448fb7bfaSmrg #elif defined (FROM_UTQ) && HAVE_UTQ == 1
75548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
75648fb7bfaSmrg #define FROM_MODE_NAME		UTQ
75748fb7bfaSmrg #define FROM_MODE_NAME_S	utq
75848fb7bfaSmrg #define FROM_INT_C_TYPE		UTItype
75948fb7bfaSmrg #define FROM_SINT_C_TYPE	TItype
76048fb7bfaSmrg #define FROM_UINT_C_TYPE	UTItype
76148fb7bfaSmrg #define FROM_MODE_UNSIGNED	1
76248fb7bfaSmrg #define FROM_FIXED_SIZE		16	/* in bytes.  */
76348fb7bfaSmrg 
76448fb7bfaSmrg #elif defined (FROM_HA) && HAVE_HA == 1
76548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
76648fb7bfaSmrg #define FROM_MODE_NAME		HA
76748fb7bfaSmrg #define FROM_MODE_NAME_S	ha
76848fb7bfaSmrg #define FROM_INT_C_TYPE		HItype
76948fb7bfaSmrg #define FROM_SINT_C_TYPE	HItype
77048fb7bfaSmrg #define FROM_UINT_C_TYPE	UHItype
77148fb7bfaSmrg #define FROM_MODE_UNSIGNED	0
77248fb7bfaSmrg #define FROM_FIXED_SIZE		2	/* in bytes.  */
77348fb7bfaSmrg 
77448fb7bfaSmrg #elif defined (FROM_SA) && HAVE_SA == 1
77548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
77648fb7bfaSmrg #define FROM_MODE_NAME		SA
77748fb7bfaSmrg #define FROM_MODE_NAME_S	sa
77848fb7bfaSmrg #define FROM_INT_C_TYPE		SItype
77948fb7bfaSmrg #define FROM_SINT_C_TYPE	SItype
78048fb7bfaSmrg #define FROM_UINT_C_TYPE	USItype
78148fb7bfaSmrg #define FROM_MODE_UNSIGNED	0
78248fb7bfaSmrg #define FROM_FIXED_SIZE		4	/* in bytes.  */
78348fb7bfaSmrg 
78448fb7bfaSmrg #elif defined (FROM_DA) && HAVE_DA == 1
78548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
78648fb7bfaSmrg #define FROM_MODE_NAME		DA
78748fb7bfaSmrg #define FROM_MODE_NAME_S	da
78848fb7bfaSmrg #define FROM_INT_C_TYPE		DItype
78948fb7bfaSmrg #define FROM_SINT_C_TYPE	DItype
79048fb7bfaSmrg #define FROM_UINT_C_TYPE	UDItype
79148fb7bfaSmrg #define FROM_MODE_UNSIGNED	0
79248fb7bfaSmrg #define FROM_FIXED_SIZE		8	/* in bytes.  */
79348fb7bfaSmrg 
79448fb7bfaSmrg #elif defined (FROM_TA) && HAVE_TA == 1
79548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
79648fb7bfaSmrg #define FROM_MODE_NAME		TA
79748fb7bfaSmrg #define FROM_MODE_NAME_S	ta
79848fb7bfaSmrg #define FROM_INT_C_TYPE		TItype
79948fb7bfaSmrg #define FROM_SINT_C_TYPE	TItype
80048fb7bfaSmrg #define FROM_UINT_C_TYPE	UTItype
80148fb7bfaSmrg #define FROM_MODE_UNSIGNED	0
80248fb7bfaSmrg #define FROM_FIXED_SIZE		16	/* in bytes.  */
80348fb7bfaSmrg 
80448fb7bfaSmrg #elif defined (FROM_UHA) && HAVE_UHA == 1
80548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
80648fb7bfaSmrg #define FROM_MODE_NAME		UHA
80748fb7bfaSmrg #define FROM_MODE_NAME_S	uha
80848fb7bfaSmrg #define FROM_INT_C_TYPE		UHItype
80948fb7bfaSmrg #define FROM_SINT_C_TYPE	HItype
81048fb7bfaSmrg #define FROM_UINT_C_TYPE	UHItype
81148fb7bfaSmrg #define FROM_MODE_UNSIGNED	1
81248fb7bfaSmrg #define FROM_FIXED_SIZE		2	/* in bytes.  */
81348fb7bfaSmrg 
81448fb7bfaSmrg #elif defined (FROM_USA) && HAVE_USA == 1
81548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
81648fb7bfaSmrg #define FROM_MODE_NAME		USA
81748fb7bfaSmrg #define FROM_MODE_NAME_S	usa
81848fb7bfaSmrg #define FROM_INT_C_TYPE		USItype
81948fb7bfaSmrg #define FROM_SINT_C_TYPE	SItype
82048fb7bfaSmrg #define FROM_UINT_C_TYPE	USItype
82148fb7bfaSmrg #define FROM_MODE_UNSIGNED	1
82248fb7bfaSmrg #define FROM_FIXED_SIZE		4	/* in bytes.  */
82348fb7bfaSmrg 
82448fb7bfaSmrg #elif defined (FROM_UDA) && HAVE_UDA == 1
82548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
82648fb7bfaSmrg #define FROM_MODE_NAME		UDA
82748fb7bfaSmrg #define FROM_MODE_NAME_S	uda
82848fb7bfaSmrg #define FROM_INT_C_TYPE		UDItype
82948fb7bfaSmrg #define FROM_SINT_C_TYPE	DItype
83048fb7bfaSmrg #define FROM_UINT_C_TYPE	UDItype
83148fb7bfaSmrg #define FROM_MODE_UNSIGNED	1
83248fb7bfaSmrg #define FROM_FIXED_SIZE		8	/* in bytes.  */
83348fb7bfaSmrg 
83448fb7bfaSmrg #elif defined (FROM_UTA) && HAVE_UTA == 1
83548fb7bfaSmrg #define FROM_TYPE		4	/* Fixed-point.  */
83648fb7bfaSmrg #define FROM_MODE_NAME		UTA
83748fb7bfaSmrg #define FROM_MODE_NAME_S	uta
83848fb7bfaSmrg #define FROM_INT_C_TYPE		UTItype
83948fb7bfaSmrg #define FROM_SINT_C_TYPE	TItype
84048fb7bfaSmrg #define FROM_UINT_C_TYPE	UTItype
84148fb7bfaSmrg #define FROM_MODE_UNSIGNED	1
84248fb7bfaSmrg #define FROM_FIXED_SIZE		16	/* in bytes.  */
84348fb7bfaSmrg 
84448fb7bfaSmrg #endif
84548fb7bfaSmrg 
84648fb7bfaSmrg #if defined (TO_QI) && HAVE_QI == 1 && !defined (FROM_QI)
84748fb7bfaSmrg #define TO_TYPE			1	/* Signed integer.  */
84848fb7bfaSmrg #define TO_INT_C_TYPE		QItype
84948fb7bfaSmrg #define TO_SINT_C_TYPE		QItype
85048fb7bfaSmrg #define TO_UINT_C_TYPE		UQItype
85148fb7bfaSmrg #define TO_MODE_NAME_S		qi
85248fb7bfaSmrg 
85348fb7bfaSmrg #elif defined (TO_HI) && HAVE_HI == 1 && !defined (FROM_HI)
85448fb7bfaSmrg #define TO_TYPE			1	/* Signed integer.  */
85548fb7bfaSmrg #define TO_INT_C_TYPE		HItype
85648fb7bfaSmrg #define TO_SINT_C_TYPE		HItype
85748fb7bfaSmrg #define TO_UINT_C_TYPE		UHItype
85848fb7bfaSmrg #define TO_MODE_NAME_S		hi
85948fb7bfaSmrg 
86048fb7bfaSmrg #elif defined (TO_SI) && HAVE_SI == 1 && !defined (FROM_SI)
86148fb7bfaSmrg #define TO_TYPE			1	/* Signed integer.  */
86248fb7bfaSmrg #define TO_INT_C_TYPE		SItype
86348fb7bfaSmrg #define TO_SINT_C_TYPE		SItype
86448fb7bfaSmrg #define TO_UINT_C_TYPE		USItype
86548fb7bfaSmrg #define TO_MODE_NAME_S		si
86648fb7bfaSmrg 
86748fb7bfaSmrg #elif defined (TO_DI) && HAVE_DI == 1 && !defined (FROM_DI)
86848fb7bfaSmrg #define TO_TYPE			1	/* Signed integer.  */
86948fb7bfaSmrg #define TO_INT_C_TYPE		DItype
87048fb7bfaSmrg #define TO_SINT_C_TYPE		DItype
87148fb7bfaSmrg #define TO_UINT_C_TYPE		UDItype
87248fb7bfaSmrg #define TO_MODE_NAME_S		di
87348fb7bfaSmrg 
87448fb7bfaSmrg #elif defined (TO_TI) && HAVE_TI == 1 && !defined (FROM_TI)
87548fb7bfaSmrg #define TO_TYPE			1	/* Signed integer.  */
87648fb7bfaSmrg #define TO_INT_C_TYPE		TItype
87748fb7bfaSmrg #define TO_SINT_C_TYPE		TItype
87848fb7bfaSmrg #define TO_UINT_C_TYPE		UTItype
87948fb7bfaSmrg #define TO_MODE_NAME_S		ti
88048fb7bfaSmrg 
88148fb7bfaSmrg #elif defined (TO_UQI) && HAVE_UQI == 1 && !defined (FROM_UQI)
88248fb7bfaSmrg #define TO_TYPE			2	/* Unsigned integer.  */
88348fb7bfaSmrg #define TO_INT_C_TYPE		UQItype
88448fb7bfaSmrg #define TO_SINT_C_TYPE		QItype
88548fb7bfaSmrg #define TO_UINT_C_TYPE		UQItype
88648fb7bfaSmrg #define TO_MODE_NAME_S		qi
88748fb7bfaSmrg 
88848fb7bfaSmrg #elif defined (TO_UHI) && HAVE_UHI == 1 && !defined (FROM_UHI)
88948fb7bfaSmrg #define TO_TYPE			2	/* Unsigned integer.  */
89048fb7bfaSmrg #define TO_INT_C_TYPE		UHItype
89148fb7bfaSmrg #define TO_SINT_C_TYPE		HItype
89248fb7bfaSmrg #define TO_UINT_C_TYPE		UHItype
89348fb7bfaSmrg #define TO_MODE_NAME_S		hi
89448fb7bfaSmrg 
89548fb7bfaSmrg #elif defined (TO_USI) && HAVE_USI == 1 && !defined (FROM_USI)
89648fb7bfaSmrg #define TO_TYPE			2	/* Unsigned integer.  */
89748fb7bfaSmrg #define TO_INT_C_TYPE		USItype
89848fb7bfaSmrg #define TO_SINT_C_TYPE		SItype
89948fb7bfaSmrg #define TO_UINT_C_TYPE		USItype
90048fb7bfaSmrg #define TO_MODE_NAME_S		si
90148fb7bfaSmrg 
90248fb7bfaSmrg #elif defined (TO_UDI) && HAVE_UDI == 1 && !defined (FROM_UDI)
90348fb7bfaSmrg #define TO_TYPE			2	/* Unsigned integer.  */
90448fb7bfaSmrg #define TO_INT_C_TYPE		UDItype
90548fb7bfaSmrg #define TO_SINT_C_TYPE		DItype
90648fb7bfaSmrg #define TO_UINT_C_TYPE		UDItype
90748fb7bfaSmrg #define TO_MODE_NAME_S		di
90848fb7bfaSmrg 
90948fb7bfaSmrg #elif defined (TO_UTI) && HAVE_UTI == 1 && !defined (FROM_UTI)
91048fb7bfaSmrg #define TO_TYPE			2	/* Unsigned integer.  */
91148fb7bfaSmrg #define TO_INT_C_TYPE		UTItype
91248fb7bfaSmrg #define TO_SINT_C_TYPE		TItype
91348fb7bfaSmrg #define TO_UINT_C_TYPE		UTItype
91448fb7bfaSmrg #define TO_MODE_NAME_S		ti
91548fb7bfaSmrg 
91648fb7bfaSmrg #elif defined (TO_SF) && HAVE_SF == 1 && !defined (FROM_SF)
91748fb7bfaSmrg #define TO_TYPE			3	/* Floating-point.  */
91848fb7bfaSmrg #define TO_FLOAT_C_TYPE		SFtype
91948fb7bfaSmrg #define TO_MODE_NAME_S		sf
92048fb7bfaSmrg 
92148fb7bfaSmrg #elif defined (TO_DF) && HAVE_DF == 1 && !defined (FROM_DF)
92248fb7bfaSmrg #define TO_TYPE			3	/* Floating-point.  */
92348fb7bfaSmrg #define TO_FLOAT_C_TYPE		DFtype
92448fb7bfaSmrg #define TO_MODE_NAME_S		df
92548fb7bfaSmrg 
92648fb7bfaSmrg #elif defined (TO_QQ) && HAVE_QQ == 1 && !defined (FROM_QQ)
92748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
92848fb7bfaSmrg #define TO_MODE_NAME		QQ
92948fb7bfaSmrg #define TO_MODE_NAME_S		qq
93048fb7bfaSmrg #define TO_INT_C_TYPE		QItype
93148fb7bfaSmrg #define TO_SINT_C_TYPE		QItype
93248fb7bfaSmrg #define TO_UINT_C_TYPE		UQItype
93348fb7bfaSmrg #define TO_MODE_UNSIGNED	0
93448fb7bfaSmrg #define TO_FIXED_SIZE		1	/* in bytes.  */
93548fb7bfaSmrg 
93648fb7bfaSmrg #elif defined (TO_HQ) && HAVE_HQ == 1 && !defined (FROM_HQ)
93748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
93848fb7bfaSmrg #define TO_MODE_NAME		HQ
93948fb7bfaSmrg #define TO_MODE_NAME_S		hq
94048fb7bfaSmrg #define TO_INT_C_TYPE		HItype
94148fb7bfaSmrg #define TO_SINT_C_TYPE		HItype
94248fb7bfaSmrg #define TO_UINT_C_TYPE		UHItype
94348fb7bfaSmrg #define TO_MODE_UNSIGNED	0
94448fb7bfaSmrg #define TO_FIXED_SIZE		2	/* in bytes.  */
94548fb7bfaSmrg 
94648fb7bfaSmrg #elif defined (TO_SQ) && HAVE_SQ == 1 && !defined (FROM_SQ)
94748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
94848fb7bfaSmrg #define TO_MODE_NAME		SQ
94948fb7bfaSmrg #define TO_MODE_NAME_S		sq
95048fb7bfaSmrg #define TO_INT_C_TYPE		SItype
95148fb7bfaSmrg #define TO_SINT_C_TYPE		SItype
95248fb7bfaSmrg #define TO_UINT_C_TYPE		USItype
95348fb7bfaSmrg #define TO_MODE_UNSIGNED	0
95448fb7bfaSmrg #define TO_FIXED_SIZE		4	/* in bytes.  */
95548fb7bfaSmrg 
95648fb7bfaSmrg #elif defined (TO_DQ) && HAVE_DQ == 1 && !defined (FROM_DQ)
95748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
95848fb7bfaSmrg #define TO_MODE_NAME		DQ
95948fb7bfaSmrg #define TO_MODE_NAME_S		dq
96048fb7bfaSmrg #define TO_INT_C_TYPE		DItype
96148fb7bfaSmrg #define TO_SINT_C_TYPE		DItype
96248fb7bfaSmrg #define TO_UINT_C_TYPE		UDItype
96348fb7bfaSmrg #define TO_MODE_UNSIGNED	0
96448fb7bfaSmrg #define TO_FIXED_SIZE		8	/* in bytes.  */
96548fb7bfaSmrg 
96648fb7bfaSmrg #elif defined (TO_TQ) && HAVE_TQ == 1 && !defined (FROM_TQ)
96748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
96848fb7bfaSmrg #define TO_MODE_NAME		TQ
96948fb7bfaSmrg #define TO_MODE_NAME_S		tq
97048fb7bfaSmrg #define TO_INT_C_TYPE		TItype
97148fb7bfaSmrg #define TO_SINT_C_TYPE		TItype
97248fb7bfaSmrg #define TO_UINT_C_TYPE		UTItype
97348fb7bfaSmrg #define TO_MODE_UNSIGNED	0
97448fb7bfaSmrg #define TO_FIXED_SIZE		16	/* in bytes.  */
97548fb7bfaSmrg 
97648fb7bfaSmrg #elif defined (TO_UQQ) && HAVE_UQQ == 1 && !defined (FROM_UQQ)
97748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
97848fb7bfaSmrg #define TO_MODE_NAME		UQQ
97948fb7bfaSmrg #define TO_MODE_NAME_S		uqq
98048fb7bfaSmrg #define TO_INT_C_TYPE		UQItype
98148fb7bfaSmrg #define TO_SINT_C_TYPE		QItype
98248fb7bfaSmrg #define TO_UINT_C_TYPE		UQItype
98348fb7bfaSmrg #define TO_MODE_UNSIGNED	1
98448fb7bfaSmrg #define TO_FIXED_SIZE		1	/* in bytes.  */
98548fb7bfaSmrg 
98648fb7bfaSmrg #elif defined (TO_UHQ) && HAVE_UHQ == 1 && !defined (FROM_UHQ)
98748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
98848fb7bfaSmrg #define TO_MODE_NAME		UHQ
98948fb7bfaSmrg #define TO_MODE_NAME_S		uhq
99048fb7bfaSmrg #define TO_INT_C_TYPE		UHItype
99148fb7bfaSmrg #define TO_SINT_C_TYPE		HItype
99248fb7bfaSmrg #define TO_UINT_C_TYPE		UHItype
99348fb7bfaSmrg #define TO_MODE_UNSIGNED	1
99448fb7bfaSmrg #define TO_FIXED_SIZE		2	/* in bytes.  */
99548fb7bfaSmrg 
99648fb7bfaSmrg #elif defined (TO_USQ) && HAVE_USQ == 1 && !defined (FROM_USQ)
99748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
99848fb7bfaSmrg #define TO_MODE_NAME		USQ
99948fb7bfaSmrg #define TO_MODE_NAME_S		usq
100048fb7bfaSmrg #define TO_INT_C_TYPE		USItype
100148fb7bfaSmrg #define TO_SINT_C_TYPE		SItype
100248fb7bfaSmrg #define TO_UINT_C_TYPE		USItype
100348fb7bfaSmrg #define TO_MODE_UNSIGNED	1
100448fb7bfaSmrg #define TO_FIXED_SIZE		4	/* in bytes.  */
100548fb7bfaSmrg 
100648fb7bfaSmrg #elif defined (TO_UDQ) && HAVE_UDQ == 1 && !defined (FROM_UDQ)
100748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
100848fb7bfaSmrg #define TO_MODE_NAME		UDQ
100948fb7bfaSmrg #define TO_MODE_NAME_S		udq
101048fb7bfaSmrg #define TO_INT_C_TYPE		UDItype
101148fb7bfaSmrg #define TO_SINT_C_TYPE		DItype
101248fb7bfaSmrg #define TO_UINT_C_TYPE		UDItype
101348fb7bfaSmrg #define TO_MODE_UNSIGNED	1
101448fb7bfaSmrg #define TO_FIXED_SIZE		8	/* in bytes.  */
101548fb7bfaSmrg 
101648fb7bfaSmrg #elif defined (TO_UTQ) && HAVE_UTQ == 1 && !defined (FROM_UTQ)
101748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
101848fb7bfaSmrg #define TO_MODE_NAME		UTQ
101948fb7bfaSmrg #define TO_MODE_NAME_S		utq
102048fb7bfaSmrg #define TO_INT_C_TYPE		UTItype
102148fb7bfaSmrg #define TO_SINT_C_TYPE		TItype
102248fb7bfaSmrg #define TO_UINT_C_TYPE		UTItype
102348fb7bfaSmrg #define TO_MODE_UNSIGNED	1
102448fb7bfaSmrg #define TO_FIXED_SIZE		16	/* in bytes.  */
102548fb7bfaSmrg 
102648fb7bfaSmrg #elif defined (TO_HA) && HAVE_HA == 1 && !defined (FROM_HA)
102748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
102848fb7bfaSmrg #define TO_MODE_NAME		HA
102948fb7bfaSmrg #define TO_MODE_NAME_S		ha
103048fb7bfaSmrg #define TO_INT_C_TYPE		HItype
103148fb7bfaSmrg #define TO_SINT_C_TYPE		HItype
103248fb7bfaSmrg #define TO_UINT_C_TYPE		UHItype
103348fb7bfaSmrg #define TO_MODE_UNSIGNED	0
103448fb7bfaSmrg #define TO_FIXED_SIZE		2	/* in bytes.  */
103548fb7bfaSmrg 
103648fb7bfaSmrg #elif defined (TO_SA) && HAVE_SA == 1 && !defined (FROM_SA)
103748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
103848fb7bfaSmrg #define TO_MODE_NAME		SA
103948fb7bfaSmrg #define TO_MODE_NAME_S		sa
104048fb7bfaSmrg #define TO_INT_C_TYPE		SItype
104148fb7bfaSmrg #define TO_SINT_C_TYPE		SItype
104248fb7bfaSmrg #define TO_UINT_C_TYPE		USItype
104348fb7bfaSmrg #define TO_MODE_UNSIGNED	0
104448fb7bfaSmrg #define TO_FIXED_SIZE		4	/* in bytes.  */
104548fb7bfaSmrg 
104648fb7bfaSmrg #elif defined (TO_DA) && HAVE_DA == 1 && !defined (FROM_DA)
104748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
104848fb7bfaSmrg #define TO_MODE_NAME		DA
104948fb7bfaSmrg #define TO_MODE_NAME_S		da
105048fb7bfaSmrg #define TO_INT_C_TYPE		DItype
105148fb7bfaSmrg #define TO_SINT_C_TYPE		DItype
105248fb7bfaSmrg #define TO_UINT_C_TYPE		UDItype
105348fb7bfaSmrg #define TO_MODE_UNSIGNED	0
105448fb7bfaSmrg #define TO_FIXED_SIZE		8	/* in bytes.  */
105548fb7bfaSmrg 
105648fb7bfaSmrg #elif defined (TO_TA) && HAVE_TA == 1 && !defined (FROM_TA)
105748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
105848fb7bfaSmrg #define TO_MODE_NAME		TA
105948fb7bfaSmrg #define TO_MODE_NAME_S		ta
106048fb7bfaSmrg #define TO_INT_C_TYPE		TItype
106148fb7bfaSmrg #define TO_SINT_C_TYPE		TItype
106248fb7bfaSmrg #define TO_UINT_C_TYPE		UTItype
106348fb7bfaSmrg #define TO_MODE_UNSIGNED	0
106448fb7bfaSmrg #define TO_FIXED_SIZE		16	/* in bytes.  */
106548fb7bfaSmrg 
106648fb7bfaSmrg #elif defined (TO_UHA) && HAVE_UHA == 1 && !defined (FROM_UHA)
106748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
106848fb7bfaSmrg #define TO_MODE_NAME		UHA
106948fb7bfaSmrg #define TO_MODE_NAME_S		uha
107048fb7bfaSmrg #define TO_INT_C_TYPE		UHItype
107148fb7bfaSmrg #define TO_SINT_C_TYPE		HItype
107248fb7bfaSmrg #define TO_UINT_C_TYPE		UHItype
107348fb7bfaSmrg #define TO_MODE_UNSIGNED	1
107448fb7bfaSmrg #define TO_FIXED_SIZE		2	/* in bytes.  */
107548fb7bfaSmrg 
107648fb7bfaSmrg #elif defined (TO_USA) && HAVE_USA == 1 && !defined (FROM_USA)
107748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
107848fb7bfaSmrg #define TO_MODE_NAME		USA
107948fb7bfaSmrg #define TO_MODE_NAME_S		usa
108048fb7bfaSmrg #define TO_INT_C_TYPE		USItype
108148fb7bfaSmrg #define TO_SINT_C_TYPE		SItype
108248fb7bfaSmrg #define TO_UINT_C_TYPE		USItype
108348fb7bfaSmrg #define TO_MODE_UNSIGNED	1
108448fb7bfaSmrg #define TO_FIXED_SIZE		4	/* in bytes.  */
108548fb7bfaSmrg 
108648fb7bfaSmrg #elif defined (TO_UDA) && HAVE_UDA == 1 && !defined (FROM_UDA)
108748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
108848fb7bfaSmrg #define TO_MODE_NAME		UDA
108948fb7bfaSmrg #define TO_MODE_NAME_S		uda
109048fb7bfaSmrg #define TO_INT_C_TYPE		UDItype
109148fb7bfaSmrg #define TO_SINT_C_TYPE		DItype
109248fb7bfaSmrg #define TO_UINT_C_TYPE		UDItype
109348fb7bfaSmrg #define TO_MODE_UNSIGNED	1
109448fb7bfaSmrg #define TO_FIXED_SIZE		8	/* in bytes.  */
109548fb7bfaSmrg 
109648fb7bfaSmrg #elif defined (TO_UTA) && HAVE_UTA == 1 && !defined (FROM_UTA)
109748fb7bfaSmrg #define TO_TYPE			4	/* Fixed-point.  */
109848fb7bfaSmrg #define TO_MODE_NAME		UTA
109948fb7bfaSmrg #define TO_MODE_NAME_S		uta
110048fb7bfaSmrg #define TO_INT_C_TYPE		UTItype
110148fb7bfaSmrg #define TO_SINT_C_TYPE		TItype
110248fb7bfaSmrg #define TO_UINT_C_TYPE		UTItype
110348fb7bfaSmrg #define TO_MODE_UNSIGNED	1
110448fb7bfaSmrg #define TO_FIXED_SIZE		16	/* in bytes.  */
110548fb7bfaSmrg 
110648fb7bfaSmrg #endif
110748fb7bfaSmrg 
110848fb7bfaSmrg #if defined (FROM_MODE_NAME_S) && defined (TO_MODE_NAME_S)
110948fb7bfaSmrg 
111048fb7bfaSmrg #if FROM_TYPE == 1	/* Signed integer.  */
1111f9a78e0eSmrg #define FROM_INT_WIDTH		(FROM_INT_SIZE * __CHAR_BIT__)
111248fb7bfaSmrg #endif
111348fb7bfaSmrg 
111448fb7bfaSmrg #if FROM_TYPE == 2	/* Unsigned integer.  */
1115f9a78e0eSmrg #define FROM_INT_WIDTH		(FROM_INT_SIZE * __CHAR_BIT__)
111648fb7bfaSmrg #endif
111748fb7bfaSmrg 
111848fb7bfaSmrg #if FROM_TYPE == 4	/* Fixed-point.  */
111948fb7bfaSmrg #define FROM_FIXED_C_TYPE	FIXED_C_TYPE2(FROM_MODE_NAME)
112048fb7bfaSmrg #define FROM_FBITS		FBITS2(FROM_MODE_NAME)
1121f9a78e0eSmrg #define FROM_FIXED_WIDTH	(FROM_FIXED_SIZE * __CHAR_BIT__)
112248fb7bfaSmrg #define FROM_FBITS		FBITS2(FROM_MODE_NAME)
112348fb7bfaSmrg #define FROM_IBITS		IBITS2(FROM_MODE_NAME)
112448fb7bfaSmrg #define FROM_I_F_BITS		(FROM_FBITS + FROM_IBITS)
112548fb7bfaSmrg 
112648fb7bfaSmrg #if FROM_MODE_UNSIGNED == 0 /* Signed types.  */
112748fb7bfaSmrg #define FROM_PADDING_BITS	(FROM_FIXED_WIDTH - 1 - FROM_I_F_BITS)
112848fb7bfaSmrg #define FROM_NONPADDING_BITS	(1 + FROM_I_F_BITS)
112948fb7bfaSmrg #else /* Unsigned types.  */
113048fb7bfaSmrg #define FROM_PADDING_BITS	(FROM_FIXED_WIDTH - FROM_I_F_BITS)
113148fb7bfaSmrg #define FROM_NONPADDING_BITS	(FROM_I_F_BITS)
113248fb7bfaSmrg #endif
113348fb7bfaSmrg #define FROM_HAVE_PADDING_BITS	(FROM_PADDING_BITS > 0)
113448fb7bfaSmrg #endif /* FROM_TYPE == 4  */
113548fb7bfaSmrg 
113648fb7bfaSmrg #if TO_TYPE == 4	/* Fixed-point.  */
113748fb7bfaSmrg #define TO_FIXED_C_TYPE		FIXED_C_TYPE2(TO_MODE_NAME)
113848fb7bfaSmrg #define TO_FBITS		FBITS2(TO_MODE_NAME)
1139f9a78e0eSmrg #define TO_FIXED_WIDTH		(TO_FIXED_SIZE * __CHAR_BIT__)
114048fb7bfaSmrg #define TO_FBITS		FBITS2(TO_MODE_NAME)
114148fb7bfaSmrg #define TO_IBITS		IBITS2(TO_MODE_NAME)
114248fb7bfaSmrg #define TO_I_F_BITS		(TO_FBITS + TO_IBITS)
114348fb7bfaSmrg 
114448fb7bfaSmrg #if TO_MODE_UNSIGNED == 0 /* Signed types.  */
114548fb7bfaSmrg #define TO_PADDING_BITS		(TO_FIXED_WIDTH - 1 - TO_I_F_BITS)
114648fb7bfaSmrg #define TO_NONPADDING_BITS	(1 + TO_I_F_BITS)
114748fb7bfaSmrg #else /* Unsigned types.  */
114848fb7bfaSmrg #define TO_PADDING_BITS		(TO_FIXED_WIDTH - TO_I_F_BITS)
114948fb7bfaSmrg #define TO_NONPADDING_BITS	(TO_I_F_BITS)
115048fb7bfaSmrg #endif
115148fb7bfaSmrg #define TO_HAVE_PADDING_BITS	(TO_PADDING_BITS > 0)
115248fb7bfaSmrg #endif /* TO_TYPE == 4  */
115348fb7bfaSmrg 
115448fb7bfaSmrg #ifdef LIBGCC2_FIXEDBIT_GNU_PREFIX
115548fb7bfaSmrg #define FIXED_CONVERT_OP(OP,FROM,TO)	__gnu_ ## OP ## FROM ## TO
115648fb7bfaSmrg #define FIXED_CONVERT_OP2(OP,FROM,TO)	__gnu_ ## OP ## FROM ## TO ## 2
115748fb7bfaSmrg #else
115848fb7bfaSmrg #define FIXED_CONVERT_OP(OP,FROM,TO)	__ ## OP ## FROM ## TO
115948fb7bfaSmrg #define FIXED_CONVERT_OP2(OP,FROM,TO)	__ ## OP ## FROM ## TO ## 2
116048fb7bfaSmrg #endif
116148fb7bfaSmrg #define FRACT_TEMP(N1,N2)		FIXED_CONVERT_OP(fract,N1,N2)
116248fb7bfaSmrg #define FRACT2_TEMP(N1,N2)		FIXED_CONVERT_OP2(fract,N1,N2)
116348fb7bfaSmrg #define SATFRACT_TEMP(N1,N2)		FIXED_CONVERT_OP(satfract,N1,N2)
116448fb7bfaSmrg #define SATFRACT2_TEMP(N1,N2)		FIXED_CONVERT_OP2(satfract,N1,N2)
116548fb7bfaSmrg #define FRACTUNS_TEMP(N1,N2)		FIXED_CONVERT_OP(fractuns,N1,N2)
116648fb7bfaSmrg #define SATFRACTUNS_TEMP(N1,N2)		FIXED_CONVERT_OP(satfractuns,N1,N2)
116748fb7bfaSmrg 
116848fb7bfaSmrg /* Define conversions from fixed-point to fixed-point.  */
116948fb7bfaSmrg #if FROM_TYPE == 4 && TO_TYPE == 4
117048fb7bfaSmrg 
117148fb7bfaSmrg #if FROM_FIXED_SIZE > TO_FIXED_SIZE
117248fb7bfaSmrg #define BIG_SINT_C_TYPE	FROM_SINT_C_TYPE
117348fb7bfaSmrg #define BIG_UINT_C_TYPE	FROM_UINT_C_TYPE
117448fb7bfaSmrg #define BIG_WIDTH	FROM_FIXED_WIDTH
117548fb7bfaSmrg #else
117648fb7bfaSmrg #define BIG_SINT_C_TYPE	TO_SINT_C_TYPE
117748fb7bfaSmrg #define BIG_UINT_C_TYPE	TO_UINT_C_TYPE
117848fb7bfaSmrg #define BIG_WIDTH	TO_FIXED_WIDTH
117948fb7bfaSmrg #endif
118048fb7bfaSmrg 
118148fb7bfaSmrg /* Check if FROM* and TO* are in the same machine class.  */
118248fb7bfaSmrg #if ((FROM_MODE_UNSIGNED == TO_MODE_UNSIGNED) \
118348fb7bfaSmrg      && ((FROM_IBITS == 0) == (TO_IBITS == 0)))
118448fb7bfaSmrg /* Same modes: append '2' to conversion function names */
118548fb7bfaSmrg #define FRACT		FRACT2_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
118648fb7bfaSmrg #define SATFRACT	SATFRACT2_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
118748fb7bfaSmrg #else
118848fb7bfaSmrg /* Different modes: don't append '2' to conversion function names */
118948fb7bfaSmrg #define FRACT		FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
119048fb7bfaSmrg #define SATFRACT	SATFRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
119148fb7bfaSmrg #endif
119248fb7bfaSmrg 
119348fb7bfaSmrg extern TO_FIXED_C_TYPE FRACT (FROM_FIXED_C_TYPE);
119448fb7bfaSmrg extern TO_FIXED_C_TYPE SATFRACT (FROM_FIXED_C_TYPE);
119548fb7bfaSmrg #endif /* FROM_TYPE == 4 && TO_TYPE == 4  */
119648fb7bfaSmrg 
119748fb7bfaSmrg /* Define conversions from fixed-point to signed integer.  */
119848fb7bfaSmrg #if FROM_TYPE == 4 && TO_TYPE == 1
119948fb7bfaSmrg #define FRACT		FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
120048fb7bfaSmrg extern TO_INT_C_TYPE	FRACT (FROM_FIXED_C_TYPE);
120148fb7bfaSmrg #endif /* FROM_TYPE == 4 && TO_TYPE == 1  */
120248fb7bfaSmrg 
120348fb7bfaSmrg /* Define conversions from fixed-point to unsigned integer.  */
120448fb7bfaSmrg #if FROM_TYPE == 4 && TO_TYPE == 2
120548fb7bfaSmrg #define FRACTUNS	FRACTUNS_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
120648fb7bfaSmrg extern TO_INT_C_TYPE 	FRACTUNS (FROM_FIXED_C_TYPE);
120748fb7bfaSmrg #endif /* FROM_TYPE == 4 && TO_TYPE == 2  */
120848fb7bfaSmrg 
120948fb7bfaSmrg /* Define conversions from fixed-point to floating-point.  */
121048fb7bfaSmrg #if FROM_TYPE == 4 && TO_TYPE == 3
121148fb7bfaSmrg #define BASE1(NUM)	0x1.0p ## NUM
121248fb7bfaSmrg #define BASE2(NUM)	BASE1(NUM)
121348fb7bfaSmrg #define BASE		BASE2(FROM_FBITS)
121448fb7bfaSmrg #define FRACT		FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
121548fb7bfaSmrg extern TO_FLOAT_C_TYPE	FRACT (FROM_FIXED_C_TYPE);
121648fb7bfaSmrg #endif /* FROM_TYPE == 4 && TO_TYPE == 3  */
121748fb7bfaSmrg 
121848fb7bfaSmrg /* Define conversions from signed integer to fixed-point.  */
121948fb7bfaSmrg #if FROM_TYPE == 1 && TO_TYPE == 4
122048fb7bfaSmrg 
122148fb7bfaSmrg #if FROM_INT_SIZE > TO_FIXED_SIZE
122248fb7bfaSmrg #define BIG_SINT_C_TYPE	FROM_SINT_C_TYPE
122348fb7bfaSmrg #define BIG_UINT_C_TYPE	FROM_UINT_C_TYPE
122448fb7bfaSmrg #define BIG_WIDTH	FROM_INT_WIDTH
122548fb7bfaSmrg #else
122648fb7bfaSmrg #define BIG_SINT_C_TYPE	TO_SINT_C_TYPE
122748fb7bfaSmrg #define BIG_UINT_C_TYPE	TO_UINT_C_TYPE
122848fb7bfaSmrg #define BIG_WIDTH	TO_FIXED_WIDTH
122948fb7bfaSmrg #endif
123048fb7bfaSmrg 
123148fb7bfaSmrg #define FRACT		FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
123248fb7bfaSmrg #define SATFRACT	SATFRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
123348fb7bfaSmrg extern TO_FIXED_C_TYPE	FRACT (FROM_INT_C_TYPE);
123448fb7bfaSmrg extern TO_FIXED_C_TYPE	SATFRACT (FROM_INT_C_TYPE);
123548fb7bfaSmrg #endif /* FROM_TYPE == 1 && TO_TYPE == 4  */
123648fb7bfaSmrg 
123748fb7bfaSmrg /* Define conversions from unsigned integer to fixed-point.  */
123848fb7bfaSmrg #if FROM_TYPE == 2 && TO_TYPE == 4
123948fb7bfaSmrg 
124048fb7bfaSmrg #if FROM_INT_SIZE > TO_FIXED_SIZE
124148fb7bfaSmrg #define BIG_SINT_C_TYPE	FROM_SINT_C_TYPE
124248fb7bfaSmrg #define BIG_UINT_C_TYPE	FROM_UINT_C_TYPE
124348fb7bfaSmrg #define BIG_WIDTH	FROM_INT_WIDTH
124448fb7bfaSmrg #else
124548fb7bfaSmrg #define BIG_SINT_C_TYPE	TO_SINT_C_TYPE
124648fb7bfaSmrg #define BIG_UINT_C_TYPE	TO_UINT_C_TYPE
124748fb7bfaSmrg #define BIG_WIDTH	TO_FIXED_WIDTH
124848fb7bfaSmrg #endif
124948fb7bfaSmrg 
125048fb7bfaSmrg #define FRACTUNS	FRACTUNS_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
125148fb7bfaSmrg #define SATFRACTUNS	SATFRACTUNS_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
125248fb7bfaSmrg extern TO_FIXED_C_TYPE	FRACTUNS (FROM_INT_C_TYPE);
125348fb7bfaSmrg extern TO_FIXED_C_TYPE	SATFRACTUNS (FROM_INT_C_TYPE);
125448fb7bfaSmrg #endif /* FROM_TYPE == 2 && TO_TYPE == 4  */
125548fb7bfaSmrg 
125648fb7bfaSmrg /* Define conversions from floating-point to fixed-point.  */
125748fb7bfaSmrg #if FROM_TYPE == 3 && TO_TYPE == 4
125848fb7bfaSmrg 
125948fb7bfaSmrg #define BASE1(NUM)	(0x1.0p ## NUM)
126048fb7bfaSmrg #define BASE2(NUM)	BASE1(NUM)
126148fb7bfaSmrg #define BASE		BASE2(TO_FBITS)
126248fb7bfaSmrg 
126348fb7bfaSmrg #define FIXED_MAX1(NUM1,NUM2)	(0x1.0p ## NUM1 - 0x1.0p- ## NUM2)
126448fb7bfaSmrg #define FIXED_MAX2(NUM1,NUM2)	FIXED_MAX1(NUM1,NUM2)
126548fb7bfaSmrg #define FIXED_MAX	FIXED_MAX2(TO_IBITS,TO_FBITS)
126648fb7bfaSmrg 
126748fb7bfaSmrg #define FIXED_MIN1(NUM)	(-0x1.0p ## NUM)
126848fb7bfaSmrg #define FIXED_MIN2(NUM)	FIXED_MIN1(NUM)
126948fb7bfaSmrg #if TO_MODE_UNSIGNED == 0
127048fb7bfaSmrg #define FIXED_MIN	FIXED_MIN2(TO_IBITS)
127148fb7bfaSmrg #else
127248fb7bfaSmrg #define FIXED_MIN	0.0
127348fb7bfaSmrg #endif
127448fb7bfaSmrg 
127548fb7bfaSmrg #define FRACT		FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
127648fb7bfaSmrg #define SATFRACT	SATFRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
127748fb7bfaSmrg extern TO_FIXED_C_TYPE	FRACT (FROM_FLOAT_C_TYPE);
127848fb7bfaSmrg extern TO_FIXED_C_TYPE	SATFRACT (FROM_FLOAT_C_TYPE);
127948fb7bfaSmrg #endif /* FROM_TYPE == 3 && TO_TYPE == 4  */
128048fb7bfaSmrg 
128148fb7bfaSmrg #endif /* defined (FROM_MODE_NAME_S) && defined (TO_MODE_NAME_S)  */
128248fb7bfaSmrg 
128348fb7bfaSmrg #endif  /* _FIXED_BIT_H */
1284