xref: /aosp_15_r20/external/llvm-libc/include/llvm-libc-macros/stdbit-macros.h (revision 71db0c75aadcf003ffe3238005f61d7618a3fead)
1*71db0c75SAndroid Build Coastguard Worker //===-- Definition of macros to be used with stdbit functions ----------===//
2*71db0c75SAndroid Build Coastguard Worker //
3*71db0c75SAndroid Build Coastguard Worker // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*71db0c75SAndroid Build Coastguard Worker // See https://llvm.org/LICENSE.txt for license information.
5*71db0c75SAndroid Build Coastguard Worker // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*71db0c75SAndroid Build Coastguard Worker //
7*71db0c75SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
8*71db0c75SAndroid Build Coastguard Worker 
9*71db0c75SAndroid Build Coastguard Worker #ifndef __LLVM_LIBC_MACROS_STDBIT_MACROS_H
10*71db0c75SAndroid Build Coastguard Worker #define __LLVM_LIBC_MACROS_STDBIT_MACROS_H
11*71db0c75SAndroid Build Coastguard Worker 
12*71db0c75SAndroid Build Coastguard Worker #define __STDC_VERSION_STDBIT_H__ 202311L
13*71db0c75SAndroid Build Coastguard Worker #define __STDC_ENDIAN_LITTLE__ __ORDER_LITTLE_ENDIAN__
14*71db0c75SAndroid Build Coastguard Worker #define __STDC_ENDIAN_BIG__ __ORDER_BIG_ENDIAN__
15*71db0c75SAndroid Build Coastguard Worker #define __STDC_ENDIAN_NATIVE__ __BYTE_ORDER__
16*71db0c75SAndroid Build Coastguard Worker 
17*71db0c75SAndroid Build Coastguard Worker // TODO(https://github.com/llvm/llvm-project/issues/80509): support _BitInt().
18*71db0c75SAndroid Build Coastguard Worker #ifdef __cplusplus
stdc_leading_zeros(unsigned char x)19*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_leading_zeros(unsigned char x) {
20*71db0c75SAndroid Build Coastguard Worker   return stdc_leading_zeros_uc(x);
21*71db0c75SAndroid Build Coastguard Worker }
stdc_leading_zeros(unsigned short x)22*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_leading_zeros(unsigned short x) {
23*71db0c75SAndroid Build Coastguard Worker   return stdc_leading_zeros_us(x);
24*71db0c75SAndroid Build Coastguard Worker }
stdc_leading_zeros(unsigned x)25*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_leading_zeros(unsigned x) {
26*71db0c75SAndroid Build Coastguard Worker   return stdc_leading_zeros_ui(x);
27*71db0c75SAndroid Build Coastguard Worker }
stdc_leading_zeros(unsigned long x)28*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_leading_zeros(unsigned long x) {
29*71db0c75SAndroid Build Coastguard Worker   return stdc_leading_zeros_ul(x);
30*71db0c75SAndroid Build Coastguard Worker }
stdc_leading_zeros(unsigned long long x)31*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_leading_zeros(unsigned long long x) {
32*71db0c75SAndroid Build Coastguard Worker   return stdc_leading_zeros_ull(x);
33*71db0c75SAndroid Build Coastguard Worker }
stdc_leading_ones(unsigned char x)34*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_leading_ones(unsigned char x) {
35*71db0c75SAndroid Build Coastguard Worker   return stdc_leading_ones_uc(x);
36*71db0c75SAndroid Build Coastguard Worker }
stdc_leading_ones(unsigned short x)37*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_leading_ones(unsigned short x) {
38*71db0c75SAndroid Build Coastguard Worker   return stdc_leading_ones_us(x);
39*71db0c75SAndroid Build Coastguard Worker }
stdc_leading_ones(unsigned x)40*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_leading_ones(unsigned x) {
41*71db0c75SAndroid Build Coastguard Worker   return stdc_leading_ones_ui(x);
42*71db0c75SAndroid Build Coastguard Worker }
stdc_leading_ones(unsigned long x)43*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_leading_ones(unsigned long x) {
44*71db0c75SAndroid Build Coastguard Worker   return stdc_leading_ones_ul(x);
45*71db0c75SAndroid Build Coastguard Worker }
stdc_leading_ones(unsigned long long x)46*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_leading_ones(unsigned long long x) {
47*71db0c75SAndroid Build Coastguard Worker   return stdc_leading_ones_ull(x);
48*71db0c75SAndroid Build Coastguard Worker }
stdc_trailing_zeros(unsigned char x)49*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_trailing_zeros(unsigned char x) {
50*71db0c75SAndroid Build Coastguard Worker   return stdc_trailing_zeros_uc(x);
51*71db0c75SAndroid Build Coastguard Worker }
stdc_trailing_zeros(unsigned short x)52*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_trailing_zeros(unsigned short x) {
53*71db0c75SAndroid Build Coastguard Worker   return stdc_trailing_zeros_us(x);
54*71db0c75SAndroid Build Coastguard Worker }
stdc_trailing_zeros(unsigned x)55*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_trailing_zeros(unsigned x) {
56*71db0c75SAndroid Build Coastguard Worker   return stdc_trailing_zeros_ui(x);
57*71db0c75SAndroid Build Coastguard Worker }
stdc_trailing_zeros(unsigned long x)58*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_trailing_zeros(unsigned long x) {
59*71db0c75SAndroid Build Coastguard Worker   return stdc_trailing_zeros_ul(x);
60*71db0c75SAndroid Build Coastguard Worker }
stdc_trailing_zeros(unsigned long long x)61*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_trailing_zeros(unsigned long long x) {
62*71db0c75SAndroid Build Coastguard Worker   return stdc_trailing_zeros_ull(x);
63*71db0c75SAndroid Build Coastguard Worker }
stdc_trailing_ones(unsigned char x)64*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_trailing_ones(unsigned char x) {
65*71db0c75SAndroid Build Coastguard Worker   return stdc_trailing_ones_uc(x);
66*71db0c75SAndroid Build Coastguard Worker }
stdc_trailing_ones(unsigned short x)67*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_trailing_ones(unsigned short x) {
68*71db0c75SAndroid Build Coastguard Worker   return stdc_trailing_ones_us(x);
69*71db0c75SAndroid Build Coastguard Worker }
stdc_trailing_ones(unsigned x)70*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_trailing_ones(unsigned x) {
71*71db0c75SAndroid Build Coastguard Worker   return stdc_trailing_ones_ui(x);
72*71db0c75SAndroid Build Coastguard Worker }
stdc_trailing_ones(unsigned long x)73*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_trailing_ones(unsigned long x) {
74*71db0c75SAndroid Build Coastguard Worker   return stdc_trailing_ones_ul(x);
75*71db0c75SAndroid Build Coastguard Worker }
stdc_trailing_ones(unsigned long long x)76*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_trailing_ones(unsigned long long x) {
77*71db0c75SAndroid Build Coastguard Worker   return stdc_trailing_ones_ull(x);
78*71db0c75SAndroid Build Coastguard Worker }
stdc_first_leading_zero(unsigned char x)79*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_leading_zero(unsigned char x) {
80*71db0c75SAndroid Build Coastguard Worker   return stdc_first_leading_zero_uc(x);
81*71db0c75SAndroid Build Coastguard Worker }
stdc_first_leading_zero(unsigned short x)82*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_leading_zero(unsigned short x) {
83*71db0c75SAndroid Build Coastguard Worker   return stdc_first_leading_zero_us(x);
84*71db0c75SAndroid Build Coastguard Worker }
stdc_first_leading_zero(unsigned x)85*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_leading_zero(unsigned x) {
86*71db0c75SAndroid Build Coastguard Worker   return stdc_first_leading_zero_ui(x);
87*71db0c75SAndroid Build Coastguard Worker }
stdc_first_leading_zero(unsigned long x)88*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_leading_zero(unsigned long x) {
89*71db0c75SAndroid Build Coastguard Worker   return stdc_first_leading_zero_ul(x);
90*71db0c75SAndroid Build Coastguard Worker }
stdc_first_leading_zero(unsigned long long x)91*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_leading_zero(unsigned long long x) {
92*71db0c75SAndroid Build Coastguard Worker   return stdc_first_leading_zero_ull(x);
93*71db0c75SAndroid Build Coastguard Worker }
stdc_first_leading_one(unsigned char x)94*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_leading_one(unsigned char x) {
95*71db0c75SAndroid Build Coastguard Worker   return stdc_first_leading_one_uc(x);
96*71db0c75SAndroid Build Coastguard Worker }
stdc_first_leading_one(unsigned short x)97*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_leading_one(unsigned short x) {
98*71db0c75SAndroid Build Coastguard Worker   return stdc_first_leading_one_us(x);
99*71db0c75SAndroid Build Coastguard Worker }
stdc_first_leading_one(unsigned x)100*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_leading_one(unsigned x) {
101*71db0c75SAndroid Build Coastguard Worker   return stdc_first_leading_one_ui(x);
102*71db0c75SAndroid Build Coastguard Worker }
stdc_first_leading_one(unsigned long x)103*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_leading_one(unsigned long x) {
104*71db0c75SAndroid Build Coastguard Worker   return stdc_first_leading_one_ul(x);
105*71db0c75SAndroid Build Coastguard Worker }
stdc_first_leading_one(unsigned long long x)106*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_leading_one(unsigned long long x) {
107*71db0c75SAndroid Build Coastguard Worker   return stdc_first_leading_one_ull(x);
108*71db0c75SAndroid Build Coastguard Worker }
stdc_first_trailing_zero(unsigned char x)109*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_trailing_zero(unsigned char x) {
110*71db0c75SAndroid Build Coastguard Worker   return stdc_first_trailing_zero_uc(x);
111*71db0c75SAndroid Build Coastguard Worker }
stdc_first_trailing_zero(unsigned short x)112*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_trailing_zero(unsigned short x) {
113*71db0c75SAndroid Build Coastguard Worker   return stdc_first_trailing_zero_us(x);
114*71db0c75SAndroid Build Coastguard Worker }
stdc_first_trailing_zero(unsigned x)115*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_trailing_zero(unsigned x) {
116*71db0c75SAndroid Build Coastguard Worker   return stdc_first_trailing_zero_ui(x);
117*71db0c75SAndroid Build Coastguard Worker }
stdc_first_trailing_zero(unsigned long x)118*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_trailing_zero(unsigned long x) {
119*71db0c75SAndroid Build Coastguard Worker   return stdc_first_trailing_zero_ul(x);
120*71db0c75SAndroid Build Coastguard Worker }
stdc_first_trailing_zero(unsigned long long x)121*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_trailing_zero(unsigned long long x) {
122*71db0c75SAndroid Build Coastguard Worker   return stdc_first_trailing_zero_ull(x);
123*71db0c75SAndroid Build Coastguard Worker }
stdc_first_trailing_one(unsigned char x)124*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_trailing_one(unsigned char x) {
125*71db0c75SAndroid Build Coastguard Worker   return stdc_first_trailing_one_uc(x);
126*71db0c75SAndroid Build Coastguard Worker }
stdc_first_trailing_one(unsigned short x)127*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_trailing_one(unsigned short x) {
128*71db0c75SAndroid Build Coastguard Worker   return stdc_first_trailing_one_us(x);
129*71db0c75SAndroid Build Coastguard Worker }
stdc_first_trailing_one(unsigned x)130*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_trailing_one(unsigned x) {
131*71db0c75SAndroid Build Coastguard Worker   return stdc_first_trailing_one_ui(x);
132*71db0c75SAndroid Build Coastguard Worker }
stdc_first_trailing_one(unsigned long x)133*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_trailing_one(unsigned long x) {
134*71db0c75SAndroid Build Coastguard Worker   return stdc_first_trailing_one_ul(x);
135*71db0c75SAndroid Build Coastguard Worker }
stdc_first_trailing_one(unsigned long long x)136*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_first_trailing_one(unsigned long long x) {
137*71db0c75SAndroid Build Coastguard Worker   return stdc_first_trailing_one_ull(x);
138*71db0c75SAndroid Build Coastguard Worker }
stdc_count_zeros(unsigned char x)139*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_count_zeros(unsigned char x) {
140*71db0c75SAndroid Build Coastguard Worker   return stdc_count_zeros_uc(x);
141*71db0c75SAndroid Build Coastguard Worker }
stdc_count_zeros(unsigned short x)142*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_count_zeros(unsigned short x) {
143*71db0c75SAndroid Build Coastguard Worker   return stdc_count_zeros_us(x);
144*71db0c75SAndroid Build Coastguard Worker }
stdc_count_zeros(unsigned x)145*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_count_zeros(unsigned x) { return stdc_count_zeros_ui(x); }
stdc_count_zeros(unsigned long x)146*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_count_zeros(unsigned long x) {
147*71db0c75SAndroid Build Coastguard Worker   return stdc_count_zeros_ul(x);
148*71db0c75SAndroid Build Coastguard Worker }
stdc_count_zeros(unsigned long long x)149*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_count_zeros(unsigned long long x) {
150*71db0c75SAndroid Build Coastguard Worker   return stdc_count_zeros_ull(x);
151*71db0c75SAndroid Build Coastguard Worker }
stdc_count_ones(unsigned char x)152*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_count_ones(unsigned char x) {
153*71db0c75SAndroid Build Coastguard Worker   return stdc_count_ones_uc(x);
154*71db0c75SAndroid Build Coastguard Worker }
stdc_count_ones(unsigned short x)155*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_count_ones(unsigned short x) {
156*71db0c75SAndroid Build Coastguard Worker   return stdc_count_ones_us(x);
157*71db0c75SAndroid Build Coastguard Worker }
stdc_count_ones(unsigned x)158*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_count_ones(unsigned x) { return stdc_count_ones_ui(x); }
stdc_count_ones(unsigned long x)159*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_count_ones(unsigned long x) {
160*71db0c75SAndroid Build Coastguard Worker   return stdc_count_ones_ul(x);
161*71db0c75SAndroid Build Coastguard Worker }
stdc_count_ones(unsigned long long x)162*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_count_ones(unsigned long long x) {
163*71db0c75SAndroid Build Coastguard Worker   return stdc_count_ones_ull(x);
164*71db0c75SAndroid Build Coastguard Worker }
stdc_has_single_bit(unsigned char x)165*71db0c75SAndroid Build Coastguard Worker inline bool stdc_has_single_bit(unsigned char x) {
166*71db0c75SAndroid Build Coastguard Worker   return stdc_has_single_bit_uc(x);
167*71db0c75SAndroid Build Coastguard Worker }
stdc_has_single_bit(unsigned short x)168*71db0c75SAndroid Build Coastguard Worker inline bool stdc_has_single_bit(unsigned short x) {
169*71db0c75SAndroid Build Coastguard Worker   return stdc_has_single_bit_us(x);
170*71db0c75SAndroid Build Coastguard Worker }
stdc_has_single_bit(unsigned x)171*71db0c75SAndroid Build Coastguard Worker inline bool stdc_has_single_bit(unsigned x) {
172*71db0c75SAndroid Build Coastguard Worker   return stdc_has_single_bit_ui(x);
173*71db0c75SAndroid Build Coastguard Worker }
stdc_has_single_bit(unsigned long x)174*71db0c75SAndroid Build Coastguard Worker inline bool stdc_has_single_bit(unsigned long x) {
175*71db0c75SAndroid Build Coastguard Worker   return stdc_has_single_bit_ul(x);
176*71db0c75SAndroid Build Coastguard Worker }
stdc_has_single_bit(unsigned long long x)177*71db0c75SAndroid Build Coastguard Worker inline bool stdc_has_single_bit(unsigned long long x) {
178*71db0c75SAndroid Build Coastguard Worker   return stdc_has_single_bit_ull(x);
179*71db0c75SAndroid Build Coastguard Worker }
stdc_bit_width(unsigned char x)180*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_bit_width(unsigned char x) { return stdc_bit_width_uc(x); }
stdc_bit_width(unsigned short x)181*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_bit_width(unsigned short x) {
182*71db0c75SAndroid Build Coastguard Worker   return stdc_bit_width_us(x);
183*71db0c75SAndroid Build Coastguard Worker }
stdc_bit_width(unsigned x)184*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_bit_width(unsigned x) { return stdc_bit_width_ui(x); }
stdc_bit_width(unsigned long x)185*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_bit_width(unsigned long x) { return stdc_bit_width_ul(x); }
stdc_bit_width(unsigned long long x)186*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_bit_width(unsigned long long x) {
187*71db0c75SAndroid Build Coastguard Worker   return stdc_bit_width_ull(x);
188*71db0c75SAndroid Build Coastguard Worker }
stdc_bit_floor(unsigned char x)189*71db0c75SAndroid Build Coastguard Worker inline unsigned char stdc_bit_floor(unsigned char x) {
190*71db0c75SAndroid Build Coastguard Worker   return stdc_bit_floor_uc(x);
191*71db0c75SAndroid Build Coastguard Worker }
stdc_bit_floor(unsigned short x)192*71db0c75SAndroid Build Coastguard Worker inline unsigned short stdc_bit_floor(unsigned short x) {
193*71db0c75SAndroid Build Coastguard Worker   return stdc_bit_floor_us(x);
194*71db0c75SAndroid Build Coastguard Worker }
stdc_bit_floor(unsigned x)195*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_bit_floor(unsigned x) { return stdc_bit_floor_ui(x); }
stdc_bit_floor(unsigned long x)196*71db0c75SAndroid Build Coastguard Worker inline unsigned long stdc_bit_floor(unsigned long x) {
197*71db0c75SAndroid Build Coastguard Worker   return stdc_bit_floor_ul(x);
198*71db0c75SAndroid Build Coastguard Worker }
stdc_bit_floor(unsigned long long x)199*71db0c75SAndroid Build Coastguard Worker inline unsigned long long stdc_bit_floor(unsigned long long x) {
200*71db0c75SAndroid Build Coastguard Worker   return stdc_bit_floor_ull(x);
201*71db0c75SAndroid Build Coastguard Worker }
stdc_bit_ceil(unsigned char x)202*71db0c75SAndroid Build Coastguard Worker inline unsigned char stdc_bit_ceil(unsigned char x) {
203*71db0c75SAndroid Build Coastguard Worker   return stdc_bit_ceil_uc(x);
204*71db0c75SAndroid Build Coastguard Worker }
stdc_bit_ceil(unsigned short x)205*71db0c75SAndroid Build Coastguard Worker inline unsigned short stdc_bit_ceil(unsigned short x) {
206*71db0c75SAndroid Build Coastguard Worker   return stdc_bit_ceil_us(x);
207*71db0c75SAndroid Build Coastguard Worker }
stdc_bit_ceil(unsigned x)208*71db0c75SAndroid Build Coastguard Worker inline unsigned stdc_bit_ceil(unsigned x) { return stdc_bit_ceil_ui(x); }
stdc_bit_ceil(unsigned long x)209*71db0c75SAndroid Build Coastguard Worker inline unsigned long stdc_bit_ceil(unsigned long x) {
210*71db0c75SAndroid Build Coastguard Worker   return stdc_bit_ceil_ul(x);
211*71db0c75SAndroid Build Coastguard Worker }
stdc_bit_ceil(unsigned long long x)212*71db0c75SAndroid Build Coastguard Worker inline unsigned long long stdc_bit_ceil(unsigned long long x) {
213*71db0c75SAndroid Build Coastguard Worker   return stdc_bit_ceil_ull(x);
214*71db0c75SAndroid Build Coastguard Worker }
215*71db0c75SAndroid Build Coastguard Worker #else
216*71db0c75SAndroid Build Coastguard Worker #define stdc_leading_zeros(x)                                                  \
217*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
218*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_leading_zeros_uc,                                    \
219*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_leading_zeros_us,                                   \
220*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_leading_zeros_ui,                                         \
221*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_leading_zeros_ul,                                    \
222*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_leading_zeros_ull)(x)
223*71db0c75SAndroid Build Coastguard Worker #define stdc_leading_ones(x)                                                   \
224*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
225*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_leading_ones_uc,                                     \
226*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_leading_ones_us,                                    \
227*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_leading_ones_ui,                                          \
228*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_leading_ones_ul,                                     \
229*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_leading_ones_ull)(x)
230*71db0c75SAndroid Build Coastguard Worker #define stdc_trailing_zeros(x)                                                 \
231*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
232*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_trailing_zeros_uc,                                   \
233*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_trailing_zeros_us,                                  \
234*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_trailing_zeros_ui,                                        \
235*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_trailing_zeros_ul,                                   \
236*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_trailing_zeros_ull)(x)
237*71db0c75SAndroid Build Coastguard Worker #define stdc_trailing_ones(x)                                                  \
238*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
239*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_trailing_ones_uc,                                    \
240*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_trailing_ones_us,                                   \
241*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_trailing_ones_ui,                                         \
242*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_trailing_ones_ul,                                    \
243*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_trailing_ones_ull)(x)
244*71db0c75SAndroid Build Coastguard Worker #define stdc_first_leading_zero(x)                                             \
245*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
246*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_first_leading_zero_uc,                               \
247*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_first_leading_zero_us,                              \
248*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_first_leading_zero_ui,                                    \
249*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_first_leading_zero_ul,                               \
250*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_first_leading_zero_ull)(x)
251*71db0c75SAndroid Build Coastguard Worker #define stdc_first_leading_one(x)                                              \
252*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
253*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_first_leading_one_uc,                                \
254*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_first_leading_one_us,                               \
255*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_first_leading_one_ui,                                     \
256*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_first_leading_one_ul,                                \
257*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_first_leading_one_ull)(x)
258*71db0c75SAndroid Build Coastguard Worker #define stdc_first_trailing_zero(x)                                            \
259*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
260*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_first_trailing_zero_uc,                              \
261*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_first_trailing_zero_us,                             \
262*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_first_trailing_zero_ui,                                   \
263*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_first_trailing_zero_ul,                              \
264*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_first_trailing_zero_ull)(x)
265*71db0c75SAndroid Build Coastguard Worker #define stdc_first_trailing_one(x)                                             \
266*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
267*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_first_trailing_one_uc,                               \
268*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_first_trailing_one_us,                              \
269*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_first_trailing_one_ui,                                    \
270*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_first_trailing_one_ul,                               \
271*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_first_trailing_one_ull)(x)
272*71db0c75SAndroid Build Coastguard Worker #define stdc_count_zeros(x)                                                    \
273*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
274*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_count_zeros_uc,                                      \
275*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_count_zeros_us,                                     \
276*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_count_zeros_ui,                                           \
277*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_count_zeros_ul,                                      \
278*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_count_zeros_ull)(x)
279*71db0c75SAndroid Build Coastguard Worker #define stdc_count_ones(x)                                                     \
280*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
281*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_count_ones_uc,                                       \
282*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_count_ones_us,                                      \
283*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_count_ones_ui,                                            \
284*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_count_ones_ul,                                       \
285*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_count_ones_ull)(x)
286*71db0c75SAndroid Build Coastguard Worker #define stdc_has_single_bit(x)                                                 \
287*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
288*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_has_single_bit_uc,                                   \
289*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_has_single_bit_us,                                  \
290*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_has_single_bit_ui,                                        \
291*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_has_single_bit_ul,                                   \
292*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_has_single_bit_ull)(x)
293*71db0c75SAndroid Build Coastguard Worker #define stdc_bit_width(x)                                                      \
294*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
295*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_bit_width_uc,                                        \
296*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_bit_width_us,                                       \
297*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_bit_width_ui,                                             \
298*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_bit_width_ul,                                        \
299*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_bit_width_ull)(x)
300*71db0c75SAndroid Build Coastguard Worker #define stdc_bit_floor(x)                                                      \
301*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
302*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_bit_floor_uc,                                        \
303*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_bit_floor_us,                                       \
304*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_bit_floor_ui,                                             \
305*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_bit_floor_ul,                                        \
306*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_bit_floor_ull)(x)
307*71db0c75SAndroid Build Coastguard Worker #define stdc_bit_ceil(x)                                                       \
308*71db0c75SAndroid Build Coastguard Worker   _Generic((x),                                                                \
309*71db0c75SAndroid Build Coastguard Worker       unsigned char: stdc_bit_ceil_uc,                                         \
310*71db0c75SAndroid Build Coastguard Worker       unsigned short: stdc_bit_ceil_us,                                        \
311*71db0c75SAndroid Build Coastguard Worker       unsigned: stdc_bit_ceil_ui,                                              \
312*71db0c75SAndroid Build Coastguard Worker       unsigned long: stdc_bit_ceil_ul,                                         \
313*71db0c75SAndroid Build Coastguard Worker       unsigned long long: stdc_bit_ceil_ull)(x)
314*71db0c75SAndroid Build Coastguard Worker #endif // __cplusplus
315*71db0c75SAndroid Build Coastguard Worker 
316*71db0c75SAndroid Build Coastguard Worker #endif // __LLVM_LIBC_MACROS_STDBIT_MACROS_H
317