OSDN Git Service

Add testcase from PR43065.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / fixed-point / allop-const.c
1 /* { dg-do compile } */
2 /* { dg-options "-std=gnu99" } */
3
4 /* N1169 6.5.7 - Bitwise shift operands.
5    C99 6.5.3 Unary operators.
6    C99 6.5.5 Multiplicative operators.
7    C99 6.5.6 Additive operators.
8    C99 6.5.7 Bitwise shift operators.
9    C99 6.5.8 Relational operators.
10    C99 6.5.9 Equality operators.
11    C99 6.5.16 Assignment operators.
12
13    Check if all operations on constants are ok.  */
14
15 #define ALLOPCONST(TYPE,NAME,POSTFIX) \
16         TYPE NAME ## plus = +0.1 ## POSTFIX; \
17         unsigned TYPE NAME ## u_plus = +0.1u ## POSTFIX; \
18         _Sat TYPE NAME ## sat_plus = +(_Sat TYPE)0.1 ## POSTFIX; \
19         _Sat unsigned TYPE NAME ## sat_u_plus = +(_Sat unsigned TYPE)0.1u ## POSTFIX; \
20         TYPE NAME ## neg = -0.1 ## POSTFIX; \
21         _Sat TYPE NAME ## sat_neg = -(_Sat TYPE)0.1 ## POSTFIX; \
22         _Sat unsigned TYPE NAME ## sat_u_neg = -(_Sat unsigned TYPE)0.1u ## POSTFIX; \
23         int NAME ## logneg1 = !0.1 ## POSTFIX; \
24         int NAME ## logneg1u = !0.1u ## POSTFIX; \
25         int NAME ## logneg2 = !0.0 ## POSTFIX; \
26         int NAME ## logneg2u = !0.0u ## POSTFIX; \
27         TYPE NAME ## add = 0.1 ## POSTFIX + 0.2 ## POSTFIX; \
28         unsigned TYPE NAME ## u_add = 0.1u ## POSTFIX + 0.2u ## POSTFIX; \
29         _Sat TYPE NAME ## sat_add = (_Sat TYPE)0.8 ## POSTFIX + 0.3 ## POSTFIX; \
30         _Sat unsigned TYPE NAME ## sat_u_add = (_Sat unsigned TYPE)0.8u ## POSTFIX + 0.3u ## POSTFIX; \
31         TYPE NAME ## sub = 0.1 ## POSTFIX - 0.2 ## POSTFIX; \
32         unsigned TYPE NAME ## u_sub = 0.2u ## POSTFIX - 0.1u ## POSTFIX; \
33         _Sat TYPE NAME ## sat_sub = (_Sat TYPE)0.1 ## POSTFIX - 0.2 ## POSTFIX; \
34         _Sat unsigned TYPE NAME ## sat_u_sub = (_Sat unsigned TYPE)0.1u ## POSTFIX - 0.2u ## POSTFIX; \
35         TYPE NAME ## mul = 0.1 ## POSTFIX * 0.2 ## POSTFIX; \
36         unsigned TYPE NAME ## u_mul = 0.1u ## POSTFIX * 0.2u ## POSTFIX; \
37         _Sat TYPE NAME ## sat_mul = (_Sat TYPE)0.1 ## POSTFIX * 0.2 ## POSTFIX; \
38         _Sat unsigned TYPE NAME ## sat_u_mul = (_Sat unsigned TYPE)0.1u ## POSTFIX * 0.2u ## POSTFIX; \
39         TYPE NAME ## div = 0.1 ## POSTFIX / 0.3 ## POSTFIX; \
40         unsigned TYPE NAME ## u_div = 0.1u ## POSTFIX / 0.3u ## POSTFIX; \
41         _Sat TYPE NAME ## sat_div = (_Sat TYPE)0.3 ## POSTFIX / 0.1 ## POSTFIX; \
42         _Sat unsigned TYPE NAME ## sat_u_div = (_Sat unsigned TYPE)0.3u ## POSTFIX / 0.1u ## POSTFIX; \
43         TYPE NAME ## shl = 0.1 ## POSTFIX << 3; \
44         unsigned TYPE NAME ## u_shl = 0.1u ## POSTFIX << 3; \
45         _Sat TYPE NAME ## sat_shl = (_Sat TYPE)0.8 ## POSTFIX << 3; \
46         _Sat unsigned TYPE NAME ## sat_u_shl = (_Sat unsigned TYPE)0.8u ## POSTFIX << 3; \
47         TYPE NAME ## shr = 0.1 ## POSTFIX >> 5; \
48         unsigned TYPE NAME ## u_shr = 0.1u ## POSTFIX >> 5; \
49         _Sat TYPE NAME ## sat_shr = (_Sat TYPE)0.1 ## POSTFIX >> 5; \
50         _Sat unsigned TYPE NAME ## sat_u_shr = (_Sat unsigned TYPE)0.1 ## POSTFIX >> 5; \
51         int NAME ## ne = 0.1 ## POSTFIX != 0.2 ## POSTFIX; \
52         int NAME ## u_ne = 0.1u ## POSTFIX != 0.2u ## POSTFIX; \
53         int NAME ## eq = 0.1 ## POSTFIX == 0.2 ## POSTFIX; \
54         int NAME ## u_eq = 0.1u ## POSTFIX == 0.2u ## POSTFIX; \
55         int NAME ## gt = 0.1 ## POSTFIX > 0.2 ## POSTFIX; \
56         int NAME ## u_gt = 0.1u ## POSTFIX > 0.2u ## POSTFIX; \
57         int NAME ## ge = 0.1 ## POSTFIX >= 0.2 ## POSTFIX; \
58         int NAME ## u_ge = 0.1u ## POSTFIX >= 0.2 ## POSTFIX; \
59         int NAME ## lt = 0.1 ## POSTFIX < 0.2 ## POSTFIX; \
60         int NAME ## u_lt = 0.1u ## POSTFIX < 0.2 ## POSTFIX; \
61         int NAME ## le = 0.1 ## POSTFIX <= 0.2 ## POSTFIX; \
62         int NAME ## u_le = 0.1u ## POSTFIX <= 0.2 ## POSTFIX; \
63         int NAME ## ne2 = 0.2 ## POSTFIX != 0.2 ## POSTFIX; \
64         int NAME ## u_ne2 = 0.2u ## POSTFIX != 0.2u ## POSTFIX; \
65         int NAME ## eq2 = 0.2 ## POSTFIX == 0.2 ## POSTFIX; \
66         int NAME ## u_eq2 = 0.2u ## POSTFIX == 0.2u ## POSTFIX; \
67         int NAME ## gt2 = 0.2 ## POSTFIX > 0.2 ## POSTFIX; \
68         int NAME ## u_gt2 = 0.2u ## POSTFIX > 0.2u ## POSTFIX; \
69         int NAME ## ge2 = 0.2 ## POSTFIX >= 0.2 ## POSTFIX; \
70         int NAME ## u_ge2 = 0.2u ## POSTFIX >= 0.2 ## POSTFIX; \
71         int NAME ## lt2 = 0.2 ## POSTFIX < 0.2 ## POSTFIX; \
72         int NAME ## u_lt2 = 0.2u ## POSTFIX < 0.2 ## POSTFIX; \
73         int NAME ## le2 = 0.2 ## POSTFIX <= 0.2 ## POSTFIX; \
74         int NAME ## u_le2 = 0.2u ## POSTFIX <= 0.2 ## POSTFIX; \
75         TYPE NAME ## hr_signed = 0.1hr; \
76         unsigned TYPE NAME ## hr_unsigned = 0.1hr; \
77         _Sat TYPE NAME ## hr_sat_signed = 0.1hr; \
78         _Sat unsigned TYPE NAME ## hr_sat_unsigned = 0.1hr; \
79         TYPE NAME ## r_signed = 0.1r; \
80         unsigned TYPE NAME ## r_unsigned = 0.1r; \
81         _Sat TYPE NAME ## r_sat_signed = 0.1r; \
82         _Sat unsigned TYPE NAME ## r_sat_unsigned = 0.1r; \
83         TYPE NAME ## lr_signed = 0.1lr; \
84         unsigned TYPE NAME ## lr_unsigned = 0.1lr; \
85         _Sat TYPE NAME ## lr_sat_signed = 0.1lr; \
86         _Sat unsigned TYPE NAME ## lr_sat_unsigned = 0.1lr; \
87         TYPE NAME ## llr_signed = 0.1llr; \
88         unsigned TYPE NAME ## llr_unsigned = 0.1llr; \
89         _Sat TYPE NAME ## llr_sat_signed = 0.1llr; \
90         _Sat unsigned TYPE NAME ## llr_sat_unsigned = 0.1llr; \
91         TYPE NAME ## uhr_signed = 0.1uhr; \
92         unsigned TYPE NAME ## uhr_unsigned = 0.1uhr; \
93         _Sat TYPE NAME ## uhr_sat_signed = 0.1uhr; \
94         _Sat unsigned TYPE NAME ## uhr_sat_unsigned = 0.1uhr; \
95         TYPE NAME ## ur_signed = 0.1ur; \
96         unsigned TYPE NAME ## ur_unsigned = 0.1ur; \
97         _Sat TYPE NAME ## ur_sat_signed = 0.1ur; \
98         _Sat unsigned TYPE NAME ## ur_sat_unsigned = 0.1ur; \
99         TYPE NAME ## ulr_signed = 0.1ulr; \
100         unsigned TYPE NAME ## ulr_unsigned = 0.1ulr; \
101         _Sat TYPE NAME ## ulr_sat_signed = 0.1ulr; \
102         _Sat unsigned TYPE NAME ## ulr_sat_unsigned = 0.1ulr; \
103         TYPE NAME ## ullr_signed = 0.1ullr; \
104         unsigned TYPE NAME ## ullr_unsigned = 0.1ullr; \
105         _Sat TYPE NAME ## ullr_sat_signed = 0.1ullr; \
106         _Sat unsigned TYPE NAME ## ullr_sat_unsigned = 0.1ullr; \
107         TYPE NAME ## hk_signed = 0.1hk; \
108         unsigned TYPE NAME ## hk_unsigned = 0.1hk; \
109         _Sat TYPE NAME ## hk_sat_signed = 5.1hk; \
110         _Sat unsigned TYPE NAME ## hk_sat_unsigned = 5.1hk; \
111         TYPE NAME ## k_signed = 0.1k; \
112         unsigned TYPE NAME ## k_unsigned = 0.1k; \
113         _Sat TYPE NAME ## k_sat_signed = 5.1k; \
114         _Sat unsigned TYPE NAME ## k_sat_unsigned = 5.1k; \
115         TYPE NAME ## lk_signed = 0.1lk; \
116         unsigned TYPE NAME ## lk_unsigned = 0.1lk; \
117         _Sat TYPE NAME ## lk_sat_signed = 5.1lk; \
118         _Sat unsigned TYPE NAME ## lk_sat_unsigned = 5.1lk; \
119         TYPE NAME ## llk_signed = 0.1llk; \
120         unsigned TYPE NAME ## llk_unsigned = 0.1llk; \
121         _Sat TYPE NAME ## llk_sat_signed = 5.1llk; \
122         _Sat unsigned TYPE NAME ## llk_sat_unsigned = 5.1llk; \
123         TYPE NAME ## uhk_signed = 0.1uhk; \
124         unsigned TYPE NAME ## uhk_unsigned = 0.1uhk; \
125         _Sat TYPE NAME ## uhk_sat_signed = 5.1uhk; \
126         _Sat unsigned TYPE NAME ## uhk_sat_unsigned = 5.1uhk; \
127         TYPE NAME ## uk_signed = 0.1uk; \
128         unsigned TYPE NAME ## uk_unsigned = 0.1uk; \
129         _Sat TYPE NAME ## uk_sat_signed = 5.1uk; \
130         _Sat unsigned TYPE NAME ## uk_sat_unsigned = 5.1uk; \
131         TYPE NAME ## ulk_signed = 0.1ulk; \
132         unsigned TYPE NAME ## ulk_unsigned = 0.1ulk; \
133         _Sat TYPE NAME ## ulk_sat_signed = 5.1ulk; \
134         _Sat unsigned TYPE NAME ## ulk_sat_unsigned = 5.1ulk; \
135         TYPE NAME ## ullk_signed = 0.1ullk; \
136         unsigned TYPE NAME ## ullk_unsigned = 0.1ullk; \
137         _Sat TYPE NAME ## ullk_sat_signed = 5.1ullk; \
138         _Sat unsigned TYPE NAME ## ullk_sat_unsigned = 5.1ullk; \
139
140 ALLOPCONST(short _Fract, sf, hr);
141 ALLOPCONST(_Fract, f, r);
142 ALLOPCONST(long _Fract, lf, lr);
143 ALLOPCONST(long long _Fract, llf, llr);
144 ALLOPCONST(short _Accum, sa, hk);
145 ALLOPCONST(_Accum, a, k);
146 ALLOPCONST(long _Accum, la, lk);
147 ALLOPCONST(long long _Accum, lla, llk);