xref: /aosp_15_r20/external/llvm-libc/include/llvm-libc-macros/stdint-macros.h (revision 71db0c75aadcf003ffe3238005f61d7618a3fead)
1*71db0c75SAndroid Build Coastguard Worker //===-- Definition of macros from stdint.h --------------------------------===//
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_STDINT_MACROS_H
10*71db0c75SAndroid Build Coastguard Worker #define LLVM_LIBC_MACROS_STDINT_MACROS_H
11*71db0c75SAndroid Build Coastguard Worker 
12*71db0c75SAndroid Build Coastguard Worker // These definitions are copied directly from the clang implementation located
13*71db0c75SAndroid Build Coastguard Worker // at 'clang/lib/Headers/stdint.h'. We provide it here again for compatibility.
14*71db0c75SAndroid Build Coastguard Worker 
15*71db0c75SAndroid Build Coastguard Worker /* C99 7.18.1.1 Exact-width integer types.
16*71db0c75SAndroid Build Coastguard Worker  * C99 7.18.1.2 Minimum-width integer types.
17*71db0c75SAndroid Build Coastguard Worker  * C99 7.18.1.3 Fastest minimum-width integer types.
18*71db0c75SAndroid Build Coastguard Worker  *
19*71db0c75SAndroid Build Coastguard Worker  * The standard requires that exact-width type be defined for 8-, 16-, 32-, and
20*71db0c75SAndroid Build Coastguard Worker  * 64-bit types if they are implemented. Other exact width types are optional.
21*71db0c75SAndroid Build Coastguard Worker  * This implementation defines an exact-width types for every integer width
22*71db0c75SAndroid Build Coastguard Worker  * that is represented in the standard integer types.
23*71db0c75SAndroid Build Coastguard Worker  *
24*71db0c75SAndroid Build Coastguard Worker  * The standard also requires minimum-width types be defined for 8-, 16-, 32-,
25*71db0c75SAndroid Build Coastguard Worker  * and 64-bit widths regardless of whether there are corresponding exact-width
26*71db0c75SAndroid Build Coastguard Worker  * types.
27*71db0c75SAndroid Build Coastguard Worker  *
28*71db0c75SAndroid Build Coastguard Worker  * To accommodate targets that are missing types that are exactly 8, 16, 32, or
29*71db0c75SAndroid Build Coastguard Worker  * 64 bits wide, this implementation takes an approach of cascading
30*71db0c75SAndroid Build Coastguard Worker  * redefinitions, redefining __int_leastN_t to successively smaller exact-width
31*71db0c75SAndroid Build Coastguard Worker  * types. It is therefore important that the types are defined in order of
32*71db0c75SAndroid Build Coastguard Worker  * descending widths.
33*71db0c75SAndroid Build Coastguard Worker  *
34*71db0c75SAndroid Build Coastguard Worker  * We currently assume that the minimum-width types and the fastest
35*71db0c75SAndroid Build Coastguard Worker  * minimum-width types are the same. This is allowed by the standard, but is
36*71db0c75SAndroid Build Coastguard Worker  * suboptimal.
37*71db0c75SAndroid Build Coastguard Worker  *
38*71db0c75SAndroid Build Coastguard Worker  * In violation of the standard, some targets do not implement a type that is
39*71db0c75SAndroid Build Coastguard Worker  * wide enough to represent all of the required widths (8-, 16-, 32-, 64-bit).
40*71db0c75SAndroid Build Coastguard Worker  * To accommodate these targets, a required minimum-width type is only
41*71db0c75SAndroid Build Coastguard Worker  * defined if there exists an exact-width type of equal or greater width.
42*71db0c75SAndroid Build Coastguard Worker  */
43*71db0c75SAndroid Build Coastguard Worker 
44*71db0c75SAndroid Build Coastguard Worker #ifdef __INT64_TYPE__
45*71db0c75SAndroid Build Coastguard Worker #ifndef __int8_t_defined /* glibc sys/types.h also defines int64_t*/
46*71db0c75SAndroid Build Coastguard Worker typedef __INT64_TYPE__ int64_t;
47*71db0c75SAndroid Build Coastguard Worker #endif /* __int8_t_defined */
48*71db0c75SAndroid Build Coastguard Worker typedef __UINT64_TYPE__ uint64_t;
49*71db0c75SAndroid Build Coastguard Worker #undef __int_least64_t
50*71db0c75SAndroid Build Coastguard Worker #define __int_least64_t int64_t
51*71db0c75SAndroid Build Coastguard Worker #undef __uint_least64_t
52*71db0c75SAndroid Build Coastguard Worker #define __uint_least64_t uint64_t
53*71db0c75SAndroid Build Coastguard Worker #undef __int_least32_t
54*71db0c75SAndroid Build Coastguard Worker #define __int_least32_t int64_t
55*71db0c75SAndroid Build Coastguard Worker #undef __uint_least32_t
56*71db0c75SAndroid Build Coastguard Worker #define __uint_least32_t uint64_t
57*71db0c75SAndroid Build Coastguard Worker #undef __int_least16_t
58*71db0c75SAndroid Build Coastguard Worker #define __int_least16_t int64_t
59*71db0c75SAndroid Build Coastguard Worker #undef __uint_least16_t
60*71db0c75SAndroid Build Coastguard Worker #define __uint_least16_t uint64_t
61*71db0c75SAndroid Build Coastguard Worker #undef __int_least8_t
62*71db0c75SAndroid Build Coastguard Worker #define __int_least8_t int64_t
63*71db0c75SAndroid Build Coastguard Worker #undef __uint_least8_t
64*71db0c75SAndroid Build Coastguard Worker #define __uint_least8_t uint64_t
65*71db0c75SAndroid Build Coastguard Worker #endif /* __INT64_TYPE__ */
66*71db0c75SAndroid Build Coastguard Worker 
67*71db0c75SAndroid Build Coastguard Worker #ifdef __int_least64_t
68*71db0c75SAndroid Build Coastguard Worker typedef __int_least64_t int_least64_t;
69*71db0c75SAndroid Build Coastguard Worker typedef __uint_least64_t uint_least64_t;
70*71db0c75SAndroid Build Coastguard Worker typedef __int_least64_t int_fast64_t;
71*71db0c75SAndroid Build Coastguard Worker typedef __uint_least64_t uint_fast64_t;
72*71db0c75SAndroid Build Coastguard Worker #endif /* __int_least64_t */
73*71db0c75SAndroid Build Coastguard Worker 
74*71db0c75SAndroid Build Coastguard Worker #ifdef __INT56_TYPE__
75*71db0c75SAndroid Build Coastguard Worker typedef __INT56_TYPE__ int56_t;
76*71db0c75SAndroid Build Coastguard Worker typedef __UINT56_TYPE__ uint56_t;
77*71db0c75SAndroid Build Coastguard Worker typedef int56_t int_least56_t;
78*71db0c75SAndroid Build Coastguard Worker typedef uint56_t uint_least56_t;
79*71db0c75SAndroid Build Coastguard Worker typedef int56_t int_fast56_t;
80*71db0c75SAndroid Build Coastguard Worker typedef uint56_t uint_fast56_t;
81*71db0c75SAndroid Build Coastguard Worker #undef __int_least32_t
82*71db0c75SAndroid Build Coastguard Worker #define __int_least32_t int56_t
83*71db0c75SAndroid Build Coastguard Worker #undef __uint_least32_t
84*71db0c75SAndroid Build Coastguard Worker #define __uint_least32_t uint56_t
85*71db0c75SAndroid Build Coastguard Worker #undef __int_least16_t
86*71db0c75SAndroid Build Coastguard Worker #define __int_least16_t int56_t
87*71db0c75SAndroid Build Coastguard Worker #undef __uint_least16_t
88*71db0c75SAndroid Build Coastguard Worker #define __uint_least16_t uint56_t
89*71db0c75SAndroid Build Coastguard Worker #undef __int_least8_t
90*71db0c75SAndroid Build Coastguard Worker #define __int_least8_t int56_t
91*71db0c75SAndroid Build Coastguard Worker #undef __uint_least8_t
92*71db0c75SAndroid Build Coastguard Worker #define __uint_least8_t uint56_t
93*71db0c75SAndroid Build Coastguard Worker #endif /* __INT56_TYPE__ */
94*71db0c75SAndroid Build Coastguard Worker 
95*71db0c75SAndroid Build Coastguard Worker #ifdef __INT48_TYPE__
96*71db0c75SAndroid Build Coastguard Worker typedef __INT48_TYPE__ int48_t;
97*71db0c75SAndroid Build Coastguard Worker typedef __UINT48_TYPE__ uint48_t;
98*71db0c75SAndroid Build Coastguard Worker typedef int48_t int_least48_t;
99*71db0c75SAndroid Build Coastguard Worker typedef uint48_t uint_least48_t;
100*71db0c75SAndroid Build Coastguard Worker typedef int48_t int_fast48_t;
101*71db0c75SAndroid Build Coastguard Worker typedef uint48_t uint_fast48_t;
102*71db0c75SAndroid Build Coastguard Worker #undef __int_least32_t
103*71db0c75SAndroid Build Coastguard Worker #define __int_least32_t int48_t
104*71db0c75SAndroid Build Coastguard Worker #undef __uint_least32_t
105*71db0c75SAndroid Build Coastguard Worker #define __uint_least32_t uint48_t
106*71db0c75SAndroid Build Coastguard Worker #undef __int_least16_t
107*71db0c75SAndroid Build Coastguard Worker #define __int_least16_t int48_t
108*71db0c75SAndroid Build Coastguard Worker #undef __uint_least16_t
109*71db0c75SAndroid Build Coastguard Worker #define __uint_least16_t uint48_t
110*71db0c75SAndroid Build Coastguard Worker #undef __int_least8_t
111*71db0c75SAndroid Build Coastguard Worker #define __int_least8_t int48_t
112*71db0c75SAndroid Build Coastguard Worker #undef __uint_least8_t
113*71db0c75SAndroid Build Coastguard Worker #define __uint_least8_t uint48_t
114*71db0c75SAndroid Build Coastguard Worker #endif /* __INT48_TYPE__ */
115*71db0c75SAndroid Build Coastguard Worker 
116*71db0c75SAndroid Build Coastguard Worker #ifdef __INT40_TYPE__
117*71db0c75SAndroid Build Coastguard Worker typedef __INT40_TYPE__ int40_t;
118*71db0c75SAndroid Build Coastguard Worker typedef __UINT40_TYPE__ uint40_t;
119*71db0c75SAndroid Build Coastguard Worker typedef int40_t int_least40_t;
120*71db0c75SAndroid Build Coastguard Worker typedef uint40_t uint_least40_t;
121*71db0c75SAndroid Build Coastguard Worker typedef int40_t int_fast40_t;
122*71db0c75SAndroid Build Coastguard Worker typedef uint40_t uint_fast40_t;
123*71db0c75SAndroid Build Coastguard Worker #undef __int_least32_t
124*71db0c75SAndroid Build Coastguard Worker #define __int_least32_t int40_t
125*71db0c75SAndroid Build Coastguard Worker #undef __uint_least32_t
126*71db0c75SAndroid Build Coastguard Worker #define __uint_least32_t uint40_t
127*71db0c75SAndroid Build Coastguard Worker #undef __int_least16_t
128*71db0c75SAndroid Build Coastguard Worker #define __int_least16_t int40_t
129*71db0c75SAndroid Build Coastguard Worker #undef __uint_least16_t
130*71db0c75SAndroid Build Coastguard Worker #define __uint_least16_t uint40_t
131*71db0c75SAndroid Build Coastguard Worker #undef __int_least8_t
132*71db0c75SAndroid Build Coastguard Worker #define __int_least8_t int40_t
133*71db0c75SAndroid Build Coastguard Worker #undef __uint_least8_t
134*71db0c75SAndroid Build Coastguard Worker #define __uint_least8_t uint40_t
135*71db0c75SAndroid Build Coastguard Worker #endif /* __INT40_TYPE__ */
136*71db0c75SAndroid Build Coastguard Worker 
137*71db0c75SAndroid Build Coastguard Worker #ifdef __INT32_TYPE__
138*71db0c75SAndroid Build Coastguard Worker 
139*71db0c75SAndroid Build Coastguard Worker #ifndef __int8_t_defined /* glibc sys/types.h also defines int32_t*/
140*71db0c75SAndroid Build Coastguard Worker typedef __INT32_TYPE__ int32_t;
141*71db0c75SAndroid Build Coastguard Worker #endif /* __int8_t_defined */
142*71db0c75SAndroid Build Coastguard Worker 
143*71db0c75SAndroid Build Coastguard Worker #ifndef __uint32_t_defined /* more glibc compatibility */
144*71db0c75SAndroid Build Coastguard Worker #define __uint32_t_defined
145*71db0c75SAndroid Build Coastguard Worker typedef __UINT32_TYPE__ uint32_t;
146*71db0c75SAndroid Build Coastguard Worker #endif /* __uint32_t_defined */
147*71db0c75SAndroid Build Coastguard Worker 
148*71db0c75SAndroid Build Coastguard Worker #undef __int_least32_t
149*71db0c75SAndroid Build Coastguard Worker #define __int_least32_t int32_t
150*71db0c75SAndroid Build Coastguard Worker #undef __uint_least32_t
151*71db0c75SAndroid Build Coastguard Worker #define __uint_least32_t uint32_t
152*71db0c75SAndroid Build Coastguard Worker #undef __int_least16_t
153*71db0c75SAndroid Build Coastguard Worker #define __int_least16_t int32_t
154*71db0c75SAndroid Build Coastguard Worker #undef __uint_least16_t
155*71db0c75SAndroid Build Coastguard Worker #define __uint_least16_t uint32_t
156*71db0c75SAndroid Build Coastguard Worker #undef __int_least8_t
157*71db0c75SAndroid Build Coastguard Worker #define __int_least8_t int32_t
158*71db0c75SAndroid Build Coastguard Worker #undef __uint_least8_t
159*71db0c75SAndroid Build Coastguard Worker #define __uint_least8_t uint32_t
160*71db0c75SAndroid Build Coastguard Worker #endif /* __INT32_TYPE__ */
161*71db0c75SAndroid Build Coastguard Worker 
162*71db0c75SAndroid Build Coastguard Worker #ifdef __int_least32_t
163*71db0c75SAndroid Build Coastguard Worker typedef __int_least32_t int_least32_t;
164*71db0c75SAndroid Build Coastguard Worker typedef __uint_least32_t uint_least32_t;
165*71db0c75SAndroid Build Coastguard Worker typedef __int_least32_t int_fast32_t;
166*71db0c75SAndroid Build Coastguard Worker typedef __uint_least32_t uint_fast32_t;
167*71db0c75SAndroid Build Coastguard Worker #endif /* __int_least32_t */
168*71db0c75SAndroid Build Coastguard Worker 
169*71db0c75SAndroid Build Coastguard Worker #ifdef __INT24_TYPE__
170*71db0c75SAndroid Build Coastguard Worker typedef __INT24_TYPE__ int24_t;
171*71db0c75SAndroid Build Coastguard Worker typedef __UINT24_TYPE__ uint24_t;
172*71db0c75SAndroid Build Coastguard Worker typedef int24_t int_least24_t;
173*71db0c75SAndroid Build Coastguard Worker typedef uint24_t uint_least24_t;
174*71db0c75SAndroid Build Coastguard Worker typedef int24_t int_fast24_t;
175*71db0c75SAndroid Build Coastguard Worker typedef uint24_t uint_fast24_t;
176*71db0c75SAndroid Build Coastguard Worker #undef __int_least16_t
177*71db0c75SAndroid Build Coastguard Worker #define __int_least16_t int24_t
178*71db0c75SAndroid Build Coastguard Worker #undef __uint_least16_t
179*71db0c75SAndroid Build Coastguard Worker #define __uint_least16_t uint24_t
180*71db0c75SAndroid Build Coastguard Worker #undef __int_least8_t
181*71db0c75SAndroid Build Coastguard Worker #define __int_least8_t int24_t
182*71db0c75SAndroid Build Coastguard Worker #undef __uint_least8_t
183*71db0c75SAndroid Build Coastguard Worker #define __uint_least8_t uint24_t
184*71db0c75SAndroid Build Coastguard Worker #endif /* __INT24_TYPE__ */
185*71db0c75SAndroid Build Coastguard Worker 
186*71db0c75SAndroid Build Coastguard Worker #ifdef __INT16_TYPE__
187*71db0c75SAndroid Build Coastguard Worker #ifndef __int8_t_defined /* glibc sys/types.h also defines int16_t*/
188*71db0c75SAndroid Build Coastguard Worker typedef __INT16_TYPE__ int16_t;
189*71db0c75SAndroid Build Coastguard Worker #endif /* __int8_t_defined */
190*71db0c75SAndroid Build Coastguard Worker typedef __UINT16_TYPE__ uint16_t;
191*71db0c75SAndroid Build Coastguard Worker #undef __int_least16_t
192*71db0c75SAndroid Build Coastguard Worker #define __int_least16_t int16_t
193*71db0c75SAndroid Build Coastguard Worker #undef __uint_least16_t
194*71db0c75SAndroid Build Coastguard Worker #define __uint_least16_t uint16_t
195*71db0c75SAndroid Build Coastguard Worker #undef __int_least8_t
196*71db0c75SAndroid Build Coastguard Worker #define __int_least8_t int16_t
197*71db0c75SAndroid Build Coastguard Worker #undef __uint_least8_t
198*71db0c75SAndroid Build Coastguard Worker #define __uint_least8_t uint16_t
199*71db0c75SAndroid Build Coastguard Worker #endif /* __INT16_TYPE__ */
200*71db0c75SAndroid Build Coastguard Worker 
201*71db0c75SAndroid Build Coastguard Worker #ifdef __int_least16_t
202*71db0c75SAndroid Build Coastguard Worker typedef __int_least16_t int_least16_t;
203*71db0c75SAndroid Build Coastguard Worker typedef __uint_least16_t uint_least16_t;
204*71db0c75SAndroid Build Coastguard Worker typedef __int_least16_t int_fast16_t;
205*71db0c75SAndroid Build Coastguard Worker typedef __uint_least16_t uint_fast16_t;
206*71db0c75SAndroid Build Coastguard Worker #endif /* __int_least16_t */
207*71db0c75SAndroid Build Coastguard Worker 
208*71db0c75SAndroid Build Coastguard Worker #ifdef __INT8_TYPE__
209*71db0c75SAndroid Build Coastguard Worker #ifndef __int8_t_defined /* glibc sys/types.h also defines int8_t*/
210*71db0c75SAndroid Build Coastguard Worker typedef __INT8_TYPE__ int8_t;
211*71db0c75SAndroid Build Coastguard Worker #endif /* __int8_t_defined */
212*71db0c75SAndroid Build Coastguard Worker typedef __UINT8_TYPE__ uint8_t;
213*71db0c75SAndroid Build Coastguard Worker #undef __int_least8_t
214*71db0c75SAndroid Build Coastguard Worker #define __int_least8_t int8_t
215*71db0c75SAndroid Build Coastguard Worker #undef __uint_least8_t
216*71db0c75SAndroid Build Coastguard Worker #define __uint_least8_t uint8_t
217*71db0c75SAndroid Build Coastguard Worker #endif /* __INT8_TYPE__ */
218*71db0c75SAndroid Build Coastguard Worker 
219*71db0c75SAndroid Build Coastguard Worker #ifdef __int_least8_t
220*71db0c75SAndroid Build Coastguard Worker typedef __int_least8_t int_least8_t;
221*71db0c75SAndroid Build Coastguard Worker typedef __uint_least8_t uint_least8_t;
222*71db0c75SAndroid Build Coastguard Worker typedef __int_least8_t int_fast8_t;
223*71db0c75SAndroid Build Coastguard Worker typedef __uint_least8_t uint_fast8_t;
224*71db0c75SAndroid Build Coastguard Worker #endif /* __int_least8_t */
225*71db0c75SAndroid Build Coastguard Worker 
226*71db0c75SAndroid Build Coastguard Worker /* prevent glibc sys/types.h from defining conflicting types */
227*71db0c75SAndroid Build Coastguard Worker #ifndef __int8_t_defined
228*71db0c75SAndroid Build Coastguard Worker #define __int8_t_defined
229*71db0c75SAndroid Build Coastguard Worker #endif /* __int8_t_defined */
230*71db0c75SAndroid Build Coastguard Worker 
231*71db0c75SAndroid Build Coastguard Worker /* C99 7.18.1.4 Integer types capable of holding object pointers.
232*71db0c75SAndroid Build Coastguard Worker  */
233*71db0c75SAndroid Build Coastguard Worker #define __stdint_join3(a, b, c) a##b##c
234*71db0c75SAndroid Build Coastguard Worker 
235*71db0c75SAndroid Build Coastguard Worker #ifndef _INTPTR_T
236*71db0c75SAndroid Build Coastguard Worker #ifndef __intptr_t_defined
237*71db0c75SAndroid Build Coastguard Worker typedef __INTPTR_TYPE__ intptr_t;
238*71db0c75SAndroid Build Coastguard Worker #define __intptr_t_defined
239*71db0c75SAndroid Build Coastguard Worker #define _INTPTR_T
240*71db0c75SAndroid Build Coastguard Worker #endif
241*71db0c75SAndroid Build Coastguard Worker #endif
242*71db0c75SAndroid Build Coastguard Worker 
243*71db0c75SAndroid Build Coastguard Worker #ifndef _UINTPTR_T
244*71db0c75SAndroid Build Coastguard Worker typedef __UINTPTR_TYPE__ uintptr_t;
245*71db0c75SAndroid Build Coastguard Worker #define _UINTPTR_T
246*71db0c75SAndroid Build Coastguard Worker #endif
247*71db0c75SAndroid Build Coastguard Worker 
248*71db0c75SAndroid Build Coastguard Worker /* C99 7.18.1.5 Greatest-width integer types.
249*71db0c75SAndroid Build Coastguard Worker  */
250*71db0c75SAndroid Build Coastguard Worker typedef __INTMAX_TYPE__ intmax_t;
251*71db0c75SAndroid Build Coastguard Worker typedef __UINTMAX_TYPE__ uintmax_t;
252*71db0c75SAndroid Build Coastguard Worker 
253*71db0c75SAndroid Build Coastguard Worker /* C99 7.18.4 Macros for minimum-width integer constants.
254*71db0c75SAndroid Build Coastguard Worker  *
255*71db0c75SAndroid Build Coastguard Worker  * The standard requires that integer constant macros be defined for all the
256*71db0c75SAndroid Build Coastguard Worker  * minimum-width types defined above. As 8-, 16-, 32-, and 64-bit minimum-width
257*71db0c75SAndroid Build Coastguard Worker  * types are required, the corresponding integer constant macros are defined
258*71db0c75SAndroid Build Coastguard Worker  * here. This implementation also defines minimum-width types for every other
259*71db0c75SAndroid Build Coastguard Worker  * integer width that the target implements, so corresponding macros are
260*71db0c75SAndroid Build Coastguard Worker  * defined below, too.
261*71db0c75SAndroid Build Coastguard Worker  *
262*71db0c75SAndroid Build Coastguard Worker  * These macros are defined using the same successive-shrinking approach as
263*71db0c75SAndroid Build Coastguard Worker  * the type definitions above. It is likewise important that macros are defined
264*71db0c75SAndroid Build Coastguard Worker  * in order of decending width.
265*71db0c75SAndroid Build Coastguard Worker  *
266*71db0c75SAndroid Build Coastguard Worker  * Note that C++ should not check __STDC_CONSTANT_MACROS here, contrary to the
267*71db0c75SAndroid Build Coastguard Worker  * claims of the C standard (see C++ 18.3.1p2, [cstdint.syn]).
268*71db0c75SAndroid Build Coastguard Worker  */
269*71db0c75SAndroid Build Coastguard Worker 
270*71db0c75SAndroid Build Coastguard Worker #define __int_c_join(a, b) a##b
271*71db0c75SAndroid Build Coastguard Worker #define __int_c(v, suffix) __int_c_join(v, suffix)
272*71db0c75SAndroid Build Coastguard Worker #define __uint_c(v, suffix) __int_c_join(v##U, suffix)
273*71db0c75SAndroid Build Coastguard Worker 
274*71db0c75SAndroid Build Coastguard Worker #ifdef __INT64_TYPE__
275*71db0c75SAndroid Build Coastguard Worker #undef __int64_c_suffix
276*71db0c75SAndroid Build Coastguard Worker #undef __int32_c_suffix
277*71db0c75SAndroid Build Coastguard Worker #undef __int16_c_suffix
278*71db0c75SAndroid Build Coastguard Worker #undef __int8_c_suffix
279*71db0c75SAndroid Build Coastguard Worker #ifdef __INT64_C_SUFFIX__
280*71db0c75SAndroid Build Coastguard Worker #define __int64_c_suffix __INT64_C_SUFFIX__
281*71db0c75SAndroid Build Coastguard Worker #define __int32_c_suffix __INT64_C_SUFFIX__
282*71db0c75SAndroid Build Coastguard Worker #define __int16_c_suffix __INT64_C_SUFFIX__
283*71db0c75SAndroid Build Coastguard Worker #define __int8_c_suffix __INT64_C_SUFFIX__
284*71db0c75SAndroid Build Coastguard Worker #endif /* __INT64_C_SUFFIX__ */
285*71db0c75SAndroid Build Coastguard Worker #endif /* __INT64_TYPE__ */
286*71db0c75SAndroid Build Coastguard Worker 
287*71db0c75SAndroid Build Coastguard Worker #ifdef __int_least64_t
288*71db0c75SAndroid Build Coastguard Worker #ifdef __int64_c_suffix
289*71db0c75SAndroid Build Coastguard Worker #define INT64_C(v) __int_c(v, __int64_c_suffix)
290*71db0c75SAndroid Build Coastguard Worker #define UINT64_C(v) __uint_c(v, __int64_c_suffix)
291*71db0c75SAndroid Build Coastguard Worker #else
292*71db0c75SAndroid Build Coastguard Worker #define INT64_C(v) v
293*71db0c75SAndroid Build Coastguard Worker #define UINT64_C(v) v##U
294*71db0c75SAndroid Build Coastguard Worker #endif /* __int64_c_suffix */
295*71db0c75SAndroid Build Coastguard Worker #endif /* __int_least64_t */
296*71db0c75SAndroid Build Coastguard Worker 
297*71db0c75SAndroid Build Coastguard Worker #ifdef __INT56_TYPE__
298*71db0c75SAndroid Build Coastguard Worker #undef __int32_c_suffix
299*71db0c75SAndroid Build Coastguard Worker #undef __int16_c_suffix
300*71db0c75SAndroid Build Coastguard Worker #undef __int8_c_suffix
301*71db0c75SAndroid Build Coastguard Worker #ifdef __INT56_C_SUFFIX__
302*71db0c75SAndroid Build Coastguard Worker #define INT56_C(v) __int_c(v, __INT56_C_SUFFIX__)
303*71db0c75SAndroid Build Coastguard Worker #define UINT56_C(v) __uint_c(v, __INT56_C_SUFFIX__)
304*71db0c75SAndroid Build Coastguard Worker #define __int32_c_suffix __INT56_C_SUFFIX__
305*71db0c75SAndroid Build Coastguard Worker #define __int16_c_suffix __INT56_C_SUFFIX__
306*71db0c75SAndroid Build Coastguard Worker #define __int8_c_suffix __INT56_C_SUFFIX__
307*71db0c75SAndroid Build Coastguard Worker #else
308*71db0c75SAndroid Build Coastguard Worker #define INT56_C(v) v
309*71db0c75SAndroid Build Coastguard Worker #define UINT56_C(v) v##U
310*71db0c75SAndroid Build Coastguard Worker #endif /* __INT56_C_SUFFIX__ */
311*71db0c75SAndroid Build Coastguard Worker #endif /* __INT56_TYPE__ */
312*71db0c75SAndroid Build Coastguard Worker 
313*71db0c75SAndroid Build Coastguard Worker #ifdef __INT48_TYPE__
314*71db0c75SAndroid Build Coastguard Worker #undef __int32_c_suffix
315*71db0c75SAndroid Build Coastguard Worker #undef __int16_c_suffix
316*71db0c75SAndroid Build Coastguard Worker #undef __int8_c_suffix
317*71db0c75SAndroid Build Coastguard Worker #ifdef __INT48_C_SUFFIX__
318*71db0c75SAndroid Build Coastguard Worker #define INT48_C(v) __int_c(v, __INT48_C_SUFFIX__)
319*71db0c75SAndroid Build Coastguard Worker #define UINT48_C(v) __uint_c(v, __INT48_C_SUFFIX__)
320*71db0c75SAndroid Build Coastguard Worker #define __int32_c_suffix __INT48_C_SUFFIX__
321*71db0c75SAndroid Build Coastguard Worker #define __int16_c_suffix __INT48_C_SUFFIX__
322*71db0c75SAndroid Build Coastguard Worker #define __int8_c_suffix __INT48_C_SUFFIX__
323*71db0c75SAndroid Build Coastguard Worker #else
324*71db0c75SAndroid Build Coastguard Worker #define INT48_C(v) v
325*71db0c75SAndroid Build Coastguard Worker #define UINT48_C(v) v##U
326*71db0c75SAndroid Build Coastguard Worker #endif /* __INT48_C_SUFFIX__ */
327*71db0c75SAndroid Build Coastguard Worker #endif /* __INT48_TYPE__ */
328*71db0c75SAndroid Build Coastguard Worker 
329*71db0c75SAndroid Build Coastguard Worker #ifdef __INT40_TYPE__
330*71db0c75SAndroid Build Coastguard Worker #undef __int32_c_suffix
331*71db0c75SAndroid Build Coastguard Worker #undef __int16_c_suffix
332*71db0c75SAndroid Build Coastguard Worker #undef __int8_c_suffix
333*71db0c75SAndroid Build Coastguard Worker #ifdef __INT40_C_SUFFIX__
334*71db0c75SAndroid Build Coastguard Worker #define INT40_C(v) __int_c(v, __INT40_C_SUFFIX__)
335*71db0c75SAndroid Build Coastguard Worker #define UINT40_C(v) __uint_c(v, __INT40_C_SUFFIX__)
336*71db0c75SAndroid Build Coastguard Worker #define __int32_c_suffix __INT40_C_SUFFIX__
337*71db0c75SAndroid Build Coastguard Worker #define __int16_c_suffix __INT40_C_SUFFIX__
338*71db0c75SAndroid Build Coastguard Worker #define __int8_c_suffix __INT40_C_SUFFIX__
339*71db0c75SAndroid Build Coastguard Worker #else
340*71db0c75SAndroid Build Coastguard Worker #define INT40_C(v) v
341*71db0c75SAndroid Build Coastguard Worker #define UINT40_C(v) v##U
342*71db0c75SAndroid Build Coastguard Worker #endif /* __INT40_C_SUFFIX__ */
343*71db0c75SAndroid Build Coastguard Worker #endif /* __INT40_TYPE__ */
344*71db0c75SAndroid Build Coastguard Worker 
345*71db0c75SAndroid Build Coastguard Worker #ifdef __INT32_TYPE__
346*71db0c75SAndroid Build Coastguard Worker #undef __int32_c_suffix
347*71db0c75SAndroid Build Coastguard Worker #undef __int16_c_suffix
348*71db0c75SAndroid Build Coastguard Worker #undef __int8_c_suffix
349*71db0c75SAndroid Build Coastguard Worker #ifdef __INT32_C_SUFFIX__
350*71db0c75SAndroid Build Coastguard Worker #define __int32_c_suffix __INT32_C_SUFFIX__
351*71db0c75SAndroid Build Coastguard Worker #define __int16_c_suffix __INT32_C_SUFFIX__
352*71db0c75SAndroid Build Coastguard Worker #define __int8_c_suffix __INT32_C_SUFFIX__
353*71db0c75SAndroid Build Coastguard Worker #endif /* __INT32_C_SUFFIX__ */
354*71db0c75SAndroid Build Coastguard Worker #endif /* __INT32_TYPE__ */
355*71db0c75SAndroid Build Coastguard Worker 
356*71db0c75SAndroid Build Coastguard Worker #ifdef __int_least32_t
357*71db0c75SAndroid Build Coastguard Worker #ifdef __int32_c_suffix
358*71db0c75SAndroid Build Coastguard Worker #define INT32_C(v) __int_c(v, __int32_c_suffix)
359*71db0c75SAndroid Build Coastguard Worker #define UINT32_C(v) __uint_c(v, __int32_c_suffix)
360*71db0c75SAndroid Build Coastguard Worker #else
361*71db0c75SAndroid Build Coastguard Worker #define INT32_C(v) v
362*71db0c75SAndroid Build Coastguard Worker #define UINT32_C(v) v##U
363*71db0c75SAndroid Build Coastguard Worker #endif /* __int32_c_suffix */
364*71db0c75SAndroid Build Coastguard Worker #endif /* __int_least32_t */
365*71db0c75SAndroid Build Coastguard Worker 
366*71db0c75SAndroid Build Coastguard Worker #ifdef __INT24_TYPE__
367*71db0c75SAndroid Build Coastguard Worker #undef __int16_c_suffix
368*71db0c75SAndroid Build Coastguard Worker #undef __int8_c_suffix
369*71db0c75SAndroid Build Coastguard Worker #ifdef __INT24_C_SUFFIX__
370*71db0c75SAndroid Build Coastguard Worker #define INT24_C(v) __int_c(v, __INT24_C_SUFFIX__)
371*71db0c75SAndroid Build Coastguard Worker #define UINT24_C(v) __uint_c(v, __INT24_C_SUFFIX__)
372*71db0c75SAndroid Build Coastguard Worker #define __int16_c_suffix __INT24_C_SUFFIX__
373*71db0c75SAndroid Build Coastguard Worker #define __int8_c_suffix __INT24_C_SUFFIX__
374*71db0c75SAndroid Build Coastguard Worker #else
375*71db0c75SAndroid Build Coastguard Worker #define INT24_C(v) v
376*71db0c75SAndroid Build Coastguard Worker #define UINT24_C(v) v##U
377*71db0c75SAndroid Build Coastguard Worker #endif /* __INT24_C_SUFFIX__ */
378*71db0c75SAndroid Build Coastguard Worker #endif /* __INT24_TYPE__ */
379*71db0c75SAndroid Build Coastguard Worker 
380*71db0c75SAndroid Build Coastguard Worker #ifdef __INT16_TYPE__
381*71db0c75SAndroid Build Coastguard Worker #undef __int16_c_suffix
382*71db0c75SAndroid Build Coastguard Worker #undef __int8_c_suffix
383*71db0c75SAndroid Build Coastguard Worker #ifdef __INT16_C_SUFFIX__
384*71db0c75SAndroid Build Coastguard Worker #define __int16_c_suffix __INT16_C_SUFFIX__
385*71db0c75SAndroid Build Coastguard Worker #define __int8_c_suffix __INT16_C_SUFFIX__
386*71db0c75SAndroid Build Coastguard Worker #endif /* __INT16_C_SUFFIX__ */
387*71db0c75SAndroid Build Coastguard Worker #endif /* __INT16_TYPE__ */
388*71db0c75SAndroid Build Coastguard Worker 
389*71db0c75SAndroid Build Coastguard Worker #ifdef __int_least16_t
390*71db0c75SAndroid Build Coastguard Worker #ifdef __int16_c_suffix
391*71db0c75SAndroid Build Coastguard Worker #define INT16_C(v) __int_c(v, __int16_c_suffix)
392*71db0c75SAndroid Build Coastguard Worker #define UINT16_C(v) __uint_c(v, __int16_c_suffix)
393*71db0c75SAndroid Build Coastguard Worker #else
394*71db0c75SAndroid Build Coastguard Worker #define INT16_C(v) v
395*71db0c75SAndroid Build Coastguard Worker #define UINT16_C(v) v##U
396*71db0c75SAndroid Build Coastguard Worker #endif /* __int16_c_suffix */
397*71db0c75SAndroid Build Coastguard Worker #endif /* __int_least16_t */
398*71db0c75SAndroid Build Coastguard Worker 
399*71db0c75SAndroid Build Coastguard Worker #ifdef __INT8_TYPE__
400*71db0c75SAndroid Build Coastguard Worker #undef __int8_c_suffix
401*71db0c75SAndroid Build Coastguard Worker #ifdef __INT8_C_SUFFIX__
402*71db0c75SAndroid Build Coastguard Worker #define __int8_c_suffix __INT8_C_SUFFIX__
403*71db0c75SAndroid Build Coastguard Worker #endif /* __INT8_C_SUFFIX__ */
404*71db0c75SAndroid Build Coastguard Worker #endif /* __INT8_TYPE__ */
405*71db0c75SAndroid Build Coastguard Worker 
406*71db0c75SAndroid Build Coastguard Worker #ifdef __int_least8_t
407*71db0c75SAndroid Build Coastguard Worker #ifdef __int8_c_suffix
408*71db0c75SAndroid Build Coastguard Worker #define INT8_C(v) __int_c(v, __int8_c_suffix)
409*71db0c75SAndroid Build Coastguard Worker #define UINT8_C(v) __uint_c(v, __int8_c_suffix)
410*71db0c75SAndroid Build Coastguard Worker #else
411*71db0c75SAndroid Build Coastguard Worker #define INT8_C(v) v
412*71db0c75SAndroid Build Coastguard Worker #define UINT8_C(v) v##U
413*71db0c75SAndroid Build Coastguard Worker #endif /* __int8_c_suffix */
414*71db0c75SAndroid Build Coastguard Worker #endif /* __int_least8_t */
415*71db0c75SAndroid Build Coastguard Worker 
416*71db0c75SAndroid Build Coastguard Worker /* C99 7.18.2.1 Limits of exact-width integer types.
417*71db0c75SAndroid Build Coastguard Worker  * C99 7.18.2.2 Limits of minimum-width integer types.
418*71db0c75SAndroid Build Coastguard Worker  * C99 7.18.2.3 Limits of fastest minimum-width integer types.
419*71db0c75SAndroid Build Coastguard Worker  *
420*71db0c75SAndroid Build Coastguard Worker  * The presence of limit macros are completely optional in C99.  This
421*71db0c75SAndroid Build Coastguard Worker  * implementation defines limits for all of the types (exact- and
422*71db0c75SAndroid Build Coastguard Worker  * minimum-width) that it defines above, using the limits of the minimum-width
423*71db0c75SAndroid Build Coastguard Worker  * type for any types that do not have exact-width representations.
424*71db0c75SAndroid Build Coastguard Worker  *
425*71db0c75SAndroid Build Coastguard Worker  * As in the type definitions, this section takes an approach of
426*71db0c75SAndroid Build Coastguard Worker  * successive-shrinking to determine which limits to use for the standard (8,
427*71db0c75SAndroid Build Coastguard Worker  * 16, 32, 64) bit widths when they don't have exact representations. It is
428*71db0c75SAndroid Build Coastguard Worker  * therefore important that the definitions be kept in order of decending
429*71db0c75SAndroid Build Coastguard Worker  * widths.
430*71db0c75SAndroid Build Coastguard Worker  *
431*71db0c75SAndroid Build Coastguard Worker  * Note that C++ should not check __STDC_LIMIT_MACROS here, contrary to the
432*71db0c75SAndroid Build Coastguard Worker  * claims of the C standard (see C++ 18.3.1p2, [cstdint.syn]).
433*71db0c75SAndroid Build Coastguard Worker  */
434*71db0c75SAndroid Build Coastguard Worker 
435*71db0c75SAndroid Build Coastguard Worker #ifdef __INT64_TYPE__
436*71db0c75SAndroid Build Coastguard Worker #define INT64_MAX INT64_C(9223372036854775807)
437*71db0c75SAndroid Build Coastguard Worker #define INT64_MIN (-INT64_C(9223372036854775807) - 1)
438*71db0c75SAndroid Build Coastguard Worker #define UINT64_MAX UINT64_C(18446744073709551615)
439*71db0c75SAndroid Build Coastguard Worker 
440*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
441*71db0c75SAndroid Build Coastguard Worker #define UINT64_WIDTH 64
442*71db0c75SAndroid Build Coastguard Worker #define INT64_WIDTH UINT64_WIDTH
443*71db0c75SAndroid Build Coastguard Worker 
444*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST64_WIDTH UINT64_WIDTH
445*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST32_WIDTH
446*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST32_WIDTH UINT64_WIDTH
447*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_WIDTH
448*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_WIDTH UINT64_WIDTH
449*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_MAX
450*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_MAX UINT64_MAX
451*71db0c75SAndroid Build Coastguard Worker #endif /* __STDC_VERSION__ */
452*71db0c75SAndroid Build Coastguard Worker 
453*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST64_MIN INT64_MIN
454*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST64_MAX INT64_MAX
455*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST64_MAX UINT64_MAX
456*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST32_MIN
457*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST32_MIN INT64_MIN
458*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST32_MAX
459*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST32_MAX INT64_MAX
460*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST32_MAX
461*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST32_MAX UINT64_MAX
462*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MIN
463*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MIN INT64_MIN
464*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MAX
465*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MAX INT64_MAX
466*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_MAX
467*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_MAX UINT64_MAX
468*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MIN
469*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MIN INT64_MIN
470*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MAX
471*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MAX INT64_MAX
472*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_MAX
473*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_MAX UINT64_MAX
474*71db0c75SAndroid Build Coastguard Worker #endif /* __INT64_TYPE__ */
475*71db0c75SAndroid Build Coastguard Worker 
476*71db0c75SAndroid Build Coastguard Worker #ifdef __INT_LEAST64_MIN
477*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST64_MIN __INT_LEAST64_MIN
478*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST64_MAX __INT_LEAST64_MAX
479*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST64_MAX __UINT_LEAST64_MAX
480*71db0c75SAndroid Build Coastguard Worker #define INT_FAST64_MIN __INT_LEAST64_MIN
481*71db0c75SAndroid Build Coastguard Worker #define INT_FAST64_MAX __INT_LEAST64_MAX
482*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST64_MAX __UINT_LEAST64_MAX
483*71db0c75SAndroid Build Coastguard Worker 
484*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
485*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST64_WIDTH __UINT_LEAST64_WIDTH
486*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST64_WIDTH UINT_LEAST64_WIDTH
487*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST64_WIDTH __UINT_LEAST64_WIDTH
488*71db0c75SAndroid Build Coastguard Worker #define INT_FAST64_WIDTH UINT_FAST64_WIDTH
489*71db0c75SAndroid Build Coastguard Worker #endif /* __STDC_VERSION__ */
490*71db0c75SAndroid Build Coastguard Worker #endif /* __INT_LEAST64_MIN */
491*71db0c75SAndroid Build Coastguard Worker 
492*71db0c75SAndroid Build Coastguard Worker #ifdef __INT56_TYPE__
493*71db0c75SAndroid Build Coastguard Worker #define INT56_MAX INT56_C(36028797018963967)
494*71db0c75SAndroid Build Coastguard Worker #define INT56_MIN (-INT56_C(36028797018963967) - 1)
495*71db0c75SAndroid Build Coastguard Worker #define UINT56_MAX UINT56_C(72057594037927935)
496*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST56_MIN INT56_MIN
497*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST56_MAX INT56_MAX
498*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST56_MAX UINT56_MAX
499*71db0c75SAndroid Build Coastguard Worker #define INT_FAST56_MIN INT56_MIN
500*71db0c75SAndroid Build Coastguard Worker #define INT_FAST56_MAX INT56_MAX
501*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST56_MAX UINT56_MAX
502*71db0c75SAndroid Build Coastguard Worker 
503*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST32_MIN
504*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST32_MIN INT56_MIN
505*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST32_MAX
506*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST32_MAX INT56_MAX
507*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST32_MAX
508*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST32_MAX UINT56_MAX
509*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MIN
510*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MIN INT56_MIN
511*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MAX
512*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MAX INT56_MAX
513*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_MAX
514*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_MAX UINT56_MAX
515*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MIN
516*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MIN INT56_MIN
517*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MAX
518*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MAX INT56_MAX
519*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_MAX
520*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_MAX UINT56_MAX
521*71db0c75SAndroid Build Coastguard Worker 
522*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
523*71db0c75SAndroid Build Coastguard Worker #define UINT56_WIDTH 56
524*71db0c75SAndroid Build Coastguard Worker #define INT56_WIDTH UINT56_WIDTH
525*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST56_WIDTH UINT56_WIDTH
526*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST56_WIDTH UINT_LEAST56_WIDTH
527*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST56_WIDTH UINT56_WIDTH
528*71db0c75SAndroid Build Coastguard Worker #define INT_FAST56_WIDTH UINT_FAST56_WIDTH
529*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST32_WIDTH
530*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST32_WIDTH UINT56_WIDTH
531*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_WIDTH
532*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_WIDTH UINT56_WIDTH
533*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_WIDTH
534*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_WIDTH UINT56_WIDTH
535*71db0c75SAndroid Build Coastguard Worker #endif /* __STDC_VERSION__ */
536*71db0c75SAndroid Build Coastguard Worker #endif /* __INT56_TYPE__ */
537*71db0c75SAndroid Build Coastguard Worker 
538*71db0c75SAndroid Build Coastguard Worker #ifdef __INT48_TYPE__
539*71db0c75SAndroid Build Coastguard Worker #define INT48_MAX INT48_C(140737488355327)
540*71db0c75SAndroid Build Coastguard Worker #define INT48_MIN (-INT48_C(140737488355327) - 1)
541*71db0c75SAndroid Build Coastguard Worker #define UINT48_MAX UINT48_C(281474976710655)
542*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST48_MIN INT48_MIN
543*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST48_MAX INT48_MAX
544*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST48_MAX UINT48_MAX
545*71db0c75SAndroid Build Coastguard Worker #define INT_FAST48_MIN INT48_MIN
546*71db0c75SAndroid Build Coastguard Worker #define INT_FAST48_MAX INT48_MAX
547*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST48_MAX UINT48_MAX
548*71db0c75SAndroid Build Coastguard Worker 
549*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST32_MIN
550*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST32_MIN INT48_MIN
551*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST32_MAX
552*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST32_MAX INT48_MAX
553*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST32_MAX
554*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST32_MAX UINT48_MAX
555*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MIN
556*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MIN INT48_MIN
557*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MAX
558*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MAX INT48_MAX
559*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_MAX
560*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_MAX UINT48_MAX
561*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MIN
562*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MIN INT48_MIN
563*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MAX
564*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MAX INT48_MAX
565*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_MAX
566*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_MAX UINT48_MAX
567*71db0c75SAndroid Build Coastguard Worker 
568*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
569*71db0c75SAndroid Build Coastguard Worker #define UINT48_WIDTH 48
570*71db0c75SAndroid Build Coastguard Worker #define INT48_WIDTH UINT48_WIDTH
571*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST48_WIDTH UINT48_WIDTH
572*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST48_WIDTH UINT_LEAST48_WIDTH
573*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST48_WIDTH UINT48_WIDTH
574*71db0c75SAndroid Build Coastguard Worker #define INT_FAST48_WIDTH UINT_FAST48_WIDTH
575*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST32_WIDTH
576*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST32_WIDTH UINT48_WIDTH
577*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_WIDTH
578*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_WIDTH UINT48_WIDTH
579*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_WIDTH
580*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_WIDTH UINT48_WIDTH
581*71db0c75SAndroid Build Coastguard Worker #endif /* __STDC_VERSION__ */
582*71db0c75SAndroid Build Coastguard Worker #endif /* __INT48_TYPE__ */
583*71db0c75SAndroid Build Coastguard Worker 
584*71db0c75SAndroid Build Coastguard Worker #ifdef __INT40_TYPE__
585*71db0c75SAndroid Build Coastguard Worker #define INT40_MAX INT40_C(549755813887)
586*71db0c75SAndroid Build Coastguard Worker #define INT40_MIN (-INT40_C(549755813887) - 1)
587*71db0c75SAndroid Build Coastguard Worker #define UINT40_MAX UINT40_C(1099511627775)
588*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST40_MIN INT40_MIN
589*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST40_MAX INT40_MAX
590*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST40_MAX UINT40_MAX
591*71db0c75SAndroid Build Coastguard Worker #define INT_FAST40_MIN INT40_MIN
592*71db0c75SAndroid Build Coastguard Worker #define INT_FAST40_MAX INT40_MAX
593*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST40_MAX UINT40_MAX
594*71db0c75SAndroid Build Coastguard Worker 
595*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST32_MIN
596*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST32_MIN INT40_MIN
597*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST32_MAX
598*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST32_MAX INT40_MAX
599*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST32_MAX
600*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST32_MAX UINT40_MAX
601*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MIN
602*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MIN INT40_MIN
603*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MAX
604*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MAX INT40_MAX
605*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_MAX
606*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_MAX UINT40_MAX
607*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MIN
608*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MIN INT40_MIN
609*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MAX
610*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MAX INT40_MAX
611*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_MAX
612*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_MAX UINT40_MAX
613*71db0c75SAndroid Build Coastguard Worker 
614*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
615*71db0c75SAndroid Build Coastguard Worker #define UINT40_WIDTH 40
616*71db0c75SAndroid Build Coastguard Worker #define INT40_WIDTH UINT40_WIDTH
617*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST40_WIDTH UINT40_WIDTH
618*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST40_WIDTH UINT_LEAST40_WIDTH
619*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST40_WIDTH UINT40_WIDTH
620*71db0c75SAndroid Build Coastguard Worker #define INT_FAST40_WIDTH UINT_FAST40_WIDTH
621*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST32_WIDTH
622*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST32_WIDTH UINT40_WIDTH
623*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_WIDTH
624*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_WIDTH UINT40_WIDTH
625*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_WIDTH
626*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_WIDTH UINT40_WIDTH
627*71db0c75SAndroid Build Coastguard Worker #endif /* __STDC_VERSION__ */
628*71db0c75SAndroid Build Coastguard Worker #endif /* __INT40_TYPE__ */
629*71db0c75SAndroid Build Coastguard Worker 
630*71db0c75SAndroid Build Coastguard Worker #ifdef __INT32_TYPE__
631*71db0c75SAndroid Build Coastguard Worker #define INT32_MAX INT32_C(2147483647)
632*71db0c75SAndroid Build Coastguard Worker #define INT32_MIN (-INT32_C(2147483647) - 1)
633*71db0c75SAndroid Build Coastguard Worker #define UINT32_MAX UINT32_C(4294967295)
634*71db0c75SAndroid Build Coastguard Worker 
635*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST32_MIN
636*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST32_MIN INT32_MIN
637*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST32_MAX
638*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST32_MAX INT32_MAX
639*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST32_MAX
640*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST32_MAX UINT32_MAX
641*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MIN
642*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MIN INT32_MIN
643*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MAX
644*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MAX INT32_MAX
645*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_MAX
646*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_MAX UINT32_MAX
647*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MIN
648*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MIN INT32_MIN
649*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MAX
650*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MAX INT32_MAX
651*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_MAX
652*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_MAX UINT32_MAX
653*71db0c75SAndroid Build Coastguard Worker 
654*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
655*71db0c75SAndroid Build Coastguard Worker #define UINT32_WIDTH 32
656*71db0c75SAndroid Build Coastguard Worker #define INT32_WIDTH UINT32_WIDTH
657*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST32_WIDTH
658*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST32_WIDTH UINT32_WIDTH
659*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_WIDTH
660*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_WIDTH UINT32_WIDTH
661*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_WIDTH
662*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_WIDTH UINT32_WIDTH
663*71db0c75SAndroid Build Coastguard Worker #endif /* __STDC_VERSION__ */
664*71db0c75SAndroid Build Coastguard Worker #endif /* __INT32_TYPE__ */
665*71db0c75SAndroid Build Coastguard Worker 
666*71db0c75SAndroid Build Coastguard Worker #ifdef __INT_LEAST32_MIN
667*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST32_MIN __INT_LEAST32_MIN
668*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST32_MAX __INT_LEAST32_MAX
669*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST32_MAX __UINT_LEAST32_MAX
670*71db0c75SAndroid Build Coastguard Worker #define INT_FAST32_MIN __INT_LEAST32_MIN
671*71db0c75SAndroid Build Coastguard Worker #define INT_FAST32_MAX __INT_LEAST32_MAX
672*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST32_MAX __UINT_LEAST32_MAX
673*71db0c75SAndroid Build Coastguard Worker 
674*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
675*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST32_WIDTH __UINT_LEAST32_WIDTH
676*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST32_WIDTH UINT_LEAST32_WIDTH
677*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST32_WIDTH __UINT_LEAST32_WIDTH
678*71db0c75SAndroid Build Coastguard Worker #define INT_FAST32_WIDTH UINT_FAST32_WIDTH
679*71db0c75SAndroid Build Coastguard Worker #endif /* __STDC_VERSION__ */
680*71db0c75SAndroid Build Coastguard Worker #endif /* __INT_LEAST32_MIN */
681*71db0c75SAndroid Build Coastguard Worker 
682*71db0c75SAndroid Build Coastguard Worker #ifdef __INT24_TYPE__
683*71db0c75SAndroid Build Coastguard Worker #define INT24_MAX INT24_C(8388607)
684*71db0c75SAndroid Build Coastguard Worker #define INT24_MIN (-INT24_C(8388607) - 1)
685*71db0c75SAndroid Build Coastguard Worker #define UINT24_MAX UINT24_C(16777215)
686*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST24_MIN INT24_MIN
687*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST24_MAX INT24_MAX
688*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST24_MAX UINT24_MAX
689*71db0c75SAndroid Build Coastguard Worker #define INT_FAST24_MIN INT24_MIN
690*71db0c75SAndroid Build Coastguard Worker #define INT_FAST24_MAX INT24_MAX
691*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST24_MAX UINT24_MAX
692*71db0c75SAndroid Build Coastguard Worker 
693*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MIN
694*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MIN INT24_MIN
695*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MAX
696*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MAX INT24_MAX
697*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_MAX
698*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_MAX UINT24_MAX
699*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MIN
700*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MIN INT24_MIN
701*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MAX
702*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MAX INT24_MAX
703*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_MAX
704*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_MAX UINT24_MAX
705*71db0c75SAndroid Build Coastguard Worker 
706*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
707*71db0c75SAndroid Build Coastguard Worker #define UINT24_WIDTH 24
708*71db0c75SAndroid Build Coastguard Worker #define INT24_WIDTH UINT24_WIDTH
709*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST24_WIDTH UINT24_WIDTH
710*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST24_WIDTH UINT_LEAST24_WIDTH
711*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST24_WIDTH UINT24_WIDTH
712*71db0c75SAndroid Build Coastguard Worker #define INT_FAST24_WIDTH UINT_FAST24_WIDTH
713*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_WIDTH
714*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_WIDTH UINT24_WIDTH
715*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_WIDTH
716*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_WIDTH UINT24_WIDTH
717*71db0c75SAndroid Build Coastguard Worker #endif /* __STDC_VERSION__ */
718*71db0c75SAndroid Build Coastguard Worker #endif /* __INT24_TYPE__ */
719*71db0c75SAndroid Build Coastguard Worker 
720*71db0c75SAndroid Build Coastguard Worker #ifdef __INT16_TYPE__
721*71db0c75SAndroid Build Coastguard Worker #define INT16_MAX INT16_C(32767)
722*71db0c75SAndroid Build Coastguard Worker #define INT16_MIN (-INT16_C(32767) - 1)
723*71db0c75SAndroid Build Coastguard Worker #define UINT16_MAX UINT16_C(65535)
724*71db0c75SAndroid Build Coastguard Worker 
725*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MIN
726*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MIN INT16_MIN
727*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST16_MAX
728*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST16_MAX INT16_MAX
729*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_MAX
730*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_MAX UINT16_MAX
731*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MIN
732*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MIN INT16_MIN
733*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MAX
734*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MAX INT16_MAX
735*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_MAX
736*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_MAX UINT16_MAX
737*71db0c75SAndroid Build Coastguard Worker 
738*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
739*71db0c75SAndroid Build Coastguard Worker #define UINT16_WIDTH 16
740*71db0c75SAndroid Build Coastguard Worker #define INT16_WIDTH UINT16_WIDTH
741*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST16_WIDTH
742*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST16_WIDTH UINT16_WIDTH
743*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_WIDTH
744*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_WIDTH UINT16_WIDTH
745*71db0c75SAndroid Build Coastguard Worker #endif /* __STDC_VERSION__ */
746*71db0c75SAndroid Build Coastguard Worker #endif /* __INT16_TYPE__ */
747*71db0c75SAndroid Build Coastguard Worker 
748*71db0c75SAndroid Build Coastguard Worker #ifdef __INT_LEAST16_MIN
749*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST16_MIN __INT_LEAST16_MIN
750*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST16_MAX __INT_LEAST16_MAX
751*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST16_MAX __UINT_LEAST16_MAX
752*71db0c75SAndroid Build Coastguard Worker #define INT_FAST16_MIN __INT_LEAST16_MIN
753*71db0c75SAndroid Build Coastguard Worker #define INT_FAST16_MAX __INT_LEAST16_MAX
754*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST16_MAX __UINT_LEAST16_MAX
755*71db0c75SAndroid Build Coastguard Worker 
756*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
757*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST16_WIDTH __UINT_LEAST16_WIDTH
758*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST16_WIDTH UINT_LEAST16_WIDTH
759*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST16_WIDTH __UINT_LEAST16_WIDTH
760*71db0c75SAndroid Build Coastguard Worker #define INT_FAST16_WIDTH UINT_FAST16_WIDTH
761*71db0c75SAndroid Build Coastguard Worker #endif /* __STDC_VERSION__ */
762*71db0c75SAndroid Build Coastguard Worker #endif /* __INT_LEAST16_MIN */
763*71db0c75SAndroid Build Coastguard Worker 
764*71db0c75SAndroid Build Coastguard Worker #ifdef __INT8_TYPE__
765*71db0c75SAndroid Build Coastguard Worker #define INT8_MAX INT8_C(127)
766*71db0c75SAndroid Build Coastguard Worker #define INT8_MIN (-INT8_C(127) - 1)
767*71db0c75SAndroid Build Coastguard Worker #define UINT8_MAX UINT8_C(255)
768*71db0c75SAndroid Build Coastguard Worker 
769*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MIN
770*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MIN INT8_MIN
771*71db0c75SAndroid Build Coastguard Worker #undef __INT_LEAST8_MAX
772*71db0c75SAndroid Build Coastguard Worker #define __INT_LEAST8_MAX INT8_MAX
773*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_MAX
774*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_MAX UINT8_MAX
775*71db0c75SAndroid Build Coastguard Worker 
776*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
777*71db0c75SAndroid Build Coastguard Worker #define UINT8_WIDTH 8
778*71db0c75SAndroid Build Coastguard Worker #define INT8_WIDTH UINT8_WIDTH
779*71db0c75SAndroid Build Coastguard Worker #undef __UINT_LEAST8_WIDTH
780*71db0c75SAndroid Build Coastguard Worker #define __UINT_LEAST8_WIDTH UINT8_WIDTH
781*71db0c75SAndroid Build Coastguard Worker #endif /* __STDC_VERSION__ */
782*71db0c75SAndroid Build Coastguard Worker #endif /* __INT8_TYPE__ */
783*71db0c75SAndroid Build Coastguard Worker 
784*71db0c75SAndroid Build Coastguard Worker #ifdef __INT_LEAST8_MIN
785*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST8_MIN __INT_LEAST8_MIN
786*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST8_MAX __INT_LEAST8_MAX
787*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST8_MAX __UINT_LEAST8_MAX
788*71db0c75SAndroid Build Coastguard Worker #define INT_FAST8_MIN __INT_LEAST8_MIN
789*71db0c75SAndroid Build Coastguard Worker #define INT_FAST8_MAX __INT_LEAST8_MAX
790*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST8_MAX __UINT_LEAST8_MAX
791*71db0c75SAndroid Build Coastguard Worker 
792*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
793*71db0c75SAndroid Build Coastguard Worker #define UINT_LEAST8_WIDTH __UINT_LEAST8_WIDTH
794*71db0c75SAndroid Build Coastguard Worker #define INT_LEAST8_WIDTH UINT_LEAST8_WIDTH
795*71db0c75SAndroid Build Coastguard Worker #define UINT_FAST8_WIDTH __UINT_LEAST8_WIDTH
796*71db0c75SAndroid Build Coastguard Worker #define INT_FAST8_WIDTH UINT_FAST8_WIDTH
797*71db0c75SAndroid Build Coastguard Worker #endif /* __STDC_VERSION__ */
798*71db0c75SAndroid Build Coastguard Worker #endif /* __INT_LEAST8_MIN */
799*71db0c75SAndroid Build Coastguard Worker 
800*71db0c75SAndroid Build Coastguard Worker /* Some utility macros */
801*71db0c75SAndroid Build Coastguard Worker #define __INTN_MIN(n) __stdint_join3(INT, n, _MIN)
802*71db0c75SAndroid Build Coastguard Worker #define __INTN_MAX(n) __stdint_join3(INT, n, _MAX)
803*71db0c75SAndroid Build Coastguard Worker #define __UINTN_MAX(n) __stdint_join3(UINT, n, _MAX)
804*71db0c75SAndroid Build Coastguard Worker #define __INTN_C(n, v) __stdint_join3(INT, n, _C(v))
805*71db0c75SAndroid Build Coastguard Worker #define __UINTN_C(n, v) __stdint_join3(UINT, n, _C(v))
806*71db0c75SAndroid Build Coastguard Worker 
807*71db0c75SAndroid Build Coastguard Worker /* C99 7.18.2.4 Limits of integer types capable of holding object pointers. */
808*71db0c75SAndroid Build Coastguard Worker /* C99 7.18.3 Limits of other integer types. */
809*71db0c75SAndroid Build Coastguard Worker 
810*71db0c75SAndroid Build Coastguard Worker #define INTPTR_MIN (-__INTPTR_MAX__ - 1)
811*71db0c75SAndroid Build Coastguard Worker #define INTPTR_MAX __INTPTR_MAX__
812*71db0c75SAndroid Build Coastguard Worker #define UINTPTR_MAX __UINTPTR_MAX__
813*71db0c75SAndroid Build Coastguard Worker #define PTRDIFF_MIN (-__PTRDIFF_MAX__ - 1)
814*71db0c75SAndroid Build Coastguard Worker #define PTRDIFF_MAX __PTRDIFF_MAX__
815*71db0c75SAndroid Build Coastguard Worker #define SIZE_MAX __SIZE_MAX__
816*71db0c75SAndroid Build Coastguard Worker 
817*71db0c75SAndroid Build Coastguard Worker /* C23 7.22.2.4 Width of integer types capable of holding object pointers. */
818*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
819*71db0c75SAndroid Build Coastguard Worker /* NB: The C standard requires that these be the same value, but the compiler
820*71db0c75SAndroid Build Coastguard Worker    exposes separate internal width macros. */
821*71db0c75SAndroid Build Coastguard Worker #define INTPTR_WIDTH __INTPTR_WIDTH__
822*71db0c75SAndroid Build Coastguard Worker #define UINTPTR_WIDTH __UINTPTR_WIDTH__
823*71db0c75SAndroid Build Coastguard Worker #endif
824*71db0c75SAndroid Build Coastguard Worker 
825*71db0c75SAndroid Build Coastguard Worker /* ISO9899:2011 7.20 (C11 Annex K): Define RSIZE_MAX if __STDC_WANT_LIB_EXT1__
826*71db0c75SAndroid Build Coastguard Worker  * is enabled. */
827*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1
828*71db0c75SAndroid Build Coastguard Worker #define RSIZE_MAX (SIZE_MAX >> 1)
829*71db0c75SAndroid Build Coastguard Worker #endif
830*71db0c75SAndroid Build Coastguard Worker 
831*71db0c75SAndroid Build Coastguard Worker /* C99 7.18.2.5 Limits of greatest-width integer types. */
832*71db0c75SAndroid Build Coastguard Worker #define INTMAX_MIN (-__INTMAX_MAX__ - 1)
833*71db0c75SAndroid Build Coastguard Worker #define INTMAX_MAX __INTMAX_MAX__
834*71db0c75SAndroid Build Coastguard Worker #define UINTMAX_MAX __UINTMAX_MAX__
835*71db0c75SAndroid Build Coastguard Worker 
836*71db0c75SAndroid Build Coastguard Worker /* C23 7.22.2.5 Width of greatest-width integer types. */
837*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
838*71db0c75SAndroid Build Coastguard Worker /* NB: The C standard requires that these be the same value, but the compiler
839*71db0c75SAndroid Build Coastguard Worker    exposes separate internal width macros. */
840*71db0c75SAndroid Build Coastguard Worker #define INTMAX_WIDTH __INTMAX_WIDTH__
841*71db0c75SAndroid Build Coastguard Worker #define UINTMAX_WIDTH __UINTMAX_WIDTH__
842*71db0c75SAndroid Build Coastguard Worker #endif
843*71db0c75SAndroid Build Coastguard Worker 
844*71db0c75SAndroid Build Coastguard Worker /* C99 7.18.3 Limits of other integer types. */
845*71db0c75SAndroid Build Coastguard Worker #define SIG_ATOMIC_MIN __INTN_MIN(__SIG_ATOMIC_WIDTH__)
846*71db0c75SAndroid Build Coastguard Worker #define SIG_ATOMIC_MAX __INTN_MAX(__SIG_ATOMIC_WIDTH__)
847*71db0c75SAndroid Build Coastguard Worker #ifdef __WINT_UNSIGNED__
848*71db0c75SAndroid Build Coastguard Worker #define WINT_MIN __UINTN_C(__WINT_WIDTH__, 0)
849*71db0c75SAndroid Build Coastguard Worker #define WINT_MAX __UINTN_MAX(__WINT_WIDTH__)
850*71db0c75SAndroid Build Coastguard Worker #else
851*71db0c75SAndroid Build Coastguard Worker #define WINT_MIN __INTN_MIN(__WINT_WIDTH__)
852*71db0c75SAndroid Build Coastguard Worker #define WINT_MAX __INTN_MAX(__WINT_WIDTH__)
853*71db0c75SAndroid Build Coastguard Worker #endif
854*71db0c75SAndroid Build Coastguard Worker 
855*71db0c75SAndroid Build Coastguard Worker #ifndef WCHAR_MAX
856*71db0c75SAndroid Build Coastguard Worker #define WCHAR_MAX __WCHAR_MAX__
857*71db0c75SAndroid Build Coastguard Worker #endif
858*71db0c75SAndroid Build Coastguard Worker #ifndef WCHAR_MIN
859*71db0c75SAndroid Build Coastguard Worker #if __WCHAR_MAX__ == __INTN_MAX(__WCHAR_WIDTH__)
860*71db0c75SAndroid Build Coastguard Worker #define WCHAR_MIN __INTN_MIN(__WCHAR_WIDTH__)
861*71db0c75SAndroid Build Coastguard Worker #else
862*71db0c75SAndroid Build Coastguard Worker #define WCHAR_MIN __UINTN_C(__WCHAR_WIDTH__, 0)
863*71db0c75SAndroid Build Coastguard Worker #endif
864*71db0c75SAndroid Build Coastguard Worker #endif
865*71db0c75SAndroid Build Coastguard Worker 
866*71db0c75SAndroid Build Coastguard Worker /* 7.18.4.2 Macros for greatest-width integer constants. */
867*71db0c75SAndroid Build Coastguard Worker #define INTMAX_C(v) __int_c(v, __INTMAX_C_SUFFIX__)
868*71db0c75SAndroid Build Coastguard Worker #define UINTMAX_C(v) __int_c(v, __UINTMAX_C_SUFFIX__)
869*71db0c75SAndroid Build Coastguard Worker 
870*71db0c75SAndroid Build Coastguard Worker /* C23 7.22.3.x Width of other integer types. */
871*71db0c75SAndroid Build Coastguard Worker #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
872*71db0c75SAndroid Build Coastguard Worker #define PTRDIFF_WIDTH __PTRDIFF_WIDTH__
873*71db0c75SAndroid Build Coastguard Worker #define SIG_ATOMIC_WIDTH __SIG_ATOMIC_WIDTH__
874*71db0c75SAndroid Build Coastguard Worker #define SIZE_WIDTH __SIZE_WIDTH__
875*71db0c75SAndroid Build Coastguard Worker #define WCHAR_WIDTH __WCHAR_WIDTH__
876*71db0c75SAndroid Build Coastguard Worker #define WINT_WIDTH __WINT_WIDTH__
877*71db0c75SAndroid Build Coastguard Worker #endif
878*71db0c75SAndroid Build Coastguard Worker #endif // LLVM_LIBC_MACROS_STDINT_MACROS_H
879