Branch data Line data Source code
1 : : /* Internal functions.
2 : : Copyright (C) 2011-2024 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 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 : :
29 : : Each entry in this file has one of the forms:
30 : :
31 : : DEF_INTERNAL_FN (NAME, FLAGS, FNSPEC)
32 : : DEF_INTERNAL_OPTAB_FN (NAME, FLAGS, OPTAB, TYPE)
33 : : DEF_INTERNAL_SIGNED_OPTAB_FN (NAME, FLAGS, SELECTOR, SIGNED_OPTAB,
34 : : UNSIGNED_OPTAB, TYPE)
35 : : DEF_INTERNAL_FLT_FN (NAME, FLAGS, OPTAB, TYPE)
36 : : DEF_INTERNAL_FLT_FLOATN_FN (NAME, FLAGS, OPTAB, TYPE)
37 : : DEF_INTERNAL_INT_FN (NAME, FLAGS, OPTAB, TYPE)
38 : : DEF_INTERNAL_INT_EXT_FN (NAME, FLAGS, OPTAB, TYPE)
39 : : DEF_INTERNAL_COND_FN (NAME, FLAGS, OPTAB, TYPE)
40 : : DEF_INTERNAL_SIGNED_COND_FN (NAME, FLAGS, OPTAB, TYPE)
41 : : DEF_INTERNAL_WIDENING_OPTAB_FN (NAME, FLAGS, SELECTOR, SOPTAB, UOPTAB,
42 : : TYPE)
43 : :
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.
46 : :
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
56 : : - mask_load_lanes: currently just vec_mask_load_lanes
57 : : - mask_len_load_lanes: currently just vec_mask_len_load_lanes
58 : : - gather_load: used for {mask_,mask_len_,}gather_load
59 : : - len_load: currently just len_load
60 : : - mask_len_load: currently just mask_len_load
61 : :
62 : : - mask_store: currently just maskstore
63 : : - store_lanes: currently just vec_store_lanes
64 : : - mask_store_lanes: currently just vec_mask_store_lanes
65 : : - mask_len_store_lanes: currently just vec_mask_len_store_lanes
66 : : - scatter_store: used for {mask_,mask_len_,}scatter_store
67 : : - len_store: currently just len_store
68 : : - mask_len_store: currently just mask_len_store
69 : :
70 : : - unary: a normal unary optab, such as vec_reverse_<mode>
71 : : - binary: a normal binary optab, such as vec_interleave_lo_<mode>
72 : : - ternary: a normal ternary optab, such as fma<mode>4
73 : :
74 : : - unary_convert: a single-input conversion optab, such as
75 : : lround<srcmode><dstmode>2.
76 : :
77 : : - cond_binary: a conditional binary optab, such as cond_add<mode>
78 : : - cond_unary: a conditional unary optab, such as cond_neg<mode>
79 : : - cond_ternary: a conditional ternary optab, such as cond_fma_rev<mode>
80 : :
81 : : - fold_left: for scalar = FN (scalar, vector), keyed off the vector mode
82 : : - check_ptrs: used for check_{raw,war}_ptrs
83 : :
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>
86 : : - cond_len_ternary: a conditional ternary optab, such as
87 : : cond_len_fma_rev<mode>
88 : :
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 : :
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 : :
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 : :
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 : :
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 : :
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 : :
133 : : Each entry must have a corresponding expander of the form:
134 : :
135 : : void expand_NAME (gimple_call stmt)
136 : :
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 : :
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 : :
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 : :
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 : :
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 : :
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 : :
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 : :
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 : :
203 : 547 : DEF_INTERNAL_OPTAB_FN (MASK_LOAD, ECF_PURE, maskload, mask_load)
204 : 0 : DEF_INTERNAL_OPTAB_FN (LOAD_LANES, ECF_CONST, vec_load_lanes, load_lanes)
205 : 0 : DEF_INTERNAL_OPTAB_FN (MASK_LOAD_LANES, ECF_PURE,
206 : : vec_mask_load_lanes, mask_load_lanes)
207 : 0 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_LOAD_LANES, ECF_PURE,
208 : : vec_mask_len_load_lanes, mask_load_lanes)
209 : :
210 : 9948 : DEF_INTERNAL_OPTAB_FN (GATHER_LOAD, ECF_PURE, gather_load, gather_load)
211 : 10030 : DEF_INTERNAL_OPTAB_FN (MASK_GATHER_LOAD, ECF_PURE,
212 : : mask_gather_load, gather_load)
213 : 10030 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_GATHER_LOAD, ECF_PURE,
214 : : mask_len_gather_load, gather_load)
215 : :
216 : 0 : DEF_INTERNAL_OPTAB_FN (LEN_LOAD, ECF_PURE, len_load, len_load)
217 : 0 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_LOAD, ECF_PURE, mask_len_load, mask_len_load)
218 : :
219 : 16478 : DEF_INTERNAL_OPTAB_FN (SCATTER_STORE, 0, scatter_store, scatter_store)
220 : 16480 : DEF_INTERNAL_OPTAB_FN (MASK_SCATTER_STORE, 0,
221 : : mask_scatter_store, scatter_store)
222 : 16480 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_SCATTER_STORE, 0,
223 : : mask_len_scatter_store, scatter_store)
224 : :
225 : 1196 : DEF_INTERNAL_OPTAB_FN (MASK_STORE, 0, maskstore, mask_store)
226 : 0 : DEF_INTERNAL_OPTAB_FN (STORE_LANES, ECF_CONST, vec_store_lanes, store_lanes)
227 : 0 : DEF_INTERNAL_OPTAB_FN (MASK_STORE_LANES, 0,
228 : : vec_mask_store_lanes, mask_store_lanes)
229 : 0 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_STORE_LANES, 0,
230 : : vec_mask_len_store_lanes, mask_store_lanes)
231 : :
232 : 8017 : DEF_INTERNAL_OPTAB_FN (VCOND, ECF_CONST | ECF_NOTHROW, vcond, vec_cond)
233 : 654 : DEF_INTERNAL_OPTAB_FN (VCONDU, ECF_CONST | ECF_NOTHROW, vcondu, vec_cond)
234 : 74 : DEF_INTERNAL_OPTAB_FN (VCONDEQ, ECF_CONST | ECF_NOTHROW, vcondeq, vec_cond)
235 : 2451 : DEF_INTERNAL_OPTAB_FN (VCOND_MASK, ECF_CONST | ECF_NOTHROW,
236 : : vcond_mask, vec_cond_mask)
237 : 0 : DEF_INTERNAL_OPTAB_FN (VCOND_MASK_LEN, ECF_CONST | ECF_NOTHROW,
238 : : vcond_mask_len, cond_len_unary)
239 : :
240 : 127 : DEF_INTERNAL_OPTAB_FN (VEC_SET, ECF_CONST | ECF_NOTHROW, vec_set, vec_set)
241 : 0 : DEF_INTERNAL_OPTAB_FN (VEC_EXTRACT, ECF_CONST | ECF_NOTHROW,
242 : : vec_extract, vec_extract)
243 : :
244 : 0 : DEF_INTERNAL_OPTAB_FN (LEN_STORE, 0, len_store, len_store)
245 : 0 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_STORE, 0, mask_len_store, mask_len_store)
246 : :
247 : 50 : DEF_INTERNAL_OPTAB_FN (WHILE_ULT, ECF_CONST | ECF_NOTHROW, while_ult, while)
248 : 0 : DEF_INTERNAL_OPTAB_FN (SELECT_VL, ECF_CONST | ECF_NOTHROW, select_vl, binary)
249 : 66 : DEF_INTERNAL_OPTAB_FN (CHECK_RAW_PTRS, ECF_CONST | ECF_NOTHROW,
250 : : check_raw_ptrs, check_ptrs)
251 : 4624 : DEF_INTERNAL_OPTAB_FN (CHECK_WAR_PTRS, ECF_CONST | ECF_NOTHROW,
252 : : check_war_ptrs, check_ptrs)
253 : :
254 : 0 : DEF_INTERNAL_OPTAB_FN (VEC_SHL_INSERT, ECF_CONST | ECF_NOTHROW,
255 : : vec_shl_insert, binary)
256 : :
257 : 41723 : DEF_INTERNAL_OPTAB_FN (DIV_POW2, ECF_CONST | ECF_NOTHROW, sdiv_pow2, binary)
258 : :
259 : 6903 : DEF_INTERNAL_OPTAB_FN (FMS, ECF_CONST, fms, ternary)
260 : 5466 : DEF_INTERNAL_OPTAB_FN (FNMA, ECF_CONST, fnma, ternary)
261 : 1824 : DEF_INTERNAL_OPTAB_FN (FNMS, ECF_CONST, fnms, ternary)
262 : :
263 : 2223 : DEF_INTERNAL_SIGNED_OPTAB_FN (ABD, ECF_CONST | ECF_NOTHROW, first,
264 : : sabd, uabd, binary)
265 : :
266 : 1369 : DEF_INTERNAL_SIGNED_OPTAB_FN (AVG_FLOOR, ECF_CONST | ECF_NOTHROW, first,
267 : : savg_floor, uavg_floor, binary)
268 : 503 : DEF_INTERNAL_SIGNED_OPTAB_FN (AVG_CEIL, ECF_CONST | ECF_NOTHROW, first,
269 : : savg_ceil, uavg_ceil, binary)
270 : :
271 : 2419 : DEF_INTERNAL_SIGNED_OPTAB_FN (MULH, ECF_CONST | ECF_NOTHROW, first,
272 : : smul_highpart, umul_highpart, binary)
273 : 76 : DEF_INTERNAL_SIGNED_OPTAB_FN (MULHS, ECF_CONST | ECF_NOTHROW, first,
274 : : smulhs, umulhs, binary)
275 : 122 : DEF_INTERNAL_SIGNED_OPTAB_FN (MULHRS, ECF_CONST | ECF_NOTHROW, first,
276 : : smulhrs, umulhrs, binary)
277 : :
278 : 20575 : DEF_INTERNAL_COND_FN (ADD, ECF_CONST, add, binary)
279 : 1739 : DEF_INTERNAL_COND_FN (SUB, ECF_CONST, sub, binary)
280 : 1812 : DEF_INTERNAL_COND_FN (MUL, ECF_CONST, smul, binary)
281 : 740 : DEF_INTERNAL_SIGNED_COND_FN (DIV, ECF_CONST, first, sdiv, udiv, binary)
282 : 365 : DEF_INTERNAL_SIGNED_COND_FN (MOD, ECF_CONST, first, smod, umod, binary)
283 : 317 : DEF_INTERNAL_COND_FN (RDIV, ECF_CONST, sdiv, binary)
284 : 312 : DEF_INTERNAL_SIGNED_COND_FN (MIN, ECF_CONST, first, smin, umin, binary)
285 : 774 : DEF_INTERNAL_SIGNED_COND_FN (MAX, ECF_CONST, first, smax, umax, binary)
286 : 0 : DEF_INTERNAL_COND_FN (COPYSIGN, ECF_CONST, copysign, binary)
287 : 0 : DEF_INTERNAL_COND_FN (FMIN, ECF_CONST, fmin, binary)
288 : 0 : DEF_INTERNAL_COND_FN (FMAX, ECF_CONST, fmax, binary)
289 : 221 : DEF_INTERNAL_COND_FN (AND, ECF_CONST | ECF_NOTHROW, and, binary)
290 : 2031 : DEF_INTERNAL_COND_FN (IOR, ECF_CONST | ECF_NOTHROW, ior, binary)
291 : 477 : DEF_INTERNAL_COND_FN (XOR, ECF_CONST | ECF_NOTHROW, xor, binary)
292 : 555 : DEF_INTERNAL_COND_FN (SHL, ECF_CONST | ECF_NOTHROW, ashl, binary)
293 : 741 : DEF_INTERNAL_SIGNED_COND_FN (SHR, ECF_CONST | ECF_NOTHROW, first, ashr, lshr,
294 : : binary)
295 : :
296 : 521 : DEF_INTERNAL_COND_FN (FMA, ECF_CONST, fma, ternary)
297 : 144 : DEF_INTERNAL_COND_FN (FMS, ECF_CONST, fms, ternary)
298 : 132 : DEF_INTERNAL_COND_FN (FNMA, ECF_CONST, fnma, ternary)
299 : 128 : DEF_INTERNAL_COND_FN (FNMS, ECF_CONST, fnms, ternary)
300 : :
301 : 357 : DEF_INTERNAL_COND_FN (NEG, ECF_CONST, neg, unary)
302 : 48 : DEF_INTERNAL_COND_FN (NOT, ECF_CONST, one_cmpl, unary)
303 : :
304 : 191 : DEF_INTERNAL_OPTAB_FN (RSQRT, ECF_CONST, rsqrt, unary)
305 : :
306 : 76026 : DEF_INTERNAL_OPTAB_FN (REDUC_PLUS, ECF_CONST | ECF_NOTHROW,
307 : : reduc_plus_scal, unary)
308 : 2883 : DEF_INTERNAL_SIGNED_OPTAB_FN (REDUC_MAX, ECF_CONST | ECF_NOTHROW, first,
309 : : reduc_smax_scal, reduc_umax_scal, unary)
310 : 6935 : DEF_INTERNAL_SIGNED_OPTAB_FN (REDUC_MIN, ECF_CONST | ECF_NOTHROW, first,
311 : : reduc_smin_scal, reduc_umin_scal, unary)
312 : 21 : DEF_INTERNAL_OPTAB_FN (REDUC_FMAX, ECF_CONST | ECF_NOTHROW,
313 : : reduc_fmax_scal, unary)
314 : 18 : DEF_INTERNAL_OPTAB_FN (REDUC_FMIN, ECF_CONST | ECF_NOTHROW,
315 : : reduc_fmin_scal, unary)
316 : 14452 : DEF_INTERNAL_OPTAB_FN (REDUC_AND, ECF_CONST | ECF_NOTHROW,
317 : : reduc_and_scal, unary)
318 : 38468 : DEF_INTERNAL_OPTAB_FN (REDUC_IOR, ECF_CONST | ECF_NOTHROW,
319 : : reduc_ior_scal, unary)
320 : 1265 : DEF_INTERNAL_OPTAB_FN (REDUC_XOR, ECF_CONST | ECF_NOTHROW,
321 : : reduc_xor_scal, unary)
322 : :
323 : : /* Extract the last active element from a vector. */
324 : 3 : DEF_INTERNAL_OPTAB_FN (EXTRACT_LAST, ECF_CONST | ECF_NOTHROW,
325 : : extract_last, fold_left)
326 : :
327 : : /* Same, but return the first argument if no elements are active. */
328 : 626 : DEF_INTERNAL_OPTAB_FN (FOLD_EXTRACT_LAST, ECF_CONST | ECF_NOTHROW,
329 : : fold_extract_last, fold_extract)
330 : :
331 : 626 : DEF_INTERNAL_OPTAB_FN (LEN_FOLD_EXTRACT_LAST, ECF_CONST | ECF_NOTHROW,
332 : : len_fold_extract_last, fold_len_extract)
333 : :
334 : 2468 : DEF_INTERNAL_OPTAB_FN (FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW,
335 : : fold_left_plus, fold_left)
336 : :
337 : 0 : DEF_INTERNAL_OPTAB_FN (MASK_FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW,
338 : : mask_fold_left_plus, mask_fold_left)
339 : :
340 : 0 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW,
341 : : mask_len_fold_left_plus, mask_len_fold_left)
342 : :
343 : : /* Unary math functions. */
344 : 164 : DEF_INTERNAL_FLT_FN (ACOS, ECF_CONST, acos, unary)
345 : 935 : DEF_INTERNAL_FLT_FN (ACOSH, ECF_CONST, acosh, unary)
346 : 1914 : DEF_INTERNAL_FLT_FN (ASIN, ECF_CONST, asin, unary)
347 : 509 : DEF_INTERNAL_FLT_FN (ASINH, ECF_CONST, asinh, unary)
348 : 1447 : DEF_INTERNAL_FLT_FN (ATAN, ECF_CONST, atan, unary)
349 : 1230 : DEF_INTERNAL_FLT_FN (ATANH, ECF_CONST, atanh, unary)
350 : 5539 : DEF_INTERNAL_FLT_FN (COS, ECF_CONST, cos, unary)
351 : 2883 : DEF_INTERNAL_FLT_FN (COSH, ECF_CONST, cosh, unary)
352 : 12739 : DEF_INTERNAL_FLT_FN (EXP, ECF_CONST, exp, unary)
353 : 12 : DEF_INTERNAL_FLT_FN (EXP10, ECF_CONST, exp10, unary)
354 : 2688 : DEF_INTERNAL_FLT_FN (EXP2, ECF_CONST, exp2, unary)
355 : 718 : DEF_INTERNAL_FLT_FN (EXPM1, ECF_CONST, expm1, unary)
356 : 12803 : DEF_INTERNAL_FLT_FN (LOG, ECF_CONST, log, unary)
357 : 2341 : DEF_INTERNAL_FLT_FN (LOG10, ECF_CONST, log10, unary)
358 : 1410 : DEF_INTERNAL_FLT_FN (LOG1P, ECF_CONST, log1p, unary)
359 : 1539 : DEF_INTERNAL_FLT_FN (LOG2, ECF_CONST, log2, unary)
360 : 885 : DEF_INTERNAL_FLT_FN (LOGB, ECF_CONST, logb, unary)
361 : 23812 : DEF_INTERNAL_FLT_FN (SIGNBIT, ECF_CONST, signbit, unary)
362 : 222 : DEF_INTERNAL_FLT_FN (SIGNIFICAND, ECF_CONST, significand, unary)
363 : 9989 : DEF_INTERNAL_FLT_FN (SIN, ECF_CONST, sin, unary)
364 : 2681 : DEF_INTERNAL_FLT_FN (SINH, ECF_CONST, sinh, unary)
365 : 7264 : DEF_INTERNAL_FLT_FLOATN_FN (SQRT, ECF_CONST, sqrt, unary)
366 : 2048 : DEF_INTERNAL_FLT_FN (TAN, ECF_CONST, tan, unary)
367 : 540 : DEF_INTERNAL_FLT_FN (TANH, ECF_CONST, tanh, unary)
368 : :
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. */
376 : 208 : DEF_INTERNAL_FLT_FN (ICEIL, ECF_CONST, lceil, unary_convert)
377 : 211 : DEF_INTERNAL_FLT_FN (IFLOOR, ECF_CONST, lfloor, unary_convert)
378 : 269 : DEF_INTERNAL_FLT_FN (IRINT, ECF_CONST, lrint, unary_convert)
379 : 1054 : DEF_INTERNAL_FLT_FN (IROUND, ECF_CONST, lround, unary_convert)
380 : 2170 : DEF_INTERNAL_FLT_FN (LCEIL, ECF_CONST, lceil, unary_convert)
381 : 2110 : DEF_INTERNAL_FLT_FN (LFLOOR, ECF_CONST, lfloor, unary_convert)
382 : 267 : DEF_INTERNAL_FLT_FLOATN_FN (LRINT, ECF_CONST, lrint, unary_convert)
383 : 168 : DEF_INTERNAL_FLT_FLOATN_FN (LROUND, ECF_CONST, lround, unary_convert)
384 : 396 : DEF_INTERNAL_FLT_FN (LLCEIL, ECF_CONST, lceil, unary_convert)
385 : 396 : DEF_INTERNAL_FLT_FN (LLFLOOR, ECF_CONST, lfloor, unary_convert)
386 : 32 : DEF_INTERNAL_FLT_FLOATN_FN (LLRINT, ECF_CONST, lrint, unary_convert)
387 : 32 : DEF_INTERNAL_FLT_FLOATN_FN (LLROUND, ECF_CONST, lround, unary_convert)
388 : :
389 : : /* FP rounding. */
390 : 1180 : DEF_INTERNAL_FLT_FLOATN_FN (CEIL, ECF_CONST, ceil, unary)
391 : 946 : DEF_INTERNAL_FLT_FLOATN_FN (FLOOR, ECF_CONST, floor, unary)
392 : 262 : DEF_INTERNAL_FLT_FLOATN_FN (NEARBYINT, ECF_CONST, nearbyint, unary)
393 : 533 : DEF_INTERNAL_FLT_FLOATN_FN (RINT, ECF_CONST, rint, unary)
394 : 375 : DEF_INTERNAL_FLT_FLOATN_FN (ROUND, ECF_CONST, round, unary)
395 : 26 : DEF_INTERNAL_FLT_FLOATN_FN (ROUNDEVEN, ECF_CONST, roundeven, unary)
396 : 1239 : DEF_INTERNAL_FLT_FLOATN_FN (TRUNC, ECF_CONST, btrunc, unary)
397 : :
398 : : /* Binary math functions. */
399 : 6733 : DEF_INTERNAL_FLT_FN (ATAN2, ECF_CONST, atan2, binary)
400 : 68289 : DEF_INTERNAL_FLT_FLOATN_FN (COPYSIGN, ECF_CONST, copysign, binary)
401 : 5904 : DEF_INTERNAL_FLT_FN (FMOD, ECF_CONST, fmod, binary)
402 : 1403 : DEF_INTERNAL_FLT_FN (HYPOT, ECF_CONST, hypot, binary)
403 : 23878 : DEF_INTERNAL_FLT_FN (POW, ECF_CONST, pow, binary)
404 : 258 : DEF_INTERNAL_FLT_FN (REMAINDER, ECF_CONST, remainder, binary)
405 : 407 : DEF_INTERNAL_FLT_FN (SCALB, ECF_CONST, scalb, binary)
406 : 229 : DEF_INTERNAL_FLT_FLOATN_FN (FMIN, ECF_CONST, fmin, binary)
407 : 277 : DEF_INTERNAL_FLT_FLOATN_FN (FMAX, ECF_CONST, fmax, binary)
408 : 42 : DEF_INTERNAL_OPTAB_FN (XORSIGN, ECF_CONST, xorsign, binary)
409 : 182 : DEF_INTERNAL_OPTAB_FN (COMPLEX_ADD_ROT90, ECF_CONST, cadd90, binary)
410 : 65 : DEF_INTERNAL_OPTAB_FN (COMPLEX_ADD_ROT270, ECF_CONST, cadd270, binary)
411 : 260 : DEF_INTERNAL_OPTAB_FN (COMPLEX_MUL, ECF_CONST, cmul, binary)
412 : 14 : DEF_INTERNAL_OPTAB_FN (COMPLEX_MUL_CONJ, ECF_CONST, cmul_conj, binary)
413 : 3595 : DEF_INTERNAL_OPTAB_FN (VEC_ADDSUB, ECF_CONST, vec_addsub, binary)
414 : 249276 : DEF_INTERNAL_WIDENING_OPTAB_FN (VEC_WIDEN_PLUS,
415 : : ECF_CONST | ECF_NOTHROW,
416 : : first,
417 : : vec_widen_sadd, vec_widen_uadd,
418 : : binary)
419 : 38562 : DEF_INTERNAL_WIDENING_OPTAB_FN (VEC_WIDEN_MINUS,
420 : : ECF_CONST | ECF_NOTHROW,
421 : : first,
422 : : vec_widen_ssub, vec_widen_usub,
423 : : binary)
424 : 4440 : DEF_INTERNAL_WIDENING_OPTAB_FN (VEC_WIDEN_ABD,
425 : : ECF_CONST | ECF_NOTHROW,
426 : : first,
427 : : vec_widen_sabd, vec_widen_uabd,
428 : : binary)
429 : 2382 : DEF_INTERNAL_OPTAB_FN (VEC_FMADDSUB, ECF_CONST, vec_fmaddsub, ternary)
430 : 1944 : DEF_INTERNAL_OPTAB_FN (VEC_FMSUBADD, ECF_CONST, vec_fmsubadd, ternary)
431 : :
432 : : /* FP scales. */
433 : 819 : DEF_INTERNAL_FLT_FN (LDEXP, ECF_CONST, ldexp, binary)
434 : :
435 : : /* Ternary math functions. */
436 : 4433820 : DEF_INTERNAL_FLT_FLOATN_FN (FMA, ECF_CONST, fma, ternary)
437 : 15 : DEF_INTERNAL_OPTAB_FN (COMPLEX_FMA, ECF_CONST, cmla, ternary)
438 : 14 : DEF_INTERNAL_OPTAB_FN (COMPLEX_FMA_CONJ, ECF_CONST, cmla_conj, ternary)
439 : 0 : DEF_INTERNAL_OPTAB_FN (COMPLEX_FMS, ECF_CONST, cmls, ternary)
440 : 0 : DEF_INTERNAL_OPTAB_FN (COMPLEX_FMS_CONJ, ECF_CONST, cmls_conj, ternary)
441 : :
442 : : /* Unary integer ops. */
443 : 947 : DEF_INTERNAL_INT_EXT_FN (CLRSB, ECF_CONST | ECF_NOTHROW, clrsb, unary)
444 : 78246 : DEF_INTERNAL_INT_EXT_FN (CLZ, ECF_CONST | ECF_NOTHROW, clz, unary)
445 : 11618 : DEF_INTERNAL_INT_EXT_FN (CTZ, ECF_CONST | ECF_NOTHROW, ctz, unary)
446 : 1654 : DEF_INTERNAL_INT_EXT_FN (FFS, ECF_CONST | ECF_NOTHROW, ffs, unary)
447 : 2182 : DEF_INTERNAL_INT_EXT_FN (PARITY, ECF_CONST | ECF_NOTHROW, parity, unary)
448 : 9534 : DEF_INTERNAL_INT_EXT_FN (POPCOUNT, ECF_CONST | ECF_NOTHROW, popcount, unary)
449 : :
450 : 285289 : DEF_INTERNAL_FN (GOMP_TARGET_REV, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
451 : 285289 : DEF_INTERNAL_FN (GOMP_USE_SIMT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
452 : 285289 : DEF_INTERNAL_FN (GOMP_SIMT_ENTER, ECF_LEAF | ECF_NOTHROW, NULL)
453 : 285289 : DEF_INTERNAL_FN (GOMP_SIMT_ENTER_ALLOC, ECF_LEAF | ECF_NOTHROW, NULL)
454 : 285289 : DEF_INTERNAL_FN (GOMP_SIMT_EXIT, ECF_LEAF | ECF_NOTHROW, NULL)
455 : 285289 : DEF_INTERNAL_FN (GOMP_SIMT_LANE, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
456 : 285289 : DEF_INTERNAL_FN (GOMP_SIMT_VF, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
457 : 285289 : DEF_INTERNAL_FN (GOMP_SIMT_LAST_LANE, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
458 : 285289 : DEF_INTERNAL_FN (GOMP_SIMT_ORDERED_PRED, ECF_LEAF | ECF_NOTHROW, NULL)
459 : 285289 : DEF_INTERNAL_FN (GOMP_SIMT_VOTE_ANY, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
460 : 285289 : DEF_INTERNAL_FN (GOMP_SIMT_XCHG_BFLY, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
461 : 285289 : DEF_INTERNAL_FN (GOMP_SIMT_XCHG_IDX, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
462 : 285289 : DEF_INTERNAL_FN (GOMP_SIMD_LANE, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
463 : 285289 : DEF_INTERNAL_FN (GOMP_SIMD_VF, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
464 : 285289 : DEF_INTERNAL_FN (GOMP_SIMD_LAST_LANE, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
465 : 285289 : DEF_INTERNAL_FN (GOMP_SIMD_ORDERED_START, ECF_LEAF | ECF_NOTHROW, NULL)
466 : 285289 : DEF_INTERNAL_FN (GOMP_SIMD_ORDERED_END, ECF_LEAF | ECF_NOTHROW, NULL)
467 : 285289 : DEF_INTERNAL_FN (LOOP_VECTORIZED, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
468 : 285289 : DEF_INTERNAL_FN (LOOP_DIST_ALIAS, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
469 : 285289 : DEF_INTERNAL_FN (ANNOTATE, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
470 : 285289 : DEF_INTERNAL_FN (UBSAN_NULL, ECF_LEAF | ECF_NOTHROW, ". R . ")
471 : 285289 : DEF_INTERNAL_FN (UBSAN_BOUNDS, ECF_LEAF | ECF_NOTHROW, NULL)
472 : 285289 : DEF_INTERNAL_FN (UBSAN_VPTR, ECF_LEAF | ECF_NOTHROW, ". R R . . ")
473 : 285289 : DEF_INTERNAL_FN (UBSAN_CHECK_ADD, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
474 : 285289 : DEF_INTERNAL_FN (UBSAN_CHECK_SUB, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
475 : 285289 : DEF_INTERNAL_FN (UBSAN_CHECK_MUL, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
476 : 285289 : DEF_INTERNAL_FN (UBSAN_PTR, ECF_LEAF | ECF_NOTHROW, ". R . ")
477 : 285289 : DEF_INTERNAL_FN (UBSAN_OBJECT_SIZE, ECF_LEAF | ECF_NOTHROW, NULL)
478 : 285289 : DEF_INTERNAL_FN (ABNORMAL_DISPATCHER, ECF_NORETURN, NULL)
479 : 285289 : DEF_INTERNAL_FN (BUILTIN_EXPECT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
480 : 285289 : DEF_INTERNAL_FN (HWASAN_ALLOCA_UNPOISON, ECF_LEAF | ECF_NOTHROW, ". R ")
481 : 285289 : DEF_INTERNAL_FN (HWASAN_CHOOSE_TAG, ECF_LEAF | ECF_NOTHROW, ". ")
482 : 285289 : DEF_INTERNAL_FN (HWASAN_CHECK, ECF_TM_PURE | ECF_LEAF | ECF_NOTHROW,
483 : : ". . R . . ")
484 : 285289 : DEF_INTERNAL_FN (HWASAN_MARK, ECF_LEAF | ECF_NOTHROW, NULL)
485 : 285289 : DEF_INTERNAL_FN (HWASAN_SET_TAG,
486 : : ECF_TM_PURE | ECF_PURE | ECF_LEAF | ECF_NOTHROW, ". R R ")
487 : 285289 : DEF_INTERNAL_FN (ASAN_CHECK, ECF_TM_PURE | ECF_LEAF | ECF_NOTHROW,
488 : : ". . R . . ")
489 : 285289 : DEF_INTERNAL_FN (ASAN_MARK, ECF_LEAF | ECF_NOTHROW, NULL)
490 : 285289 : DEF_INTERNAL_FN (ASAN_POISON, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL)
491 : 285289 : DEF_INTERNAL_FN (ASAN_POISON_USE, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL)
492 : 285289 : DEF_INTERNAL_FN (ADD_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
493 : 285289 : DEF_INTERNAL_FN (SUB_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
494 : 285289 : DEF_INTERNAL_FN (MUL_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
495 : 285289 : DEF_INTERNAL_FN (UADDC, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
496 : 285289 : DEF_INTERNAL_FN (USUBC, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
497 : 285289 : DEF_INTERNAL_FN (TSAN_FUNC_EXIT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
498 : 285289 : DEF_INTERNAL_FN (VA_ARG, ECF_NOTHROW | ECF_LEAF, NULL)
499 : 285289 : DEF_INTERNAL_FN (VEC_CONVERT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
500 : 285289 : DEF_INTERNAL_FN (RAWMEMCHR, ECF_PURE | ECF_LEAF | ECF_NOTHROW, NULL)
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. */
506 : 285289 : DEF_INTERNAL_FN (UNIQUE, ECF_NOTHROW, NULL)
507 : 285289 : DEF_INTERNAL_FN (PHI, 0, NULL)
508 : :
509 : : /* A function to represent an artifical initialization to an uninitialized
510 : : automatic variable. */
511 : 285289 : DEF_INTERNAL_FN (DEFERRED_INIT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
512 : :
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
518 : : single INTEGER_CST argument. This might be overly conservative. */
519 : 285289 : DEF_INTERNAL_FN (GOACC_DIM_SIZE, ECF_CONST | ECF_NOTHROW | ECF_LEAF, NULL)
520 : 285289 : DEF_INTERNAL_FN (GOACC_DIM_POS, ECF_PURE | ECF_NOTHROW | ECF_LEAF, NULL)
521 : :
522 : : /* OpenACC looping abstraction. See internal-fn.h for usage. */
523 : 285289 : DEF_INTERNAL_FN (GOACC_LOOP, ECF_PURE | ECF_NOTHROW, NULL)
524 : :
525 : : /* OpenACC reduction abstraction. See internal-fn.h for usage. */
526 : 285289 : DEF_INTERNAL_FN (GOACC_REDUCTION, ECF_NOTHROW | ECF_LEAF, NULL)
527 : :
528 : : /* Openacc tile abstraction. Describes the spans of the element loop.
529 : : GOACC_TILE (num-loops, loop-no, tile-arg, tile-mask, element-mask). */
530 : 285289 : DEF_INTERNAL_FN (GOACC_TILE, ECF_NOTHROW | ECF_LEAF, NULL)
531 : :
532 : : /* Set errno to EDOM, if GCC knows how to do that directly for the
533 : : current target. */
534 : 285289 : DEF_INTERNAL_FN (SET_EDOM, ECF_LEAF | ECF_NOTHROW, NULL)
535 : :
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. */
539 : 285289 : DEF_INTERNAL_FN (ATOMIC_BIT_TEST_AND_SET, ECF_LEAF, NULL)
540 : 285289 : DEF_INTERNAL_FN (ATOMIC_BIT_TEST_AND_COMPLEMENT, ECF_LEAF, NULL)
541 : 285289 : DEF_INTERNAL_FN (ATOMIC_BIT_TEST_AND_RESET, ECF_LEAF, NULL)
542 : 285289 : DEF_INTERNAL_FN (ATOMIC_COMPARE_EXCHANGE, ECF_LEAF, NULL)
543 : 285289 : DEF_INTERNAL_FN (ATOMIC_ADD_FETCH_CMP_0, ECF_LEAF, NULL)
544 : 285289 : DEF_INTERNAL_FN (ATOMIC_SUB_FETCH_CMP_0, ECF_LEAF, NULL)
545 : 285289 : DEF_INTERNAL_FN (ATOMIC_AND_FETCH_CMP_0, ECF_LEAF, NULL)
546 : 285289 : DEF_INTERNAL_FN (ATOMIC_OR_FETCH_CMP_0, ECF_LEAF, NULL)
547 : 285289 : DEF_INTERNAL_FN (ATOMIC_XOR_FETCH_CMP_0, ECF_LEAF, NULL)
548 : :
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. */
552 : 285289 : DEF_INTERNAL_FN (FALLTHROUGH, ECF_LEAF | ECF_NOTHROW, NULL)
553 : :
554 : : /* To implement __builtin_launder. */
555 : 285289 : DEF_INTERNAL_FN (LAUNDER, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL)
556 : :
557 : : /* Divmod function. */
558 : 285289 : DEF_INTERNAL_FN (DIVMOD, ECF_CONST | ECF_LEAF, NULL)
559 : :
560 : : /* For coroutines. */
561 : 285289 : DEF_INTERNAL_FN (CO_ACTOR, ECF_NOTHROW | ECF_LEAF, NULL)
562 : 285289 : DEF_INTERNAL_FN (CO_YIELD, ECF_NOTHROW, NULL)
563 : 285289 : DEF_INTERNAL_FN (CO_SUSPN, ECF_NOTHROW, NULL)
564 : 285289 : DEF_INTERNAL_FN (CO_FRAME, ECF_PURE | ECF_NOTHROW | ECF_LEAF, NULL)
565 : :
566 : : /* A NOP function with arbitrary arguments and return value. */
567 : 285289 : DEF_INTERNAL_FN (NOP, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
568 : :
569 : : /* Temporary vehicle for __builtin_shufflevector. */
570 : 285289 : DEF_INTERNAL_FN (SHUFFLEVECTOR, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
571 : :
572 : : /* <=> optimization. */
573 : 285289 : DEF_INTERNAL_FN (SPACESHIP, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
574 : :
575 : : /* [[assume (cond)]]. */
576 : 285289 : DEF_INTERNAL_FN (ASSUME, ECF_CONST | ECF_LEAF | ECF_NOTHROW
577 : : | ECF_LOOPING_CONST_OR_PURE, NULL)
578 : :
579 : : /* For if-conversion of inbranch SIMD clones. */
580 : 285289 : DEF_INTERNAL_FN (MASK_CALL, ECF_NOVOPS, NULL)
581 : :
582 : : /* _BitInt support. */
583 : 285289 : DEF_INTERNAL_FN (MULBITINT, ECF_LEAF | ECF_NOTHROW, ". O . R . R . ")
584 : 285289 : DEF_INTERNAL_FN (DIVMODBITINT, ECF_LEAF, ". O . O . R . R . ")
585 : 285289 : DEF_INTERNAL_FN (FLOATTOBITINT, ECF_LEAF | ECF_NOTHROW, ". O . . ")
586 : 285289 : DEF_INTERNAL_FN (BITINTTOFLOAT, ECF_PURE | ECF_LEAF, ". R . ")
587 : :
588 : : #undef DEF_INTERNAL_WIDENING_OPTAB_FN
589 : : #undef DEF_INTERNAL_SIGNED_COND_FN
590 : : #undef DEF_INTERNAL_COND_FN
591 : : #undef DEF_INTERNAL_INT_EXT_FN
592 : : #undef DEF_INTERNAL_INT_FN
593 : : #undef DEF_INTERNAL_FLT_FN
594 : : #undef DEF_INTERNAL_FLT_FLOATN_FN
595 : : #undef DEF_INTERNAL_SIGNED_OPTAB_FN
596 : : #undef DEF_INTERNAL_OPTAB_FN
597 : : #undef DEF_INTERNAL_FN
|