OSDN Git Service

* config/i386/i386.md (absneg): New code iterator.
[pf3gnuchains/gcc-fork.git] / gcc / builtin-types.def
1 /* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
2    Free Software Foundation, Inc.
3
4 This file is part of GCC.
5
6 GCC is free software; you can redistribute it and/or modify it under
7 the terms of the GNU General Public License as published by the Free
8 Software Foundation; either version 3, or (at your option) any later
9 version.
10
11 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with GCC; see the file COPYING3.  If not see
18 <http://www.gnu.org/licenses/>.  */
19
20 /* This header provides a declarative way of describing the types that
21    are used when declaring builtin functions.
22
23    Before including this header, you must define the following macros:
24
25    DEF_PRIMITIVE_TYPE (ENUM, TYPE)
26
27      The ENUM is an identifier indicating which type is being defined.
28      TYPE is an expression for a `tree' that represents the type.
29
30    DEF_FUNCTION_TYPE_0 (ENUM, RETURN)
31    DEF_FUNCTION_TYPE_1 (ENUM, RETURN, ARG1)
32    DEF_FUNCTION_TYPE_2 (ENUM, RETURN, ARG1, ARG2)
33    DEF_FUNCTION_TYPE_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
34    DEF_FUNCTION_TYPE_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4)
35    DEF_FUNCTION_TYPE_5 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5)
36    DEF_FUNCTION_TYPE_6 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6)
37    DEF_FUNCTION_TYPE_7 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7)
38
39      These macros describe function types.  ENUM is as above.  The
40      RETURN type is one of the enumerals already defined.  ARG1, ARG2,
41      etc, give the types of the arguments, similarly.
42
43    DEF_FUNCTION_TYPE_VAR_0 (ENUM, RETURN)
44    DEF_FUNCTION_TYPE_VAR_1 (ENUM, RETURN, ARG1)
45    DEF_FUNCTION_TYPE_VAR_2 (ENUM, RETURN, ARG1, ARG2)
46    DEF_FUNCTION_TYPE_VAR_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
47    DEF_FUNCTION_TYPE_VAR_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4)
48    DEF_FUNCTION_TYPE_VAR_5 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5)
49
50      Similar, but for function types that take variable arguments.
51      For example:
52
53        DEF_FUNCTION_TYPE_1 (BT_INT_DOUBLE, BT_INT, BT_DOUBLE)
54
55      describes the type `int ()(double)', using the enumeral
56      BT_INT_DOUBLE, whereas:
57
58        DEF_FUNCTION_TYPE_VAR_1 (BT_INT_DOUBLE_VAR, BT_INT, BT_DOUBLE)
59
60      describes the type `int ()(double, ...)'.
61
62   DEF_POINTER_TYPE (ENUM, TYPE)
63
64     This macro describes a pointer type.  ENUM is as above; TYPE is
65     the type pointed to.  */
66
67 DEF_PRIMITIVE_TYPE (BT_VOID, void_type_node)
68 DEF_PRIMITIVE_TYPE (BT_BOOL, boolean_type_node)
69 DEF_PRIMITIVE_TYPE (BT_INT, integer_type_node)
70 DEF_PRIMITIVE_TYPE (BT_UINT, unsigned_type_node)
71 DEF_PRIMITIVE_TYPE (BT_LONG, long_integer_type_node)
72 DEF_PRIMITIVE_TYPE (BT_ULONG, long_unsigned_type_node)
73 DEF_PRIMITIVE_TYPE (BT_LONGLONG, long_long_integer_type_node)
74 DEF_PRIMITIVE_TYPE (BT_ULONGLONG, long_long_unsigned_type_node)
75 DEF_PRIMITIVE_TYPE (BT_INTMAX, intmax_type_node)
76 DEF_PRIMITIVE_TYPE (BT_UINTMAX, uintmax_type_node)
77 DEF_PRIMITIVE_TYPE (BT_UINT32, uint32_type_node)
78 DEF_PRIMITIVE_TYPE (BT_UINT64, uint64_type_node)
79 DEF_PRIMITIVE_TYPE (BT_WORD, (*lang_hooks.types.type_for_mode) (word_mode, 1))
80 DEF_PRIMITIVE_TYPE (BT_FLOAT, float_type_node)
81 DEF_PRIMITIVE_TYPE (BT_DOUBLE, double_type_node)
82 DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE, long_double_type_node)
83 DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT, complex_float_type_node)
84 DEF_PRIMITIVE_TYPE (BT_COMPLEX_DOUBLE, complex_double_type_node)
85 DEF_PRIMITIVE_TYPE (BT_COMPLEX_LONGDOUBLE, complex_long_double_type_node)
86
87 DEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node)
88 DEF_PRIMITIVE_TYPE (BT_FILEPTR, fileptr_type_node)
89 DEF_PRIMITIVE_TYPE (BT_CONST_PTR, const_ptr_type_node)
90 DEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR,
91                     build_pointer_type
92                      (build_qualified_type (void_type_node,
93                                             TYPE_QUAL_VOLATILE)))
94 DEF_PRIMITIVE_TYPE (BT_PTRMODE, (*lang_hooks.types.type_for_mode)(ptr_mode, 0))
95 DEF_PRIMITIVE_TYPE (BT_INT_PTR, integer_ptr_type_node)
96 DEF_PRIMITIVE_TYPE (BT_FLOAT_PTR, float_ptr_type_node)
97 DEF_PRIMITIVE_TYPE (BT_DOUBLE_PTR, double_ptr_type_node)
98 DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE_PTR, long_double_ptr_type_node)
99 DEF_PRIMITIVE_TYPE (BT_PID, pid_type_node)
100 DEF_PRIMITIVE_TYPE (BT_SIZE, size_type_node)
101 DEF_PRIMITIVE_TYPE (BT_SSIZE, signed_size_type_node)
102 DEF_PRIMITIVE_TYPE (BT_WINT, wint_type_node)
103 DEF_PRIMITIVE_TYPE (BT_STRING, string_type_node)
104 DEF_PRIMITIVE_TYPE (BT_CONST_STRING, const_string_type_node)
105
106 DEF_PRIMITIVE_TYPE (BT_DFLOAT32, dfloat32_type_node)
107 DEF_PRIMITIVE_TYPE (BT_DFLOAT64, dfloat64_type_node)
108 DEF_PRIMITIVE_TYPE (BT_DFLOAT128, dfloat128_type_node)
109 DEF_PRIMITIVE_TYPE (BT_DFLOAT32_PTR, dfloat32_ptr_type_node)
110 DEF_PRIMITIVE_TYPE (BT_DFLOAT64_PTR, dfloat64_ptr_type_node)
111 DEF_PRIMITIVE_TYPE (BT_DFLOAT128_PTR, dfloat128_ptr_type_node)
112
113 DEF_PRIMITIVE_TYPE (BT_VALIST_REF, va_list_ref_type_node)
114 DEF_PRIMITIVE_TYPE (BT_VALIST_ARG, va_list_arg_type_node)
115
116 DEF_PRIMITIVE_TYPE (BT_I1, builtin_type_for_size (BITS_PER_UNIT*1, 1))
117 DEF_PRIMITIVE_TYPE (BT_I2, builtin_type_for_size (BITS_PER_UNIT*2, 1))
118 DEF_PRIMITIVE_TYPE (BT_I4, builtin_type_for_size (BITS_PER_UNIT*4, 1))
119 DEF_PRIMITIVE_TYPE (BT_I8, builtin_type_for_size (BITS_PER_UNIT*8, 1))
120 DEF_PRIMITIVE_TYPE (BT_I16, builtin_type_for_size (BITS_PER_UNIT*16, 1))
121
122 DEF_POINTER_TYPE (BT_PTR_CONST_STRING, BT_CONST_STRING)
123 DEF_POINTER_TYPE (BT_PTR_LONG, BT_LONG)
124 DEF_POINTER_TYPE (BT_PTR_PTR, BT_PTR)
125
126 DEF_FUNCTION_TYPE_0 (BT_FN_VOID, BT_VOID)
127 DEF_FUNCTION_TYPE_0 (BT_FN_BOOL, BT_BOOL)
128 DEF_FUNCTION_TYPE_0 (BT_FN_PTR, BT_PTR)
129 DEF_FUNCTION_TYPE_0 (BT_FN_PID, BT_PID)
130 DEF_FUNCTION_TYPE_0 (BT_FN_INT, BT_INT)
131 DEF_FUNCTION_TYPE_0 (BT_FN_UINT, BT_UINT)
132 DEF_FUNCTION_TYPE_0 (BT_FN_FLOAT, BT_FLOAT)
133 DEF_FUNCTION_TYPE_0 (BT_FN_DOUBLE, BT_DOUBLE)
134 /* For "long double" we use LONGDOUBLE (not LONG_DOUBLE) to
135    distinguish it from two types in sequence, "long" followed by
136    "double".  */
137 DEF_FUNCTION_TYPE_0 (BT_FN_LONGDOUBLE, BT_LONGDOUBLE)
138 DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT32, BT_DFLOAT32)
139 DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT64, BT_DFLOAT64)
140 DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT128, BT_DFLOAT128)
141
142 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONG, BT_LONG, BT_LONG)
143 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGLONG, BT_LONGLONG, BT_LONGLONG)
144 DEF_FUNCTION_TYPE_1 (BT_FN_INTMAX_INTMAX, BT_INTMAX, BT_INTMAX)
145 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_FLOAT, BT_FLOAT, BT_FLOAT)
146 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_DOUBLE, BT_DOUBLE, BT_DOUBLE)
147 DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_LONGDOUBLE,
148                      BT_LONGDOUBLE, BT_LONGDOUBLE)
149 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT,
150                      BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
151 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
152                      BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
153 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
154                      BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
155 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_COMPLEX_FLOAT,
156                      BT_FLOAT, BT_COMPLEX_FLOAT)
157 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_COMPLEX_DOUBLE,
158                      BT_DOUBLE, BT_COMPLEX_DOUBLE)
159 DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE,
160                      BT_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
161 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_FLOAT,
162                      BT_COMPLEX_FLOAT, BT_FLOAT)
163 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_DOUBLE,
164                      BT_COMPLEX_DOUBLE, BT_DOUBLE)
165 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE,
166                      BT_COMPLEX_LONGDOUBLE, BT_LONGDOUBLE)
167 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_UINT, BT_PTR, BT_UINT)
168 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_SIZE, BT_PTR, BT_SIZE)
169 DEF_FUNCTION_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT)
170 DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINT, BT_INT, BT_UINT)
171 DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONG, BT_INT, BT_LONG)
172 DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONG, BT_INT, BT_ULONG)
173 DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGLONG, BT_INT, BT_LONGLONG)
174 DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONGLONG, BT_INT, BT_ULONGLONG)
175 DEF_FUNCTION_TYPE_1 (BT_FN_INT_INTMAX, BT_INT, BT_INTMAX)
176 DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINTMAX, BT_INT, BT_UINTMAX)
177 DEF_FUNCTION_TYPE_1 (BT_FN_INT_PTR, BT_INT, BT_PTR)
178 DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT, BT_INT, BT_FLOAT)
179 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DOUBLE, BT_INT, BT_DOUBLE)
180 DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
181 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT32, BT_INT, BT_DFLOAT32)
182 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT64, BT_INT, BT_DFLOAT64)
183 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT128, BT_INT, BT_DFLOAT128)
184 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT, BT_LONG, BT_FLOAT)
185 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_DOUBLE, BT_LONG, BT_DOUBLE)
186 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONGDOUBLE, BT_LONG, BT_LONGDOUBLE)
187 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT, BT_LONGLONG, BT_FLOAT)
188 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_DOUBLE, BT_LONGLONG, BT_DOUBLE)
189 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGDOUBLE, BT_LONGLONG, BT_LONGDOUBLE)
190 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR)
191 DEF_FUNCTION_TYPE_1 (BT_FN_SIZE_CONST_STRING, BT_SIZE, BT_CONST_STRING)
192 DEF_FUNCTION_TYPE_1 (BT_FN_INT_CONST_STRING, BT_INT, BT_CONST_STRING)
193 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_PTR, BT_PTR, BT_PTR)
194 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VALIST_REF, BT_VOID, BT_VALIST_REF)
195 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_INT, BT_VOID, BT_INT)
196 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_CONST_STRING, BT_FLOAT, BT_CONST_STRING)
197 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_CONST_STRING, BT_DOUBLE, BT_CONST_STRING)
198 DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_CONST_STRING,
199                      BT_LONGDOUBLE, BT_CONST_STRING)
200 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_CONST_STRING, BT_DFLOAT32, BT_CONST_STRING)
201 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_CONST_STRING, BT_DFLOAT64, BT_CONST_STRING)
202 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_CONST_STRING,
203                      BT_DFLOAT128, BT_CONST_STRING)
204 DEF_FUNCTION_TYPE_1 (BT_FN_STRING_CONST_STRING, BT_STRING, BT_CONST_STRING)
205 DEF_FUNCTION_TYPE_1 (BT_FN_WORD_PTR, BT_WORD, BT_PTR)
206 DEF_FUNCTION_TYPE_1 (BT_FN_INT_WINT, BT_INT, BT_WINT)
207 DEF_FUNCTION_TYPE_1 (BT_FN_WINT_WINT, BT_WINT, BT_WINT)
208 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_DFLOAT32, BT_DFLOAT32, BT_DFLOAT32)
209 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_DFLOAT64, BT_DFLOAT64, BT_DFLOAT64)
210 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_DFLOAT128, BT_DFLOAT128, BT_DFLOAT128)
211 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR)
212 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTRPTR, BT_VOID, BT_PTR_PTR)
213 DEF_FUNCTION_TYPE_1 (BT_FN_UINT_UINT, BT_UINT, BT_UINT)
214 DEF_FUNCTION_TYPE_1 (BT_FN_ULONG_ULONG, BT_ULONG, BT_ULONG)
215 DEF_FUNCTION_TYPE_1 (BT_FN_ULONGLONG_ULONGLONG, BT_ULONGLONG, BT_ULONGLONG)
216 DEF_FUNCTION_TYPE_1 (BT_FN_UINT32_UINT32, BT_UINT32, BT_UINT32)
217 DEF_FUNCTION_TYPE_1 (BT_FN_UINT64_UINT64, BT_UINT64, BT_UINT64)
218
219 DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR, BT_FN_VOID_PTR)
220
221 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_INT, BT_VOID, BT_PTR, BT_INT)
222 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_STRING_CONST_STRING,
223                      BT_STRING, BT_STRING, BT_CONST_STRING)
224 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_CONST_STRING,
225                      BT_INT, BT_CONST_STRING, BT_CONST_STRING)
226 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_CONST_STRING,
227                      BT_STRING, BT_CONST_STRING, BT_CONST_STRING)
228 DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_STRING_CONST_STRING,
229                      BT_SIZE, BT_CONST_STRING, BT_CONST_STRING)
230 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_INT,
231                      BT_STRING, BT_CONST_STRING, BT_INT)
232 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_SIZE,
233                      BT_STRING, BT_CONST_STRING, BT_SIZE)
234 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_FILEPTR,
235                      BT_INT, BT_CONST_STRING, BT_FILEPTR)
236 DEF_FUNCTION_TYPE_2 (BT_FN_INT_INT_FILEPTR,
237                      BT_INT, BT_INT, BT_FILEPTR)
238 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTRMODE_PTR,
239                      BT_VOID, BT_PTRMODE, BT_PTR)
240 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VALIST_REF_VALIST_ARG,
241                      BT_VOID, BT_VALIST_REF, BT_VALIST_ARG)
242 DEF_FUNCTION_TYPE_2 (BT_FN_LONG_LONG_LONG,
243                      BT_LONG, BT_LONG, BT_LONG)
244 DEF_FUNCTION_TYPE_2 (BT_FN_INT_PTR_CONST_STRING,
245                      BT_INT, BT_PTR, BT_CONST_STRING)
246 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_SIZE,
247                      BT_VOID, BT_PTR, BT_SIZE)
248 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOAT,
249                      BT_FLOAT, BT_FLOAT, BT_FLOAT)
250 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLE,
251                      BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
252 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
253                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
254 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOATPTR,
255                      BT_FLOAT, BT_FLOAT, BT_FLOAT_PTR)
256 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLEPTR,
257                      BT_DOUBLE, BT_DOUBLE, BT_DOUBLE_PTR)
258 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR,
259                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR)
260 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONGDOUBLE,
261                      BT_FLOAT, BT_FLOAT, BT_LONGDOUBLE)
262 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONGDOUBLE,
263                      BT_DOUBLE, BT_DOUBLE, BT_LONGDOUBLE)
264 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INT,
265                      BT_FLOAT, BT_FLOAT, BT_INT)
266 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INT,
267                      BT_DOUBLE, BT_DOUBLE, BT_INT)
268 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INT,
269                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT)
270 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INTPTR,
271                      BT_FLOAT, BT_FLOAT, BT_INT_PTR)
272 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INTPTR,
273                      BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
274 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR,
275                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
276 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_INT_FLOAT,
277                      BT_FLOAT, BT_INT, BT_FLOAT)
278 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_INT_DOUBLE,
279                      BT_DOUBLE, BT_INT, BT_DOUBLE)
280 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_INT_LONGDOUBLE,
281                      BT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
282 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONG,
283                      BT_FLOAT, BT_FLOAT, BT_LONG)
284 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONG,
285                      BT_DOUBLE, BT_DOUBLE, BT_LONG)
286 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONG,
287                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONG)
288 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_VALIST_ARG,
289                      BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
290 DEF_FUNCTION_TYPE_2 (BT_FN_PTR_SIZE_SIZE,
291                      BT_PTR, BT_SIZE, BT_SIZE)
292 DEF_FUNCTION_TYPE_2 (BT_FN_PTR_PTR_SIZE,
293                      BT_PTR, BT_PTR, BT_SIZE)
294 DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT,
295                      BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
296 DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
297                      BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
298 DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
299                      BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
300 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR)
301 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
302                      BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING)
303 DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_PTR_INT, BT_SIZE, BT_CONST_PTR, BT_INT)
304 DEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_I1, BT_I1, BT_VOLATILE_PTR, BT_I1)
305 DEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_I2, BT_I2, BT_VOLATILE_PTR, BT_I2)
306 DEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_I4, BT_I4, BT_VOLATILE_PTR, BT_I4)
307 DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8)
308 DEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_I16, BT_I16, BT_VOLATILE_PTR, BT_I16)
309 DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_LONGPTR_LONGPTR,
310                      BT_BOOL, BT_PTR_LONG, BT_PTR_LONG)
311
312 DEF_FUNCTION_TYPE_3 (BT_FN_STRING_STRING_CONST_STRING_SIZE,
313                      BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE)
314 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
315                      BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
316 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_CONST_PTR_SIZE,
317                      BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE)
318 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
319                      BT_INT, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
320 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_INT_SIZE,
321                      BT_PTR, BT_PTR, BT_INT, BT_SIZE)
322 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_INT_INT,
323                      BT_VOID, BT_PTR, BT_INT, BT_INT)
324 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_CONST_PTR_PTR_SIZE,
325                      BT_VOID, BT_CONST_PTR, BT_PTR, BT_SIZE)
326 DEF_FUNCTION_TYPE_3 (BT_FN_INT_STRING_CONST_STRING_VALIST_ARG,
327                      BT_INT, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
328 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
329                      BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
330 DEF_FUNCTION_TYPE_3 (BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG,
331                      BT_INT, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
332 DEF_FUNCTION_TYPE_3 (BT_FN_STRING_CONST_STRING_CONST_STRING_INT,
333                      BT_STRING, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
334 DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_FLOAT,
335                      BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_FLOAT)
336 DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE,
337                      BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
338 DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
339                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
340 DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_INTPTR,
341                      BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_INT_PTR)
342 DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR,
343                      BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
344 DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR,
345                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
346 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR,
347                      BT_VOID, BT_FLOAT, BT_FLOAT_PTR, BT_FLOAT_PTR)
348 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR,
349                      BT_VOID, BT_DOUBLE, BT_DOUBLE_PTR, BT_DOUBLE_PTR)
350 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR,
351                      BT_VOID, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR, BT_LONGDOUBLE_PTR)
352 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_PTR_PTR, BT_VOID, BT_PTR, BT_PTR, BT_PTR)
353 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING,
354                      BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
355 DEF_FUNCTION_TYPE_3 (BT_FN_INT_INT_CONST_STRING_VALIST_ARG,
356                      BT_INT, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
357 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I1_I1, BT_BOOL, BT_VOLATILE_PTR,
358                      BT_I1, BT_I1)
359 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I2_I2, BT_BOOL, BT_VOLATILE_PTR,
360                      BT_I2, BT_I2)
361 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I4_I4, BT_BOOL, BT_VOLATILE_PTR,
362                      BT_I4, BT_I4)
363 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I8_I8, BT_BOOL, BT_VOLATILE_PTR,
364                      BT_I8, BT_I8)
365 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I16_I16, BT_BOOL, BT_VOLATILE_PTR,
366                      BT_I16, BT_I16)
367 DEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_I1, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_I1)
368 DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_I2, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_I2)
369 DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_I4, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_I4)
370 DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_I8, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_I8)
371 DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_I16, BT_I16, BT_VOLATILE_PTR,
372                      BT_I16, BT_I16)
373 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_OMPFN_PTR_UINT, BT_VOID, BT_PTR_FN_VOID_PTR,
374                      BT_PTR, BT_UINT)
375 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_CONST_PTR_INT_SIZE, BT_PTR,
376                      BT_CONST_PTR, BT_INT, BT_SIZE)
377
378 DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
379                      BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
380 DEF_FUNCTION_TYPE_4 (BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
381                 BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
382 DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR,
383                 BT_SIZE, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR)
384 DEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE,
385                      BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE)
386 DEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_INT_SIZE_SIZE,
387                      BT_PTR, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)
388 DEF_FUNCTION_TYPE_4 (BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE,
389                      BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)
390 DEF_FUNCTION_TYPE_4 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG,
391                      BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
392 DEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PTR_UINT_UINT,
393                      BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT)
394 DEF_FUNCTION_TYPE_4 (BT_FN_VOID_PTR_WORD_WORD_PTR,
395                      BT_VOID, BT_PTR, BT_WORD, BT_WORD, BT_PTR)
396
397 DEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
398                      BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING,
399                      BT_VALIST_ARG)
400 DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
401                      BT_BOOL, BT_LONG, BT_LONG, BT_LONG,
402                      BT_PTR_LONG, BT_PTR_LONG)
403
404 DEF_FUNCTION_TYPE_6 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG,
405                      BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
406                      BT_CONST_STRING, BT_VALIST_ARG)
407 DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
408                      BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_LONG,
409                      BT_PTR_LONG, BT_PTR_LONG)
410 DEF_FUNCTION_TYPE_6 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
411                      BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT,
412                      BT_LONG, BT_LONG, BT_LONG)
413
414 DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
415                      BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT,
416                      BT_LONG, BT_LONG, BT_LONG, BT_LONG)
417
418 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_VOID_VAR, BT_VOID)
419 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_INT_VAR, BT_INT)
420 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_PTR_VAR, BT_PTR)
421
422 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_VALIST_REF_VAR,
423                          BT_VOID, BT_VALIST_REF)
424 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_CONST_PTR_VAR,
425                          BT_VOID, BT_CONST_PTR)
426 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_INT_CONST_STRING_VAR,
427                          BT_INT, BT_CONST_STRING)
428
429 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_FILEPTR_CONST_STRING_VAR,
430                          BT_INT, BT_FILEPTR, BT_CONST_STRING)
431 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_STRING_CONST_STRING_VAR,
432                          BT_INT, BT_STRING, BT_CONST_STRING)
433 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
434                          BT_INT, BT_CONST_STRING, BT_CONST_STRING)
435 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_INT_CONST_STRING_VAR,
436                          BT_INT, BT_INT, BT_CONST_STRING)
437
438 DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_STRING_SIZE_CONST_STRING_VAR,
439                          BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING)
440 DEF_FUNCTION_TYPE_VAR_3 (BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR,
441                          BT_SSIZE, BT_STRING, BT_SIZE, BT_CONST_STRING)
442 DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR,
443                          BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING)
444
445 DEF_FUNCTION_TYPE_VAR_4 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR,
446                          BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING)
447
448 DEF_FUNCTION_TYPE_VAR_5 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR,
449                          BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
450                          BT_CONST_STRING)
451
452 DEF_POINTER_TYPE (BT_PTR_FN_VOID_VAR, BT_FN_VOID_VAR)
453 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE,
454                      BT_PTR, BT_PTR_FN_VOID_VAR, BT_PTR, BT_SIZE)