summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/fixed-point/allconv.c
blob: e0440dac254c2e350d11d130d207951edf7b083e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/* { dg-do compile } */
/* { dg-options "-std=gnu99" } */

/* C99 6.3 Conversions.

   Check if all conversions are ok.  */

#define CONV(TYPE, NAME) \
        float NAME ## _to_SF (TYPE a) { return a; } \
        float Sat ## NAME ## _to_SF (_Sat TYPE a) { return a; } \
        double NAME ## _to_DF (TYPE a) { return a; } \
        double Sat ## NAME ## _to_DF (_Sat TYPE a) { return a; } \
        TYPE SF_to_ ## NAME (float a) { return a; } \
        _Sat TYPE SF_to_Sat ## NAME (float a) { return a; } \
        TYPE DF_to_ ## NAME (double a) { return a; } \
        _Sat TYPE DF_to_Sat ## NAME (double a) { return a; } \
        signed char NAME ## _to_schar (TYPE a) { return a; } \
        signed char Sat ## NAME ## _to_schar (_Sat TYPE a) { return a; } \
        unsigned char NAME ## _to_uchar (TYPE a) { return a; } \
        unsigned char Sat ## NAME ## _to_uchar (_Sat TYPE a) { return a; } \
        short NAME ## _to_short (TYPE a) { return a; } \
        short _Sat ## NAME ## _to_short (_Sat TYPE a) { return a; } \
        unsigned short NAME ## _to_ushort (TYPE a) { return a; } \
        unsigned short _Sat ## NAME ## _to_ushort (_Sat TYPE a) { return a; } \
        int NAME ## _to_int (TYPE a) { return a; } \
        int _Sat ## NAME ## _to_int (_Sat TYPE a) { return a; } \
        unsigned int NAME ## _to_uint (TYPE a) { return a; } \
        unsigned int _Sat ## NAME ## _to_uint (_Sat TYPE a) { return a; } \
        long NAME ## _to_long (TYPE a) { return a; } \
        unsigned long NAME ## _to_ulong (TYPE a) { return a; } \
        long _Sat ## NAME ## _to_long (TYPE a) { return a; } \
        unsigned long _Sat ## NAME ## _to_ulong (TYPE a) { return a; } \
        long long NAME ## _to_longlong (TYPE a) { return a; } \
        long long _Sat ## NAME ## _to_longlong (TYPE a) { return a; } \
        unsigned long long NAME ## _to_ulonglong (TYPE a) { return a; } \
        unsigned long long _Sat ## NAME ## _to_ulonglong (TYPE a) { return a; } \
        TYPE schar_to_ ## NAME (signed char a) { return a; } \
        _Sat TYPE schar_to_Sat ## NAME (signed char a) { return a; } \
        TYPE uchar_to_ ## NAME (unsigned char a) { return a; } \
        _Sat TYPE uchar_to_Sat ## NAME (unsigned char a) { return a; } \
        TYPE short_to_ ## NAME (short a) { return a; } \
        TYPE ushort_to_ ## NAME (unsigned short a) { return a; } \
        TYPE int_to_ ## NAME (int a) { return a; } \
        TYPE uint_to_ ## NAME (unsigned int a) { return a; } \
        TYPE long_to_ ## NAME (long a) { return a; } \
        TYPE ulong_to_ ## NAME (unsigned long a) { return a; } \
        TYPE longlong_to_ ## NAME (long long a) { return a; } \
        TYPE ulonglong_to_ ## NAME (unsigned long long a) { return a; } \
        _Sat TYPE short_to_Sat ## NAME (short a) { return a; } \
        _Sat TYPE ushort_to_Sat ## NAME (unsigned short a) { return a; } \
        _Sat TYPE int_to_Sat ## NAME (int a) { return a; } \
        _Sat TYPE uint_to_Sat ## NAME (unsigned int a) { return a; } \
        _Sat TYPE long_to_Sat ## NAME (long a) { return a; } \
        _Sat TYPE ulong_to_Sat ## NAME (unsigned long a) { return a; } \
        _Sat TYPE longlong_to_Sat ## NAME (long long a) { return a; } \
        _Sat TYPE ulonglong_to_Sat ## NAME (unsigned long long a) { return a; } \
	TYPE SFR_to ## NAME (short _Fract a) { return a; } \
	TYPE FR_to ## NAME (_Fract a) { return a; } \
	TYPE LFR_to ## NAME (long _Fract a) { return a; } \
	TYPE LLFR_to ## NAME (long long _Fract a) { return a; } \
	TYPE USFR_to ## NAME (unsigned short _Fract a) { return a; } \
	TYPE UFR_to ## NAME (unsigned _Fract a) { return a; } \
	TYPE ULFR_to ## NAME (unsigned long _Fract a) { return a; } \
	TYPE ULLFR_to ## NAME (unsigned long long _Fract a) { return a; } \
	TYPE SAC_to ## NAME (short _Accum a) { return a; } \
	TYPE AC_to ## NAME (_Accum a) { return a; } \
	TYPE LAC_to ## NAME (long _Accum a) { return a; } \
	TYPE LLAC_to ## NAME (long long _Accum a) { return a; } \
	TYPE USAC_to ## NAME (unsigned short _Accum a) { return a; } \
	TYPE UAC_to ## NAME (unsigned _Accum a) { return a; } \
	TYPE ULAC_to ## NAME (unsigned long _Accum a) { return a; } \
	TYPE ULLAC_to ## NAME (unsigned long long _Accum a) { return a; } \
	TYPE SATSFR_to ## NAME (_Sat short _Fract a) { return a; } \
	TYPE SATFR_to ## NAME (_Sat _Fract a) { return a; } \
	TYPE SATLFR_to ## NAME (_Sat long _Fract a) { return a; } \
	TYPE SATLLFR_to ## NAME (_Sat long long _Fract a) { return a; } \
	TYPE SATUSFR_to ## NAME (_Sat unsigned short _Fract a) { return a; } \
	TYPE SATUFR_to ## NAME (_Sat unsigned _Fract a) { return a; } \
	TYPE SATULFR_to ## NAME (_Sat unsigned long _Fract a) { return a; } \
	TYPE SATULLFR_to ## NAME (_Sat unsigned long long _Fract a) { return a; } \
	TYPE SATSAC_to ## NAME (_Sat short _Accum a) { return a; } \
	TYPE SATAC_to ## NAME (_Sat _Accum a) { return a; } \
	TYPE SATLAC_to ## NAME (_Sat long _Accum a) { return a; } \
	TYPE SATLLAC_to ## NAME (_Sat long long _Accum a) { return a; } \
	TYPE SATUSAC_to ## NAME (_Sat unsigned short _Accum a) { return a; } \
	TYPE SATUAC_to ## NAME (_Sat unsigned _Accum a) { return a; } \
	TYPE SATULAC_to ## NAME (_Sat unsigned long _Accum a) { return a; } \
	TYPE SATULLAC_to ## NAME (_Sat unsigned long long _Accum a) { return a; } \
	_Sat TYPE SFR_to_SAT ## NAME (short _Fract a) { return a; } \
	_Sat TYPE FR_to_SAT ## NAME (_Fract a) { return a; } \
	_Sat TYPE LFR_to_SAT ## NAME (long _Fract a) { return a; } \
	_Sat TYPE LLFR_to_SAT ## NAME (long long _Fract a) { return a; } \
	_Sat TYPE USFR_to_SAT ## NAME (unsigned short _Fract a) { return a; } \
	_Sat TYPE UFR_to_SAT ## NAME (unsigned _Fract a) { return a; } \
	_Sat TYPE ULFR_to_SAT ## NAME (unsigned long _Fract a) { return a; } \
	_Sat TYPE ULLFR_to_SAT ## NAME (unsigned long long _Fract a) { return a; } \
	_Sat TYPE SAC_to_SAT ## NAME (short _Accum a) { return a; } \
	_Sat TYPE AC_to_SAT ## NAME (_Accum a) { return a; } \
	_Sat TYPE LAC_to_SAT ## NAME (long _Accum a) { return a; } \
	_Sat TYPE LLAC_to_SAT ## NAME (long long _Accum a) { return a; } \
	_Sat TYPE USAC_to_SAT ## NAME (unsigned short _Accum a) { return a; } \
	_Sat TYPE UAC_to_SAT ## NAME (unsigned _Accum a) { return a; } \
	_Sat TYPE ULAC_to_SAT ## NAME (unsigned long _Accum a) { return a; } \
	_Sat TYPE ULLAC_to_SAT ## NAME (unsigned long long _Accum a) { return a; } \
	_Sat TYPE SATSFR_to_SAT ## NAME (_Sat short _Fract a) { return a; } \
	_Sat TYPE SATFR_to_SAT ## NAME (_Sat _Fract a) { return a; } \
	_Sat TYPE SATLFR_to_SAT ## NAME (_Sat long _Fract a) { return a; } \
	_Sat TYPE SATLLFR_to_SAT ## NAME (_Sat long long _Fract a) { return a; } \
	_Sat TYPE SATUSFR_to_SAT ## NAME (_Sat unsigned short _Fract a) { return a; } \
	_Sat TYPE SATUFR_to_SAT ## NAME (_Sat unsigned _Fract a) { return a; } \
	_Sat TYPE SATULFR_to_SAT ## NAME (_Sat unsigned long _Fract a) { return a; } \
	_Sat TYPE SATULLFR_to_SAT ## NAME (_Sat unsigned long long _Fract a) { return a; } \
	_Sat TYPE SATSAC_to_SAT ## NAME (_Sat short _Accum a) { return a; } \
	_Sat TYPE SATAC_to_SAT ## NAME (_Sat _Accum a) { return a; } \
	_Sat TYPE SATLAC_to_SAT ## NAME (_Sat long _Accum a) { return a; } \
	_Sat TYPE SATLLAC_to_SAT ## NAME (_Sat long long _Accum a) { return a; } \
	_Sat TYPE SATUSAC_to_SAT ## NAME (_Sat unsigned short _Accum a) { return a; } \
	_Sat TYPE SATUAC_to_SAT ## NAME (_Sat unsigned _Accum a) { return a; } \
	_Sat TYPE SATULAC_to_SAT ## NAME (_Sat unsigned long _Accum a) { return a; } \
	_Sat TYPE SATULLAC_to_SAT ## NAME (_Sat unsigned long long _Accum a) { return a; } \
	_Complex int NAME ## _to_CI (TYPE a) { return a; } \
	_Complex unsigned int NAME ## _to_CUI (TYPE a) { return a; } \
	_Complex float NAME ## _to_CF (TYPE a) { return a; } \
	_Complex double NAME ## _to_CD (TYPE a) { return a; } \
	TYPE CI_to_ ## NAME (_Complex int a) { return a; } \
	TYPE CUI_to_ ## NAME (_Complex unsigned int a) { return a; } \
	TYPE CF_to_ ## NAME (_Complex float a) { return a; } \
	TYPE CD_to_ ## NAME (_Complex double a) { return a; } \
	_Sat TYPE CI_to_SAT ## NAME (_Complex int a) { return a; } \
	_Sat TYPE CUI_to_SAT ## NAME (_Complex unsigned int a) { return a; } \
	_Sat TYPE CF_to_SAT ## NAME (_Complex float a) { return a; } \
	_Sat TYPE CD_to_SAT ## NAME (_Complex double a) { return a; }

CONV(short _Fract, sf);
CONV(_Fract, f);
CONV(long _Fract, lf);
CONV(long long _Fract, llf);
CONV(unsigned short _Fract, usf);
CONV(unsigned _Fract, uf);
CONV(unsigned long _Fract, ulf);
CONV(unsigned long long _Fract, ullf);

CONV(short _Accum, sk);
CONV(_Accum, k);
CONV(long _Accum, lk);
CONV(long long _Accum, llk);
CONV(unsigned short _Accum, usk);
CONV(unsigned _Accum, uk);
CONV(unsigned long _Accum, ulk);
CONV(unsigned long long _Accum, ullk);