1 /* Test <stdbit.h> type-generic macros with compiler __builtin_stdc_* support.
2 Copyright (C) 2024 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
21 #include <support/check.h>
23 #if __glibc_has_builtin (__builtin_stdc_leading_zeros) \
24 && __glibc_has_builtin (__builtin_stdc_leading_ones) \
25 && __glibc_has_builtin (__builtin_stdc_trailing_zeros) \
26 && __glibc_has_builtin (__builtin_stdc_trailing_ones) \
27 && __glibc_has_builtin (__builtin_stdc_first_leading_zero) \
28 && __glibc_has_builtin (__builtin_stdc_first_leading_one) \
29 && __glibc_has_builtin (__builtin_stdc_first_trailing_zero) \
30 && __glibc_has_builtin (__builtin_stdc_first_trailing_one) \
31 && __glibc_has_builtin (__builtin_stdc_count_zeros) \
32 && __glibc_has_builtin (__builtin_stdc_count_ones) \
33 && __glibc_has_builtin (__builtin_stdc_has_single_bit) \
34 && __glibc_has_builtin (__builtin_stdc_bit_width) \
35 && __glibc_has_builtin (__builtin_stdc_bit_floor) \
36 && __glibc_has_builtin (__builtin_stdc_bit_ceil)
38 # if !defined (BITINT_MAXWIDTH) && defined (__BITINT_MAXWIDTH__)
39 # define BITINT_MAXWIDTH __BITINT_MAXWIDTH__
42 typedef unsigned char uc
;
43 typedef unsigned short us
;
44 typedef unsigned int ui
;
45 typedef unsigned long int ul
;
46 typedef unsigned long long int ull
;
48 # define expr_has_type(e, t) _Generic (e, default : 0, t : 1)
53 TEST_COMPARE (stdc_leading_zeros ((uc
) 0), CHAR_BIT
);
54 TEST_COMPARE (expr_has_type (stdc_leading_zeros ((uc
) 0), ui
), 1);
55 TEST_COMPARE (stdc_leading_zeros ((us
) 0), sizeof (short) * CHAR_BIT
);
56 TEST_COMPARE (expr_has_type (stdc_leading_zeros ((us
) 0), ui
), 1);
57 TEST_COMPARE (stdc_leading_zeros (0U), sizeof (int) * CHAR_BIT
);
58 TEST_COMPARE (expr_has_type (stdc_leading_zeros (0U), ui
), 1);
59 TEST_COMPARE (stdc_leading_zeros (0UL), sizeof (long int) * CHAR_BIT
);
60 TEST_COMPARE (expr_has_type (stdc_leading_zeros (0UL), ui
), 1);
61 TEST_COMPARE (stdc_leading_zeros (0ULL), sizeof (long long int) * CHAR_BIT
);
62 TEST_COMPARE (expr_has_type (stdc_leading_zeros (0ULL), ui
), 1);
63 TEST_COMPARE (stdc_leading_zeros ((uc
) ~0U), 0);
64 TEST_COMPARE (stdc_leading_zeros ((us
) ~0U), 0);
65 TEST_COMPARE (stdc_leading_zeros (~0U), 0);
66 TEST_COMPARE (stdc_leading_zeros (~0UL), 0);
67 TEST_COMPARE (stdc_leading_zeros (~0ULL), 0);
68 TEST_COMPARE (stdc_leading_zeros ((uc
) 3), CHAR_BIT
- 2);
69 TEST_COMPARE (stdc_leading_zeros ((us
) 9), sizeof (short) * CHAR_BIT
- 4);
70 TEST_COMPARE (stdc_leading_zeros (34U), sizeof (int) * CHAR_BIT
- 6);
71 TEST_COMPARE (stdc_leading_zeros (130UL), sizeof (long int) * CHAR_BIT
- 8);
72 TEST_COMPARE (stdc_leading_zeros (512ULL),
73 sizeof (long long int) * CHAR_BIT
- 10);
74 TEST_COMPARE (stdc_leading_ones ((uc
) 0), 0);
75 TEST_COMPARE (expr_has_type (stdc_leading_ones ((uc
) 0), ui
), 1);
76 TEST_COMPARE (stdc_leading_ones ((us
) 0), 0);
77 TEST_COMPARE (expr_has_type (stdc_leading_ones ((us
) 0), ui
), 1);
78 TEST_COMPARE (stdc_leading_ones (0U), 0);
79 TEST_COMPARE (expr_has_type (stdc_leading_ones (0U), ui
), 1);
80 TEST_COMPARE (stdc_leading_ones (0UL), 0);
81 TEST_COMPARE (expr_has_type (stdc_leading_ones (0UL), ui
), 1);
82 TEST_COMPARE (stdc_leading_ones (0ULL), 0);
83 TEST_COMPARE (expr_has_type (stdc_leading_ones (0ULL), ui
), 1);
84 TEST_COMPARE (stdc_leading_ones ((uc
) ~0U), CHAR_BIT
);
85 TEST_COMPARE (stdc_leading_ones ((us
) ~0U), sizeof (short) * CHAR_BIT
);
86 TEST_COMPARE (stdc_leading_ones (~0U), sizeof (int) * CHAR_BIT
);
87 TEST_COMPARE (stdc_leading_ones (~0UL), sizeof (long int) * CHAR_BIT
);
88 TEST_COMPARE (stdc_leading_ones (~0ULL), sizeof (long long int) * CHAR_BIT
);
89 TEST_COMPARE (stdc_leading_ones ((uc
) ~3), CHAR_BIT
- 2);
90 TEST_COMPARE (stdc_leading_ones ((us
) ~9), sizeof (short) * CHAR_BIT
- 4);
91 TEST_COMPARE (stdc_leading_ones (~34U), sizeof (int) * CHAR_BIT
- 6);
92 TEST_COMPARE (stdc_leading_ones (~130UL), sizeof (long int) * CHAR_BIT
- 8);
93 TEST_COMPARE (stdc_leading_ones (~512ULL),
94 sizeof (long long int) * CHAR_BIT
- 10);
95 TEST_COMPARE (stdc_trailing_zeros ((uc
) 0), CHAR_BIT
);
96 TEST_COMPARE (expr_has_type (stdc_trailing_zeros ((uc
) 0), ui
), 1);
97 TEST_COMPARE (stdc_trailing_zeros ((us
) 0), sizeof (short) * CHAR_BIT
);
98 TEST_COMPARE (expr_has_type (stdc_trailing_zeros ((us
) 0), ui
), 1);
99 TEST_COMPARE (stdc_trailing_zeros (0U), sizeof (int) * CHAR_BIT
);
100 TEST_COMPARE (expr_has_type (stdc_trailing_zeros (0U), ui
), 1);
101 TEST_COMPARE (stdc_trailing_zeros (0UL), sizeof (long int) * CHAR_BIT
);
102 TEST_COMPARE (expr_has_type (stdc_trailing_zeros (0UL), ui
), 1);
103 TEST_COMPARE (stdc_trailing_zeros (0ULL), sizeof (long long int) * CHAR_BIT
);
104 TEST_COMPARE (expr_has_type (stdc_trailing_zeros (0ULL), ui
), 1);
105 TEST_COMPARE (stdc_trailing_zeros ((uc
) ~0U), 0);
106 TEST_COMPARE (stdc_trailing_zeros ((us
) ~0U), 0);
107 TEST_COMPARE (stdc_trailing_zeros (~0U), 0);
108 TEST_COMPARE (stdc_trailing_zeros (~0UL), 0);
109 TEST_COMPARE (stdc_trailing_zeros (~0ULL), 0);
110 TEST_COMPARE (stdc_trailing_zeros ((uc
) 2), 1);
111 TEST_COMPARE (stdc_trailing_zeros ((us
) 24), 3);
112 TEST_COMPARE (stdc_trailing_zeros (32U), 5);
113 TEST_COMPARE (stdc_trailing_zeros (128UL), 7);
114 TEST_COMPARE (stdc_trailing_zeros (512ULL), 9);
115 TEST_COMPARE (stdc_trailing_ones ((uc
) 0), 0);
116 TEST_COMPARE (expr_has_type (stdc_trailing_ones ((uc
) 0), ui
), 1);
117 TEST_COMPARE (stdc_trailing_ones ((us
) 0), 0);
118 TEST_COMPARE (expr_has_type (stdc_trailing_ones ((us
) 0), ui
), 1);
119 TEST_COMPARE (stdc_trailing_ones (0U), 0);
120 TEST_COMPARE (expr_has_type (stdc_trailing_ones (0U), ui
), 1);
121 TEST_COMPARE (stdc_trailing_ones (0UL), 0);
122 TEST_COMPARE (expr_has_type (stdc_trailing_ones (0UL), ui
), 1);
123 TEST_COMPARE (stdc_trailing_ones (0ULL), 0);
124 TEST_COMPARE (expr_has_type (stdc_trailing_ones (0ULL), ui
), 1);
125 TEST_COMPARE (stdc_trailing_ones ((uc
) ~0U), CHAR_BIT
);
126 TEST_COMPARE (stdc_trailing_ones ((us
) ~0U), sizeof (short) * CHAR_BIT
);
127 TEST_COMPARE (stdc_trailing_ones (~0U), sizeof (int) * CHAR_BIT
);
128 TEST_COMPARE (stdc_trailing_ones (~0UL), sizeof (long int) * CHAR_BIT
);
129 TEST_COMPARE (stdc_trailing_ones (~0ULL), sizeof (long long int) * CHAR_BIT
);
130 TEST_COMPARE (stdc_trailing_ones ((uc
) 5), 1);
131 TEST_COMPARE (stdc_trailing_ones ((us
) 15), 4);
132 TEST_COMPARE (stdc_trailing_ones (127U), 7);
133 TEST_COMPARE (stdc_trailing_ones (511UL), 9);
134 TEST_COMPARE (stdc_trailing_ones (~0ULL >> 2),
135 sizeof (long long int) * CHAR_BIT
- 2);
136 TEST_COMPARE (stdc_first_leading_zero ((uc
) 0), 1);
137 TEST_COMPARE (expr_has_type (stdc_first_leading_zero ((uc
) 0), ui
), 1);
138 TEST_COMPARE (stdc_first_leading_zero ((us
) 0), 1);
139 TEST_COMPARE (expr_has_type (stdc_first_leading_zero ((us
) 0), ui
), 1);
140 TEST_COMPARE (stdc_first_leading_zero (0U), 1);
141 TEST_COMPARE (expr_has_type (stdc_first_leading_zero (0U), ui
), 1);
142 TEST_COMPARE (stdc_first_leading_zero (0UL), 1);
143 TEST_COMPARE (expr_has_type (stdc_first_leading_zero (0UL), ui
), 1);
144 TEST_COMPARE (stdc_first_leading_zero (0ULL), 1);
145 TEST_COMPARE (expr_has_type (stdc_first_leading_zero (0ULL), ui
), 1);
146 TEST_COMPARE (stdc_first_leading_zero ((uc
) ~0U), 0);
147 TEST_COMPARE (stdc_first_leading_zero ((us
) ~0U), 0);
148 TEST_COMPARE (stdc_first_leading_zero (~0U), 0);
149 TEST_COMPARE (stdc_first_leading_zero (~0UL), 0);
150 TEST_COMPARE (stdc_first_leading_zero (~0ULL), 0);
151 TEST_COMPARE (stdc_first_leading_zero ((uc
) ~3U), CHAR_BIT
- 1);
152 TEST_COMPARE (stdc_first_leading_zero ((us
) ~15U),
153 sizeof (short) * CHAR_BIT
- 3);
154 TEST_COMPARE (stdc_first_leading_zero (~63U), sizeof (int) * CHAR_BIT
- 5);
155 TEST_COMPARE (stdc_first_leading_zero (~255UL),
156 sizeof (long int) * CHAR_BIT
- 7);
157 TEST_COMPARE (stdc_first_leading_zero (~1023ULL),
158 sizeof (long long int) * CHAR_BIT
- 9);
159 TEST_COMPARE (stdc_first_leading_one ((uc
) 0), 0);
160 TEST_COMPARE (expr_has_type (stdc_first_leading_one ((uc
) 0), ui
), 1);
161 TEST_COMPARE (stdc_first_leading_one ((us
) 0), 0);
162 TEST_COMPARE (expr_has_type (stdc_first_leading_one ((us
) 0), ui
), 1);
163 TEST_COMPARE (stdc_first_leading_one (0U), 0);
164 TEST_COMPARE (expr_has_type (stdc_first_leading_one (0U), ui
), 1);
165 TEST_COMPARE (stdc_first_leading_one (0UL), 0);
166 TEST_COMPARE (expr_has_type (stdc_first_leading_one (0UL), ui
), 1);
167 TEST_COMPARE (stdc_first_leading_one (0ULL), 0);
168 TEST_COMPARE (expr_has_type (stdc_first_leading_one (0ULL), ui
), 1);
169 TEST_COMPARE (stdc_first_leading_one ((uc
) ~0U), 1);
170 TEST_COMPARE (stdc_first_leading_one ((us
) ~0U), 1);
171 TEST_COMPARE (stdc_first_leading_one (~0U), 1);
172 TEST_COMPARE (stdc_first_leading_one (~0UL), 1);
173 TEST_COMPARE (stdc_first_leading_one (~0ULL), 1);
174 TEST_COMPARE (stdc_first_leading_one ((uc
) 3), CHAR_BIT
- 1);
175 TEST_COMPARE (stdc_first_leading_one ((us
) 9),
176 sizeof (short) * CHAR_BIT
- 3);
177 TEST_COMPARE (stdc_first_leading_one (34U), sizeof (int) * CHAR_BIT
- 5);
178 TEST_COMPARE (stdc_first_leading_one (130UL),
179 sizeof (long int) * CHAR_BIT
- 7);
180 TEST_COMPARE (stdc_first_leading_one (512ULL),
181 sizeof (long long int) * CHAR_BIT
- 9);
182 TEST_COMPARE (stdc_first_trailing_zero ((uc
) 0), 1);
183 TEST_COMPARE (expr_has_type (stdc_first_trailing_zero ((uc
) 0), ui
), 1);
184 TEST_COMPARE (stdc_first_trailing_zero ((us
) 0), 1);
185 TEST_COMPARE (expr_has_type (stdc_first_trailing_zero ((us
) 0), ui
), 1);
186 TEST_COMPARE (stdc_first_trailing_zero (0U), 1);
187 TEST_COMPARE (expr_has_type (stdc_first_trailing_zero (0U), ui
), 1);
188 TEST_COMPARE (stdc_first_trailing_zero (0UL), 1);
189 TEST_COMPARE (expr_has_type (stdc_first_trailing_zero (0UL), ui
), 1);
190 TEST_COMPARE (stdc_first_trailing_zero (0ULL), 1);
191 TEST_COMPARE (expr_has_type (stdc_first_trailing_zero (0ULL), ui
), 1);
192 TEST_COMPARE (stdc_first_trailing_zero ((uc
) ~0U), 0);
193 TEST_COMPARE (stdc_first_trailing_zero ((us
) ~0U), 0);
194 TEST_COMPARE (stdc_first_trailing_zero (~0U), 0);
195 TEST_COMPARE (stdc_first_trailing_zero (~0UL), 0);
196 TEST_COMPARE (stdc_first_trailing_zero (~0ULL), 0);
197 TEST_COMPARE (stdc_first_trailing_zero ((uc
) 2), 1);
198 TEST_COMPARE (stdc_first_trailing_zero ((us
) 15), 5);
199 TEST_COMPARE (stdc_first_trailing_zero (63U), 7);
200 TEST_COMPARE (stdc_first_trailing_zero (128UL), 1);
201 TEST_COMPARE (stdc_first_trailing_zero (511ULL), 10);
202 TEST_COMPARE (stdc_first_trailing_one ((uc
) 0), 0);
203 TEST_COMPARE (expr_has_type (stdc_first_trailing_one ((uc
) 0), ui
), 1);
204 TEST_COMPARE (stdc_first_trailing_one ((us
) 0), 0);
205 TEST_COMPARE (expr_has_type (stdc_first_trailing_one ((us
) 0), ui
), 1);
206 TEST_COMPARE (stdc_first_trailing_one (0U), 0);
207 TEST_COMPARE (expr_has_type (stdc_first_trailing_one (0U), ui
), 1);
208 TEST_COMPARE (stdc_first_trailing_one (0UL), 0);
209 TEST_COMPARE (expr_has_type (stdc_first_trailing_one (0UL), ui
), 1);
210 TEST_COMPARE (stdc_first_trailing_one (0ULL), 0);
211 TEST_COMPARE (expr_has_type (stdc_first_trailing_one (0ULL), ui
), 1);
212 TEST_COMPARE (stdc_first_trailing_one ((uc
) ~0U), 1);
213 TEST_COMPARE (stdc_first_trailing_one ((us
) ~0U), 1);
214 TEST_COMPARE (stdc_first_trailing_one (~0U), 1);
215 TEST_COMPARE (stdc_first_trailing_one (~0UL), 1);
216 TEST_COMPARE (stdc_first_trailing_one (~0ULL), 1);
217 TEST_COMPARE (stdc_first_trailing_one ((uc
) 4), 3);
218 TEST_COMPARE (stdc_first_trailing_one ((us
) 96), 6);
219 TEST_COMPARE (stdc_first_trailing_one (127U), 1);
220 TEST_COMPARE (stdc_first_trailing_one (511UL), 1);
221 TEST_COMPARE (stdc_first_trailing_one (~0ULL << 12), 13);
222 TEST_COMPARE (stdc_count_zeros ((uc
) 0), CHAR_BIT
);
223 TEST_COMPARE (expr_has_type (stdc_count_zeros ((uc
) 0), ui
), 1);
224 TEST_COMPARE (stdc_count_zeros ((us
) 0), sizeof (short) * CHAR_BIT
);
225 TEST_COMPARE (expr_has_type (stdc_count_zeros ((us
) 0), ui
), 1);
226 TEST_COMPARE (stdc_count_zeros (0U), sizeof (int) * CHAR_BIT
);
227 TEST_COMPARE (expr_has_type (stdc_count_zeros (0U), ui
), 1);
228 TEST_COMPARE (stdc_count_zeros (0UL), sizeof (long int) * CHAR_BIT
);
229 TEST_COMPARE (expr_has_type (stdc_count_zeros (0UL), ui
), 1);
230 TEST_COMPARE (stdc_count_zeros (0ULL), sizeof (long long int) * CHAR_BIT
);
231 TEST_COMPARE (expr_has_type (stdc_count_zeros (0ULL), ui
), 1);
232 TEST_COMPARE (stdc_count_zeros ((uc
) ~0U), 0);
233 TEST_COMPARE (stdc_count_zeros ((us
) ~0U), 0);
234 TEST_COMPARE (stdc_count_zeros (~0U), 0);
235 TEST_COMPARE (stdc_count_zeros (~0UL), 0);
236 TEST_COMPARE (stdc_count_zeros (~0ULL), 0);
237 TEST_COMPARE (stdc_count_zeros ((uc
) 1U), CHAR_BIT
- 1);
238 TEST_COMPARE (stdc_count_zeros ((us
) 42), sizeof (short) * CHAR_BIT
- 3);
239 TEST_COMPARE (stdc_count_zeros (291U), sizeof (int) * CHAR_BIT
- 4);
240 TEST_COMPARE (stdc_count_zeros (~1315UL), 5);
241 TEST_COMPARE (stdc_count_zeros (3363ULL),
242 sizeof (long long int) * CHAR_BIT
- 6);
243 TEST_COMPARE (stdc_count_ones ((uc
) 0), 0);
244 TEST_COMPARE (expr_has_type (stdc_count_ones ((uc
) 0), ui
), 1);
245 TEST_COMPARE (stdc_count_ones ((us
) 0), 0);
246 TEST_COMPARE (expr_has_type (stdc_count_ones ((us
) 0), ui
), 1);
247 TEST_COMPARE (stdc_count_ones (0U), 0);
248 TEST_COMPARE (expr_has_type (stdc_count_ones (0U), ui
), 1);
249 TEST_COMPARE (stdc_count_ones (0UL), 0);
250 TEST_COMPARE (expr_has_type (stdc_count_ones (0UL), ui
), 1);
251 TEST_COMPARE (stdc_count_ones (0ULL), 0);
252 TEST_COMPARE (expr_has_type (stdc_count_ones (0ULL), ui
), 1);
253 TEST_COMPARE (stdc_count_ones ((uc
) ~0U), CHAR_BIT
);
254 TEST_COMPARE (stdc_count_ones ((us
) ~0U), sizeof (short) * CHAR_BIT
);
255 TEST_COMPARE (stdc_count_ones (~0U), sizeof (int) * CHAR_BIT
);
256 TEST_COMPARE (stdc_count_ones (~0UL), sizeof (long int) * CHAR_BIT
);
257 TEST_COMPARE (stdc_count_ones (~0ULL), sizeof (long long int) * CHAR_BIT
);
258 TEST_COMPARE (stdc_count_ones ((uc
) ~1U), CHAR_BIT
- 1);
259 TEST_COMPARE (stdc_count_ones ((us
) ~42), sizeof (short) * CHAR_BIT
- 3);
260 TEST_COMPARE (stdc_count_ones (~291U), sizeof (int) * CHAR_BIT
- 4);
261 TEST_COMPARE (stdc_count_ones (1315UL), 5);
262 TEST_COMPARE (stdc_count_ones (~3363ULL),
263 sizeof (long long int) * CHAR_BIT
- 6);
264 TEST_COMPARE (stdc_has_single_bit ((uc
) 0), 0);
265 TEST_COMPARE (expr_has_type (stdc_has_single_bit ((uc
) 0), _Bool
), 1);
266 TEST_COMPARE (stdc_has_single_bit ((us
) 0), 0);
267 TEST_COMPARE (expr_has_type (stdc_has_single_bit ((us
) 0), _Bool
), 1);
268 TEST_COMPARE (stdc_has_single_bit (0U), 0);
269 TEST_COMPARE (expr_has_type (stdc_has_single_bit (0U), _Bool
), 1);
270 TEST_COMPARE (stdc_has_single_bit (0UL), 0);
271 TEST_COMPARE (expr_has_type (stdc_has_single_bit (0UL), _Bool
), 1);
272 TEST_COMPARE (stdc_has_single_bit (0ULL), 0);
273 TEST_COMPARE (expr_has_type (stdc_has_single_bit (0ULL), _Bool
), 1);
274 TEST_COMPARE (stdc_has_single_bit ((uc
) 2), 1);
275 TEST_COMPARE (stdc_has_single_bit ((us
) 8), 1);
276 TEST_COMPARE (stdc_has_single_bit (32U), 1);
277 TEST_COMPARE (stdc_has_single_bit (128UL), 1);
278 TEST_COMPARE (stdc_has_single_bit (512ULL), 1);
279 TEST_COMPARE (stdc_has_single_bit ((uc
) 7), 0);
280 TEST_COMPARE (stdc_has_single_bit ((us
) 96), 0);
281 TEST_COMPARE (stdc_has_single_bit (513U), 0);
282 TEST_COMPARE (stdc_has_single_bit (1022UL), 0);
283 TEST_COMPARE (stdc_has_single_bit (12ULL), 0);
284 TEST_COMPARE (stdc_bit_width ((uc
) 0), 0);
285 TEST_COMPARE (expr_has_type (stdc_bit_width ((uc
) 0), ui
), 1);
286 TEST_COMPARE (stdc_bit_width ((us
) 0), 0);
287 TEST_COMPARE (expr_has_type (stdc_bit_width ((us
) 0), ui
), 1);
288 TEST_COMPARE (stdc_bit_width (0U), 0);
289 TEST_COMPARE (expr_has_type (stdc_bit_width (0U), ui
), 1);
290 TEST_COMPARE (stdc_bit_width (0UL), 0);
291 TEST_COMPARE (expr_has_type (stdc_bit_width (0UL), ui
), 1);
292 TEST_COMPARE (stdc_bit_width (0ULL), 0);
293 TEST_COMPARE (expr_has_type (stdc_bit_width (0ULL), ui
), 1);
294 TEST_COMPARE (stdc_bit_width ((uc
) ~0U), CHAR_BIT
);
295 TEST_COMPARE (stdc_bit_width ((us
) ~0U), sizeof (short) * CHAR_BIT
);
296 TEST_COMPARE (stdc_bit_width (~0U), sizeof (int) * CHAR_BIT
);
297 TEST_COMPARE (stdc_bit_width (~0UL), sizeof (long int) * CHAR_BIT
);
298 TEST_COMPARE (stdc_bit_width (~0ULL), sizeof (long long int) * CHAR_BIT
);
299 TEST_COMPARE (stdc_bit_width ((uc
) ((uc
) ~0U >> 1)), CHAR_BIT
- 1);
300 TEST_COMPARE (stdc_bit_width ((uc
) 6), 3);
301 TEST_COMPARE (stdc_bit_width ((us
) 12U), 4);
302 TEST_COMPARE (stdc_bit_width ((us
) ((us
) ~0U >> 5)),
303 sizeof (short) * CHAR_BIT
- 5);
304 TEST_COMPARE (stdc_bit_width (137U), 8);
305 TEST_COMPARE (stdc_bit_width (269U), 9);
306 TEST_COMPARE (stdc_bit_width (39UL), 6);
307 TEST_COMPARE (stdc_bit_width (~0UL >> 2), sizeof (long int) * CHAR_BIT
- 2);
308 TEST_COMPARE (stdc_bit_width (1023ULL), 10);
309 TEST_COMPARE (stdc_bit_width (1024ULL), 11);
310 TEST_COMPARE (stdc_bit_floor ((uc
) 0), 0);
311 TEST_COMPARE (expr_has_type (stdc_bit_floor ((uc
) 0), uc
), 1);
312 TEST_COMPARE (stdc_bit_floor ((us
) 0), 0);
313 TEST_COMPARE (expr_has_type (stdc_bit_floor ((us
) 0), us
), 1);
314 TEST_COMPARE (stdc_bit_floor (0U), 0U);
315 TEST_COMPARE (expr_has_type (stdc_bit_floor (0U), ui
), 1);
316 TEST_COMPARE (stdc_bit_floor (0UL), 0UL);
317 TEST_COMPARE (expr_has_type (stdc_bit_floor (0UL), ul
), 1);
318 TEST_COMPARE (stdc_bit_floor (0ULL), 0ULL);
319 TEST_COMPARE (expr_has_type (stdc_bit_floor (0ULL), ull
), 1);
320 TEST_COMPARE (stdc_bit_floor ((uc
) ~0U), (1U << (CHAR_BIT
- 1)));
321 TEST_COMPARE (stdc_bit_floor ((us
) ~0U),
322 (1U << (sizeof (short) * CHAR_BIT
- 1)));
323 TEST_COMPARE (stdc_bit_floor (~0U), (1U << (sizeof (int) * CHAR_BIT
- 1)));
324 TEST_COMPARE (stdc_bit_floor (~0UL),
325 (1UL << (sizeof (long int) * CHAR_BIT
- 1)));
326 TEST_COMPARE (stdc_bit_floor (~0ULL),
327 (1ULL << (sizeof (long long int) * CHAR_BIT
- 1)));
328 TEST_COMPARE (stdc_bit_floor ((uc
) 4), 4);
329 TEST_COMPARE (stdc_bit_floor ((uc
) 7), 4);
330 TEST_COMPARE (stdc_bit_floor ((us
) 8U), 8);
331 TEST_COMPARE (stdc_bit_floor ((us
) 31U), 16);
332 TEST_COMPARE (stdc_bit_floor (137U), 128U);
333 TEST_COMPARE (stdc_bit_floor (269U), 256U);
334 TEST_COMPARE (stdc_bit_floor (511UL), 256UL);
335 TEST_COMPARE (stdc_bit_floor (512UL), 512UL);
336 TEST_COMPARE (stdc_bit_floor (513UL), 512ULL);
337 TEST_COMPARE (stdc_bit_floor (1024ULL), 1024ULL);
338 TEST_COMPARE (stdc_bit_ceil ((uc
) 0), 1);
339 TEST_COMPARE (expr_has_type (stdc_bit_ceil ((uc
) 0), uc
), 1);
340 TEST_COMPARE (stdc_bit_ceil ((us
) 0), 1);
341 TEST_COMPARE (expr_has_type (stdc_bit_ceil ((us
) 0), us
), 1);
342 TEST_COMPARE (stdc_bit_ceil (0U), 1U);
343 TEST_COMPARE (expr_has_type (stdc_bit_ceil (0U), ui
), 1);
344 TEST_COMPARE (stdc_bit_ceil (0UL), 1UL);
345 TEST_COMPARE (expr_has_type (stdc_bit_ceil (0UL), ul
), 1);
346 TEST_COMPARE (stdc_bit_ceil (0ULL), 1ULL);
347 TEST_COMPARE (expr_has_type (stdc_bit_ceil (0ULL), ull
), 1);
348 TEST_COMPARE (stdc_bit_ceil ((uc
) ~0U), 0);
349 TEST_COMPARE (stdc_bit_ceil ((us
) ~0U), 0);
350 TEST_COMPARE (stdc_bit_ceil (~0U), 0U);
351 TEST_COMPARE (stdc_bit_ceil (~0UL), 0UL);
352 TEST_COMPARE (stdc_bit_ceil (~0ULL), 0ULL);
353 TEST_COMPARE (stdc_bit_ceil ((uc
) ((uc
) ~0U >> 1)), (1U << (CHAR_BIT
- 1)));
354 TEST_COMPARE (stdc_bit_ceil ((uc
) ((uc
) ~0U >> 1)), (1U << (CHAR_BIT
- 1)));
355 TEST_COMPARE (stdc_bit_ceil ((us
) ((us
) ~0U >> 1)),
356 (1U << (sizeof (short) * CHAR_BIT
- 1)));
357 TEST_COMPARE (stdc_bit_ceil ((us
) ((us
) ~0U >> 1)),
358 (1U << (sizeof (short) * CHAR_BIT
- 1)));
359 TEST_COMPARE (stdc_bit_ceil (~0U >> 1),
360 (1U << (sizeof (int) * CHAR_BIT
- 1)));
361 TEST_COMPARE (stdc_bit_ceil (1U << (sizeof (int) * CHAR_BIT
- 1)),
362 (1U << (sizeof (int) * CHAR_BIT
- 1)));
363 TEST_COMPARE (stdc_bit_ceil (~0UL >> 1),
364 (1UL << (sizeof (long int) * CHAR_BIT
- 1)));
365 TEST_COMPARE (stdc_bit_ceil (~0UL >> 1),
366 (1UL << (sizeof (long int) * CHAR_BIT
- 1)));
367 TEST_COMPARE (stdc_bit_ceil (1ULL
368 << (sizeof (long long int) * CHAR_BIT
- 1)),
369 (1ULL << (sizeof (long long int) * CHAR_BIT
- 1)));
370 TEST_COMPARE (stdc_bit_ceil (~0ULL >> 1),
371 (1ULL << (sizeof (long long int) * CHAR_BIT
- 1)));
372 TEST_COMPARE (stdc_bit_ceil ((uc
) 1), 1);
373 TEST_COMPARE (stdc_bit_ceil ((uc
) 2), 2);
374 TEST_COMPARE (stdc_bit_ceil ((us
) 3U), 4);
375 TEST_COMPARE (stdc_bit_ceil ((us
) 4U), 4);
376 TEST_COMPARE (stdc_bit_ceil (5U), 8U);
377 TEST_COMPARE (stdc_bit_ceil (269U), 512U);
378 TEST_COMPARE (stdc_bit_ceil (511UL), 512UL);
379 TEST_COMPARE (stdc_bit_ceil (512UL), 512UL);
380 TEST_COMPARE (stdc_bit_ceil (513ULL), 1024ULL);
381 TEST_COMPARE (stdc_bit_ceil (1025ULL), 2048ULL);
382 # ifdef __SIZEOF_INT128__
383 TEST_COMPARE (stdc_leading_zeros ((unsigned __int128
) 0),
384 sizeof (__int128
) * CHAR_BIT
);
385 TEST_COMPARE (expr_has_type (stdc_leading_zeros ((unsigned __int128
) 0), ui
),
387 TEST_COMPARE (stdc_leading_zeros (~(unsigned __int128
) 0), 0);
388 TEST_COMPARE (stdc_leading_ones ((unsigned __int128
) 0), 0);
389 TEST_COMPARE (expr_has_type (stdc_leading_ones ((unsigned __int128
) 0), ui
),
391 TEST_COMPARE (stdc_leading_ones (~(unsigned __int128
) 0),
392 sizeof (__int128
) * CHAR_BIT
);
393 TEST_COMPARE (stdc_trailing_zeros ((unsigned __int128
) 0),
394 sizeof (__int128
) * CHAR_BIT
);
395 TEST_COMPARE (expr_has_type (stdc_trailing_zeros ((unsigned __int128
) 0),
397 TEST_COMPARE (stdc_trailing_zeros (~(unsigned __int128
) 0), 0);
398 TEST_COMPARE (stdc_trailing_ones ((unsigned __int128
) 0), 0);
399 TEST_COMPARE (expr_has_type (stdc_trailing_ones ((unsigned __int128
) 0), ui
),
401 TEST_COMPARE (stdc_trailing_ones (~(unsigned __int128
) 0),
402 sizeof (__int128
) * CHAR_BIT
);
403 TEST_COMPARE (stdc_first_leading_zero ((unsigned __int128
) 0), 1);
404 TEST_COMPARE (expr_has_type (stdc_first_leading_zero ((unsigned __int128
) 0),
406 TEST_COMPARE (stdc_first_leading_zero (~(unsigned __int128
) 0), 0);
407 TEST_COMPARE (stdc_first_leading_one ((unsigned __int128
) 0), 0);
408 TEST_COMPARE (expr_has_type (stdc_first_leading_one ((unsigned __int128
) 0),
410 TEST_COMPARE (stdc_first_leading_one (~(unsigned __int128
) 0), 1);
411 TEST_COMPARE (stdc_first_trailing_zero ((unsigned __int128
) 0), 1);
412 TEST_COMPARE (expr_has_type (stdc_first_trailing_zero ((unsigned __int128
)
414 TEST_COMPARE (stdc_first_trailing_zero (~(unsigned __int128
) 0), 0);
415 TEST_COMPARE (stdc_first_trailing_one ((unsigned __int128
) 0), 0);
416 TEST_COMPARE (expr_has_type (stdc_first_trailing_one ((unsigned __int128
) 0),
418 TEST_COMPARE (stdc_first_trailing_one (~(unsigned __int128
) 0), 1);
419 TEST_COMPARE (stdc_count_zeros ((unsigned __int128
) 0),
420 sizeof (__int128
) * CHAR_BIT
);
421 TEST_COMPARE (expr_has_type (stdc_count_zeros ((unsigned __int128
) 0), ui
),
423 TEST_COMPARE (stdc_count_zeros (~(unsigned __int128
) 0), 0);
424 TEST_COMPARE (stdc_count_ones ((unsigned __int128
) 0), 0);
425 TEST_COMPARE (expr_has_type (stdc_count_ones ((unsigned __int128
) 0), ui
),
427 TEST_COMPARE (stdc_count_ones (~(unsigned __int128
) 0),
428 sizeof (__int128
) * CHAR_BIT
);
429 TEST_COMPARE (stdc_has_single_bit ((unsigned __int128
) 0), 0);
430 TEST_COMPARE (expr_has_type (stdc_has_single_bit ((unsigned __int128
) 0),
432 TEST_COMPARE (stdc_has_single_bit (~(unsigned __int128
) 0), 0);
433 TEST_COMPARE (stdc_bit_width ((unsigned __int128
) 0), 0);
434 TEST_COMPARE (expr_has_type (stdc_bit_width ((unsigned __int128
) 0), ui
), 1);
435 TEST_COMPARE (stdc_bit_width (~(unsigned __int128
) 0),
436 sizeof (__int128
) * CHAR_BIT
);
437 TEST_COMPARE (stdc_bit_floor ((unsigned __int128
) 0) != 0, 0);
438 TEST_COMPARE (expr_has_type (stdc_bit_floor ((unsigned __int128
) 0),
439 unsigned __int128
), 1);
440 TEST_COMPARE (stdc_bit_floor (~(unsigned __int128
) 0)
441 != ((unsigned __int128
) 1) << (sizeof (__int128
)
443 TEST_COMPARE (stdc_bit_ceil ((unsigned __int128
) 0) != 1, 0);
444 TEST_COMPARE (expr_has_type (stdc_bit_ceil ((unsigned __int128
) 0),
445 unsigned __int128
), 1);
446 TEST_COMPARE (stdc_bit_ceil ((unsigned __int128
) 1) != 1, 0);
447 TEST_COMPARE (stdc_bit_ceil ((~(unsigned __int128
) 0) >> 1)
448 != ((unsigned __int128
) 1) << (sizeof (__int128
)
450 TEST_COMPARE (stdc_bit_ceil (~(unsigned __int128
) 0) != 0, 0);
453 TEST_COMPARE (stdc_bit_width (a
++), 0);
456 TEST_COMPARE (stdc_bit_width (b
++), 0);
458 TEST_COMPARE (stdc_bit_floor (a
++), 1);
460 TEST_COMPARE (stdc_bit_floor (b
++), 1);
462 TEST_COMPARE (stdc_bit_ceil (a
++), 2);
464 TEST_COMPARE (stdc_bit_ceil (b
++), 2);
466 TEST_COMPARE (stdc_leading_zeros (a
++), CHAR_BIT
- 2);
468 TEST_COMPARE (stdc_leading_zeros (b
++),
469 sizeof (long long int) * CHAR_BIT
- 2);
471 TEST_COMPARE (stdc_leading_ones (a
++), 0);
473 TEST_COMPARE (stdc_leading_ones (b
++), 0);
475 TEST_COMPARE (stdc_trailing_zeros (a
++), 0);
477 TEST_COMPARE (stdc_trailing_zeros (b
++), 0);
479 TEST_COMPARE (stdc_trailing_ones (a
++), 0);
481 TEST_COMPARE (stdc_trailing_ones (b
++), 0);
483 TEST_COMPARE (stdc_first_leading_zero (a
++), 1);
485 TEST_COMPARE (stdc_first_leading_zero (b
++), 1);
487 TEST_COMPARE (stdc_first_leading_one (a
++), CHAR_BIT
- 3);
489 TEST_COMPARE (stdc_first_leading_one (b
++),
490 sizeof (long long int) * CHAR_BIT
- 3);
492 TEST_COMPARE (stdc_first_trailing_zero (a
++), 2);
493 TEST_COMPARE (a
, 10);
494 TEST_COMPARE (stdc_first_trailing_zero (b
++), 2);
495 TEST_COMPARE (b
, 10);
496 TEST_COMPARE (stdc_first_trailing_one (a
++), 2);
497 TEST_COMPARE (a
, 11);
498 TEST_COMPARE (stdc_first_trailing_one (b
++), 2);
499 TEST_COMPARE (b
, 11);
500 TEST_COMPARE (stdc_count_zeros (a
++), CHAR_BIT
- 3);
501 TEST_COMPARE (a
, 12);
502 TEST_COMPARE (stdc_count_zeros (b
++),
503 sizeof (long long int) * CHAR_BIT
- 3);
504 TEST_COMPARE (b
, 12);
505 TEST_COMPARE (stdc_count_ones (a
++), 2);
506 TEST_COMPARE (a
, 13);
507 TEST_COMPARE (stdc_count_ones (b
++), 2);
508 TEST_COMPARE (b
, 13);
509 TEST_COMPARE (stdc_has_single_bit (a
++), 0);
510 TEST_COMPARE (a
, 14);
511 TEST_COMPARE (stdc_has_single_bit (b
++), 0);
512 TEST_COMPARE (b
, 14);
513 # ifdef BITINT_MAXWIDTH
514 # if BITINT_MAXWIDTH >= 64
515 TEST_COMPARE (stdc_leading_zeros (0uwb
), 1);
516 TEST_COMPARE (expr_has_type (stdc_leading_zeros (0uwb
), ui
), 1);
517 TEST_COMPARE (stdc_leading_zeros (1uwb
), 0);
518 TEST_COMPARE (expr_has_type (stdc_leading_zeros (1uwb
), ui
), 1);
519 TEST_COMPARE (stdc_leading_ones (0uwb
), 0);
520 TEST_COMPARE (expr_has_type (stdc_leading_ones (0uwb
), ui
), 1);
521 TEST_COMPARE (stdc_leading_ones (1uwb
), 1);
522 TEST_COMPARE (expr_has_type (stdc_leading_ones (1uwb
), ui
), 1);
523 TEST_COMPARE (stdc_trailing_zeros (0uwb
), 1);
524 TEST_COMPARE (expr_has_type (stdc_trailing_zeros (0uwb
), ui
), 1);
525 TEST_COMPARE (stdc_trailing_zeros (1uwb
), 0);
526 TEST_COMPARE (expr_has_type (stdc_trailing_zeros (1uwb
), ui
), 1);
527 TEST_COMPARE (stdc_trailing_ones (0uwb
), 0);
528 TEST_COMPARE (expr_has_type (stdc_trailing_ones (0uwb
), ui
), 1);
529 TEST_COMPARE (stdc_trailing_ones (1uwb
), 1);
530 TEST_COMPARE (expr_has_type (stdc_trailing_ones (1uwb
), ui
), 1);
531 TEST_COMPARE (stdc_first_leading_zero (0uwb
), 1);
532 TEST_COMPARE (expr_has_type (stdc_first_leading_zero (0uwb
), ui
), 1);
533 TEST_COMPARE (stdc_first_leading_zero (1uwb
), 0);
534 TEST_COMPARE (expr_has_type (stdc_first_leading_zero (1uwb
), ui
), 1);
535 TEST_COMPARE (stdc_first_leading_one (0uwb
), 0);
536 TEST_COMPARE (expr_has_type (stdc_first_leading_one (0uwb
), ui
), 1);
537 TEST_COMPARE (stdc_first_leading_one (1uwb
), 1);
538 TEST_COMPARE (expr_has_type (stdc_first_leading_one (1uwb
), ui
), 1);
539 TEST_COMPARE (stdc_first_trailing_zero (0uwb
), 1);
540 TEST_COMPARE (expr_has_type (stdc_first_trailing_zero (0uwb
), ui
), 1);
541 TEST_COMPARE (stdc_first_trailing_zero (1uwb
), 0);
542 TEST_COMPARE (expr_has_type (stdc_first_trailing_zero (1uwb
), ui
), 1);
543 TEST_COMPARE (stdc_first_trailing_one (0uwb
), 0);
544 TEST_COMPARE (expr_has_type (stdc_first_trailing_one (0uwb
), ui
), 1);
545 TEST_COMPARE (stdc_first_trailing_one (1uwb
), 1);
546 TEST_COMPARE (expr_has_type (stdc_first_trailing_one (1uwb
), ui
), 1);
547 TEST_COMPARE (stdc_count_zeros (0uwb
), 1);
548 TEST_COMPARE (expr_has_type (stdc_count_zeros (0uwb
), ui
), 1);
549 TEST_COMPARE (stdc_count_zeros (1uwb
), 0);
550 TEST_COMPARE (expr_has_type (stdc_count_zeros (1uwb
), ui
), 1);
551 TEST_COMPARE (stdc_count_ones (0uwb
), 0);
552 TEST_COMPARE (expr_has_type (stdc_count_ones (0uwb
), ui
), 1);
553 TEST_COMPARE (stdc_count_ones (1uwb
), 1);
554 TEST_COMPARE (expr_has_type (stdc_count_ones (1uwb
), ui
), 1);
555 TEST_COMPARE (stdc_has_single_bit (0uwb
), 0);
556 TEST_COMPARE (expr_has_type (stdc_has_single_bit (0uwb
), _Bool
), 1);
557 TEST_COMPARE (stdc_has_single_bit (1uwb
), 1);
558 TEST_COMPARE (expr_has_type (stdc_has_single_bit (1uwb
), _Bool
), 1);
559 TEST_COMPARE (stdc_bit_width (0uwb
), 0);
560 TEST_COMPARE (expr_has_type (stdc_bit_width (0uwb
), ui
), 1);
561 TEST_COMPARE (stdc_bit_width (1uwb
), 1);
562 TEST_COMPARE (expr_has_type (stdc_bit_width (1uwb
), ui
), 1);
563 TEST_COMPARE (stdc_bit_floor (0uwb
), 0);
564 TEST_COMPARE (expr_has_type (stdc_bit_floor (0uwb
), unsigned _BitInt(1)), 1);
565 TEST_COMPARE (stdc_bit_floor (1uwb
), 1);
566 TEST_COMPARE (expr_has_type (stdc_bit_floor (1uwb
), unsigned _BitInt(1)), 1);
567 TEST_COMPARE (stdc_bit_ceil (0uwb
), 1);
568 TEST_COMPARE (expr_has_type (stdc_bit_ceil (0uwb
), unsigned _BitInt(1)), 1);
569 TEST_COMPARE (stdc_bit_ceil (1uwb
), 1);
570 TEST_COMPARE (expr_has_type (stdc_bit_ceil (1uwb
), unsigned _BitInt(1)), 1);
571 unsigned _BitInt(1) c
= 0;
572 TEST_COMPARE (stdc_bit_floor (c
++), 0);
574 TEST_COMPARE (stdc_bit_floor (c
++), 1);
576 TEST_COMPARE (stdc_bit_ceil (c
++), 1);
578 TEST_COMPARE (stdc_bit_ceil (c
++), 1);
581 # if BITINT_MAXWIDTH >= 512
582 TEST_COMPARE (stdc_leading_zeros ((unsigned _BitInt(512)) 0), 512);
583 TEST_COMPARE (expr_has_type (stdc_leading_zeros ((unsigned _BitInt(512)) 0),
585 TEST_COMPARE (stdc_leading_zeros ((unsigned _BitInt(373)) 0), 373);
586 TEST_COMPARE (expr_has_type (stdc_leading_zeros ((unsigned _BitInt(373)) 0),
588 TEST_COMPARE (stdc_leading_zeros (~(unsigned _BitInt(512)) 0), 0);
589 TEST_COMPARE (stdc_leading_zeros (~(unsigned _BitInt(373)) 0), 0);
590 TEST_COMPARE (stdc_leading_zeros ((unsigned _BitInt(512)) 275), 512 - 9);
591 TEST_COMPARE (stdc_leading_zeros ((unsigned _BitInt(373)) 512), 373 - 10);
592 TEST_COMPARE (stdc_leading_ones ((unsigned _BitInt(512)) 0), 0);
593 TEST_COMPARE (expr_has_type (stdc_leading_ones ((unsigned _BitInt(512)) 0),
595 TEST_COMPARE (stdc_leading_ones ((unsigned _BitInt(373)) 0), 0);
596 TEST_COMPARE (expr_has_type (stdc_leading_ones ((unsigned _BitInt(373)) 0),
598 TEST_COMPARE (stdc_leading_ones (~(unsigned _BitInt(512)) 0), 512);
599 TEST_COMPARE (stdc_leading_ones (~(unsigned _BitInt(373)) 0), 373);
600 TEST_COMPARE (stdc_leading_ones (~(unsigned _BitInt(512)) 275), 512 - 9);
601 TEST_COMPARE (stdc_leading_ones (~(unsigned _BitInt(373)) 512), 373 - 10);
602 TEST_COMPARE (stdc_trailing_zeros ((unsigned _BitInt(512)) 0), 512);
603 TEST_COMPARE (expr_has_type (stdc_trailing_zeros ((unsigned _BitInt(512)) 0),
605 TEST_COMPARE (stdc_trailing_zeros ((unsigned _BitInt(373)) 0), 373);
606 TEST_COMPARE (expr_has_type (stdc_trailing_zeros ((unsigned _BitInt(373)) 0),
608 TEST_COMPARE (stdc_trailing_zeros (~(unsigned _BitInt(512)) 0), 0);
609 TEST_COMPARE (stdc_trailing_zeros (~(unsigned _BitInt(373)) 0), 0);
610 TEST_COMPARE (stdc_trailing_zeros ((unsigned _BitInt(512)) 256), 8);
611 TEST_COMPARE (stdc_trailing_zeros ((unsigned _BitInt(373)) 512), 9);
612 TEST_COMPARE (stdc_trailing_ones ((unsigned _BitInt(512)) 0), 0);
613 TEST_COMPARE (expr_has_type (stdc_trailing_ones ((unsigned _BitInt(512)) 0),
615 TEST_COMPARE (stdc_trailing_ones ((unsigned _BitInt(373)) 0), 0);
616 TEST_COMPARE (expr_has_type (stdc_trailing_ones ((unsigned _BitInt(373)) 0),
618 TEST_COMPARE (stdc_trailing_ones (~(unsigned _BitInt(512)) 0), 512);
619 TEST_COMPARE (stdc_trailing_ones (~(unsigned _BitInt(373)) 0), 373);
620 TEST_COMPARE (stdc_trailing_ones ((unsigned _BitInt(512)) 255), 8);
621 TEST_COMPARE (stdc_trailing_ones ((~(unsigned _BitInt(373)) 0) >> 2),
623 TEST_COMPARE (stdc_first_leading_zero ((unsigned _BitInt(512)) 0), 1);
624 TEST_COMPARE (expr_has_type (stdc_first_leading_zero ((unsigned _BitInt(512))
626 TEST_COMPARE (stdc_first_leading_zero ((unsigned _BitInt(373)) 0), 1);
627 TEST_COMPARE (expr_has_type (stdc_first_leading_zero ((unsigned _BitInt(373))
629 TEST_COMPARE (stdc_first_leading_zero (~(unsigned _BitInt(512)) 0), 0);
630 TEST_COMPARE (stdc_first_leading_zero (~(unsigned _BitInt(373)) 0), 0);
631 TEST_COMPARE (stdc_first_leading_zero (~(unsigned _BitInt(512)) 511),
633 TEST_COMPARE (stdc_first_leading_zero (~(unsigned _BitInt(373)) 1023),
635 TEST_COMPARE (stdc_first_leading_one ((unsigned _BitInt(512)) 0), 0);
636 TEST_COMPARE (expr_has_type (stdc_first_leading_one ((unsigned _BitInt(512))
638 TEST_COMPARE (stdc_first_leading_one ((unsigned _BitInt(373)) 0), 0);
639 TEST_COMPARE (expr_has_type (stdc_first_leading_one ((unsigned _BitInt(373))
641 TEST_COMPARE (stdc_first_leading_one (~(unsigned _BitInt(512)) 0), 1);
642 TEST_COMPARE (stdc_first_leading_one (~(unsigned _BitInt(373)) 0), 1);
643 TEST_COMPARE (stdc_first_leading_one ((unsigned _BitInt(512)) 275), 512 - 8);
644 TEST_COMPARE (stdc_first_leading_one ((unsigned _BitInt(373)) 512), 373 - 9);
645 TEST_COMPARE (stdc_first_trailing_zero ((unsigned _BitInt(512)) 0), 1);
646 TEST_COMPARE (expr_has_type (stdc_first_trailing_zero ((unsigned
649 TEST_COMPARE (stdc_first_trailing_zero ((unsigned _BitInt(373)) 0), 1);
650 TEST_COMPARE (expr_has_type (stdc_first_trailing_zero ((unsigned
653 TEST_COMPARE (stdc_first_trailing_zero (~(unsigned _BitInt(512)) 0), 0);
654 TEST_COMPARE (stdc_first_trailing_zero (~(unsigned _BitInt(373)) 0), 0);
655 TEST_COMPARE (stdc_first_trailing_zero ((unsigned _BitInt(512)) 255), 9);
656 TEST_COMPARE (stdc_first_trailing_zero ((unsigned _BitInt(373)) 511), 10);
657 TEST_COMPARE (stdc_first_trailing_one ((unsigned _BitInt(512)) 0), 0);
658 TEST_COMPARE (expr_has_type (stdc_first_trailing_one ((unsigned _BitInt(512))
660 TEST_COMPARE (stdc_first_trailing_one ((unsigned _BitInt(373)) 0), 0);
661 TEST_COMPARE (expr_has_type (stdc_first_trailing_one ((unsigned _BitInt(373))
663 TEST_COMPARE (stdc_first_trailing_one (~(unsigned _BitInt(512)) 0), 1);
664 TEST_COMPARE (stdc_first_trailing_one (~(unsigned _BitInt(373)) 0), 1);
665 TEST_COMPARE (stdc_first_trailing_one (((unsigned _BitInt(512)) 255) << 175),
667 TEST_COMPARE (stdc_first_trailing_one ((~(unsigned _BitInt(373)) 0) << 311),
669 TEST_COMPARE (stdc_count_zeros ((unsigned _BitInt(512)) 0), 512);
670 TEST_COMPARE (expr_has_type (stdc_count_zeros ((unsigned _BitInt(512)) 0),
672 TEST_COMPARE (stdc_count_zeros ((unsigned _BitInt(373)) 0), 373);
673 TEST_COMPARE (expr_has_type (stdc_count_zeros ((unsigned _BitInt(373)) 0),
675 TEST_COMPARE (stdc_count_zeros (~(unsigned _BitInt(512)) 0), 0);
676 TEST_COMPARE (stdc_count_zeros (~(unsigned _BitInt(373)) 0), 0);
677 TEST_COMPARE (stdc_count_zeros ((unsigned _BitInt(512)) 1315), 512 - 5);
678 TEST_COMPARE (stdc_count_zeros ((unsigned _BitInt(373)) 3363), 373 - 6);
679 TEST_COMPARE (stdc_count_ones ((unsigned _BitInt(512)) 0), 0);
680 TEST_COMPARE (expr_has_type (stdc_count_ones ((unsigned _BitInt(512)) 0),
682 TEST_COMPARE (stdc_count_ones ((unsigned _BitInt(373)) 0), 0);
683 TEST_COMPARE (expr_has_type (stdc_count_ones ((unsigned _BitInt(373)) 0),
685 TEST_COMPARE (stdc_count_ones (~(unsigned _BitInt(512)) 0), 512);
686 TEST_COMPARE (stdc_count_ones (~(unsigned _BitInt(373)) 0), 373);
687 TEST_COMPARE (stdc_count_ones (~(unsigned _BitInt(512)) 1315), 512 - 5);
688 TEST_COMPARE (stdc_count_ones (~(unsigned _BitInt(373)) 3363), 373 - 6);
689 TEST_COMPARE (stdc_has_single_bit ((unsigned _BitInt(512)) 0), 0);
690 TEST_COMPARE (expr_has_type (stdc_has_single_bit ((unsigned _BitInt(512)) 0),
692 TEST_COMPARE (stdc_has_single_bit ((unsigned _BitInt(373)) 0), 0);
693 TEST_COMPARE (expr_has_type (stdc_has_single_bit ((unsigned _BitInt(373)) 0),
695 TEST_COMPARE (stdc_has_single_bit (~(unsigned _BitInt(512)) 0), 0);
696 TEST_COMPARE (stdc_has_single_bit (~(unsigned _BitInt(373)) 0), 0);
697 TEST_COMPARE (stdc_has_single_bit (((unsigned _BitInt(512)) 1022) << 279),
699 TEST_COMPARE (stdc_has_single_bit (((unsigned _BitInt(373)) 12) << 305), 0);
700 TEST_COMPARE (stdc_bit_width ((unsigned _BitInt(512)) 0), 0);
701 TEST_COMPARE (expr_has_type (stdc_bit_width ((unsigned _BitInt(512)) 0),
703 TEST_COMPARE (stdc_bit_width ((unsigned _BitInt(373)) 0), 0);
704 TEST_COMPARE (expr_has_type (stdc_bit_width ((unsigned _BitInt(373)) 0),
706 TEST_COMPARE (stdc_bit_width (~(unsigned _BitInt(512)) 0), 512);
707 TEST_COMPARE (stdc_bit_width (~(unsigned _BitInt(373)) 0), 373);
708 TEST_COMPARE (stdc_bit_width (((unsigned _BitInt(512)) 1023) << 405),
710 TEST_COMPARE (stdc_bit_width (((unsigned _BitInt(373)) 1024) << 242),
712 TEST_COMPARE (stdc_bit_floor ((unsigned _BitInt(512)) 0) != 0, 0);
713 TEST_COMPARE (expr_has_type (stdc_bit_floor ((unsigned _BitInt(512)) 0),
714 unsigned _BitInt(512)), 1);
715 TEST_COMPARE (stdc_bit_floor ((unsigned _BitInt(373)) 0) != 0, 0);
716 TEST_COMPARE (expr_has_type (stdc_bit_floor ((unsigned _BitInt(373)) 0),
717 unsigned _BitInt(373)), 1);
718 TEST_COMPARE (stdc_bit_floor (~(unsigned _BitInt(512)) 0)
719 != ((unsigned _BitInt(512)) 1) << (512 - 1), 0);
720 TEST_COMPARE (stdc_bit_floor (~(unsigned _BitInt(373)) 0)
721 != ((unsigned _BitInt(373)) 1) << (373 - 1), 0);
722 TEST_COMPARE (stdc_bit_floor (((unsigned _BitInt(512)) 511) << 405)
723 != (((unsigned _BitInt(512)) 256) << 405), 0);
724 TEST_COMPARE (stdc_bit_floor (((unsigned _BitInt(373)) 512) << 242)
725 != (((unsigned _BitInt(512)) 512) << 242), 0);
726 TEST_COMPARE (stdc_bit_ceil ((unsigned _BitInt(512)) 0) != 1, 0);
727 TEST_COMPARE (expr_has_type (stdc_bit_ceil ((unsigned _BitInt(512)) 0),
728 unsigned _BitInt(512)), 1);
729 TEST_COMPARE (stdc_bit_ceil ((unsigned _BitInt(373)) 0) != 1, 0);
730 TEST_COMPARE (expr_has_type (stdc_bit_ceil ((unsigned _BitInt(373)) 0),
731 unsigned _BitInt(373)), 1);
732 TEST_COMPARE (stdc_bit_ceil (~(unsigned _BitInt(512)) 0) != 0, 0);
733 TEST_COMPARE (stdc_bit_ceil (~(unsigned _BitInt(373)) 0) != 0, 0);
734 TEST_COMPARE (stdc_bit_ceil (((unsigned _BitInt(512)) 1) << (512 - 1))
735 != ((unsigned _BitInt(512)) 1) << (512 - 1), 0);
736 TEST_COMPARE (stdc_bit_ceil ((~(unsigned _BitInt(373)) 0) >> 1)
737 != ((unsigned _BitInt(373)) 1) << (373 - 1), 0);
738 TEST_COMPARE (stdc_bit_ceil (((unsigned _BitInt(512)) 512) << 405)
739 != (((unsigned _BitInt(512)) 512) << 405), 0);
740 TEST_COMPARE (stdc_bit_ceil (((unsigned _BitInt(373)) 513) << 242)
741 != (((unsigned _BitInt(512)) 1024) << 242), 0);
742 TEST_COMPARE (stdc_bit_floor ((unsigned _BitInt(BITINT_MAXWIDTH
)) 0) != 0,
744 TEST_COMPARE (stdc_bit_floor (~(unsigned _BitInt(BITINT_MAXWIDTH
)) 0)
745 != ((unsigned _BitInt(BITINT_MAXWIDTH
)) 1) << (BITINT_MAXWIDTH
747 TEST_COMPARE (stdc_bit_floor (((unsigned _BitInt(BITINT_MAXWIDTH
)) 511)
749 != (((unsigned _BitInt(BITINT_MAXWIDTH
)) 256) << 405), 0);
750 TEST_COMPARE (stdc_bit_floor (((unsigned _BitInt(BITINT_MAXWIDTH
)) 512)
752 != (((unsigned _BitInt(BITINT_MAXWIDTH
)) 512) << 405), 0);
753 TEST_COMPARE (stdc_bit_ceil ((unsigned _BitInt(BITINT_MAXWIDTH
)) 0) != 1, 0);
754 TEST_COMPARE (stdc_bit_ceil (~(unsigned _BitInt(BITINT_MAXWIDTH
)) 0) != 0,
756 TEST_COMPARE (stdc_bit_ceil (((unsigned _BitInt(BITINT_MAXWIDTH
)) 1)
757 << (BITINT_MAXWIDTH
- 1))
758 != ((unsigned _BitInt(BITINT_MAXWIDTH
)) 1) << (BITINT_MAXWIDTH
760 TEST_COMPARE (stdc_bit_ceil (((unsigned _BitInt(BITINT_MAXWIDTH
)) 512)
762 != (((unsigned _BitInt(BITINT_MAXWIDTH
)) 512) << 405), 0);
763 TEST_COMPARE (stdc_bit_ceil (((unsigned _BitInt(BITINT_MAXWIDTH
)) 513)
765 != (((unsigned _BitInt(BITINT_MAXWIDTH
)) 1024) << 405), 0);
778 #include <support/test-driver.c>