builtin-types.def revision 256281
1157642Sps/* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
2265918Sdavidcs   Free Software Foundation, Inc.
3157642Sps
4157642SpsThis file is part of GCC.
5157642Sps
6157642SpsGCC is free software; you can redistribute it and/or modify it under
7157642Spsthe terms of the GNU General Public License as published by the Free
8157642SpsSoftware Foundation; either version 2, or (at your option) any later
9157642Spsversion.
10157642Sps
11157642SpsGCC is distributed in the hope that it will be useful, but WITHOUT ANY
12157642SpsWARRANTY; without even the implied warranty of MERCHANTABILITY or
13157642SpsFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14157642Spsfor more details.
15157642Sps
16157642SpsYou should have received a copy of the GNU General Public License
17157642Spsalong with GCC; see the file COPYING.  If not, write to the Free
18157642SpsSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
19157642Sps02110-1301, USA.  */
20157642Sps
21157642Sps/* This header provides a declarative way of describing the types that
22157642Sps   are used when declaring builtin functions.
23157642Sps
24157642Sps   Before including this header, you must define the following macros:
25157642Sps
26157642Sps   DEF_PRIMITIVE_TYPE (ENUM, TYPE)
27157642Sps
28189325Sdavidch     The ENUM is an identifier indicating which type is being defined.
29189325Sdavidch     TYPE is an expression for a `tree' that represents the type.
30157642Sps
31157642Sps   DEF_FUNCTION_TYPE_0 (ENUM, RETURN)
32157642Sps   DEF_FUNCTION_TYPE_1 (ENUM, RETURN, ARG1)
33157642Sps   DEF_FUNCTION_TYPE_2 (ENUM, RETURN, ARG1, ARG2)
34157642Sps   DEF_FUNCTION_TYPE_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
35157642Sps   DEF_FUNCTION_TYPE_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4)
36157642Sps   DEF_FUNCTION_TYPE_5 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5)
37157642Sps   DEF_FUNCTION_TYPE_6 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6)
38157642Sps   DEF_FUNCTION_TYPE_7 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7)
39157642Sps
40157642Sps     These macros describe function types.  ENUM is as above.  The
41157642Sps     RETURN type is one of the enumerals already defined.  ARG1, ARG2,
42157642Sps     and ARG3 give the types of the arguments, similarly.
43169632Sdavidch
44169632Sdavidch   DEF_FUNCTION_TYPE_VAR_0 (ENUM, RETURN)
45157642Sps   DEF_FUNCTION_TYPE_VAR_1 (ENUM, RETURN, ARG1)
46157642Sps   DEF_FUNCTION_TYPE_VAR_2 (ENUM, RETURN, ARG1, ARG2)
47157642Sps   DEF_FUNCTION_TYPE_VAR_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
48157642Sps   DEF_FUNCTION_TYPE_VAR_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4)
49157642Sps   DEF_FUNCTION_TYPE_VAR_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5)
50157642Sps
51157642Sps     Similar, but for function types that take variable arguments.
52157642Sps     For example:
53157642Sps
54157642Sps       DEF_FUNCTION_TYPE_1 (BT_INT_DOUBLE, BT_INT, BT_DOUBLE)
55169632Sdavidch
56157642Sps     describes the type `int ()(double)', using the enumeral
57169632Sdavidch     BT_INT_DOUBLE, whereas:
58169632Sdavidch
59169632Sdavidch       DEF_FUNCTION_TYPE_VAR_1 (BT_INT_DOUBLE_VAR, BT_INT, BT_DOUBLE)
60170392Sdavidch
61157642Sps     describes the type `int ()(double, ...)'.
62157642Sps
63157642Sps  DEF_POINTER_TYPE (ENUM, TYPE)
64157642Sps
65157642Sps    This macro describes a pointer type.  ENUM is as above; TYPE is
66157642Sps    the type pointed to.  */
67157642Sps
68157642SpsDEF_PRIMITIVE_TYPE (BT_VOID, void_type_node)
69157642SpsDEF_PRIMITIVE_TYPE (BT_BOOL, boolean_type_node)
70157642SpsDEF_PRIMITIVE_TYPE (BT_INT, integer_type_node)
71157642SpsDEF_PRIMITIVE_TYPE (BT_UINT, unsigned_type_node)
72157642SpsDEF_PRIMITIVE_TYPE (BT_LONG, long_integer_type_node)
73157642SpsDEF_PRIMITIVE_TYPE (BT_ULONG, long_unsigned_type_node)
74157642SpsDEF_PRIMITIVE_TYPE (BT_LONGLONG, long_long_integer_type_node)
75157642SpsDEF_PRIMITIVE_TYPE (BT_ULONGLONG, long_long_unsigned_type_node)
76157642SpsDEF_PRIMITIVE_TYPE (BT_INTMAX, intmax_type_node)
77157642SpsDEF_PRIMITIVE_TYPE (BT_UINTMAX, uintmax_type_node)
78157642SpsDEF_PRIMITIVE_TYPE (BT_WORD, (*lang_hooks.types.type_for_mode) (word_mode, 0))
79157642SpsDEF_PRIMITIVE_TYPE (BT_FLOAT, float_type_node)
80206268SdavidchDEF_PRIMITIVE_TYPE (BT_DOUBLE, double_type_node)
81206268SdavidchDEF_PRIMITIVE_TYPE (BT_LONGDOUBLE, long_double_type_node)
82206268SdavidchDEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT, complex_float_type_node)
83157642SpsDEF_PRIMITIVE_TYPE (BT_COMPLEX_DOUBLE, complex_double_type_node)
84157642SpsDEF_PRIMITIVE_TYPE (BT_COMPLEX_LONGDOUBLE, complex_long_double_type_node)
85157642Sps
86157642SpsDEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node)
87157642SpsDEF_PRIMITIVE_TYPE (BT_FILEPTR, fileptr_type_node)
88157642SpsDEF_PRIMITIVE_TYPE (BT_CONST_PTR, const_ptr_type_node)
89157642SpsDEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR,
90157642Sps		    build_pointer_type
91178132Sdavidch		     (build_qualified_type (void_type_node,
92178132Sdavidch					    TYPE_QUAL_VOLATILE)))
93206268SdavidchDEF_PRIMITIVE_TYPE (BT_PTRMODE, (*lang_hooks.types.type_for_mode)(ptr_mode, 0))
94206268SdavidchDEF_PRIMITIVE_TYPE (BT_INT_PTR, integer_ptr_type_node)
95206268SdavidchDEF_PRIMITIVE_TYPE (BT_FLOAT_PTR, float_ptr_type_node)
96206268SdavidchDEF_PRIMITIVE_TYPE (BT_DOUBLE_PTR, double_ptr_type_node)
97206268SdavidchDEF_PRIMITIVE_TYPE (BT_LONGDOUBLE_PTR, long_double_ptr_type_node)
98206268SdavidchDEF_PRIMITIVE_TYPE (BT_PID, pid_type_node)
99206268SdavidchDEF_PRIMITIVE_TYPE (BT_SIZE, size_type_node)
100206268SdavidchDEF_PRIMITIVE_TYPE (BT_SSIZE, signed_size_type_node)
101206268SdavidchDEF_PRIMITIVE_TYPE (BT_WINT, wint_type_node)
102206268SdavidchDEF_PRIMITIVE_TYPE (BT_STRING, string_type_node)
103206268SdavidchDEF_PRIMITIVE_TYPE (BT_CONST_STRING, const_string_type_node)
104206268Sdavidch
105206268SdavidchDEF_PRIMITIVE_TYPE (BT_DFLOAT32, dfloat32_type_node)
106206268SdavidchDEF_PRIMITIVE_TYPE (BT_DFLOAT64, dfloat64_type_node)
107206268SdavidchDEF_PRIMITIVE_TYPE (BT_DFLOAT128, dfloat128_type_node)
108206268SdavidchDEF_PRIMITIVE_TYPE (BT_DFLOAT32_PTR, dfloat32_ptr_type_node)
109206268SdavidchDEF_PRIMITIVE_TYPE (BT_DFLOAT64_PTR, dfloat64_ptr_type_node)
110206268SdavidchDEF_PRIMITIVE_TYPE (BT_DFLOAT128_PTR, dfloat128_ptr_type_node)
111206268Sdavidch
112206268SdavidchDEF_PRIMITIVE_TYPE (BT_VALIST_REF, va_list_ref_type_node)
113206268SdavidchDEF_PRIMITIVE_TYPE (BT_VALIST_ARG, va_list_arg_type_node)
114206268Sdavidch
115206268SdavidchDEF_PRIMITIVE_TYPE (BT_I1, builtin_type_for_size (BITS_PER_UNIT*1, 1))
116206268SdavidchDEF_PRIMITIVE_TYPE (BT_I2, builtin_type_for_size (BITS_PER_UNIT*2, 1))
117206268SdavidchDEF_PRIMITIVE_TYPE (BT_I4, builtin_type_for_size (BITS_PER_UNIT*4, 1))
118206268SdavidchDEF_PRIMITIVE_TYPE (BT_I8, builtin_type_for_size (BITS_PER_UNIT*8, 1))
119206268SdavidchDEF_PRIMITIVE_TYPE (BT_I16, builtin_type_for_size (BITS_PER_UNIT*16, 1))
120206268Sdavidch
121206268SdavidchDEF_POINTER_TYPE (BT_PTR_CONST_STRING, BT_CONST_STRING)
122206268SdavidchDEF_POINTER_TYPE (BT_PTR_LONG, BT_LONG)
123206268SdavidchDEF_POINTER_TYPE (BT_PTR_PTR, BT_PTR)
124206268Sdavidch
125178132SdavidchDEF_FUNCTION_TYPE_0 (BT_FN_VOID, BT_VOID)
126178132SdavidchDEF_FUNCTION_TYPE_0 (BT_FN_BOOL, BT_BOOL)
127179771SdavidchDEF_FUNCTION_TYPE_0 (BT_FN_PTR, BT_PTR)
128179771SdavidchDEF_FUNCTION_TYPE_0 (BT_FN_PID, BT_PID)
129206268SdavidchDEF_FUNCTION_TYPE_0 (BT_FN_INT, BT_INT)
130206268SdavidchDEF_FUNCTION_TYPE_0 (BT_FN_UINT, BT_UINT)
131206268SdavidchDEF_FUNCTION_TYPE_0 (BT_FN_FLOAT, BT_FLOAT)
132206268SdavidchDEF_FUNCTION_TYPE_0 (BT_FN_DOUBLE, BT_DOUBLE)
133206268Sdavidch/* For "long double" we use LONGDOUBLE (not LONG_DOUBLE) to
134206268Sdavidch   distinguish it from two types in sequence, "long" followed by
135206268Sdavidch   "double".  */
136206268SdavidchDEF_FUNCTION_TYPE_0 (BT_FN_LONGDOUBLE, BT_LONGDOUBLE)
137206268SdavidchDEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT32, BT_DFLOAT32)
138206268SdavidchDEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT64, BT_DFLOAT64)
139206268SdavidchDEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT128, BT_DFLOAT128)
140206268Sdavidch
141206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONG, BT_LONG, BT_LONG)
142206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGLONG, BT_LONGLONG, BT_LONGLONG)
143206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INTMAX_INTMAX, BT_INTMAX, BT_INTMAX)
144206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_FLOAT, BT_FLOAT, BT_FLOAT)
145179771SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_DOUBLE, BT_DOUBLE, BT_DOUBLE)
146178132SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_LONGDOUBLE,
147179771Sdavidch		     BT_LONGDOUBLE, BT_LONGDOUBLE)
148179771SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT,
149206268Sdavidch		     BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
150206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
151206268Sdavidch		     BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
152206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
153206268Sdavidch		     BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
154206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_COMPLEX_FLOAT,
155206268Sdavidch		     BT_FLOAT, BT_COMPLEX_FLOAT)
156206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_COMPLEX_DOUBLE,
157206268Sdavidch		     BT_DOUBLE, BT_COMPLEX_DOUBLE)
158206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE,
159206268Sdavidch		     BT_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
160206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_PTR_UINT, BT_PTR, BT_UINT)
161206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_PTR_SIZE, BT_PTR, BT_SIZE)
162206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT)
163206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_UINT, BT_INT, BT_UINT)
164206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_LONG, BT_INT, BT_LONG)
165179771SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONG, BT_INT, BT_ULONG)
166179771SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGLONG, BT_INT, BT_LONGLONG)
167179771SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONGLONG, BT_INT, BT_ULONGLONG)
168179771SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_INTMAX, BT_INT, BT_INTMAX)
169206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_UINTMAX, BT_INT, BT_UINTMAX)
170206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_PTR, BT_INT, BT_PTR)
171206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT, BT_INT, BT_FLOAT)
172206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_DOUBLE, BT_INT, BT_DOUBLE)
173206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
174206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT32, BT_INT, BT_DFLOAT32)
175206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT64, BT_INT, BT_DFLOAT64)
176206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT128, BT_INT, BT_DFLOAT128)
177206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT, BT_LONG, BT_FLOAT)
178206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_LONG_DOUBLE, BT_LONG, BT_DOUBLE)
179206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONGDOUBLE, BT_LONG, BT_LONGDOUBLE)
180206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT, BT_LONGLONG, BT_FLOAT)
181206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_DOUBLE, BT_LONGLONG, BT_DOUBLE)
182206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGDOUBLE, BT_LONGLONG, BT_LONGDOUBLE)
183206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR)
184206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_SIZE_CONST_STRING, BT_SIZE, BT_CONST_STRING)
185179771SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_CONST_STRING, BT_INT, BT_CONST_STRING)
186179771SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_PTR_PTR, BT_PTR, BT_PTR)
187179771SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_VOID_VALIST_REF, BT_VOID, BT_VALIST_REF)
188179771SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_VOID_INT, BT_VOID, BT_INT)
189206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_CONST_STRING, BT_FLOAT, BT_CONST_STRING)
190206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_CONST_STRING, BT_DOUBLE, BT_CONST_STRING)
191206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_CONST_STRING,
192206268Sdavidch		     BT_LONGDOUBLE, BT_CONST_STRING)
193206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_CONST_STRING, BT_DFLOAT32, BT_CONST_STRING)
194206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_CONST_STRING, BT_DFLOAT64, BT_CONST_STRING)
195206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_CONST_STRING,
196206268Sdavidch		     BT_DFLOAT128, BT_CONST_STRING)
197206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_STRING_CONST_STRING, BT_STRING, BT_CONST_STRING)
198206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_WORD_PTR, BT_WORD, BT_PTR)
199206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_INT_WINT, BT_INT, BT_WINT)
200206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_WINT_WINT, BT_WINT, BT_WINT)
201206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_DFLOAT32, BT_DFLOAT32, BT_DFLOAT32)
202206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_DFLOAT64, BT_DFLOAT64, BT_DFLOAT64)
203206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_DFLOAT128, BT_DFLOAT128, BT_DFLOAT128)
204206268SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR)
205179771SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTRPTR, BT_VOID, BT_PTR_PTR)
206179771SdavidchDEF_FUNCTION_TYPE_1 (BT_FN_UINT_UINT, BT_UINT, BT_UINT)
207179771Sdavidch
208179771SdavidchDEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR, BT_FN_VOID_PTR)
209206268Sdavidch
210206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_INT, BT_VOID, BT_PTR, BT_INT)
211206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_STRING_STRING_CONST_STRING,
212206268Sdavidch		     BT_STRING, BT_STRING, BT_CONST_STRING)
213206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_CONST_STRING,
214206268Sdavidch		     BT_INT, BT_CONST_STRING, BT_CONST_STRING)
215206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_CONST_STRING,
216206268Sdavidch		     BT_STRING, BT_CONST_STRING, BT_CONST_STRING)
217206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_STRING_CONST_STRING,
218206268Sdavidch		     BT_SIZE, BT_CONST_STRING, BT_CONST_STRING)
219206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_INT,
220206268Sdavidch		     BT_STRING, BT_CONST_STRING, BT_INT)
221206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_SIZE,
222206268Sdavidch		     BT_STRING, BT_CONST_STRING, BT_SIZE)
223206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_FILEPTR,
224206268Sdavidch		     BT_INT, BT_CONST_STRING, BT_FILEPTR)
225179771SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_INT_INT_FILEPTR,
226179771Sdavidch		     BT_INT, BT_INT, BT_FILEPTR)
227179771SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTRMODE_PTR,
228179771Sdavidch		     BT_VOID, BT_PTRMODE, BT_PTR)
229206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_VOID_VALIST_REF_VALIST_ARG,
230206268Sdavidch		     BT_VOID, BT_VALIST_REF, BT_VALIST_ARG)
231206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_LONG_LONG_LONG,
232206268Sdavidch		     BT_LONG, BT_LONG, BT_LONG)
233206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_INT_PTR_CONST_STRING,
234206268Sdavidch		     BT_INT, BT_PTR, BT_CONST_STRING)
235206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_SIZE,
236206268Sdavidch		     BT_VOID, BT_PTR, BT_SIZE)
237179771SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOAT,
238179771Sdavidch		     BT_FLOAT, BT_FLOAT, BT_FLOAT)
239179771SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLE,
240179771Sdavidch		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
241206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
242206268Sdavidch		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
243206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOATPTR,
244206268Sdavidch		     BT_FLOAT, BT_FLOAT, BT_FLOAT_PTR)
245206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLEPTR,
246206268Sdavidch		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE_PTR)
247206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR,
248206268Sdavidch		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR)
249206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONGDOUBLE,
250206268Sdavidch		     BT_FLOAT, BT_FLOAT, BT_LONGDOUBLE)
251206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONGDOUBLE,
252206268Sdavidch		     BT_DOUBLE, BT_DOUBLE, BT_LONGDOUBLE)
253206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INT,
254206268Sdavidch		     BT_FLOAT, BT_FLOAT, BT_INT)
255206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INT,
256206268Sdavidch		     BT_DOUBLE, BT_DOUBLE, BT_INT)
257179771SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INT,
258179771Sdavidch		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT)
259179771SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INTPTR,
260179771Sdavidch		     BT_FLOAT, BT_FLOAT, BT_INT_PTR)
261206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INTPTR,
262206268Sdavidch		     BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
263206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR,
264206268Sdavidch		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
265206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_INT_FLOAT,
266206268Sdavidch		     BT_FLOAT, BT_INT, BT_FLOAT)
267206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_INT_DOUBLE,
268206268Sdavidch		     BT_DOUBLE, BT_INT, BT_DOUBLE)
269206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_INT_LONGDOUBLE,
270206268Sdavidch		     BT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
271206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONG,
272206268Sdavidch		     BT_FLOAT, BT_FLOAT, BT_LONG)
273179771SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONG,
274206268Sdavidch		     BT_DOUBLE, BT_DOUBLE, BT_LONG)
275206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONG,
276206268Sdavidch		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONG)
277179771SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_VALIST_ARG,
278179771Sdavidch		     BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
279207411SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_PTR_SIZE_SIZE,
280207411Sdavidch		     BT_PTR, BT_SIZE, BT_SIZE)
281206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT,
282206268Sdavidch		     BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
283206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
284206268Sdavidch		     BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
285206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
286179771Sdavidch		     BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
287157642SpsDEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR)
288157642SpsDEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
289179771Sdavidch		     BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING)
290179771SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_PTR_INT, BT_SIZE, BT_CONST_PTR, BT_INT)
291206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_I1, BT_I1, BT_VOLATILE_PTR, BT_I1)
292206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_I2, BT_I2, BT_VOLATILE_PTR, BT_I2)
293206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_I4, BT_I4, BT_VOLATILE_PTR, BT_I4)
294206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8)
295206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_I16, BT_I16, BT_VOLATILE_PTR, BT_I16)
296206268SdavidchDEF_FUNCTION_TYPE_2 (BT_FN_BOOL_LONGPTR_LONGPTR,
297218423Sdavidch		     BT_BOOL, BT_PTR_LONG, BT_PTR_LONG)
298206268Sdavidch
299218423SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_STRING_STRING_CONST_STRING_SIZE,
300218423Sdavidch		     BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE)
301218423SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
302206268Sdavidch		     BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
303206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_CONST_PTR_SIZE,
304218423Sdavidch		     BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE)
305157642SpsDEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
306206268Sdavidch		     BT_INT, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
307157642SpsDEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_INT_SIZE,
308218423Sdavidch		     BT_PTR, BT_PTR, BT_INT, BT_SIZE)
309206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_INT_INT,
310206268Sdavidch		     BT_VOID, BT_PTR, BT_INT, BT_INT)
311206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_VOID_CONST_PTR_PTR_SIZE,
312206268Sdavidch		     BT_VOID, BT_CONST_PTR, BT_PTR, BT_SIZE)
313206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_INT_STRING_CONST_STRING_VALIST_ARG,
314157642Sps		     BT_INT, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
315206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
316157642Sps		     BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
317206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG,
318206268Sdavidch		     BT_INT, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
319206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_STRING_CONST_STRING_CONST_STRING_INT,
320206268Sdavidch		     BT_STRING, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
321218423SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_FLOAT,
322157642Sps		     BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_FLOAT)
323206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE,
324206268Sdavidch		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
325206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
326206268Sdavidch		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
327218423SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_INTPTR,
328157642Sps		     BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_INT_PTR)
329206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR,
330206268Sdavidch		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
331206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR,
332206268Sdavidch		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
333218423SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR,
334157642Sps		     BT_VOID, BT_FLOAT, BT_FLOAT_PTR, BT_FLOAT_PTR)
335206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR,
336206268Sdavidch		     BT_VOID, BT_DOUBLE, BT_DOUBLE_PTR, BT_DOUBLE_PTR)
337206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR,
338206268Sdavidch		     BT_VOID, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR, BT_LONGDOUBLE_PTR)
339218423SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_PTR_PTR, BT_VOID, BT_PTR, BT_PTR, BT_PTR)
340157642SpsDEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING,
341218423Sdavidch		     BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
342218423SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_INT_INT_CONST_STRING_VALIST_ARG,
343206268Sdavidch		     BT_INT, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
344206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I1_I1, BT_BOOL, BT_VOLATILE_PTR,
345206268Sdavidch		     BT_I1, BT_I1)
346157642SpsDEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I2_I2, BT_BOOL, BT_VOLATILE_PTR,
347206268Sdavidch		     BT_I2, BT_I2)
348206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I4_I4, BT_BOOL, BT_VOLATILE_PTR,
349206268Sdavidch		     BT_I4, BT_I4)
350206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I8_I8, BT_BOOL, BT_VOLATILE_PTR,
351206268Sdavidch		     BT_I8, BT_I8)
352157642SpsDEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I16_I16, BT_BOOL, BT_VOLATILE_PTR,
353206268Sdavidch		     BT_I16, BT_I16)
354206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_I1, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_I1)
355218423SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_I2, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_I2)
356218423SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_I4, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_I4)
357206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_I8, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_I8)
358170810SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_I16, BT_I16, BT_VOLATILE_PTR,
359206268Sdavidch		     BT_I16, BT_I16)
360206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_VOID_OMPFN_PTR_UINT, BT_VOID, BT_PTR_FN_VOID_PTR,
361206268Sdavidch		     BT_PTR, BT_UINT)
362206268Sdavidch
363206268SdavidchDEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
364170810Sdavidch		     BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
365206268SdavidchDEF_FUNCTION_TYPE_4 (BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
366206268Sdavidch		BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
367218423SdavidchDEF_FUNCTION_TYPE_4 (BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR,
368218423Sdavidch		BT_SIZE, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR)
369218423SdavidchDEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE,
370170810Sdavidch		     BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE)
371206268SdavidchDEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_INT_SIZE_SIZE,
372206268Sdavidch		     BT_PTR, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)
373218423SdavidchDEF_FUNCTION_TYPE_4 (BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE,
374218423Sdavidch		     BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)
375206268SdavidchDEF_FUNCTION_TYPE_4 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG,
376179771Sdavidch		     BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
377206268SdavidchDEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PTR_UINT_UINT,
378206268Sdavidch		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT)
379218423Sdavidch
380218423SdavidchDEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
381206268Sdavidch		     BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING,
382179771Sdavidch		     BT_VALIST_ARG)
383206268SdavidchDEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
384206268Sdavidch		     BT_BOOL, BT_LONG, BT_LONG, BT_LONG,
385206268Sdavidch		     BT_PTR_LONG, BT_PTR_LONG)
386206268Sdavidch
387218423SdavidchDEF_FUNCTION_TYPE_6 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG,
388170810Sdavidch		     BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
389206268Sdavidch		     BT_CONST_STRING, BT_VALIST_ARG)
390206268SdavidchDEF_FUNCTION_TYPE_6 (BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
391218423Sdavidch		     BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_LONG,
392218423Sdavidch		     BT_PTR_LONG, BT_PTR_LONG)
393206268SdavidchDEF_FUNCTION_TYPE_6 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
394170810Sdavidch		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT,
395218423Sdavidch		     BT_LONG, BT_LONG, BT_LONG)
396218423Sdavidch
397218423SdavidchDEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
398206268Sdavidch		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT,
399206268Sdavidch		     BT_LONG, BT_LONG, BT_LONG, BT_LONG)
400218423Sdavidch
401157642SpsDEF_FUNCTION_TYPE_VAR_0 (BT_FN_VOID_VAR, BT_VOID)
402206268SdavidchDEF_FUNCTION_TYPE_VAR_0 (BT_FN_INT_VAR, BT_INT)
403206268SdavidchDEF_FUNCTION_TYPE_VAR_0 (BT_FN_PTR_VAR, BT_PTR)
404206268Sdavidch
405206268SdavidchDEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_VALIST_REF_VAR,
406157642Sps			 BT_VOID, BT_VALIST_REF)
407157642SpsDEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_CONST_PTR_VAR,
408157642Sps			 BT_VOID, BT_CONST_PTR)
409157642SpsDEF_FUNCTION_TYPE_VAR_1 (BT_FN_INT_CONST_STRING_VAR,
410206268Sdavidch			 BT_INT, BT_CONST_STRING)
411206268Sdavidch
412206268SdavidchDEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_FILEPTR_CONST_STRING_VAR,
413157642Sps			 BT_INT, BT_FILEPTR, BT_CONST_STRING)
414157642SpsDEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_STRING_CONST_STRING_VAR,
415178132Sdavidch			 BT_INT, BT_STRING, BT_CONST_STRING)
416206268SdavidchDEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
417206268Sdavidch			 BT_INT, BT_CONST_STRING, BT_CONST_STRING)
418206268SdavidchDEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_INT_CONST_STRING_VAR,
419178132Sdavidch			 BT_INT, BT_INT, BT_CONST_STRING)
420178132Sdavidch
421157642SpsDEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_STRING_SIZE_CONST_STRING_VAR,
422206268Sdavidch			 BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING)
423206268SdavidchDEF_FUNCTION_TYPE_VAR_3 (BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR,
424206268Sdavidch			 BT_SSIZE, BT_STRING, BT_SIZE, BT_CONST_STRING)
425157642SpsDEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR,
426157642Sps			 BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING)
427157642Sps
428206268SdavidchDEF_FUNCTION_TYPE_VAR_4 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR,
429206268Sdavidch			 BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING)
430206268Sdavidch
431157642SpsDEF_FUNCTION_TYPE_VAR_5 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR,
432157642Sps			 BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
433157642Sps			 BT_CONST_STRING)
434207411Sdavidch
435206268SdavidchDEF_POINTER_TYPE (BT_PTR_FN_VOID_VAR, BT_FN_VOID_VAR)
436206268SdavidchDEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE,
437157642Sps		     BT_PTR, BT_PTR_FN_VOID_VAR, BT_PTR, BT_SIZE)
438157642Sps
439157642Sps