[libc] Deprecate LLVM_ENABLE_PROJECTS in favor of LLVM_ENABLE_RUNTIMES. (#117265)
[llvm-project.git] / libc / spec / stdc.td
blob493ca1a6440df4d008b95acbac119928f58f3f6b
1 def StdC : StandardSpec<"stdc"> {
3   NamedType StructTmType = NamedType<"struct tm">;
4   PtrType StructTmPtr = PtrType<StructTmType>;
5   PtrType TimeTTypePtr = PtrType<TimeTType>;
6   NamedType ClockT = NamedType<"clock_t">;
7   NamedType LocaleT = NamedType<"locale_t">;
9   NamedType DivTType = NamedType<"div_t">;
10   NamedType LDivTType = NamedType<"ldiv_t">;
11   NamedType LLDivTType = NamedType<"lldiv_t">;
13   NamedType JmpBuf = NamedType<"jmp_buf">;
15   NamedType TssTType = NamedType<"tss_t">;
16   PtrType TssTPtr = PtrType<TssTType>;
17   NamedType TssDtorTType = NamedType<"tss_dtor_t">;
19   HeaderSpec Assert = HeaderSpec<
20       "assert.h",
21       [
22           Macro<"static_assert">,
23           Macro<"assert">,
24       ],
25       [], // Types
26       [], // Enumerations
27       []
28   >;
30   FunctionAttrSpec ConstAttr = FunctionAttrSpec<"__LIBC_CONST_ATTR", [
31     Cxx11FunctionAttr<"const", "gnu">,
32     GnuFunctionAttr<"const">,
33   ]>;
35   HeaderSpec CType = HeaderSpec<
36       "ctype.h",
37       [], // Macros
38       [
39           LocaleT
40       ], // Types
41       [], // Enumerations
42       [
43           FunctionSpec<
44               "isalnum",
45               RetValSpec<IntType>,
46               [ArgSpec<IntType>]
47           >,
48           FunctionSpec<
49               "isalpha",
50               RetValSpec<IntType>,
51               [ArgSpec<IntType>]
52           >,
53           FunctionSpec<
54               "isblank",
55               RetValSpec<IntType>,
56               [ArgSpec<IntType>]
57           >,
58           FunctionSpec<
59               "iscntrl",
60               RetValSpec<IntType>,
61               [ArgSpec<IntType>]
62           >,
63           FunctionSpec<
64               "isdigit",
65               RetValSpec<IntType>,
66               [ArgSpec<IntType>]
67           >,
68           FunctionSpec<
69               "isgraph",
70               RetValSpec<IntType>,
71               [ArgSpec<IntType>]
72           >,
73           FunctionSpec<
74               "islower",
75               RetValSpec<IntType>,
76               [ArgSpec<IntType>]
77           >,
78           FunctionSpec<
79               "isprint",
80               RetValSpec<IntType>,
81               [ArgSpec<IntType>]
82           >,
83           FunctionSpec<
84               "ispunct",
85               RetValSpec<IntType>,
86               [ArgSpec<IntType>]
87           >,
88           FunctionSpec<
89               "isspace",
90               RetValSpec<IntType>,
91               [ArgSpec<IntType>]
92           >,
93           FunctionSpec<
94               "isupper",
95               RetValSpec<IntType>,
96               [ArgSpec<IntType>]
97           >,
98           FunctionSpec<
99               "isxdigit",
100               RetValSpec<IntType>,
101               [ArgSpec<IntType>]
102           >,
103           FunctionSpec<
104               "tolower",
105               RetValSpec<IntType>,
106               [ArgSpec<IntType>]
107           >,
108           FunctionSpec<
109               "toupper",
110               RetValSpec<IntType>,
111               [ArgSpec<IntType>]
112           >,
113           FunctionSpec<
114               "isalnum_l",
115               RetValSpec<IntType>,
116               [ArgSpec<IntType>, ArgSpec<LocaleT>]
117           >,
118           FunctionSpec<
119               "isalpha_l",
120               RetValSpec<IntType>,
121               [ArgSpec<IntType>, ArgSpec<LocaleT>]
122           >,
123           FunctionSpec<
124               "isblank_l",
125               RetValSpec<IntType>,
126               [ArgSpec<IntType>, ArgSpec<LocaleT>]
127           >,
128           FunctionSpec<
129               "iscntrl_l",
130               RetValSpec<IntType>,
131               [ArgSpec<IntType>, ArgSpec<LocaleT>]
132           >,
133           FunctionSpec<
134               "isdigit_l",
135               RetValSpec<IntType>,
136               [ArgSpec<IntType>, ArgSpec<LocaleT>]
137           >,
138           FunctionSpec<
139               "isgraph_l",
140               RetValSpec<IntType>,
141               [ArgSpec<IntType>, ArgSpec<LocaleT>]
142           >,
143           FunctionSpec<
144               "islower_l",
145               RetValSpec<IntType>,
146               [ArgSpec<IntType>, ArgSpec<LocaleT>]
147           >,
148           FunctionSpec<
149               "isprint_l",
150               RetValSpec<IntType>,
151               [ArgSpec<IntType>, ArgSpec<LocaleT>]
152           >,
153           FunctionSpec<
154               "ispunct_l",
155               RetValSpec<IntType>,
156               [ArgSpec<IntType>, ArgSpec<LocaleT>]
157           >,
158           FunctionSpec<
159               "isspace_l",
160               RetValSpec<IntType>,
161               [ArgSpec<IntType>, ArgSpec<LocaleT>]
162           >,
163           FunctionSpec<
164               "isupper_l",
165               RetValSpec<IntType>,
166               [ArgSpec<IntType>, ArgSpec<LocaleT>]
167           >,
168           FunctionSpec<
169               "isxdigit_l",
170               RetValSpec<IntType>,
171               [ArgSpec<IntType>, ArgSpec<LocaleT>]
172           >,
173           FunctionSpec<
174               "tolower_l",
175               RetValSpec<IntType>,
176               [ArgSpec<IntType>, ArgSpec<LocaleT>]
177           >,
178           FunctionSpec<
179               "toupper_l",
180               RetValSpec<IntType>,
181               [ArgSpec<IntType>, ArgSpec<LocaleT>]
182           >,
183       ]
184   >;
186   NamedType FEnvT = NamedType<"fenv_t">;
187   PtrType FEnvTPtr = PtrType<FEnvT>;
188   ConstType ConstFEnvTPtr = ConstType<FEnvTPtr>;
189   NamedType FExceptT = NamedType<"fexcept_t">;
190   PtrType FExceptTPtr = PtrType<FExceptT>;
191   ConstType ConstFExceptTPtr = ConstType<FExceptTPtr>;
192   HeaderSpec Fenv = HeaderSpec<
193       "fenv.h",
194       [
195           Macro<"FE_DIVBYZERO">,
196           Macro<"FE_INEXACT">,
197           Macro<"FE_INVALID">,
198           Macro<"FE_OVERFLOW">,
199           Macro<"FE_UNDERFLOW">,
200           Macro<"FE_ALL_EXCEPT">,
202           Macro<"FE_DOWNWARD">,
203           Macro<"FE_TONEAREST">,
204           Macro<"FE_TOWARDZERO">,
205           Macro<"FE_UPWARD">,
207           Macro<"FE_DFL_ENV">
208       ],
209       [
210           FEnvT,
211           FExceptT,
212       ], // Types
213       [], // Enumerations
214       [
215           FunctionSpec<
216               "feclearexcept",
217               RetValSpec<IntType>,
218               [ArgSpec<IntType>]
219           >,
220           FunctionSpec<
221               "fetestexcept",
222               RetValSpec<IntType>,
223               [ArgSpec<IntType>]
224           >,
225           FunctionSpec<
226               "fetestexceptflag",
227               RetValSpec<IntType>,
228               [ArgSpec<ConstFExceptTPtr>, ArgSpec<IntType>]
229           >,
230           FunctionSpec<
231               "feraiseexcept",
232               RetValSpec<IntType>,
233               [ArgSpec<IntType>]
234           >,
235           FunctionSpec<
236               "fesetround",
237               RetValSpec<IntType>,
238               [ArgSpec<IntType>]
239           >,
240           FunctionSpec<
241               "fegetround",
242               RetValSpec<IntType>,
243               []
244           >,
245           FunctionSpec<
246               "fegetenv",
247               RetValSpec<IntType>,
248               [ArgSpec<FEnvTPtr>]
249           >,
250           FunctionSpec<
251               "fesetenv",
252               RetValSpec<IntType>,
253               [ArgSpec<ConstFEnvTPtr>]
254           >,
255           FunctionSpec<
256               "fegetexceptflag",
257               RetValSpec<IntType>,
258               [ArgSpec<FExceptTPtr>, ArgSpec<IntType>]
259           >,
260           FunctionSpec<
261               "fesetexcept",
262               RetValSpec<IntType>,
263               [ArgSpec<IntType>]
264           >,
265           FunctionSpec<
266               "fesetexceptflag",
267               RetValSpec<IntType>,
268               [ArgSpec<ConstFExceptTPtr>, ArgSpec<IntType>]
269           >,
270           FunctionSpec<
271               "feholdexcept",
272               RetValSpec<IntType>,
273               [ArgSpec<FEnvTPtr>]
274           >,
275           FunctionSpec<
276               "feupdateenv",
277               RetValSpec<IntType>,
278               [ArgSpec<ConstFEnvTPtr>]
279           >,
280       ]
281   >;
283   HeaderSpec String = HeaderSpec<
284       "string.h",
285       [
286           Macro<"NULL">,
287       ],
288       [
289           SizeTType,
290       ],
291       [], // Enumerations
292       [
293           FunctionSpec<
294               "memcpy",
295               RetValSpec<VoidPtr>,
296               [ArgSpec<VoidRestrictedPtr>,
297                ArgSpec<ConstVoidRestrictedPtr>,
298                ArgSpec<SizeTType>]
299           >,
300           FunctionSpec<
301               "memmove",
302               RetValSpec<VoidPtr>,
303               [ArgSpec<VoidPtr>, ArgSpec<ConstVoidPtr>, ArgSpec<SizeTType>]
304           >,
305           FunctionSpec<
306               "memcmp",
307               RetValSpec<IntType>,
308               [ArgSpec<ConstVoidPtr>, ArgSpec<ConstVoidPtr>, ArgSpec<SizeTType>]
309           >,
310           FunctionSpec<
311               "memchr",
312               RetValSpec<VoidPtr>,
313               [ArgSpec<ConstVoidPtr>, ArgSpec<IntType>, ArgSpec<SizeTType>]
314           >,
315           FunctionSpec<
316               "memset",
317               RetValSpec<VoidPtr>,
318               [ArgSpec<VoidPtr>, ArgSpec<IntType>, ArgSpec<SizeTType>]
319           >,
320           FunctionSpec<
321               "memset_explicit",
322               RetValSpec<VoidPtr>,
323               [ArgSpec<VoidPtr>, ArgSpec<IntType>, ArgSpec<SizeTType>]
324           >,
325           FunctionSpec<
326               "strcpy",
327               RetValSpec<CharPtr>,
328               [ArgSpec<CharRestrictedPtr>, ArgSpec<ConstCharRestrictedPtr>]
329           >,
330           FunctionSpec<
331               "strncpy",
332               RetValSpec<CharPtr>,
333               [ArgSpec<CharRestrictedPtr>,
334                ArgSpec<ConstCharRestrictedPtr>,
335                ArgSpec<SizeTType>]
336           >,
337           FunctionSpec<
338               "strcat",
339               RetValSpec<CharPtr>,
340               [ArgSpec<CharRestrictedPtr>, ArgSpec<ConstCharRestrictedPtr>]
341           >,
342           FunctionSpec<
343               "strncat",
344               RetValSpec<CharPtr>,
345               [ArgSpec<CharPtr>, ArgSpec<ConstCharPtr>, ArgSpec<SizeTType>]
346           >,
347           FunctionSpec<
348               "strcmp",
349               RetValSpec<IntType>,
350               [ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
351           >,
352           FunctionSpec<
353               "strcoll",
354               RetValSpec<IntType>,
355               [ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
356           >,
357           FunctionSpec<
358               "strcoll_l",
359               RetValSpec<IntType>,
360               [ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>, ArgSpec<LocaleT>]
361           >,
362           FunctionSpec<
363               "strncmp",
364               RetValSpec<IntType>,
365               [ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>, ArgSpec<SizeTType>]
366           >,
367           FunctionSpec<
368               "strxfrm",
369               RetValSpec<SizeTType>,
370               [ArgSpec<CharRestrictedPtr>,
371                ArgSpec<ConstCharRestrictedPtr>,
372                ArgSpec<SizeTType>]
373           >,
374           FunctionSpec<
375               "strxfrm_l",
376               RetValSpec<SizeTType>,
377               [ArgSpec<CharRestrictedPtr>,
378                ArgSpec<ConstCharRestrictedPtr>,
379                ArgSpec<SizeTType>,
380                ArgSpec<LocaleT>]
381           >,
382           FunctionSpec<
383               "strchr",
384               RetValSpec<CharPtr>,
385               [ArgSpec<ConstCharPtr>, ArgSpec<IntType>]
386           >,
387           FunctionSpec<
388               "strcspn",
389               RetValSpec<SizeTType>,
390               [ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
391           >,
392           FunctionSpec<
393               "strdup",
394               RetValSpec<CharPtr>,
395               [ArgSpec<ConstCharPtr>]
396           >,
397           FunctionSpec<
398               "strndup",
399               RetValSpec<CharPtr>,
400               [ArgSpec<ConstCharPtr>,ArgSpec<SizeTType>]
401           >,
402           FunctionSpec<
403               "strpbrk",
404               RetValSpec<CharPtr>,
405               [ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
406           >,
407           FunctionSpec<
408               "strrchr",
409               RetValSpec<CharPtr>,
410               [ArgSpec<ConstCharPtr>, ArgSpec<IntType>]
411           >,
412           FunctionSpec<
413               "strspn",
414               RetValSpec<SizeTType>,
415               [ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
416           >,
417           FunctionSpec<
418               "strstr",
419               RetValSpec<CharPtr>,
420               [ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
421           >,
422           FunctionSpec<
423               "strtok",
424               RetValSpec<CharPtr>,
425               [ArgSpec<CharRestrictedPtr>, ArgSpec<ConstCharRestrictedPtr>]
426           >,
427           FunctionSpec<
428               "strerror",
429               RetValSpec<CharPtr>,
430               [ArgSpec<IntType>]
431           >,
432           FunctionSpec<
433               "strlen",
434               RetValSpec<SizeTType>,
435               [ArgSpec<ConstCharPtr>]
436           >,
437       ]
438   >;
440   HeaderSpec Math = HeaderSpec<
441       "math.h",
442       [
443           Macro<"MATH_ERRNO">,
444           Macro<"MATH_ERREXCEPT">,
445           Macro<"math_errhandling">,
447           Macro<"HUGE_VAL">,
448           Macro<"INFINITY">,
449           Macro<"NAN">,
451           Macro<"FP_INT_UPWARD">,
452           Macro<"FP_INT_DOWNWARD">,
453           Macro<"FP_INT_TOWARDZERO">,
454           Macro<"FP_INT_TONEARESTFROMZERO">,
455           Macro<"FP_INT_TONEAREST">,
457           Macro<"FP_ILOGB0">,
458           Macro<"FP_ILOGBNAN">,
460           Macro<"isfinite">,
461           Macro<"isinf">,
462           Macro<"isnan">,
463       ],
464       [
465           NamedType<"float_t">,
466           NamedType<"double_t">,
467           NamedType<"float128">,
468       ],
469       [], // Enumerations
470       [
471           FunctionSpec<"cbrt", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
472           FunctionSpec<"cbrtf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
474           FunctionSpec<"copysign", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
475           FunctionSpec<"copysignf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
476           FunctionSpec<"copysignl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
477           GuardedFunctionSpec<"copysignf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
478           GuardedFunctionSpec<"copysignf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
480           FunctionSpec<"ceil", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
481           FunctionSpec<"ceilf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
482           FunctionSpec<"ceill", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
483           GuardedFunctionSpec<"ceilf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
484           GuardedFunctionSpec<"ceilf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
486           FunctionSpec<"daddl", RetValSpec<DoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
487           FunctionSpec<"ddivl", RetValSpec<DoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
488           FunctionSpec<"dfmal", RetValSpec<DoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
489           FunctionSpec<"dsubl", RetValSpec<DoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
491           FunctionSpec<"fabs", RetValSpec<DoubleType>, [ArgSpec<DoubleType>], [ConstAttr]>,
492           FunctionSpec<"fabsf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
493           FunctionSpec<"fabsl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
494           GuardedFunctionSpec<"fabsf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
495           GuardedFunctionSpec<"fabsf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
497           FunctionSpec<"fadd", RetValSpec<FloatType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
498           FunctionSpec<"faddl", RetValSpec<FloatType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
500           FunctionSpec<"fdim", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
501           FunctionSpec<"fdimf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
502           FunctionSpec<"fdiml", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
503           GuardedFunctionSpec<"fdimf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
504           GuardedFunctionSpec<"fdimf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
506           FunctionSpec<"fdiv", RetValSpec<FloatType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
507           FunctionSpec<"fdivl", RetValSpec<FloatType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
509           FunctionSpec<"ffma", RetValSpec<FloatType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
510           FunctionSpec<"ffmal", RetValSpec<FloatType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
512           FunctionSpec<"floor", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
513           FunctionSpec<"floorf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
514           FunctionSpec<"floorl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
515           GuardedFunctionSpec<"floorf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
516           GuardedFunctionSpec<"floorf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
518           FunctionSpec<"fmin", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
519           FunctionSpec<"fminf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
520           FunctionSpec<"fminl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
521           GuardedFunctionSpec<"fminf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
522           GuardedFunctionSpec<"fminf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
524           FunctionSpec<"fmax", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
525           FunctionSpec<"fmaxf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
526           FunctionSpec<"fmaxl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
527           GuardedFunctionSpec<"fmaxf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
528           GuardedFunctionSpec<"fmaxf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
530           FunctionSpec<"fmaximum", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
531           FunctionSpec<"fmaximumf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
532           FunctionSpec<"fmaximuml", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
533           GuardedFunctionSpec<"fmaximumf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
534           GuardedFunctionSpec<"fmaximumf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
536           FunctionSpec<"fmaximum_num", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
537           FunctionSpec<"fmaximum_numf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
538           FunctionSpec<"fmaximum_numl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
539           GuardedFunctionSpec<"fmaximum_numf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
540           GuardedFunctionSpec<"fmaximum_numf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
542           FunctionSpec<"fmaximum_mag", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
543           FunctionSpec<"fmaximum_magf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
544           FunctionSpec<"fmaximum_magl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
545           GuardedFunctionSpec<"fmaximum_magf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
546           GuardedFunctionSpec<"fmaximum_magf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
548           FunctionSpec<"fmaximum_mag_num", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
549           FunctionSpec<"fmaximum_mag_numf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
550           FunctionSpec<"fmaximum_mag_numl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
551           GuardedFunctionSpec<"fmaximum_mag_numf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
552           GuardedFunctionSpec<"fmaximum_mag_numf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
554           FunctionSpec<"fminimum", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
555           FunctionSpec<"fminimumf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
556           FunctionSpec<"fminimuml", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
557           GuardedFunctionSpec<"fminimumf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
558           GuardedFunctionSpec<"fminimumf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
560           FunctionSpec<"fminimum_num", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
561           FunctionSpec<"fminimum_numf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
562           FunctionSpec<"fmaximum_numl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
563           GuardedFunctionSpec<"fminimum_numf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
564           GuardedFunctionSpec<"fminimum_numf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
566           FunctionSpec<"fminimum_mag", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
567           FunctionSpec<"fminimum_magf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
568           FunctionSpec<"fminimum_magl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
569           GuardedFunctionSpec<"fminimum_magf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
570           GuardedFunctionSpec<"fminimum_magf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
572           FunctionSpec<"fminimum_mag_num", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
573           FunctionSpec<"fminimum_mag_numf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
574           FunctionSpec<"fminimum_mag_numl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
575           GuardedFunctionSpec<"fminimum_mag_numf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
576           GuardedFunctionSpec<"fminimum_mag_numf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
578           FunctionSpec<"fma", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
579           FunctionSpec<"fmaf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>, ArgSpec<FloatType>]>,
581           GuardedFunctionSpec<"f16fmaf128", RetValSpec<Float16Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128">,
583           FunctionSpec<"fmod", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
584           FunctionSpec<"fmodf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
585           FunctionSpec<"fmodl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
586           GuardedFunctionSpec<"fmodf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
587           GuardedFunctionSpec<"fmodf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
589           FunctionSpec<"frexp", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<IntPtr>]>,
590           FunctionSpec<"frexpf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<IntPtr>]>,
591           FunctionSpec<"frexpl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<IntPtr>]>,
592           GuardedFunctionSpec<"frexpf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<IntPtr>], "LIBC_TYPES_HAS_FLOAT16">,
593           GuardedFunctionSpec<"frexpf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<IntPtr>], "LIBC_TYPES_HAS_FLOAT128">,
595           FunctionSpec<"fromfp", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
596           FunctionSpec<"fromfpf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
597           FunctionSpec<"fromfpl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
598           GuardedFunctionSpec<"fromfpf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>], "LIBC_TYPES_HAS_FLOAT16">,
599           GuardedFunctionSpec<"fromfpf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>], "LIBC_TYPES_HAS_FLOAT128">,
601           FunctionSpec<"fromfpx", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
602           FunctionSpec<"fromfpxf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
603           FunctionSpec<"fromfpxl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
604           GuardedFunctionSpec<"fromfpxf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>], "LIBC_TYPES_HAS_FLOAT16">,
605           GuardedFunctionSpec<"fromfpxf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>], "LIBC_TYPES_HAS_FLOAT128">,
607           FunctionSpec<"fsub", RetValSpec<FloatType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
608           FunctionSpec<"fsubl", RetValSpec<FloatType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
610           FunctionSpec<"ufromfp", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
611           FunctionSpec<"ufromfpf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
612           FunctionSpec<"ufromfpl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
613           GuardedFunctionSpec<"ufromfpf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>], "LIBC_TYPES_HAS_FLOAT16">,
614           GuardedFunctionSpec<"ufromfpf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>], "LIBC_TYPES_HAS_FLOAT128">,
616           FunctionSpec<"ufromfpx", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
617           FunctionSpec<"ufromfpxf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
618           FunctionSpec<"ufromfpxl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
619           GuardedFunctionSpec<"ufromfpxf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>], "LIBC_TYPES_HAS_FLOAT16">,
620           GuardedFunctionSpec<"ufromfpxf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>], "LIBC_TYPES_HAS_FLOAT128">,
622           FunctionSpec<"hypot", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
623           FunctionSpec<"hypotf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
625           FunctionSpec<"ilogb", RetValSpec<IntType>, [ArgSpec<DoubleType>]>,
626           FunctionSpec<"ilogbf", RetValSpec<IntType>, [ArgSpec<FloatType>]>,
627           FunctionSpec<"ilogbl", RetValSpec<IntType>, [ArgSpec<LongDoubleType>]>,
628           GuardedFunctionSpec<"ilogbf16", RetValSpec<IntType>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
629           GuardedFunctionSpec<"ilogbf128", RetValSpec<IntType>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
631           FunctionSpec<"llogb", RetValSpec<LongType>, [ArgSpec<DoubleType>]>,
632           FunctionSpec<"llogbf", RetValSpec<LongType>, [ArgSpec<FloatType>]>,
633           FunctionSpec<"llogbl", RetValSpec<LongType>, [ArgSpec<LongDoubleType>]>,
634           GuardedFunctionSpec<"llogbf16", RetValSpec<LongType>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
635           GuardedFunctionSpec<"llogbf128", RetValSpec<LongType>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
637           FunctionSpec<"ldexp", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<IntType>]>,
638           FunctionSpec<"ldexpf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<IntType>]>,
639           FunctionSpec<"ldexpl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<IntType>]>,
640           GuardedFunctionSpec<"ldexpf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<IntType>], "LIBC_TYPES_HAS_FLOAT16">,
641           GuardedFunctionSpec<"ldexpf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<IntType>], "LIBC_TYPES_HAS_FLOAT128">,
643           FunctionSpec<"log10", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
644           FunctionSpec<"log10f", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
645           GuardedFunctionSpec<"log10f16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
647           FunctionSpec<"log1p", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
648           FunctionSpec<"log1pf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
650           FunctionSpec<"log2", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
651           FunctionSpec<"log2f", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
652           GuardedFunctionSpec<"log2f16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
654           FunctionSpec<"log", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
655           FunctionSpec<"logf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
656           GuardedFunctionSpec<"logf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
658           FunctionSpec<"logb", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
659           FunctionSpec<"logbf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
660           FunctionSpec<"logbl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
661           GuardedFunctionSpec<"logbf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
662           GuardedFunctionSpec<"logbf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
664           FunctionSpec<"modf", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoublePtr>]>,
665           FunctionSpec<"modff", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatPtr>]>,
666           FunctionSpec<"modfl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoublePtr>]>,
667           GuardedFunctionSpec<"modff16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Ptr>], "LIBC_TYPES_HAS_FLOAT16">,
668           GuardedFunctionSpec<"modff128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Ptr>], "LIBC_TYPES_HAS_FLOAT128">,
670           FunctionSpec<"cos", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
671           FunctionSpec<"cosf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
672           FunctionSpec<"sin", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
673           FunctionSpec<"sinf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
674           FunctionSpec<"tan", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
675           FunctionSpec<"tanf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
677           FunctionSpec<"erff", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
679           FunctionSpec<"exp", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
680           FunctionSpec<"expf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
681           GuardedFunctionSpec<"expf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
683           FunctionSpec<"exp2", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
684           FunctionSpec<"exp2f", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
685           GuardedFunctionSpec<"exp2f16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
687           FunctionSpec<"exp2m1f", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
688           GuardedFunctionSpec<"exp2m1f16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
690           FunctionSpec<"expm1", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
691           FunctionSpec<"expm1f", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
692           GuardedFunctionSpec<"expm1f16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
694           FunctionSpec<"exp10", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
695           FunctionSpec<"exp10f", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
696           GuardedFunctionSpec<"exp10f16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
698           FunctionSpec<"exp10m1f", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
699           GuardedFunctionSpec<"exp10m1f16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
701           FunctionSpec<"remainder", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
702           FunctionSpec<"remainderf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
703           FunctionSpec<"remainderl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
704           GuardedFunctionSpec<"remainderf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
705           GuardedFunctionSpec<"remainderf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
707           FunctionSpec<"remquo", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>, ArgSpec<IntPtr>]>,
708           FunctionSpec<"remquof", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>, ArgSpec<IntPtr>]>,
709           FunctionSpec<"remquol", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>, ArgSpec<IntPtr>]>,
710           GuardedFunctionSpec<"remquof16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>, ArgSpec<IntPtr>], "LIBC_TYPES_HAS_FLOAT16">,
711           GuardedFunctionSpec<"remquof128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>, ArgSpec<IntPtr>], "LIBC_TYPES_HAS_FLOAT128">,
713           FunctionSpec<"round", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
714           FunctionSpec<"roundf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
715           FunctionSpec<"roundl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
716           GuardedFunctionSpec<"roundf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
717           GuardedFunctionSpec<"roundf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
719           FunctionSpec<"roundeven", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
720           FunctionSpec<"roundevenf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
721           FunctionSpec<"roundevenl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
722           GuardedFunctionSpec<"roundevenf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
723           GuardedFunctionSpec<"roundevenf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
725           FunctionSpec<"lround", RetValSpec<LongType>, [ArgSpec<DoubleType>]>,
726           FunctionSpec<"lroundf", RetValSpec<LongType>, [ArgSpec<FloatType>]>,
727           FunctionSpec<"lroundl", RetValSpec<LongType>, [ArgSpec<LongDoubleType>]>,
728           GuardedFunctionSpec<"lroundf16", RetValSpec<LongType>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
729           GuardedFunctionSpec<"lroundf128", RetValSpec<LongType>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
731           FunctionSpec<"llround", RetValSpec<LongLongType>, [ArgSpec<DoubleType>]>,
732           FunctionSpec<"llroundf", RetValSpec<LongLongType>, [ArgSpec<FloatType>]>,
733           FunctionSpec<"llroundl", RetValSpec<LongLongType>, [ArgSpec<LongDoubleType>]>,
734           GuardedFunctionSpec<"llroundf16", RetValSpec<LongLongType>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
735           GuardedFunctionSpec<"llroundf128", RetValSpec<LongLongType>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
737           FunctionSpec<"rint", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
738           FunctionSpec<"rintf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
739           FunctionSpec<"rintl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
740           GuardedFunctionSpec<"rintf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
741           GuardedFunctionSpec<"rintf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
743           FunctionSpec<"lrint", RetValSpec<LongType>, [ArgSpec<DoubleType>]>,
744           FunctionSpec<"lrintf", RetValSpec<LongType>, [ArgSpec<FloatType>]>,
745           FunctionSpec<"lrintl", RetValSpec<LongType>, [ArgSpec<LongDoubleType>]>,
746           GuardedFunctionSpec<"lrintf16", RetValSpec<LongType>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
747           GuardedFunctionSpec<"lrintf128", RetValSpec<LongType>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
749           FunctionSpec<"llrint", RetValSpec<LongLongType>, [ArgSpec<DoubleType>]>,
750           FunctionSpec<"llrintf", RetValSpec<LongLongType>, [ArgSpec<FloatType>]>,
751           FunctionSpec<"llrintl", RetValSpec<LongLongType>, [ArgSpec<LongDoubleType>]>,
752           GuardedFunctionSpec<"llrintf16", RetValSpec<LongLongType>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
753           GuardedFunctionSpec<"llrintf128", RetValSpec<LongLongType>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
755           FunctionSpec<"sqrt", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
756           FunctionSpec<"sqrtf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
757           FunctionSpec<"sqrtl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
758           GuardedFunctionSpec<"sqrtf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
759           GuardedFunctionSpec<"sqrtf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
761           FunctionSpec<"trunc", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
762           FunctionSpec<"truncf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
763           FunctionSpec<"truncl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
764           GuardedFunctionSpec<"truncf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
765           GuardedFunctionSpec<"truncf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
767           FunctionSpec<"nearbyint", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
768           FunctionSpec<"nearbyintf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
769           FunctionSpec<"nearbyintl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
770           GuardedFunctionSpec<"nearbyintf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
771           GuardedFunctionSpec<"nearbyintf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
773           FunctionSpec<"nextafterf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
774           FunctionSpec<"nextafter", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
775           FunctionSpec<"nextafterl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
776           GuardedFunctionSpec<"nextafterf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
777           GuardedFunctionSpec<"nextafterf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
779           FunctionSpec<"nexttowardf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<LongDoubleType>]>,
780           FunctionSpec<"nexttoward", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<LongDoubleType>]>,
781           FunctionSpec<"nexttowardl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
782           GuardedFunctionSpec<"nexttowardf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
784           FunctionSpec<"nextdown", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
785           FunctionSpec<"nextdownf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
786           FunctionSpec<"nextdownl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
787           GuardedFunctionSpec<"nextdownf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
788           GuardedFunctionSpec<"nextdownf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
790           FunctionSpec<"nextup", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
791           FunctionSpec<"nextupf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
792           FunctionSpec<"nextupl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
793           GuardedFunctionSpec<"nextupf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
794           GuardedFunctionSpec<"nextupf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
796           FunctionSpec<"powf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
797           FunctionSpec<"pow", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
799           FunctionSpec<"coshf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
800           GuardedFunctionSpec<"coshf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
802           FunctionSpec<"sinhf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
803           GuardedFunctionSpec<"sinhf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
805           FunctionSpec<"tanhf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
806           GuardedFunctionSpec<"tanhf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
808           FunctionSpec<"acosf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
810           FunctionSpec<"asinf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
811           FunctionSpec<"asin", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
813           FunctionSpec<"atanf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
815           FunctionSpec<"atan2", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
816           FunctionSpec<"atan2f", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
817           FunctionSpec<"atan2l", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
819           FunctionSpec<"acoshf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
820           FunctionSpec<"asinhf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
821           FunctionSpec<"atanhf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
823           FunctionSpec<"scalbln", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<LongType>]>,
824           FunctionSpec<"scalblnf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<LongType>]>,
825           FunctionSpec<"scalblnl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongType>]>,
826           GuardedFunctionSpec<"scalblnf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<LongType>], "LIBC_TYPES_HAS_FLOAT16">,
827           GuardedFunctionSpec<"scalblnf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<LongType>], "LIBC_TYPES_HAS_FLOAT128">,
829           FunctionSpec<"scalbn", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<IntType>]>,
830           FunctionSpec<"scalbnf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<IntType>]>,
831           FunctionSpec<"scalbnl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<IntType>]>,
832           GuardedFunctionSpec<"scalbnf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<IntType>], "LIBC_TYPES_HAS_FLOAT16">,
833           GuardedFunctionSpec<"scalbnf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<IntType>], "LIBC_TYPES_HAS_FLOAT128">,
835           FunctionSpec<"nanf", RetValSpec<FloatType>, [ArgSpec<ConstCharPtr>]>,
836           FunctionSpec<"nan", RetValSpec<DoubleType>, [ArgSpec<ConstCharPtr>]>,
837           FunctionSpec<"nanl", RetValSpec<LongDoubleType>, [ArgSpec<ConstCharPtr>]>,
838           GuardedFunctionSpec<"nanf16", RetValSpec<Float16Type>, [ArgSpec<ConstCharPtr>], "LIBC_TYPES_HAS_FLOAT16">,
839           GuardedFunctionSpec<"nanf128", RetValSpec<Float128Type>, [ArgSpec<ConstCharPtr>], "LIBC_TYPES_HAS_FLOAT128">,
841           FunctionSpec<"issignaling", RetValSpec<IntType>, [ArgSpec<DoubleType>]>,
842           FunctionSpec<"issignalingf", RetValSpec<IntType>, [ArgSpec<FloatType>]>,
843           FunctionSpec<"issignalingl", RetValSpec<IntType>, [ArgSpec<LongDoubleType>]>,
844           GuardedFunctionSpec<"issignalingf16", RetValSpec<IntType>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
845           GuardedFunctionSpec<"issignalingf128", RetValSpec<IntType>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
847           FunctionSpec<"canonicalize", RetValSpec<IntType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
848           FunctionSpec<"canonicalizef", RetValSpec<IntType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
849           FunctionSpec<"canonicalizel", RetValSpec<IntType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
850           GuardedFunctionSpec<"canonicalizef16", RetValSpec<IntType>, [ArgSpec<Float16Type>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
851           GuardedFunctionSpec<"canonicalizef128", RetValSpec<IntType>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
853           FunctionSpec<"iscanonical", RetValSpec<IntType>, [ArgSpec<DoubleType>]>,
854           FunctionSpec<"iscanonicalf", RetValSpec<IntType>, [ArgSpec<FloatType>]>,
855           FunctionSpec<"iscanonicall", RetValSpec<IntType>, [ArgSpec<LongDoubleType>]>,
856           GuardedFunctionSpec<"iscanonicalf16", RetValSpec<IntType>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
857           GuardedFunctionSpec<"iscanonicalf128", RetValSpec<IntType>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
859           FunctionSpec<"dsqrtl", RetValSpec<DoubleType>, [ArgSpec<LongDoubleType>]>,
861           FunctionSpec<"totalorder", RetValSpec<IntType>, [ArgSpec<ConstDoublePtr>, ArgSpec<ConstDoublePtr>]>,
862           FunctionSpec<"totalorderf", RetValSpec<IntType>, [ArgSpec<ConstFloatPtr>, ArgSpec<ConstFloatPtr>]>,
863           FunctionSpec<"totalorderl", RetValSpec<IntType>, [ArgSpec<ConstLongDoublePtr>, ArgSpec<ConstLongDoublePtr>]>,
864           GuardedFunctionSpec<"totalorderf16", RetValSpec<IntType>, [ArgSpec<ConstFloat16Ptr>, ArgSpec<ConstFloat16Ptr>], "LIBC_TYPES_HAS_FLOAT16">,
865           GuardedFunctionSpec<"totalorderf128", RetValSpec<IntType>, [ArgSpec<ConstFloat128Ptr>, ArgSpec<ConstFloat128Ptr>], "LIBC_TYPES_HAS_FLOAT128">,
867           FunctionSpec<"totalordermag", RetValSpec<IntType>, [ArgSpec<ConstDoublePtr>, ArgSpec<ConstDoublePtr>]>,
868           FunctionSpec<"totalordermagf", RetValSpec<IntType>, [ArgSpec<ConstFloatPtr>, ArgSpec<ConstFloatPtr>]>,
869           FunctionSpec<"totalordermagl", RetValSpec<IntType>, [ArgSpec<ConstLongDoublePtr>, ArgSpec<ConstLongDoublePtr>]>,
870           GuardedFunctionSpec<"totalordermagf16", RetValSpec<IntType>, [ArgSpec<ConstFloat16Ptr>, ArgSpec<ConstFloat16Ptr>], "LIBC_TYPES_HAS_FLOAT16">,
871           GuardedFunctionSpec<"totalordermagf128", RetValSpec<IntType>, [ArgSpec<ConstFloat128Ptr>, ArgSpec<ConstFloat128Ptr>], "LIBC_TYPES_HAS_FLOAT128">,
873           FunctionSpec<"getpayload", RetValSpec<DoubleType>, [ArgSpec<DoublePtr>]>,
874           FunctionSpec<"getpayloadf", RetValSpec<FloatType>, [ArgSpec<FloatPtr>]>,
875           FunctionSpec<"getpayloadl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoublePtr>]>,
876           GuardedFunctionSpec<"getpayloadf16", RetValSpec<Float16Type>, [ArgSpec<Float16Ptr>], "LIBC_TYPES_HAS_FLOAT16">,
877           GuardedFunctionSpec<"getpayloadf128", RetValSpec<Float128Type>, [ArgSpec<Float128Ptr>], "LIBC_TYPES_HAS_FLOAT128">,
879           FunctionSpec<"setpayload", RetValSpec<IntType>, [ArgSpec<DoublePtr>, ArgSpec<DoubleType>]>,
880           FunctionSpec<"setpayloadf", RetValSpec<IntType>, [ArgSpec<FloatPtr>, ArgSpec<FloatType>]>,
881           FunctionSpec<"setpayloadl", RetValSpec<IntType>, [ArgSpec<LongDoublePtr>, ArgSpec<LongDoubleType>]>,
882           GuardedFunctionSpec<"setpayloadf16", RetValSpec<IntType>, [ArgSpec<Float16Ptr>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
883           GuardedFunctionSpec<"setpayloadf128", RetValSpec<IntType>, [ArgSpec<Float128Ptr>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
885           FunctionSpec<"setpayloadsig", RetValSpec<IntType>, [ArgSpec<DoublePtr>, ArgSpec<DoubleType>]>,
886           FunctionSpec<"setpayloadsigf", RetValSpec<IntType>, [ArgSpec<FloatPtr>, ArgSpec<FloatType>]>,
887           FunctionSpec<"setpayloadsigl", RetValSpec<IntType>, [ArgSpec<LongDoublePtr>, ArgSpec<LongDoubleType>]>,
888           GuardedFunctionSpec<"setpayloadsigf16", RetValSpec<IntType>, [ArgSpec<Float16Ptr>, ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
889           GuardedFunctionSpec<"setpayloadsigf128", RetValSpec<IntType>, [ArgSpec<Float128Ptr>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
891           GuardedFunctionSpec<"f16addf128", RetValSpec<Float16Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128">,
893           GuardedFunctionSpec<"f16subf128", RetValSpec<Float16Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128">,
895           FunctionSpec<"fmul", RetValSpec<FloatType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
896           FunctionSpec<"fmull", RetValSpec<FloatType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
898           FunctionSpec<"dmull", RetValSpec<DoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
900           GuardedFunctionSpec<"f16mulf128", RetValSpec<Float16Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128">,
902           FunctionSpec<"fsqrt", RetValSpec<FloatType>, [ArgSpec<DoubleType>]>,
903           FunctionSpec<"fsqrtl", RetValSpec<FloatType>, [ArgSpec<LongDoubleType>]>,
905           GuardedFunctionSpec<"f16divf128", RetValSpec<Float16Type>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128">,
907           GuardedFunctionSpec<"f16sqrtf128", RetValSpec<Float16Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128">,
909           FunctionSpec<"lgamma", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
910           FunctionSpec<"lgammaf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
911           FunctionSpec<"lgammal", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
912       ]
913   >;
915   HeaderSpec StdIO = HeaderSpec<
916       "stdio.h",
917       [
918           Macro<"stdin">,
919           Macro<"stderr">,
920           Macro<"stdout">,
921           Macro<"_IOFBF">,
922           Macro<"_IOLBF">,
923           Macro<"_IONBF">,
924           Macro<"EOF">,
925       ], // Macros
926       [ // Types
927           SizeTType,
928           FILE,
929       ],
930       [], // Enumerations
931       [
932           FunctionSpec<
933               "clearerr",
934               RetValSpec<VoidType>,
935               [ArgSpec<FILEPtr>]
936           >,
937           FunctionSpec<
938               "fclose",
939               RetValSpec<IntType>,
940               [ArgSpec<FILEPtr>]
941           >,
942           FunctionSpec<
943               "feof",
944               RetValSpec<IntType>,
945               [ArgSpec<FILEPtr>]
946           >,
947           FunctionSpec<
948               "ferror",
949               RetValSpec<IntType>,
950               [ArgSpec<FILEPtr>]
951           >,
952           FunctionSpec<
953               "fgetc",
954               RetValSpec<IntType>,
955               [ArgSpec<FILEPtr>]
956           >,
957           FunctionSpec<
958               "fgets",
959               RetValSpec<CharPtr>,
960               [
961                 ArgSpec<CharRestrictedPtr>,
962                 ArgSpec<IntType>,
963                 ArgSpec<FILERestrictedPtr>,
964               ]
965           >,
966           FunctionSpec<
967               "fflush",
968               RetValSpec<IntType>,
969               [ArgSpec<FILEPtr>]
970           >,
971           FunctionSpec<
972               "fopen",
973               RetValSpec<FILEPtr>,
974               [ArgSpec<ConstCharPtr>,
975                ArgSpec<ConstCharPtr>]
976           >,
977           FunctionSpec<
978               "fputc",
979               RetValSpec<IntType>,
980               [ArgSpec<IntType>,
981                ArgSpec<FILEPtr>]
982           >,
983           FunctionSpec<
984               "ftell",
985               RetValSpec<LongType>,
986               [ArgSpec<FILEPtr>]
987           >,
988           FunctionSpec<
989               "getc",
990               RetValSpec<IntType>,
991               [ArgSpec<FILEPtr>]
992           >,
993           FunctionSpec<
994               "getchar",
995               RetValSpec<IntType>,
996               [ArgSpec<VoidType>]
997           >,
998           FunctionSpec<
999               "putc",
1000               RetValSpec<IntType>,
1001               [ArgSpec<IntType>,
1002                ArgSpec<FILEPtr>]
1003           >,
1004           FunctionSpec<
1005               "putchar",
1006               RetValSpec<IntType>,
1007               [ArgSpec<IntType>]
1008           >,
1009           FunctionSpec<
1010               "fputs",
1011               RetValSpec<IntType>,
1012               [ArgSpec<ConstCharRestrictedPtr>,
1013                ArgSpec<FILERestrictedPtr>]
1014           >,
1015           FunctionSpec<
1016               "puts",
1017               RetValSpec<IntType>,
1018               [ArgSpec<ConstCharRestrictedPtr>]
1019           >,
1020           FunctionSpec<
1021               "fread",
1022               RetValSpec<SizeTType>,
1023               [ArgSpec<VoidRestrictedPtr>,
1024                ArgSpec<SizeTType>,
1025                ArgSpec<SizeTType>,
1026                ArgSpec<FILERestrictedPtr>]
1027           >,
1028           FunctionSpec<
1029               "fseek",
1030               RetValSpec<IntType>,
1031               [ArgSpec<FILEPtr>,
1032                ArgSpec<LongType>,
1033                ArgSpec<IntType>]
1034           >,
1035           FunctionSpec<
1036               "fwrite",
1037               RetValSpec<SizeTType>,
1038               [ArgSpec<ConstVoidRestrictedPtr>,
1039                ArgSpec<SizeTType>,
1040                ArgSpec<SizeTType>,
1041                ArgSpec<FILERestrictedPtr>]
1042           >,
1043           FunctionSpec<
1044               "remove",
1045               RetValSpec<IntType>,
1046               [ArgSpec<ConstCharPtr>]
1047           >,
1048           FunctionSpec<
1049               "rename",
1050               RetValSpec<IntType>,
1051               [ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
1052           >,
1053           FunctionSpec<
1054               "setbuf",
1055               RetValSpec<VoidType>,
1056               [ArgSpec<FILERestrictedPtr>, ArgSpec<CharRestrictedPtr>]
1057           >,
1058           FunctionSpec<
1059               "setvbuf",
1060               RetValSpec<IntType>,
1061               [ArgSpec<FILERestrictedPtr>, ArgSpec<CharRestrictedPtr>, ArgSpec<IntType>, ArgSpec<SizeTType>]
1062           >,
1063           FunctionSpec<
1064               "sscanf",
1065               RetValSpec<IntType>,
1066               [ArgSpec<ConstCharRestrictedPtr>,
1067                ArgSpec<ConstCharRestrictedPtr>,
1068                ArgSpec<VarArgType>]
1069           >,
1070           FunctionSpec<
1071               "vsscanf",
1072               RetValSpec<IntType>,
1073               [ArgSpec<ConstCharRestrictedPtr>,
1074                ArgSpec<ConstCharRestrictedPtr>,
1075                ArgSpec<VaListType>]
1076           >,
1077           FunctionSpec<
1078               "scanf",
1079               RetValSpec<IntType>,
1080               [ArgSpec<ConstCharRestrictedPtr>,
1081                ArgSpec<VarArgType>]
1082           >,
1083           FunctionSpec<
1084               "vscanf",
1085               RetValSpec<IntType>,
1086               [ArgSpec<ConstCharRestrictedPtr>,
1087                ArgSpec<VaListType>]
1088           >,
1089           FunctionSpec<
1090               "fscanf",
1091               RetValSpec<IntType>,
1092               [ArgSpec<FILERestrictedPtr>,
1093                ArgSpec<ConstCharRestrictedPtr>,
1094                ArgSpec<VarArgType>]
1095           >,
1096           FunctionSpec<
1097               "vfscanf",
1098               RetValSpec<IntType>,
1099               [ArgSpec<FILERestrictedPtr>,
1100                ArgSpec<ConstCharRestrictedPtr>,
1101                ArgSpec<VaListType>]
1102           >,
1103           FunctionSpec<
1104               "sprintf",
1105               RetValSpec<IntType>,
1106               [ArgSpec<CharRestrictedPtr>,
1107                ArgSpec<ConstCharRestrictedPtr>,
1108                ArgSpec<VarArgType>]
1109           >,
1110           FunctionSpec<
1111               "snprintf",
1112               RetValSpec<IntType>,
1113               [ArgSpec<CharRestrictedPtr>,
1114                ArgSpec<SizeTType>,
1115                ArgSpec<ConstCharRestrictedPtr>,
1116                ArgSpec<VarArgType>]
1117           >,
1118           FunctionSpec<
1119               "printf",
1120               RetValSpec<IntType>,
1121               [ArgSpec<ConstCharRestrictedPtr>,
1122                ArgSpec<VarArgType>]
1123           >,
1124           FunctionSpec<
1125               "fprintf",
1126               RetValSpec<IntType>,
1127               [ArgSpec<FILERestrictedPtr>,
1128                ArgSpec<ConstCharRestrictedPtr>,
1129                ArgSpec<VarArgType>]
1130           >,
1131           FunctionSpec<
1132               "asprintf",
1133               RetValSpec<IntType>,
1134               [ArgSpec<CharRestrictedPtrPtr>,
1135                ArgSpec<ConstCharRestrictedPtr>,
1136                ArgSpec<VarArgType>]
1137           >,
1138           FunctionSpec<
1139               "vsprintf",
1140               RetValSpec<IntType>,
1141               [ArgSpec<CharRestrictedPtr>,
1142                ArgSpec<ConstCharRestrictedPtr>,
1143                ArgSpec<VaListType>]
1144           >,
1145           FunctionSpec<
1146               "vsnprintf",
1147               RetValSpec<IntType>,
1148               [ArgSpec<CharRestrictedPtr>,
1149                ArgSpec<SizeTType>,
1150                ArgSpec<ConstCharRestrictedPtr>,
1151                ArgSpec<VaListType>]
1152           >,
1153           FunctionSpec<
1154               "vprintf",
1155               RetValSpec<IntType>,
1156               [ArgSpec<ConstCharRestrictedPtr>,
1157                ArgSpec<VaListType>]
1158           >,
1159           FunctionSpec<
1160               "vfprintf",
1161               RetValSpec<IntType>,
1162               [ArgSpec<FILERestrictedPtr>,
1163                ArgSpec<ConstCharRestrictedPtr>,
1164                ArgSpec<VaListType>]
1165           >,
1166           FunctionSpec<
1167               "ungetc",
1168               RetValSpec<IntType>,
1169               [ArgSpec<IntType>, ArgSpec<FILEPtr>]
1170           >,
1171           FunctionSpec<
1172               "vasprintf",
1173               RetValSpec<IntType>,
1174               [ArgSpec<CharRestrictedPtrPtr>,
1175                ArgSpec<ConstCharRestrictedPtr>,
1176                ArgSpec<VaListType>]
1177           >,
1178       ],
1179       [
1180           ObjectSpec<
1181               "stdin",
1182               "FILE *"
1183           >,
1184           ObjectSpec<
1185               "stdout",
1186               "FILE *"
1187           >,
1188           ObjectSpec<
1189               "stderr",
1190               "FILE *"
1191           >,
1192       ]
1193   >;
1195   HeaderSpec StdBit = HeaderSpec<
1196       "stdbit.h",
1197       [
1198         Macro<"__STDC_VERSION_STDBIT_H__">,
1199         Macro<"__STDC_ENDIAN_LITTLE__">,
1200         Macro<"__STDC_ENDIAN_BIG__">,
1201         Macro<"__STDC_ENDIAN_NATIVE__">,
1202         Macro<"stdc_leading_zeros">,
1203         Macro<"stdc_leading_ones">,
1204         Macro<"stdc_trailing_zeros">,
1205         Macro<"stdc_trailing_ones">,
1206         Macro<"stdc_first_leading_zero">,
1207         Macro<"stdc_first_leading_one">,
1208         Macro<"stdc_first_trailing_zero">,
1209         Macro<"stdc_first_trailing_one">,
1210         Macro<"stdc_count_zeros">,
1211         Macro<"stdc_count_ones">,
1212         Macro<"stdc_has_single_bit">,
1213         Macro<"stdc_bit_width">,
1214         Macro<"stdc_bit_floor">,
1215         Macro<"stdc_bit_ceil">
1216       ], // Macros
1217       [], // Types
1218       [], // Enumerations
1219       [
1220           FunctionSpec<"stdc_leading_zeros_uc", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedCharType>]>,
1221           FunctionSpec<"stdc_leading_zeros_us", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedShortType>]>,
1222           FunctionSpec<"stdc_leading_zeros_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
1223           FunctionSpec<"stdc_leading_zeros_ul", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongType>]>,
1224           FunctionSpec<"stdc_leading_zeros_ull", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongLongType>]>,
1225           FunctionSpec<"stdc_leading_ones_uc", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedCharType>]>,
1226           FunctionSpec<"stdc_leading_ones_us", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedShortType>]>,
1227           FunctionSpec<"stdc_leading_ones_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
1228           FunctionSpec<"stdc_leading_ones_ul", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongType>]>,
1229           FunctionSpec<"stdc_leading_ones_ull", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongLongType>]>,
1230           FunctionSpec<"stdc_trailing_zeros_uc", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedCharType>]>,
1231           FunctionSpec<"stdc_trailing_zeros_us", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedShortType>]>,
1232           FunctionSpec<"stdc_trailing_zeros_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
1233           FunctionSpec<"stdc_trailing_zeros_ul", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongType>]>,
1234           FunctionSpec<"stdc_trailing_zeros_ull", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongLongType>]>,
1235           FunctionSpec<"stdc_trailing_ones_uc", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedCharType>]>,
1236           FunctionSpec<"stdc_trailing_ones_us", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedShortType>]>,
1237           FunctionSpec<"stdc_trailing_ones_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
1238           FunctionSpec<"stdc_trailing_ones_ul", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongType>]>,
1239           FunctionSpec<"stdc_trailing_ones_ull", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongLongType>]>,
1240           FunctionSpec<"stdc_first_leading_zero_uc", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedCharType>]>,
1241           FunctionSpec<"stdc_first_leading_zero_us", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedShortType>]>,
1242           FunctionSpec<"stdc_first_leading_zero_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
1243           FunctionSpec<"stdc_first_leading_zero_ul", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongType>]>,
1244           FunctionSpec<"stdc_first_leading_zero_ull", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongLongType>]>,
1245           FunctionSpec<"stdc_first_leading_one_uc", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedCharType>]>,
1246           FunctionSpec<"stdc_first_leading_one_us", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedShortType>]>,
1247           FunctionSpec<"stdc_first_leading_one_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
1248           FunctionSpec<"stdc_first_leading_one_ul", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongType>]>,
1249           FunctionSpec<"stdc_first_leading_one_ull", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongLongType>]>,
1250           FunctionSpec<"stdc_first_trailing_one_uc", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedCharType>]>,
1251           FunctionSpec<"stdc_first_trailing_one_us", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedShortType>]>,
1252           FunctionSpec<"stdc_first_trailing_one_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
1253           FunctionSpec<"stdc_first_trailing_one_ul", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongType>]>,
1254           FunctionSpec<"stdc_first_trailing_one_ull", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongLongType>]>,
1255           FunctionSpec<"stdc_count_zeros_uc", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedCharType>]>,
1256           FunctionSpec<"stdc_count_zeros_us", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedShortType>]>,
1257           FunctionSpec<"stdc_count_zeros_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
1258           FunctionSpec<"stdc_count_zeros_ul", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongType>]>,
1259           FunctionSpec<"stdc_count_zeros_ull", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongLongType>]>,
1260           FunctionSpec<"stdc_count_ones_uc", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedCharType>]>,
1261           FunctionSpec<"stdc_count_ones_us", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedShortType>]>,
1262           FunctionSpec<"stdc_count_ones_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
1263           FunctionSpec<"stdc_count_ones_ul", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongType>]>,
1264           FunctionSpec<"stdc_count_ones_ull", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongLongType>]>,
1265           FunctionSpec<"stdc_has_single_bit_uc", RetValSpec<BoolType>, [ArgSpec<UnsignedCharType>]>,
1266           FunctionSpec<"stdc_has_single_bit_us", RetValSpec<BoolType>, [ArgSpec<UnsignedShortType>]>,
1267           FunctionSpec<"stdc_has_single_bit_ui", RetValSpec<BoolType>, [ArgSpec<UnsignedIntType>]>,
1268           FunctionSpec<"stdc_has_single_bit_ul", RetValSpec<BoolType>, [ArgSpec<UnsignedLongType>]>,
1269           FunctionSpec<"stdc_has_single_bit_ull", RetValSpec<BoolType>, [ArgSpec<UnsignedLongLongType>]>,
1270           FunctionSpec<"stdc_bit_width_uc", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedCharType>]>,
1271           FunctionSpec<"stdc_bit_width_us", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedShortType>]>,
1272           FunctionSpec<"stdc_bit_width_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
1273           FunctionSpec<"stdc_bit_width_ul", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongType>]>,
1274           FunctionSpec<"stdc_bit_width_ull", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongLongType>]>,
1275           FunctionSpec<"stdc_bit_floor_uc", RetValSpec<UnsignedCharType>, [ArgSpec<UnsignedCharType>]>,
1276           FunctionSpec<"stdc_bit_floor_us", RetValSpec<UnsignedShortType>, [ArgSpec<UnsignedShortType>]>,
1277           FunctionSpec<"stdc_bit_floor_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
1278           FunctionSpec<"stdc_bit_floor_ul", RetValSpec<UnsignedLongType>, [ArgSpec<UnsignedLongType>]>,
1279           FunctionSpec<"stdc_bit_floor_ull", RetValSpec<UnsignedLongLongType>, [ArgSpec<UnsignedLongLongType>]>,
1280           FunctionSpec<"stdc_bit_ceil_uc", RetValSpec<UnsignedCharType>, [ArgSpec<UnsignedCharType>]>,
1281           FunctionSpec<"stdc_bit_ceil_us", RetValSpec<UnsignedShortType>, [ArgSpec<UnsignedShortType>]>,
1282           FunctionSpec<"stdc_bit_ceil_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
1283           FunctionSpec<"stdc_bit_ceil_ul", RetValSpec<UnsignedLongType>, [ArgSpec<UnsignedLongType>]>,
1284           FunctionSpec<"stdc_bit_ceil_ull", RetValSpec<UnsignedLongLongType>, [ArgSpec<UnsignedLongLongType>]>
1285       ] // Functions
1286   >;
1288   HeaderSpec StdCkdInt = HeaderSpec<
1289       "stdckdint.h",
1290       [
1291         Macro<"__STDC_VERSION_STDCKDINT_H__">,
1292         Macro<"ckd_add">,
1293         Macro<"ckd_sub">,
1294         Macro<"ckd_mul">
1295       ], // Macros
1296       [], // Types
1297       [], // Enumerations
1298       [] // Functions
1299   >;
1301   HeaderSpec StdLib = HeaderSpec<
1302       "stdlib.h",
1303       [], // Macros
1304       [
1305           DivTType,
1306           LDivTType,
1307           LLDivTType,
1308           SizeTType,
1309           BSearchCompareT,
1310           QSortCompareT,
1311           AtexitHandlerT,
1312       ], // Types
1313       [], // Enumerations
1314       [
1315           FunctionSpec<"abort", RetValSpec<NoReturn>, [ArgSpec<VoidType>]>,
1317           FunctionSpec<"bsearch", RetValSpec<VoidPtr>, [ArgSpec<ConstVoidPtr>, ArgSpec<ConstVoidPtr>, ArgSpec<SizeTType>, ArgSpec<SizeTType>, ArgSpec<BSearchCompareT>]>,
1319           FunctionSpec<"abs", RetValSpec<IntType>, [ArgSpec<IntType>]>,
1320           FunctionSpec<"labs", RetValSpec<LongType>, [ArgSpec<LongType>]>,
1321           FunctionSpec<"llabs", RetValSpec<LongLongType>, [ArgSpec<LongLongType>]>,
1323           FunctionSpec<"atof", RetValSpec<DoubleType>, [ArgSpec<ConstCharRestrictedPtr>]>,
1324           FunctionSpec<"atoi", RetValSpec<IntType>, [ArgSpec<ConstCharPtr>]>,
1325           FunctionSpec<"atol", RetValSpec<LongType>, [ArgSpec<ConstCharPtr>]>,
1326           FunctionSpec<"atoll", RetValSpec<LongLongType>, [ArgSpec<ConstCharPtr>]>,
1328           FunctionSpec<"div", RetValSpec<DivTType>, [ArgSpec<IntType>, ArgSpec<IntType>]>,
1329           FunctionSpec<"ldiv", RetValSpec<LDivTType>, [ArgSpec<LongType>, ArgSpec<LongType>]>,
1330           FunctionSpec<"lldiv", RetValSpec<LLDivTType>, [ArgSpec<LongLongType>, ArgSpec<LongLongType>]>,
1332           FunctionSpec<"qsort", RetValSpec<VoidType>, [ArgSpec<VoidPtr>, ArgSpec<SizeTType>, ArgSpec<SizeTType>, ArgSpec<QSortCompareT>]>,
1334           FunctionSpec<"rand", RetValSpec<IntType>, [ArgSpec<VoidType>]>,
1335           FunctionSpec<"srand", RetValSpec<VoidType>, [ArgSpec<UnsignedIntType>]>,
1337           FunctionSpec<"strfromf", RetValSpec<IntType>, [ArgSpec<CharRestrictedPtr>, ArgSpec<SizeTType>, ArgSpec<ConstCharRestrictedPtr>, ArgSpec<FloatType>]>,
1338           FunctionSpec<"strfromd", RetValSpec<IntType>, [ArgSpec<CharRestrictedPtr>, ArgSpec<SizeTType>, ArgSpec<ConstCharRestrictedPtr>, ArgSpec<DoubleType>]>,
1339           FunctionSpec<"strfroml", RetValSpec<IntType>, [ArgSpec<CharRestrictedPtr>, ArgSpec<SizeTType>, ArgSpec<ConstCharRestrictedPtr>, ArgSpec<LongDoubleType>]>,
1341           FunctionSpec<"strtof", RetValSpec<FloatType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>]>,
1342           FunctionSpec<"strtod", RetValSpec<DoubleType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>]>,
1343           FunctionSpec<"strtold", RetValSpec<LongDoubleType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>]>,
1344           FunctionSpec<"strtol", RetValSpec<LongType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<IntType>]>,
1345           FunctionSpec<"strtoll", RetValSpec<LongLongType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<IntType>]>,
1346           FunctionSpec<"strtoul", RetValSpec<UnsignedLongType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<IntType>]>,
1347           FunctionSpec<"strtoull", RetValSpec<UnsignedLongLongType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<IntType>]>,
1349           FunctionSpec<"strtof_l", RetValSpec<FloatType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<LocaleT>]>,
1350           FunctionSpec<"strtod_l", RetValSpec<DoubleType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<LocaleT>]>,
1351           FunctionSpec<"strtold_l", RetValSpec<LongDoubleType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<LocaleT>]>,
1352           FunctionSpec<"strtol_l", RetValSpec<LongType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<IntType>, ArgSpec<LocaleT>]>,
1353           FunctionSpec<"strtoll_l", RetValSpec<LongLongType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<IntType>, ArgSpec<LocaleT>]>,
1354           FunctionSpec<"strtoul_l", RetValSpec<UnsignedLongType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<IntType>, ArgSpec<LocaleT>]>,
1355           FunctionSpec<"strtoull_l", RetValSpec<UnsignedLongLongType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<IntType>, ArgSpec<LocaleT>]>,
1357           FunctionSpec<"malloc", RetValSpec<VoidPtr>, [ArgSpec<SizeTType>]>,
1358           FunctionSpec<"calloc", RetValSpec<VoidPtr>, [ArgSpec<SizeTType>, ArgSpec<SizeTType>]>,
1359           FunctionSpec<"realloc", RetValSpec<VoidPtr>, [ArgSpec<VoidPtr>, ArgSpec<SizeTType>]>,
1360           FunctionSpec<"aligned_alloc", RetValSpec<VoidPtr>, [ArgSpec<SizeTType>, ArgSpec<SizeTType>]>,
1361           FunctionSpec<"free", RetValSpec<VoidType>, [ArgSpec<VoidPtr>]>,
1363           FunctionSpec<"_Exit", RetValSpec<NoReturn>, [ArgSpec<IntType>]>,
1364           FunctionSpec<"at_quick_exit", RetValSpec<IntType>, [ArgSpec<AtexitHandlerT>]>,
1365           FunctionSpec<"atexit", RetValSpec<IntType>, [ArgSpec<AtexitHandlerT>]>,
1366           FunctionSpec<"exit", RetValSpec<NoReturn>, [ArgSpec<IntType>]>,
1367           FunctionSpec<"quick_exit", RetValSpec<NoReturn>, [ArgSpec<IntType>]>,
1369           FunctionSpec<"system", RetValSpec<IntType>, [ArgSpec<ConstCharPtr>]>,
1370       ]
1371   >;
1373   NamedType IMaxDivTType = NamedType<"imaxdiv_t">;
1375   HeaderSpec IntTypes = HeaderSpec<
1376       "inttypes.h",
1377       [
1378         Macro<"__STDC_VERSION_INTTYPES_H__">,
1379       ], // Macros
1380       [
1381         IMaxDivTType,
1382       ], // Types
1383       [], // Enumerations
1384       [
1385           FunctionSpec<"imaxabs", RetValSpec<IntMaxTType>, [ArgSpec<IntMaxTType>]>,
1386           FunctionSpec<"imaxdiv", RetValSpec<IMaxDivTType>, [ArgSpec<IntMaxTType>, ArgSpec<IntMaxTType>]>,
1387           FunctionSpec<"strtoimax", RetValSpec<IntMaxTType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<IntType>]>,
1388           FunctionSpec<"strtoumax", RetValSpec<UIntMaxTType>, [ArgSpec<ConstCharRestrictedPtr>, ArgSpec<CharRestrictedPtrPtr>, ArgSpec<IntType>]>,
1389       ]
1390   >;
1392   HeaderSpec Errno = HeaderSpec<
1393       "errno.h",
1394       [
1395         Macro<"errno">,
1396         Macro<"EDOM">,
1397         Macro<"EILSEQ">,
1398         Macro<"ERANGE">,
1399       ]
1400   >;
1402   HeaderSpec Float = HeaderSpec<
1403       "float.h",
1404       [
1405         Macro<"FLT_MANT_DIG">,
1406         Macro<"DBL_MANT_DIG">,
1407         Macro<"LDBL_MANT_DIG">,
1408       ]
1409   >;
1411   HeaderSpec StdInt = HeaderSpec<"StdInt.h">;
1413   HeaderSpec Limits = HeaderSpec<"limits.h">;
1415   NamedType SigAtomicT = NamedType<"sig_atomic_t">;
1416   HeaderSpec Signal = HeaderSpec<
1417       "signal.h",
1418       [
1419         Macro<"SIG_BLOCK">,
1420         Macro<"SIG_UNBLOCK">,
1421         Macro<"SIG_SETMASK">,
1423         Macro<"SIGABRT">,
1424         Macro<"SIGFPE">,
1425         Macro<"SIGILL">,
1426         Macro<"SIGINT">,
1427         Macro<"SIGSEGV">,
1428         Macro<"SIGTERM">
1429       ],
1430       [
1431         SizeTType,
1432         SigAtomicT,
1433         SigHandlerT,
1434       ],
1435       [], // Enumerations
1436       [
1437         FunctionSpec<"raise", RetValSpec<IntType>, [ArgSpec<IntType>]>,
1438         FunctionSpec<
1439           "signal",
1440           RetValSpec<SigHandlerT>,
1441           [ArgSpec<IntType>, ArgSpec<SigHandlerT>]
1442         >,
1443       ]
1444   >;
1446   HeaderSpec Threads = HeaderSpec<
1447       "threads.h",
1448       [
1449           Macro<"ONCE_FLAG_INIT">,
1450       ],
1451       [
1452           OnceFlagType,
1453           CallOnceFuncType,
1454           CndTType,
1455           MtxTType,
1456           ThrdStartTType,
1457           ThrdTType,
1458           TssTType,
1459           TssDtorTType,
1460       ],
1461       [
1462           EnumeratedNameValue<"mtx_plain">,
1463           EnumeratedNameValue<"mtx_recursive">,
1464           EnumeratedNameValue<"mtx_timed">,
1465           EnumeratedNameValue<"thrd_timedout">,
1466           EnumeratedNameValue<"thrd_success">,
1467           EnumeratedNameValue<"thrd_busy">,
1468           EnumeratedNameValue<"thrd_error">,
1469           EnumeratedNameValue<"thrd_nomem">,
1470       ],
1471       [
1472           FunctionSpec<
1473               "call_once",
1474               RetValSpec<VoidType>,
1475               [
1476                   ArgSpec<OnceFlagTypePtr>,
1477                   ArgSpec<CallOnceFuncType>,
1478               ]
1479           >,
1480           FunctionSpec<
1481               "cnd_broadcast",
1482               RetValSpec<IntType>,
1483               [
1484                   ArgSpec<CndTTypePtr>,
1485               ]
1486           >,
1487           FunctionSpec<
1488               "cnd_destroy",
1489               RetValSpec<VoidType>,
1490               [
1491                   ArgSpec<CndTTypePtr>,
1492               ]
1493           >,
1494           FunctionSpec<
1495               "cnd_init",
1496               RetValSpec<IntType>,
1497               [
1498                   ArgSpec<CndTTypePtr>,
1499               ]
1500           >,
1501           FunctionSpec<
1502               "cnd_signal",
1503               RetValSpec<IntType>,
1504               [
1505                   ArgSpec<CndTTypePtr>,
1506               ]
1507           >,
1508           FunctionSpec<
1509               "cnd_wait",
1510               RetValSpec<IntType>,
1511               [
1512                   ArgSpec<CndTTypePtr>,
1513                   ArgSpec<MtxTTypePtr>,
1514               ]
1515           >,
1516           FunctionSpec<
1517               "mtx_init",
1518               RetValSpec<IntType>,
1519               [
1520                   ArgSpec<MtxTTypePtr>,
1521                   ArgSpec<IntType>,
1522               ]
1523           >,
1524           FunctionSpec<
1525               "mtx_destroy",
1526               RetValSpec<IntType>,
1527               [
1528                   ArgSpec<VoidType>,
1529               ]
1530           >,
1531           FunctionSpec<
1532               "mtx_lock",
1533               RetValSpec<IntType>,
1534               [
1535                   ArgSpec<MtxTTypePtr>,
1536               ]
1537           >,
1538           FunctionSpec<
1539               "mtx_unlock",
1540               RetValSpec<IntType>,
1541               [
1542                   ArgSpec<MtxTTypePtr>,
1543               ]
1544           >,
1545           FunctionSpec<
1546               "thrd_create",
1547               RetValSpec<IntType>,
1548               [
1549                   ArgSpec<ThrdTTypePtr>,
1550                   ArgSpec<ThrdStartTType>,
1551                   ArgSpec<VoidPtr>,
1552               ]
1553           >,
1554           FunctionSpec<
1555               "thrd_join",
1556               RetValSpec<IntType>,
1557               [
1558                   ArgSpec<ThrdTType>,
1559                   ArgSpec<IntPtr>,
1560               ]
1561           >,
1562           FunctionSpec<
1563               "thrd_detach",
1564               RetValSpec<IntType>,
1565               [ArgSpec<ThrdTType>]
1566           >,
1567           FunctionSpec<
1568               "thrd_current",
1569               RetValSpec<ThrdTType>,
1570               [ArgSpec<VoidType>]
1571           >,
1572           FunctionSpec<
1573               "thrd_equal",
1574               RetValSpec<IntType>,
1575               [ArgSpec<ThrdTType>, ArgSpec<ThrdTType>]
1576           >,
1577           FunctionSpec<
1578               "thrd_exit",
1579               RetValSpec<VoidType>,
1580               [ArgSpec<IntType>]
1581           >,
1582           FunctionSpec<
1583               "tss_create",
1584               RetValSpec<IntType>,
1585               [ArgSpec<TssTPtr>, ArgSpec<TssDtorTType>]
1586           >,
1587           FunctionSpec<
1588               "tss_delete",
1589               RetValSpec<IntType>,
1590               [ArgSpec<TssTType>]
1591           >,
1592           FunctionSpec<
1593               "tss_get",
1594               RetValSpec<VoidPtr>,
1595               [ArgSpec<TssTType>]
1596           >,
1597           FunctionSpec<
1598               "tss_set",
1599               RetValSpec<IntType>,
1600               [ArgSpec<TssTType>, ArgSpec<VoidPtr>]
1601           >,
1602       ]
1603   >;
1605   HeaderSpec Time = HeaderSpec<
1606       "time.h",
1607       [], // Macros
1608       [ // Types
1609          ClockT,
1610          StructTmType,
1611          StructTimeSpec,
1612          TimeTType,
1613          SizeTType,
1614       ],
1615       [], // Enumerations
1616       [
1617           FunctionSpec<
1618               "asctime",
1619               RetValSpec<CharPtr>,
1620               [ArgSpec<StructTmPtr>]
1621           >,
1622           FunctionSpec<
1623               "asctime_r",
1624               RetValSpec<CharPtr>,
1625               [
1626                   ArgSpec<StructTmPtr>,
1627                   ArgSpec<CharPtr>,
1628               ]
1629           >,
1630           FunctionSpec<
1631               "ctime",
1632               RetValSpec<CharPtr>,
1633               [ArgSpec<TimeTTypePtr>]
1634           >,
1635           FunctionSpec<
1636               "ctime_r",
1637               RetValSpec<CharPtr>,
1638               [
1639                   ArgSpec<TimeTTypePtr>,
1640                   ArgSpec<CharPtr>,
1641               ]
1642           >,
1643           FunctionSpec<
1644               "clock",
1645               RetValSpec<ClockT>,
1646               [ArgSpec<VoidType>]
1647           >,
1648           FunctionSpec<
1649               "difftime",
1650               RetValSpec<DoubleType>,
1651               [
1652                   ArgSpec<TimeTType>,
1653                   ArgSpec<TimeTType>,
1654               ]
1655           >,
1656           FunctionSpec<
1657               "gmtime",
1658               RetValSpec<StructTmPtr>,
1659               [ArgSpec<TimeTTypePtr>]
1660           >,
1661           FunctionSpec<
1662               "gmtime_r",
1663               RetValSpec<StructTmPtr>,
1664               [
1665                   ArgSpec<TimeTTypePtr>,
1666                   ArgSpec<StructTmPtr>,
1667               ]
1668           >,
1669           FunctionSpec<
1670               "mktime",
1671               RetValSpec<TimeTType>,
1672               [ArgSpec<StructTmPtr>]
1673           >,
1674           FunctionSpec<
1675               "time",
1676               RetValSpec<TimeTType>,
1677               [ArgSpec<TimeTTypePtr>]
1678           >,
1679           FunctionSpec<
1680               "timespec_get",
1681               RetValSpec<IntType>,
1682               [
1683                 ArgSpec<StructTimeSpecPtr>,
1684                 ArgSpec<IntType>,
1685               ]
1686           >,
1687       ]
1688   >;
1690   HeaderSpec SetJmp = HeaderSpec<
1691       "setjmp.h",
1692       [], // Macros
1693       [JmpBuf],
1694       [], // Enumerations
1695       [
1696           FunctionSpec<
1697               "longjmp",
1698               RetValSpec<NoReturn>,
1699               [ArgSpec<JmpBuf>, ArgSpec<IntType>]
1700           >,
1701           FunctionSpec<
1702               "setjmp",
1703               RetValSpec<IntType>,
1704               [ArgSpec<JmpBuf>]
1705           >,
1706           FunctionSpec<
1707               "longjmp",
1708               RetValSpec<VoidType>,
1709               [ArgSpec<JmpBuf>, ArgSpec<IntType>]
1710           >,
1711       ]
1712   >;
1714   HeaderSpec UChar = HeaderSpec<
1715       "uchar.h",
1716       [], // Macros
1717       [ //Types
1718         MBStateTType,
1719         Char8TType,
1720         Char16TType,
1721         Char32TType,
1722         SizeTType,
1723       ],
1724       [], // Enumerations
1725       []
1726   >;
1728   HeaderSpec WChar = HeaderSpec<
1729       "wchar.h",
1730       [ // Macros
1731         Macro<"WEOF">,
1732       ],
1733       [ //Types
1734         MBStateTType,
1735         SizeTType,
1736         WIntType,
1737         WCharType,
1738       ],
1739       [], // Enumerations
1740       [
1741           FunctionSpec<
1742               "wctob",
1743               RetValSpec<IntType>,
1744               [ArgSpec<WIntType>]
1745           >,
1746       ]
1747   >;
1749   NamedType StructLconv = NamedType<"struct lconv">;
1750   PtrType StructLconvPtr = PtrType<StructLconv>;
1752   HeaderSpec Locale = HeaderSpec<
1753      "locale.h",
1754       [], // Macros
1755       [LocaleT, StructLconv], // Types
1756       [], // Enumerations
1757       [
1758         FunctionSpec<
1759           "duplocale",
1760           RetValSpec<LocaleT>,
1761           [
1762             ArgSpec<LocaleT>
1763           ]
1764         >,
1765         FunctionSpec<
1766           "freelocale",
1767           RetValSpec<VoidType>,
1768           [
1769             ArgSpec<LocaleT>
1770           ]
1771         >,
1772         FunctionSpec<
1773           "localeconv",
1774           RetValSpec<StructLconvPtr>,
1775           []
1776         >,
1777         FunctionSpec<
1778           "newlocale",
1779           RetValSpec<LocaleT>,
1780           [
1781             ArgSpec<IntType>,
1782             ArgSpec<ConstCharPtr>,
1783             ArgSpec<LocaleT>
1784           ]
1785         >,
1786         FunctionSpec<
1787           "setlocale",
1788           RetValSpec<CharPtr>,
1789           [
1790             ArgSpec<IntType>,
1791             ArgSpec<ConstCharPtr>
1792           ]
1793         >,
1794         FunctionSpec<
1795           "uselocale",
1796           RetValSpec<LocaleT>,
1797           [
1798             ArgSpec<LocaleT>
1799           ]
1800         >
1801       ]  // Functions
1802   >;
1804   let Headers = [
1805     Assert,
1806     CType,
1807     Errno,
1808     Fenv,
1809     Float,
1810     StdInt,
1811     Limits,
1812     Math,
1813     String,
1814     StdBit,
1815     StdCkdInt,
1816     StdIO,
1817     StdLib,
1818     IntTypes,
1819     SetJmp,
1820     Signal,
1821     Threads,
1822     Time,
1823     UChar,
1824     WChar,
1825     Locale,
1826   ];