]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/internal-fn.def
Update libbid according to the latest Intel Decimal Floating-Point Math Library.
[thirdparty/gcc.git] / gcc / internal-fn.def
CommitLineData
25583c4f 1/* Internal functions.
a945c346 2 Copyright (C) 2011-2024 Free Software Foundation, Inc.
25583c4f
RS
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 3, 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 COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
19
20/* This file specifies a list of internal "functions". These functions
21 differ from built-in functions in that they have no linkage and cannot
22 be called directly by the user. They represent operations that are only
23 synthesised by GCC itself.
24
25 Internal functions are used instead of tree codes if the operation
26 and its operands are more naturally represented as a GIMPLE_CALL
27 than a GIMPLE_ASSIGN.
28
ab23f5d9 29 Each entry in this file has one of the forms:
25583c4f 30
b78475cf 31 DEF_INTERNAL_FN (NAME, FLAGS, FNSPEC)
ab23f5d9 32 DEF_INTERNAL_OPTAB_FN (NAME, FLAGS, OPTAB, TYPE)
16d24520
RS
33 DEF_INTERNAL_SIGNED_OPTAB_FN (NAME, FLAGS, SELECTOR, SIGNED_OPTAB,
34 UNSIGNED_OPTAB, TYPE)
686ee971 35 DEF_INTERNAL_FLT_FN (NAME, FLAGS, OPTAB, TYPE)
99fad213 36 DEF_INTERNAL_FLT_FLOATN_FN (NAME, FLAGS, OPTAB, TYPE)
4959a752 37 DEF_INTERNAL_INT_FN (NAME, FLAGS, OPTAB, TYPE)
103a3966 38 DEF_INTERNAL_INT_EXT_FN (NAME, FLAGS, OPTAB, TYPE)
05986af2
JZZ
39 DEF_INTERNAL_COND_FN (NAME, FLAGS, OPTAB, TYPE)
40 DEF_INTERNAL_SIGNED_COND_FN (NAME, FLAGS, OPTAB, TYPE)
99fad213
JJ
41 DEF_INTERNAL_WIDENING_OPTAB_FN (NAME, FLAGS, SELECTOR, SOPTAB, UOPTAB,
42 TYPE)
25583c4f 43
b78475cf
YG
44 where NAME is the name of the function, FLAGS is a set of
45 ECF_* flags and FNSPEC is a string describing functions fnspec.
05986af2 46
ab23f5d9
RS
47 DEF_INTERNAL_OPTAB_FN defines an internal function that maps to a
48 direct optab. The function should only be called with a given
49 set of types if the associated optab is available for the modes
50 of those types. OPTAB says what optab to use (without the trailing
51 "_optab") and TYPE categorizes the optab based on its inputs and
52 outputs. The possible types of optab are:
53
54 - mask_load: currently just maskload
55 - load_lanes: currently just vec_load_lanes
7e11fc7f 56 - mask_load_lanes: currently just vec_mask_load_lanes
59d789b3 57 - mask_len_load_lanes: currently just vec_mask_len_load_lanes
bd68b33f 58 - gather_load: used for {mask_,mask_len_,}gather_load
d496134a 59 - len_load: currently just len_load
bd68b33f 60 - mask_len_load: currently just mask_len_load
ab23f5d9
RS
61
62 - mask_store: currently just maskstore
63 - store_lanes: currently just vec_store_lanes
7e11fc7f 64 - mask_store_lanes: currently just vec_mask_store_lanes
59d789b3 65 - mask_len_store_lanes: currently just vec_mask_len_store_lanes
bd68b33f 66 - scatter_store: used for {mask_,mask_len_,}scatter_store
d496134a 67 - len_store: currently just len_store
bd68b33f 68 - mask_len_store: currently just mask_len_store
ab23f5d9 69
0972596e
RS
70 - unary: a normal unary optab, such as vec_reverse_<mode>
71 - binary: a normal binary optab, such as vec_interleave_lo_<mode>
c566cc9f 72 - ternary: a normal ternary optab, such as fma<mode>4
0972596e 73
00eab0c6
RS
74 - unary_convert: a single-input conversion optab, such as
75 lround<srcmode><dstmode>2.
76
b41d1f6e 77 - cond_binary: a conditional binary optab, such as cond_add<mode>
a32de58c 78 - cond_unary: a conditional unary optab, such as cond_neg<mode>
b41d1f6e 79 - cond_ternary: a conditional ternary optab, such as cond_fma_rev<mode>
0972596e 80
b781a135 81 - fold_left: for scalar = FN (scalar, vector), keyed off the vector mode
58c036c8 82 - check_ptrs: used for check_{raw,war}_ptrs
b781a135 83
6c96d1e4
JZZ
84 - cond_len_unary: a conditional unary optab, such as cond_len_neg<mode>
85 - cond_len_binary: a conditional binary optab, such as cond_len_add<mode>
05986af2
JZZ
86 - cond_len_ternary: a conditional ternary optab, such as
87 cond_len_fma_rev<mode>
6c96d1e4 88
16d24520
RS
89 DEF_INTERNAL_SIGNED_OPTAB_FN defines an internal function that
90 maps to one of two optabs, depending on the signedness of an input.
91 SIGNED_OPTAB and UNSIGNED_OPTAB are the optabs for signed and
92 unsigned inputs respectively, both without the trailing "_optab".
93 SELECTOR says which type in the tree_pair determines the signedness.
94
686ee971
RS
95 DEF_INTERNAL_FLT_FN is like DEF_INTERNAL_OPTAB_FN, but in addition,
96 the function implements the computational part of a built-in math
97 function BUILT_IN_<NAME>{F,,L}. Unlike some built-in functions,
98 these internal functions never set errno.
99
4959a752
RS
100 DEF_INTERNAL_INT_FN is like DEF_INTERNAL_OPTAB_FN, but in addition
101 says that the function extends the C-level BUILT_IN_<NAME>{,L,LL,IMAX}
102 group of functions to any integral mode (including vector modes).
103
103a3966
JJ
104 DEF_INTERNAL_INT_EXT_FN is like DEF_INTERNAL_INT_FN, except that it
105 has expand_##NAME defined in internal-fn.cc to override the
106 DEF_INTERNAL_INT_FN expansion behavior.
107
2f482a07
AV
108 DEF_INTERNAL_WIDENING_OPTAB_FN is a wrapper that defines five internal
109 functions with DEF_INTERNAL_SIGNED_OPTAB_FN:
110 - one that describes a widening operation with the same number of elements
111 in the output and input vectors,
112 - two that describe a pair of high-low widening operations where the output
113 vectors each have half the number of elements of the input vectors,
114 corresponding to the result of the widening operation on the top half and
115 bottom half, these have the suffixes _HI and _LO,
116 - and two that describe a pair of even-odd widening operations where the
117 output vectors each have half the number of elements of the input vectors,
118 corresponding to the result of the widening operation on the even and odd
119 elements, these have the suffixes _EVEN and _ODD.
120 These five internal functions will require two optabs each, a SIGNED_OPTAB
121 and an UNSIGNED_OTPAB.
122
05986af2
JZZ
123 DEF_INTERNAL_COND_FN is a wrapper that defines 2 internal functions with
124 DEF_INTERNAL_OPTAB_FN:
125 - One is COND_* operations that are predicated by mask only. Such operations
126 make sense for both vectors and scalars.
127 - The other is COND_LEN_* operations that are predicated by mask and len
128 both. Such operations only make sense for vectors.
129
130 DEF_INTERNAL_SIGNED_COND_FN is like DEF_INTERNAL_COND_FN but defines intenal
131 functions with DEF_INTERNAL_SIGNED_OPTAB_FN.
132
b78475cf 133 Each entry must have a corresponding expander of the form:
25583c4f 134
538dd0b7 135 void expand_NAME (gimple_call stmt)
25583c4f 136
ab23f5d9
RS
137 where STMT is the statement that performs the call. These are generated
138 automatically for optab functions and call out to a function or macro
139 called expand_<TYPE>_optab_fn. */
140
141#ifndef DEF_INTERNAL_FN
142#define DEF_INTERNAL_FN(CODE, FLAGS, FNSPEC)
143#endif
144
145#ifndef DEF_INTERNAL_OPTAB_FN
146#define DEF_INTERNAL_OPTAB_FN(NAME, FLAGS, OPTAB, TYPE) \
147 DEF_INTERNAL_FN (NAME, FLAGS | ECF_LEAF, NULL)
148#endif
149
16d24520
RS
150#ifndef DEF_INTERNAL_SIGNED_OPTAB_FN
151#define DEF_INTERNAL_SIGNED_OPTAB_FN(NAME, FLAGS, SELECTOR, SIGNED_OPTAB, \
152 UNSIGNED_OPTAB, TYPE) \
153 DEF_INTERNAL_FN (NAME, FLAGS | ECF_LEAF, NULL)
154#endif
155
686ee971
RS
156#ifndef DEF_INTERNAL_FLT_FN
157#define DEF_INTERNAL_FLT_FN(NAME, FLAGS, OPTAB, TYPE) \
158 DEF_INTERNAL_OPTAB_FN (NAME, FLAGS, OPTAB, TYPE)
159#endif
160
ee5fd23a
MM
161#ifndef DEF_INTERNAL_FLT_FLOATN_FN
162#define DEF_INTERNAL_FLT_FLOATN_FN(NAME, FLAGS, OPTAB, TYPE) \
163 DEF_INTERNAL_FLT_FN (NAME, FLAGS, OPTAB, TYPE)
164#endif
165
4959a752
RS
166#ifndef DEF_INTERNAL_INT_FN
167#define DEF_INTERNAL_INT_FN(NAME, FLAGS, OPTAB, TYPE) \
168 DEF_INTERNAL_OPTAB_FN (NAME, FLAGS, OPTAB, TYPE)
169#endif
170
103a3966
JJ
171#ifndef DEF_INTERNAL_INT_EXT_FN
172#define DEF_INTERNAL_INT_EXT_FN(NAME, FLAGS, OPTAB, TYPE) \
173 DEF_INTERNAL_INT_FN (NAME, FLAGS, OPTAB, TYPE)
174#endif
175
2f482a07
AV
176#ifndef DEF_INTERNAL_WIDENING_OPTAB_FN
177#define DEF_INTERNAL_WIDENING_OPTAB_FN(NAME, FLAGS, SELECTOR, SOPTAB, UOPTAB, TYPE) \
178 DEF_INTERNAL_SIGNED_OPTAB_FN (NAME, FLAGS, SELECTOR, SOPTAB, UOPTAB, TYPE) \
179 DEF_INTERNAL_SIGNED_OPTAB_FN (NAME ## _LO, FLAGS, SELECTOR, SOPTAB##_lo, UOPTAB##_lo, TYPE) \
180 DEF_INTERNAL_SIGNED_OPTAB_FN (NAME ## _HI, FLAGS, SELECTOR, SOPTAB##_hi, UOPTAB##_hi, TYPE) \
181 DEF_INTERNAL_SIGNED_OPTAB_FN (NAME ## _EVEN, FLAGS, SELECTOR, SOPTAB##_even, UOPTAB##_even, TYPE) \
182 DEF_INTERNAL_SIGNED_OPTAB_FN (NAME ## _ODD, FLAGS, SELECTOR, SOPTAB##_odd, UOPTAB##_odd, TYPE)
183#endif
184
05986af2
JZZ
185#ifndef DEF_INTERNAL_COND_FN
186#define DEF_INTERNAL_COND_FN(NAME, FLAGS, OPTAB, TYPE) \
187 DEF_INTERNAL_OPTAB_FN (COND_##NAME, FLAGS, cond_##OPTAB, cond_##TYPE) \
188 DEF_INTERNAL_OPTAB_FN (COND_LEN_##NAME, FLAGS, cond_len_##OPTAB, \
189 cond_len_##TYPE)
190#endif
191
192#ifndef DEF_INTERNAL_SIGNED_COND_FN
193#define DEF_INTERNAL_SIGNED_COND_FN(NAME, FLAGS, SELECTOR, SIGNED_OPTAB, \
194 UNSIGNED_OPTAB, TYPE) \
195 DEF_INTERNAL_SIGNED_OPTAB_FN (COND_##NAME, FLAGS, SELECTOR, \
196 cond_##SIGNED_OPTAB, cond_##UNSIGNED_OPTAB, \
197 cond_##TYPE) \
198 DEF_INTERNAL_SIGNED_OPTAB_FN (COND_LEN_##NAME, FLAGS, SELECTOR, \
199 cond_len_##SIGNED_OPTAB, \
200 cond_len_##UNSIGNED_OPTAB, cond_len_##TYPE)
201#endif
202
ab23f5d9
RS
203DEF_INTERNAL_OPTAB_FN (MASK_LOAD, ECF_PURE, maskload, mask_load)
204DEF_INTERNAL_OPTAB_FN (LOAD_LANES, ECF_CONST, vec_load_lanes, load_lanes)
7e11fc7f
RS
205DEF_INTERNAL_OPTAB_FN (MASK_LOAD_LANES, ECF_PURE,
206 vec_mask_load_lanes, mask_load_lanes)
59d789b3
JZ
207DEF_INTERNAL_OPTAB_FN (MASK_LEN_LOAD_LANES, ECF_PURE,
208 vec_mask_len_load_lanes, mask_load_lanes)
ab23f5d9 209
bfaa08b7
RS
210DEF_INTERNAL_OPTAB_FN (GATHER_LOAD, ECF_PURE, gather_load, gather_load)
211DEF_INTERNAL_OPTAB_FN (MASK_GATHER_LOAD, ECF_PURE,
212 mask_gather_load, gather_load)
bd68b33f
JZ
213DEF_INTERNAL_OPTAB_FN (MASK_LEN_GATHER_LOAD, ECF_PURE,
214 mask_len_gather_load, gather_load)
bfaa08b7 215
d496134a 216DEF_INTERNAL_OPTAB_FN (LEN_LOAD, ECF_PURE, len_load, len_load)
bd68b33f 217DEF_INTERNAL_OPTAB_FN (MASK_LEN_LOAD, ECF_PURE, mask_len_load, mask_len_load)
d496134a 218
f307441a
RS
219DEF_INTERNAL_OPTAB_FN (SCATTER_STORE, 0, scatter_store, scatter_store)
220DEF_INTERNAL_OPTAB_FN (MASK_SCATTER_STORE, 0,
221 mask_scatter_store, scatter_store)
bd68b33f
JZ
222DEF_INTERNAL_OPTAB_FN (MASK_LEN_SCATTER_STORE, 0,
223 mask_len_scatter_store, scatter_store)
f307441a 224
ab23f5d9
RS
225DEF_INTERNAL_OPTAB_FN (MASK_STORE, 0, maskstore, mask_store)
226DEF_INTERNAL_OPTAB_FN (STORE_LANES, ECF_CONST, vec_store_lanes, store_lanes)
7e11fc7f
RS
227DEF_INTERNAL_OPTAB_FN (MASK_STORE_LANES, 0,
228 vec_mask_store_lanes, mask_store_lanes)
59d789b3
JZ
229DEF_INTERNAL_OPTAB_FN (MASK_LEN_STORE_LANES, 0,
230 vec_mask_len_store_lanes, mask_store_lanes)
272c6793 231
b0894a12
RB
232DEF_INTERNAL_OPTAB_FN (VCOND, ECF_CONST | ECF_NOTHROW, vcond, vec_cond)
233DEF_INTERNAL_OPTAB_FN (VCONDU, ECF_CONST | ECF_NOTHROW, vcondu, vec_cond)
234DEF_INTERNAL_OPTAB_FN (VCONDEQ, ECF_CONST | ECF_NOTHROW, vcondeq, vec_cond)
235DEF_INTERNAL_OPTAB_FN (VCOND_MASK, ECF_CONST | ECF_NOTHROW,
236 vcond_mask, vec_cond_mask)
0c42741a
RD
237DEF_INTERNAL_OPTAB_FN (VCOND_MASK_LEN, ECF_CONST | ECF_NOTHROW,
238 vcond_mask_len, cond_len_unary)
b0894a12
RB
239
240DEF_INTERNAL_OPTAB_FN (VEC_SET, ECF_CONST | ECF_NOTHROW, vec_set, vec_set)
241DEF_INTERNAL_OPTAB_FN (VEC_EXTRACT, ECF_CONST | ECF_NOTHROW,
242 vec_extract, vec_extract)
683e55fa 243
d496134a 244DEF_INTERNAL_OPTAB_FN (LEN_STORE, 0, len_store, len_store)
bd68b33f 245DEF_INTERNAL_OPTAB_FN (MASK_LEN_STORE, 0, mask_len_store, mask_len_store)
d496134a 246
7cfb4d93 247DEF_INTERNAL_OPTAB_FN (WHILE_ULT, ECF_CONST | ECF_NOTHROW, while_ult, while)
47203d89 248DEF_INTERNAL_OPTAB_FN (SELECT_VL, ECF_CONST | ECF_NOTHROW, select_vl, binary)
58c036c8
RS
249DEF_INTERNAL_OPTAB_FN (CHECK_RAW_PTRS, ECF_CONST | ECF_NOTHROW,
250 check_raw_ptrs, check_ptrs)
251DEF_INTERNAL_OPTAB_FN (CHECK_WAR_PTRS, ECF_CONST | ECF_NOTHROW,
252 check_war_ptrs, check_ptrs)
7cfb4d93 253
f1739b48
RS
254DEF_INTERNAL_OPTAB_FN (VEC_SHL_INSERT, ECF_CONST | ECF_NOTHROW,
255 vec_shl_insert, binary)
256
c0c2f013
YW
257DEF_INTERNAL_OPTAB_FN (DIV_POW2, ECF_CONST | ECF_NOTHROW, sdiv_pow2, binary)
258
c566cc9f
RS
259DEF_INTERNAL_OPTAB_FN (FMS, ECF_CONST, fms, ternary)
260DEF_INTERNAL_OPTAB_FN (FNMA, ECF_CONST, fnma, ternary)
261DEF_INTERNAL_OPTAB_FN (FNMS, ECF_CONST, fnms, ternary)
262
710b8dec
OA
263DEF_INTERNAL_SIGNED_OPTAB_FN (ABD, ECF_CONST | ECF_NOTHROW, first,
264 sabd, uabd, binary)
265
0267732b
RS
266DEF_INTERNAL_SIGNED_OPTAB_FN (AVG_FLOOR, ECF_CONST | ECF_NOTHROW, first,
267 savg_floor, uavg_floor, binary)
268DEF_INTERNAL_SIGNED_OPTAB_FN (AVG_CEIL, ECF_CONST | ECF_NOTHROW, first,
269 savg_ceil, uavg_ceil, binary)
270
a1d27560
KL
271DEF_INTERNAL_SIGNED_OPTAB_FN (MULH, ECF_CONST | ECF_NOTHROW, first,
272 smul_highpart, umul_highpart, binary)
58cc9876
YW
273DEF_INTERNAL_SIGNED_OPTAB_FN (MULHS, ECF_CONST | ECF_NOTHROW, first,
274 smulhs, umulhs, binary)
275DEF_INTERNAL_SIGNED_OPTAB_FN (MULHRS, ECF_CONST | ECF_NOTHROW, first,
276 smulhrs, umulhrs, binary)
277
05986af2
JZZ
278DEF_INTERNAL_COND_FN (ADD, ECF_CONST, add, binary)
279DEF_INTERNAL_COND_FN (SUB, ECF_CONST, sub, binary)
280DEF_INTERNAL_COND_FN (MUL, ECF_CONST, smul, binary)
281DEF_INTERNAL_SIGNED_COND_FN (DIV, ECF_CONST, first, sdiv, udiv, binary)
282DEF_INTERNAL_SIGNED_COND_FN (MOD, ECF_CONST, first, smod, umod, binary)
283DEF_INTERNAL_COND_FN (RDIV, ECF_CONST, sdiv, binary)
284DEF_INTERNAL_SIGNED_COND_FN (MIN, ECF_CONST, first, smin, umin, binary)
285DEF_INTERNAL_SIGNED_COND_FN (MAX, ECF_CONST, first, smax, umax, binary)
f30ecd80 286DEF_INTERNAL_COND_FN (COPYSIGN, ECF_CONST, copysign, binary)
05986af2
JZZ
287DEF_INTERNAL_COND_FN (FMIN, ECF_CONST, fmin, binary)
288DEF_INTERNAL_COND_FN (FMAX, ECF_CONST, fmax, binary)
289DEF_INTERNAL_COND_FN (AND, ECF_CONST | ECF_NOTHROW, and, binary)
290DEF_INTERNAL_COND_FN (IOR, ECF_CONST | ECF_NOTHROW, ior, binary)
291DEF_INTERNAL_COND_FN (XOR, ECF_CONST | ECF_NOTHROW, xor, binary)
292DEF_INTERNAL_COND_FN (SHL, ECF_CONST | ECF_NOTHROW, ashl, binary)
293DEF_INTERNAL_SIGNED_COND_FN (SHR, ECF_CONST | ECF_NOTHROW, first, ashr, lshr,
294 binary)
295
296DEF_INTERNAL_COND_FN (FMA, ECF_CONST, fma, ternary)
297DEF_INTERNAL_COND_FN (FMS, ECF_CONST, fms, ternary)
298DEF_INTERNAL_COND_FN (FNMA, ECF_CONST, fnma, ternary)
299DEF_INTERNAL_COND_FN (FNMS, ECF_CONST, fnms, ternary)
300
301DEF_INTERNAL_COND_FN (NEG, ECF_CONST, neg, unary)
a32de58c 302DEF_INTERNAL_COND_FN (NOT, ECF_CONST, one_cmpl, unary)
6c96d1e4 303
ee62a5a6
RS
304DEF_INTERNAL_OPTAB_FN (RSQRT, ECF_CONST, rsqrt, unary)
305
16d24520
RS
306DEF_INTERNAL_OPTAB_FN (REDUC_PLUS, ECF_CONST | ECF_NOTHROW,
307 reduc_plus_scal, unary)
308DEF_INTERNAL_SIGNED_OPTAB_FN (REDUC_MAX, ECF_CONST | ECF_NOTHROW, first,
309 reduc_smax_scal, reduc_umax_scal, unary)
310DEF_INTERNAL_SIGNED_OPTAB_FN (REDUC_MIN, ECF_CONST | ECF_NOTHROW, first,
311 reduc_smin_scal, reduc_umin_scal, unary)
e32b9eb3
RS
312DEF_INTERNAL_OPTAB_FN (REDUC_FMAX, ECF_CONST | ECF_NOTHROW,
313 reduc_fmax_scal, unary)
314DEF_INTERNAL_OPTAB_FN (REDUC_FMIN, ECF_CONST | ECF_NOTHROW,
315 reduc_fmin_scal, unary)
898f07b0
RS
316DEF_INTERNAL_OPTAB_FN (REDUC_AND, ECF_CONST | ECF_NOTHROW,
317 reduc_and_scal, unary)
318DEF_INTERNAL_OPTAB_FN (REDUC_IOR, ECF_CONST | ECF_NOTHROW,
319 reduc_ior_scal, unary)
320DEF_INTERNAL_OPTAB_FN (REDUC_XOR, ECF_CONST | ECF_NOTHROW,
321 reduc_xor_scal, unary)
16d24520 322
bfe1bb57
RS
323/* Extract the last active element from a vector. */
324DEF_INTERNAL_OPTAB_FN (EXTRACT_LAST, ECF_CONST | ECF_NOTHROW,
9d4ac06e 325 extract_last, fold_left)
bfe1bb57 326
bb6c2b68
RS
327/* Same, but return the first argument if no elements are active. */
328DEF_INTERNAL_OPTAB_FN (FOLD_EXTRACT_LAST, ECF_CONST | ECF_NOTHROW,
329 fold_extract_last, fold_extract)
330
f4658e02
JZ
331DEF_INTERNAL_OPTAB_FN (LEN_FOLD_EXTRACT_LAST, ECF_CONST | ECF_NOTHROW,
332 len_fold_extract_last, fold_len_extract)
333
b781a135
RS
334DEF_INTERNAL_OPTAB_FN (FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW,
335 fold_left_plus, fold_left)
bb6c2b68 336
bce29d65
AM
337DEF_INTERNAL_OPTAB_FN (MASK_FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW,
338 mask_fold_left_plus, mask_fold_left)
339
ba49332b
JZZ
340DEF_INTERNAL_OPTAB_FN (MASK_LEN_FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW,
341 mask_len_fold_left_plus, mask_len_fold_left)
342
686ee971
RS
343/* Unary math functions. */
344DEF_INTERNAL_FLT_FN (ACOS, ECF_CONST, acos, unary)
a81037ce 345DEF_INTERNAL_FLT_FN (ACOSH, ECF_CONST, acosh, unary)
686ee971 346DEF_INTERNAL_FLT_FN (ASIN, ECF_CONST, asin, unary)
a81037ce 347DEF_INTERNAL_FLT_FN (ASINH, ECF_CONST, asinh, unary)
686ee971 348DEF_INTERNAL_FLT_FN (ATAN, ECF_CONST, atan, unary)
a81037ce 349DEF_INTERNAL_FLT_FN (ATANH, ECF_CONST, atanh, unary)
686ee971 350DEF_INTERNAL_FLT_FN (COS, ECF_CONST, cos, unary)
247c45b2 351DEF_INTERNAL_FLT_FN (COSH, ECF_CONST, cosh, unary)
686ee971
RS
352DEF_INTERNAL_FLT_FN (EXP, ECF_CONST, exp, unary)
353DEF_INTERNAL_FLT_FN (EXP10, ECF_CONST, exp10, unary)
354DEF_INTERNAL_FLT_FN (EXP2, ECF_CONST, exp2, unary)
355DEF_INTERNAL_FLT_FN (EXPM1, ECF_CONST, expm1, unary)
356DEF_INTERNAL_FLT_FN (LOG, ECF_CONST, log, unary)
357DEF_INTERNAL_FLT_FN (LOG10, ECF_CONST, log10, unary)
358DEF_INTERNAL_FLT_FN (LOG1P, ECF_CONST, log1p, unary)
359DEF_INTERNAL_FLT_FN (LOG2, ECF_CONST, log2, unary)
360DEF_INTERNAL_FLT_FN (LOGB, ECF_CONST, logb, unary)
a52cf5cf 361DEF_INTERNAL_FLT_FN (SIGNBIT, ECF_CONST, signbit, unary)
686ee971
RS
362DEF_INTERNAL_FLT_FN (SIGNIFICAND, ECF_CONST, significand, unary)
363DEF_INTERNAL_FLT_FN (SIN, ECF_CONST, sin, unary)
247c45b2 364DEF_INTERNAL_FLT_FN (SINH, ECF_CONST, sinh, unary)
ee5fd23a 365DEF_INTERNAL_FLT_FLOATN_FN (SQRT, ECF_CONST, sqrt, unary)
686ee971 366DEF_INTERNAL_FLT_FN (TAN, ECF_CONST, tan, unary)
247c45b2 367DEF_INTERNAL_FLT_FN (TANH, ECF_CONST, tanh, unary)
686ee971 368
00eab0c6
RS
369/* Floating-point to integer conversions.
370
371 ??? Here we preserve the I/L/LL prefix convention from the
372 corresponding built-in functions, rather than make the internal
373 functions polymorphic in both the argument and the return types.
374 Perhaps an alternative would be to pass a zero of the required
375 return type as a second parameter. */
376DEF_INTERNAL_FLT_FN (ICEIL, ECF_CONST, lceil, unary_convert)
377DEF_INTERNAL_FLT_FN (IFLOOR, ECF_CONST, lfloor, unary_convert)
378DEF_INTERNAL_FLT_FN (IRINT, ECF_CONST, lrint, unary_convert)
379DEF_INTERNAL_FLT_FN (IROUND, ECF_CONST, lround, unary_convert)
380DEF_INTERNAL_FLT_FN (LCEIL, ECF_CONST, lceil, unary_convert)
381DEF_INTERNAL_FLT_FN (LFLOOR, ECF_CONST, lfloor, unary_convert)
907603d4
PL
382DEF_INTERNAL_FLT_FLOATN_FN (LRINT, ECF_CONST, lrint, unary_convert)
383DEF_INTERNAL_FLT_FLOATN_FN (LROUND, ECF_CONST, lround, unary_convert)
00eab0c6
RS
384DEF_INTERNAL_FLT_FN (LLCEIL, ECF_CONST, lceil, unary_convert)
385DEF_INTERNAL_FLT_FN (LLFLOOR, ECF_CONST, lfloor, unary_convert)
907603d4
PL
386DEF_INTERNAL_FLT_FLOATN_FN (LLRINT, ECF_CONST, lrint, unary_convert)
387DEF_INTERNAL_FLT_FLOATN_FN (LLROUND, ECF_CONST, lround, unary_convert)
00eab0c6 388
686ee971 389/* FP rounding. */
c6cfa2bf
MM
390DEF_INTERNAL_FLT_FLOATN_FN (CEIL, ECF_CONST, ceil, unary)
391DEF_INTERNAL_FLT_FLOATN_FN (FLOOR, ECF_CONST, floor, unary)
392DEF_INTERNAL_FLT_FLOATN_FN (NEARBYINT, ECF_CONST, nearbyint, unary)
393DEF_INTERNAL_FLT_FLOATN_FN (RINT, ECF_CONST, rint, unary)
394DEF_INTERNAL_FLT_FLOATN_FN (ROUND, ECF_CONST, round, unary)
d3b92f35 395DEF_INTERNAL_FLT_FLOATN_FN (ROUNDEVEN, ECF_CONST, roundeven, unary)
c6cfa2bf 396DEF_INTERNAL_FLT_FLOATN_FN (TRUNC, ECF_CONST, btrunc, unary)
686ee971
RS
397
398/* Binary math functions. */
399DEF_INTERNAL_FLT_FN (ATAN2, ECF_CONST, atan2, binary)
ee5fd23a 400DEF_INTERNAL_FLT_FLOATN_FN (COPYSIGN, ECF_CONST, copysign, binary)
686ee971 401DEF_INTERNAL_FLT_FN (FMOD, ECF_CONST, fmod, binary)
4dd9b6c6 402DEF_INTERNAL_FLT_FN (HYPOT, ECF_CONST, hypot, binary)
686ee971
RS
403DEF_INTERNAL_FLT_FN (POW, ECF_CONST, pow, binary)
404DEF_INTERNAL_FLT_FN (REMAINDER, ECF_CONST, remainder, binary)
405DEF_INTERNAL_FLT_FN (SCALB, ECF_CONST, scalb, binary)
ee5fd23a
MM
406DEF_INTERNAL_FLT_FLOATN_FN (FMIN, ECF_CONST, fmin, binary)
407DEF_INTERNAL_FLT_FLOATN_FN (FMAX, ECF_CONST, fmax, binary)
336a06a1 408DEF_INTERNAL_OPTAB_FN (XORSIGN, ECF_CONST, xorsign, binary)
3ed472af
TC
409DEF_INTERNAL_OPTAB_FN (COMPLEX_ADD_ROT90, ECF_CONST, cadd90, binary)
410DEF_INTERNAL_OPTAB_FN (COMPLEX_ADD_ROT270, ECF_CONST, cadd270, binary)
e09173d8
TC
411DEF_INTERNAL_OPTAB_FN (COMPLEX_MUL, ECF_CONST, cmul, binary)
412DEF_INTERNAL_OPTAB_FN (COMPLEX_MUL_CONJ, ECF_CONST, cmul_conj, binary)
7a6c31f0 413DEF_INTERNAL_OPTAB_FN (VEC_ADDSUB, ECF_CONST, vec_addsub, binary)
2f482a07
AV
414DEF_INTERNAL_WIDENING_OPTAB_FN (VEC_WIDEN_PLUS,
415 ECF_CONST | ECF_NOTHROW,
416 first,
417 vec_widen_sadd, vec_widen_uadd,
418 binary)
419DEF_INTERNAL_WIDENING_OPTAB_FN (VEC_WIDEN_MINUS,
420 ECF_CONST | ECF_NOTHROW,
421 first,
422 vec_widen_ssub, vec_widen_usub,
423 binary)
aec90c8b
OA
424DEF_INTERNAL_WIDENING_OPTAB_FN (VEC_WIDEN_ABD,
425 ECF_CONST | ECF_NOTHROW,
426 first,
427 vec_widen_sabd, vec_widen_uabd,
428 binary)
7d810646
RB
429DEF_INTERNAL_OPTAB_FN (VEC_FMADDSUB, ECF_CONST, vec_fmaddsub, ternary)
430DEF_INTERNAL_OPTAB_FN (VEC_FMSUBADD, ECF_CONST, vec_fmsubadd, ternary)
686ee971
RS
431
432/* FP scales. */
433DEF_INTERNAL_FLT_FN (LDEXP, ECF_CONST, ldexp, binary)
434
c566cc9f 435/* Ternary math functions. */
b41d1f6e 436DEF_INTERNAL_FLT_FLOATN_FN (FMA, ECF_CONST, fma, ternary)
31fac318
TC
437DEF_INTERNAL_OPTAB_FN (COMPLEX_FMA, ECF_CONST, cmla, ternary)
438DEF_INTERNAL_OPTAB_FN (COMPLEX_FMA_CONJ, ECF_CONST, cmla_conj, ternary)
478e571a
TC
439DEF_INTERNAL_OPTAB_FN (COMPLEX_FMS, ECF_CONST, cmls, ternary)
440DEF_INTERNAL_OPTAB_FN (COMPLEX_FMS_CONJ, ECF_CONST, cmls_conj, ternary)
c566cc9f 441
4959a752 442/* Unary integer ops. */
c3c44c01
JJ
443DEF_INTERNAL_INT_EXT_FN (CLRSB, ECF_CONST | ECF_NOTHROW, clrsb, unary)
444DEF_INTERNAL_INT_EXT_FN (CLZ, ECF_CONST | ECF_NOTHROW, clz, unary)
445DEF_INTERNAL_INT_EXT_FN (CTZ, ECF_CONST | ECF_NOTHROW, ctz, unary)
446DEF_INTERNAL_INT_EXT_FN (FFS, ECF_CONST | ECF_NOTHROW, ffs, unary)
447DEF_INTERNAL_INT_EXT_FN (PARITY, ECF_CONST | ECF_NOTHROW, parity, unary)
103a3966 448DEF_INTERNAL_INT_EXT_FN (POPCOUNT, ECF_CONST | ECF_NOTHROW, popcount, unary)
4959a752 449
d6621a2f 450DEF_INTERNAL_FN (GOMP_TARGET_REV, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
6c7509bc 451DEF_INTERNAL_FN (GOMP_USE_SIMT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
0c6b03b5 452DEF_INTERNAL_FN (GOMP_SIMT_ENTER, ECF_LEAF | ECF_NOTHROW, NULL)
9d2fe6d4
RS
453DEF_INTERNAL_FN (GOMP_SIMT_ENTER_ALLOC, ECF_LEAF | ECF_NOTHROW, NULL)
454DEF_INTERNAL_FN (GOMP_SIMT_EXIT, ECF_LEAF | ECF_NOTHROW, NULL)
455DEF_INTERNAL_FN (GOMP_SIMT_LANE, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
9669b00b 456DEF_INTERNAL_FN (GOMP_SIMT_VF, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
9d2fe6d4
RS
457DEF_INTERNAL_FN (GOMP_SIMT_LAST_LANE, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
458DEF_INTERNAL_FN (GOMP_SIMT_ORDERED_PRED, ECF_LEAF | ECF_NOTHROW, NULL)
459DEF_INTERNAL_FN (GOMP_SIMT_VOTE_ANY, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
460DEF_INTERNAL_FN (GOMP_SIMT_XCHG_BFLY, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
461DEF_INTERNAL_FN (GOMP_SIMT_XCHG_IDX, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
b78475cf
YG
462DEF_INTERNAL_FN (GOMP_SIMD_LANE, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
463DEF_INTERNAL_FN (GOMP_SIMD_VF, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
464DEF_INTERNAL_FN (GOMP_SIMD_LAST_LANE, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
d9a6bd32
JJ
465DEF_INTERNAL_FN (GOMP_SIMD_ORDERED_START, ECF_LEAF | ECF_NOTHROW, NULL)
466DEF_INTERNAL_FN (GOMP_SIMD_ORDERED_END, ECF_LEAF | ECF_NOTHROW, NULL)
b78475cf 467DEF_INTERNAL_FN (LOOP_VECTORIZED, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
542e7230 468DEF_INTERNAL_FN (LOOP_DIST_ALIAS, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
b78475cf 469DEF_INTERNAL_FN (ANNOTATE, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
762cca00 470DEF_INTERNAL_FN (UBSAN_NULL, ECF_LEAF | ECF_NOTHROW, ". R . ")
b78475cf 471DEF_INTERNAL_FN (UBSAN_BOUNDS, ECF_LEAF | ECF_NOTHROW, NULL)
762cca00 472DEF_INTERNAL_FN (UBSAN_VPTR, ECF_LEAF | ECF_NOTHROW, ". R R . . ")
b78475cf
YG
473DEF_INTERNAL_FN (UBSAN_CHECK_ADD, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
474DEF_INTERNAL_FN (UBSAN_CHECK_SUB, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
475DEF_INTERNAL_FN (UBSAN_CHECK_MUL, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
762cca00 476DEF_INTERNAL_FN (UBSAN_PTR, ECF_LEAF | ECF_NOTHROW, ". R . ")
0e82f089 477DEF_INTERNAL_FN (UBSAN_OBJECT_SIZE, ECF_LEAF | ECF_NOTHROW, NULL)
b78475cf
YG
478DEF_INTERNAL_FN (ABNORMAL_DISPATCHER, ECF_NORETURN, NULL)
479DEF_INTERNAL_FN (BUILTIN_EXPECT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
93a73251
MM
480DEF_INTERNAL_FN (HWASAN_ALLOCA_UNPOISON, ECF_LEAF | ECF_NOTHROW, ". R ")
481DEF_INTERNAL_FN (HWASAN_CHOOSE_TAG, ECF_LEAF | ECF_NOTHROW, ". ")
482DEF_INTERNAL_FN (HWASAN_CHECK, ECF_TM_PURE | ECF_LEAF | ECF_NOTHROW,
483 ". . R . . ")
484DEF_INTERNAL_FN (HWASAN_MARK, ECF_LEAF | ECF_NOTHROW, NULL)
485DEF_INTERNAL_FN (HWASAN_SET_TAG,
486 ECF_TM_PURE | ECF_PURE | ECF_LEAF | ECF_NOTHROW, ". R R ")
762cca00
JH
487DEF_INTERNAL_FN (ASAN_CHECK, ECF_TM_PURE | ECF_LEAF | ECF_NOTHROW,
488 ". . R . . ")
d80956bb 489DEF_INTERNAL_FN (ASAN_MARK, ECF_LEAF | ECF_NOTHROW, NULL)
c7775327 490DEF_INTERNAL_FN (ASAN_POISON, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL)
f6b9f2ff 491DEF_INTERNAL_FN (ASAN_POISON_USE, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL)
1304953e
JJ
492DEF_INTERNAL_FN (ADD_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
493DEF_INTERNAL_FN (SUB_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
494DEF_INTERNAL_FN (MUL_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
43a3252c
JJ
495DEF_INTERNAL_FN (UADDC, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
496DEF_INTERNAL_FN (USUBC, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
fca4adf2 497DEF_INTERNAL_FN (TSAN_FUNC_EXIT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
b8b2ab06 498DEF_INTERNAL_FN (VA_ARG, ECF_NOTHROW | ECF_LEAF, NULL)
d8fcab68 499DEF_INTERNAL_FN (VEC_CONVERT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
6f966f06 500DEF_INTERNAL_FN (RAWMEMCHR, ECF_PURE | ECF_LEAF | ECF_NOTHROW, NULL)
8ab78162
NS
501
502/* An unduplicable, uncombinable function. Generally used to preserve
503 a CFG property in the face of jump threading, tail merging or
504 other such optimizations. The first argument distinguishes
505 between uses. See internal-fn.h for usage. */
506DEF_INTERNAL_FN (UNIQUE, ECF_NOTHROW, NULL)
1ee62b92 507DEF_INTERNAL_FN (PHI, 0, NULL)
8ab78162 508
a25e0b5e 509/* A function to represent an artifical initialization to an uninitialized
510 automatic variable. */
511DEF_INTERNAL_FN (DEFERRED_INIT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
512
9bd46bc9
NS
513/* DIM_SIZE and DIM_POS return the size of a particular compute
514 dimension and the executing thread's position within that
515 dimension. DIM_POS is pure (and not const) so that it isn't
516 thought to clobber memory and can be gcse'd within a single
517 parallel region, but not across FORK/JOIN boundaries. They take a
02889d23 518 single INTEGER_CST argument. This might be overly conservative. */
762cca00
JH
519DEF_INTERNAL_FN (GOACC_DIM_SIZE, ECF_CONST | ECF_NOTHROW | ECF_LEAF, NULL)
520DEF_INTERNAL_FN (GOACC_DIM_POS, ECF_PURE | ECF_NOTHROW | ECF_LEAF, NULL)
9bd46bc9
NS
521
522/* OpenACC looping abstraction. See internal-fn.h for usage. */
523DEF_INTERNAL_FN (GOACC_LOOP, ECF_PURE | ECF_NOTHROW, NULL)
e5014671
NS
524
525/* OpenACC reduction abstraction. See internal-fn.h for usage. */
526DEF_INTERNAL_FN (GOACC_REDUCTION, ECF_NOTHROW | ECF_LEAF, NULL)
46e343b8 527
02889d23
CLT
528/* Openacc tile abstraction. Describes the spans of the element loop.
529 GOACC_TILE (num-loops, loop-no, tile-arg, tile-mask, element-mask). */
530DEF_INTERNAL_FN (GOACC_TILE, ECF_NOTHROW | ECF_LEAF, NULL)
531
883cabde
RS
532/* Set errno to EDOM, if GCC knows how to do that directly for the
533 current target. */
534DEF_INTERNAL_FN (SET_EDOM, ECF_LEAF | ECF_NOTHROW, NULL)
535
cc195d46
JJ
536/* Atomic functions. These don't have ECF_NOTHROW because for
537 -fnon-call-exceptions they can throw, otherwise we set
538 gimple_call_nothrow_p on it. */
539DEF_INTERNAL_FN (ATOMIC_BIT_TEST_AND_SET, ECF_LEAF, NULL)
540DEF_INTERNAL_FN (ATOMIC_BIT_TEST_AND_COMPLEMENT, ECF_LEAF, NULL)
541DEF_INTERNAL_FN (ATOMIC_BIT_TEST_AND_RESET, ECF_LEAF, NULL)
542DEF_INTERNAL_FN (ATOMIC_COMPARE_EXCHANGE, ECF_LEAF, NULL)
6362627b
JJ
543DEF_INTERNAL_FN (ATOMIC_ADD_FETCH_CMP_0, ECF_LEAF, NULL)
544DEF_INTERNAL_FN (ATOMIC_SUB_FETCH_CMP_0, ECF_LEAF, NULL)
545DEF_INTERNAL_FN (ATOMIC_AND_FETCH_CMP_0, ECF_LEAF, NULL)
546DEF_INTERNAL_FN (ATOMIC_OR_FETCH_CMP_0, ECF_LEAF, NULL)
547DEF_INTERNAL_FN (ATOMIC_XOR_FETCH_CMP_0, ECF_LEAF, NULL)
adedd5c1 548
52eedfa0
JJ
549/* To implement [[fallthrough]]. If the TREE_NOTHROW or GF_CALL_NOTHROW flag
550 is set on the call (normally redundant with ECF_NOTHROW), it marks
551 [[fallthrough]] at the end of C++ loop body. */
81fea426
MP
552DEF_INTERNAL_FN (FALLTHROUGH, ECF_LEAF | ECF_NOTHROW, NULL)
553
e16f1cc7
JJ
554/* To implement __builtin_launder. */
555DEF_INTERNAL_FN (LAUNDER, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL)
556
e72531b9
PK
557/* Divmod function. */
558DEF_INTERNAL_FN (DIVMOD, ECF_CONST | ECF_LEAF, NULL)
559
49789fd0
IS
560/* For coroutines. */
561DEF_INTERNAL_FN (CO_ACTOR, ECF_NOTHROW | ECF_LEAF, NULL)
562DEF_INTERNAL_FN (CO_YIELD, ECF_NOTHROW, NULL)
563DEF_INTERNAL_FN (CO_SUSPN, ECF_NOTHROW, NULL)
564DEF_INTERNAL_FN (CO_FRAME, ECF_PURE | ECF_NOTHROW | ECF_LEAF, NULL)
565
87a5e0e8
RB
566/* A NOP function with arbitrary arguments and return value. */
567DEF_INTERNAL_FN (NOP, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
568
ef8176e0
RB
569/* Temporary vehicle for __builtin_shufflevector. */
570DEF_INTERNAL_FN (SHUFFLEVECTOR, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
571
463d9108
JJ
572/* <=> optimization. */
573DEF_INTERNAL_FN (SPACESHIP, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
574
08b51bad
JJ
575/* [[assume (cond)]]. */
576DEF_INTERNAL_FN (ASSUME, ECF_CONST | ECF_LEAF | ECF_NOTHROW
577 | ECF_LOOPING_CONST_OR_PURE, NULL)
578
3da77f21
AS
579/* For if-conversion of inbranch SIMD clones. */
580DEF_INTERNAL_FN (MASK_CALL, ECF_NOVOPS, NULL)
581
4f4fa250
JJ
582/* _BitInt support. */
583DEF_INTERNAL_FN (MULBITINT, ECF_LEAF | ECF_NOTHROW, ". O . R . R . ")
584DEF_INTERNAL_FN (DIVMODBITINT, ECF_LEAF, ". O . O . R . R . ")
585DEF_INTERNAL_FN (FLOATTOBITINT, ECF_LEAF | ECF_NOTHROW, ". O . . ")
586DEF_INTERNAL_FN (BITINTTOFLOAT, ECF_PURE | ECF_LEAF, ". R . ")
587
99fad213
JJ
588#undef DEF_INTERNAL_WIDENING_OPTAB_FN
589#undef DEF_INTERNAL_SIGNED_COND_FN
590#undef DEF_INTERNAL_COND_FN
103a3966 591#undef DEF_INTERNAL_INT_EXT_FN
4959a752 592#undef DEF_INTERNAL_INT_FN
686ee971 593#undef DEF_INTERNAL_FLT_FN
ee5fd23a 594#undef DEF_INTERNAL_FLT_FLOATN_FN
16d24520 595#undef DEF_INTERNAL_SIGNED_OPTAB_FN
ab23f5d9 596#undef DEF_INTERNAL_OPTAB_FN
46e343b8 597#undef DEF_INTERNAL_FN