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