annotate gcc/internal-fn.def @ 138:fc828634a951

merge
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 08 Nov 2018 14:17:14 +0900
parents 84e7813d76e9
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Internal functions.
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2 Copyright (C) 2011-2018 Free Software Foundation, Inc.
111
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 This file is part of GCC.
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 GCC is free software; you can redistribute it and/or modify it under
kono
parents:
diff changeset
7 the terms of the GNU General Public License as published by the Free
kono
parents:
diff changeset
8 Software Foundation; either version 3, or (at your option) any later
kono
parents:
diff changeset
9 version.
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
kono
parents:
diff changeset
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
kono
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
kono
parents:
diff changeset
14 for more details.
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
kono
parents:
diff changeset
17 along with GCC; see the file COPYING3. If not see
kono
parents:
diff changeset
18 <http://www.gnu.org/licenses/>. */
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 /* This file specifies a list of internal "functions". These functions
kono
parents:
diff changeset
21 differ from built-in functions in that they have no linkage and cannot
kono
parents:
diff changeset
22 be called directly by the user. They represent operations that are only
kono
parents:
diff changeset
23 synthesised by GCC itself.
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 Internal functions are used instead of tree codes if the operation
kono
parents:
diff changeset
26 and its operands are more naturally represented as a GIMPLE_CALL
kono
parents:
diff changeset
27 than a GIMPLE_ASSIGN.
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 Each entry in this file has one of the forms:
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 DEF_INTERNAL_FN (NAME, FLAGS, FNSPEC)
kono
parents:
diff changeset
32 DEF_INTERNAL_OPTAB_FN (NAME, FLAGS, OPTAB, TYPE)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
33 DEF_INTERNAL_SIGNED_OPTAB_FN (NAME, FLAGS, SELECTOR, SIGNED_OPTAB,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
34 UNSIGNED_OPTAB, TYPE)
111
kono
parents:
diff changeset
35 DEF_INTERNAL_FLT_FN (NAME, FLAGS, OPTAB, TYPE)
kono
parents:
diff changeset
36 DEF_INTERNAL_INT_FN (NAME, FLAGS, OPTAB, TYPE)
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 where NAME is the name of the function, FLAGS is a set of
kono
parents:
diff changeset
39 ECF_* flags and FNSPEC is a string describing functions fnspec.
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 DEF_INTERNAL_OPTAB_FN defines an internal function that maps to a
kono
parents:
diff changeset
42 direct optab. The function should only be called with a given
kono
parents:
diff changeset
43 set of types if the associated optab is available for the modes
kono
parents:
diff changeset
44 of those types. OPTAB says what optab to use (without the trailing
kono
parents:
diff changeset
45 "_optab") and TYPE categorizes the optab based on its inputs and
kono
parents:
diff changeset
46 outputs. The possible types of optab are:
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 - mask_load: currently just maskload
kono
parents:
diff changeset
49 - load_lanes: currently just vec_load_lanes
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
50 - mask_load_lanes: currently just vec_mask_load_lanes
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
51 - gather_load: used for {mask_,}gather_load
111
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 - mask_store: currently just maskstore
kono
parents:
diff changeset
54 - store_lanes: currently just vec_store_lanes
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
55 - mask_store_lanes: currently just vec_mask_store_lanes
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
56 - scatter_store: used for {mask_,}scatter_store
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
57
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
58 - unary: a normal unary optab, such as vec_reverse_<mode>
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
59 - binary: a normal binary optab, such as vec_interleave_lo_<mode>
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
60 - ternary: a normal ternary optab, such as fma<mode>4
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
61
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
62 - cond_binary: a conditional binary optab, such as cond_add<mode>
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
63 - cond_ternary: a conditional ternary optab, such as cond_fma_rev<mode>
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
64
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
65 - fold_left: for scalar = FN (scalar, vector), keyed off the vector mode
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
66
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
67 DEF_INTERNAL_SIGNED_OPTAB_FN defines an internal function that
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
68 maps to one of two optabs, depending on the signedness of an input.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
69 SIGNED_OPTAB and UNSIGNED_OPTAB are the optabs for signed and
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
70 unsigned inputs respectively, both without the trailing "_optab".
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
71 SELECTOR says which type in the tree_pair determines the signedness.
111
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 DEF_INTERNAL_FLT_FN is like DEF_INTERNAL_OPTAB_FN, but in addition,
kono
parents:
diff changeset
74 the function implements the computational part of a built-in math
kono
parents:
diff changeset
75 function BUILT_IN_<NAME>{F,,L}. Unlike some built-in functions,
kono
parents:
diff changeset
76 these internal functions never set errno.
kono
parents:
diff changeset
77
kono
parents:
diff changeset
78 DEF_INTERNAL_INT_FN is like DEF_INTERNAL_OPTAB_FN, but in addition
kono
parents:
diff changeset
79 says that the function extends the C-level BUILT_IN_<NAME>{,L,LL,IMAX}
kono
parents:
diff changeset
80 group of functions to any integral mode (including vector modes).
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82 Each entry must have a corresponding expander of the form:
kono
parents:
diff changeset
83
kono
parents:
diff changeset
84 void expand_NAME (gimple_call stmt)
kono
parents:
diff changeset
85
kono
parents:
diff changeset
86 where STMT is the statement that performs the call. These are generated
kono
parents:
diff changeset
87 automatically for optab functions and call out to a function or macro
kono
parents:
diff changeset
88 called expand_<TYPE>_optab_fn. */
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90 #ifndef DEF_INTERNAL_FN
kono
parents:
diff changeset
91 #define DEF_INTERNAL_FN(CODE, FLAGS, FNSPEC)
kono
parents:
diff changeset
92 #endif
kono
parents:
diff changeset
93
kono
parents:
diff changeset
94 #ifndef DEF_INTERNAL_OPTAB_FN
kono
parents:
diff changeset
95 #define DEF_INTERNAL_OPTAB_FN(NAME, FLAGS, OPTAB, TYPE) \
kono
parents:
diff changeset
96 DEF_INTERNAL_FN (NAME, FLAGS | ECF_LEAF, NULL)
kono
parents:
diff changeset
97 #endif
kono
parents:
diff changeset
98
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
99 #ifndef DEF_INTERNAL_SIGNED_OPTAB_FN
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
100 #define DEF_INTERNAL_SIGNED_OPTAB_FN(NAME, FLAGS, SELECTOR, SIGNED_OPTAB, \
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
101 UNSIGNED_OPTAB, TYPE) \
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
102 DEF_INTERNAL_FN (NAME, FLAGS | ECF_LEAF, NULL)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
103 #endif
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
104
111
kono
parents:
diff changeset
105 #ifndef DEF_INTERNAL_FLT_FN
kono
parents:
diff changeset
106 #define DEF_INTERNAL_FLT_FN(NAME, FLAGS, OPTAB, TYPE) \
kono
parents:
diff changeset
107 DEF_INTERNAL_OPTAB_FN (NAME, FLAGS, OPTAB, TYPE)
kono
parents:
diff changeset
108 #endif
kono
parents:
diff changeset
109
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
110 #ifndef DEF_INTERNAL_FLT_FLOATN_FN
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
111 #define DEF_INTERNAL_FLT_FLOATN_FN(NAME, FLAGS, OPTAB, TYPE) \
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
112 DEF_INTERNAL_FLT_FN (NAME, FLAGS, OPTAB, TYPE)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
113 #endif
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
114
111
kono
parents:
diff changeset
115 #ifndef DEF_INTERNAL_INT_FN
kono
parents:
diff changeset
116 #define DEF_INTERNAL_INT_FN(NAME, FLAGS, OPTAB, TYPE) \
kono
parents:
diff changeset
117 DEF_INTERNAL_OPTAB_FN (NAME, FLAGS, OPTAB, TYPE)
kono
parents:
diff changeset
118 #endif
kono
parents:
diff changeset
119
kono
parents:
diff changeset
120 DEF_INTERNAL_OPTAB_FN (MASK_LOAD, ECF_PURE, maskload, mask_load)
kono
parents:
diff changeset
121 DEF_INTERNAL_OPTAB_FN (LOAD_LANES, ECF_CONST, vec_load_lanes, load_lanes)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
122 DEF_INTERNAL_OPTAB_FN (MASK_LOAD_LANES, ECF_PURE,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
123 vec_mask_load_lanes, mask_load_lanes)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
124
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
125 DEF_INTERNAL_OPTAB_FN (GATHER_LOAD, ECF_PURE, gather_load, gather_load)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
126 DEF_INTERNAL_OPTAB_FN (MASK_GATHER_LOAD, ECF_PURE,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
127 mask_gather_load, gather_load)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
128
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
129 DEF_INTERNAL_OPTAB_FN (SCATTER_STORE, 0, scatter_store, scatter_store)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
130 DEF_INTERNAL_OPTAB_FN (MASK_SCATTER_STORE, 0,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
131 mask_scatter_store, scatter_store)
111
kono
parents:
diff changeset
132
kono
parents:
diff changeset
133 DEF_INTERNAL_OPTAB_FN (MASK_STORE, 0, maskstore, mask_store)
kono
parents:
diff changeset
134 DEF_INTERNAL_OPTAB_FN (STORE_LANES, ECF_CONST, vec_store_lanes, store_lanes)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
135 DEF_INTERNAL_OPTAB_FN (MASK_STORE_LANES, 0,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
136 vec_mask_store_lanes, mask_store_lanes)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
137
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
138 DEF_INTERNAL_OPTAB_FN (WHILE_ULT, ECF_CONST | ECF_NOTHROW, while_ult, while)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
139
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
140 DEF_INTERNAL_OPTAB_FN (VEC_SHL_INSERT, ECF_CONST | ECF_NOTHROW,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
141 vec_shl_insert, binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
142
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
143 DEF_INTERNAL_OPTAB_FN (FMS, ECF_CONST, fms, ternary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
144 DEF_INTERNAL_OPTAB_FN (FNMA, ECF_CONST, fnma, ternary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
145 DEF_INTERNAL_OPTAB_FN (FNMS, ECF_CONST, fnms, ternary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
146
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
147 DEF_INTERNAL_SIGNED_OPTAB_FN (AVG_FLOOR, ECF_CONST | ECF_NOTHROW, first,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
148 savg_floor, uavg_floor, binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
149 DEF_INTERNAL_SIGNED_OPTAB_FN (AVG_CEIL, ECF_CONST | ECF_NOTHROW, first,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
150 savg_ceil, uavg_ceil, binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
151
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
152 DEF_INTERNAL_OPTAB_FN (COND_ADD, ECF_CONST, cond_add, cond_binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
153 DEF_INTERNAL_OPTAB_FN (COND_SUB, ECF_CONST, cond_sub, cond_binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
154 DEF_INTERNAL_OPTAB_FN (COND_MUL, ECF_CONST, cond_smul, cond_binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
155 DEF_INTERNAL_SIGNED_OPTAB_FN (COND_DIV, ECF_CONST, first,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
156 cond_sdiv, cond_udiv, cond_binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
157 DEF_INTERNAL_SIGNED_OPTAB_FN (COND_MOD, ECF_CONST, first,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
158 cond_smod, cond_umod, cond_binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
159 DEF_INTERNAL_OPTAB_FN (COND_RDIV, ECF_CONST, cond_sdiv, cond_binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
160 DEF_INTERNAL_SIGNED_OPTAB_FN (COND_MIN, ECF_CONST, first,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
161 cond_smin, cond_umin, cond_binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
162 DEF_INTERNAL_SIGNED_OPTAB_FN (COND_MAX, ECF_CONST, first,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
163 cond_smax, cond_umax, cond_binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
164 DEF_INTERNAL_OPTAB_FN (COND_AND, ECF_CONST | ECF_NOTHROW,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
165 cond_and, cond_binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
166 DEF_INTERNAL_OPTAB_FN (COND_IOR, ECF_CONST | ECF_NOTHROW,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
167 cond_ior, cond_binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
168 DEF_INTERNAL_OPTAB_FN (COND_XOR, ECF_CONST | ECF_NOTHROW,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
169 cond_xor, cond_binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
170
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
171 DEF_INTERNAL_OPTAB_FN (COND_FMA, ECF_CONST, cond_fma, cond_ternary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
172 DEF_INTERNAL_OPTAB_FN (COND_FMS, ECF_CONST, cond_fms, cond_ternary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
173 DEF_INTERNAL_OPTAB_FN (COND_FNMA, ECF_CONST, cond_fnma, cond_ternary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
174 DEF_INTERNAL_OPTAB_FN (COND_FNMS, ECF_CONST, cond_fnms, cond_ternary)
111
kono
parents:
diff changeset
175
kono
parents:
diff changeset
176 DEF_INTERNAL_OPTAB_FN (RSQRT, ECF_CONST, rsqrt, unary)
kono
parents:
diff changeset
177
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
178 DEF_INTERNAL_OPTAB_FN (REDUC_PLUS, ECF_CONST | ECF_NOTHROW,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
179 reduc_plus_scal, unary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
180 DEF_INTERNAL_SIGNED_OPTAB_FN (REDUC_MAX, ECF_CONST | ECF_NOTHROW, first,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
181 reduc_smax_scal, reduc_umax_scal, unary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
182 DEF_INTERNAL_SIGNED_OPTAB_FN (REDUC_MIN, ECF_CONST | ECF_NOTHROW, first,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
183 reduc_smin_scal, reduc_umin_scal, unary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
184 DEF_INTERNAL_OPTAB_FN (REDUC_AND, ECF_CONST | ECF_NOTHROW,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
185 reduc_and_scal, unary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
186 DEF_INTERNAL_OPTAB_FN (REDUC_IOR, ECF_CONST | ECF_NOTHROW,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
187 reduc_ior_scal, unary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
188 DEF_INTERNAL_OPTAB_FN (REDUC_XOR, ECF_CONST | ECF_NOTHROW,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
189 reduc_xor_scal, unary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
190
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
191 /* Extract the last active element from a vector. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
192 DEF_INTERNAL_OPTAB_FN (EXTRACT_LAST, ECF_CONST | ECF_NOTHROW,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
193 extract_last, fold_left)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
194
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
195 /* Same, but return the first argument if no elements are active. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
196 DEF_INTERNAL_OPTAB_FN (FOLD_EXTRACT_LAST, ECF_CONST | ECF_NOTHROW,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
197 fold_extract_last, fold_extract)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
198
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
199 DEF_INTERNAL_OPTAB_FN (FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
200 fold_left_plus, fold_left)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
201
111
kono
parents:
diff changeset
202 /* Unary math functions. */
kono
parents:
diff changeset
203 DEF_INTERNAL_FLT_FN (ACOS, ECF_CONST, acos, unary)
kono
parents:
diff changeset
204 DEF_INTERNAL_FLT_FN (ASIN, ECF_CONST, asin, unary)
kono
parents:
diff changeset
205 DEF_INTERNAL_FLT_FN (ATAN, ECF_CONST, atan, unary)
kono
parents:
diff changeset
206 DEF_INTERNAL_FLT_FN (COS, ECF_CONST, cos, unary)
kono
parents:
diff changeset
207 DEF_INTERNAL_FLT_FN (EXP, ECF_CONST, exp, unary)
kono
parents:
diff changeset
208 DEF_INTERNAL_FLT_FN (EXP10, ECF_CONST, exp10, unary)
kono
parents:
diff changeset
209 DEF_INTERNAL_FLT_FN (EXP2, ECF_CONST, exp2, unary)
kono
parents:
diff changeset
210 DEF_INTERNAL_FLT_FN (EXPM1, ECF_CONST, expm1, unary)
kono
parents:
diff changeset
211 DEF_INTERNAL_FLT_FN (LOG, ECF_CONST, log, unary)
kono
parents:
diff changeset
212 DEF_INTERNAL_FLT_FN (LOG10, ECF_CONST, log10, unary)
kono
parents:
diff changeset
213 DEF_INTERNAL_FLT_FN (LOG1P, ECF_CONST, log1p, unary)
kono
parents:
diff changeset
214 DEF_INTERNAL_FLT_FN (LOG2, ECF_CONST, log2, unary)
kono
parents:
diff changeset
215 DEF_INTERNAL_FLT_FN (LOGB, ECF_CONST, logb, unary)
kono
parents:
diff changeset
216 DEF_INTERNAL_FLT_FN (SIGNIFICAND, ECF_CONST, significand, unary)
kono
parents:
diff changeset
217 DEF_INTERNAL_FLT_FN (SIN, ECF_CONST, sin, unary)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
218 DEF_INTERNAL_FLT_FLOATN_FN (SQRT, ECF_CONST, sqrt, unary)
111
kono
parents:
diff changeset
219 DEF_INTERNAL_FLT_FN (TAN, ECF_CONST, tan, unary)
kono
parents:
diff changeset
220
kono
parents:
diff changeset
221 /* FP rounding. */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
222 DEF_INTERNAL_FLT_FLOATN_FN (CEIL, ECF_CONST, ceil, unary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
223 DEF_INTERNAL_FLT_FLOATN_FN (FLOOR, ECF_CONST, floor, unary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
224 DEF_INTERNAL_FLT_FLOATN_FN (NEARBYINT, ECF_CONST, nearbyint, unary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
225 DEF_INTERNAL_FLT_FLOATN_FN (RINT, ECF_CONST, rint, unary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
226 DEF_INTERNAL_FLT_FLOATN_FN (ROUND, ECF_CONST, round, unary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
227 DEF_INTERNAL_FLT_FLOATN_FN (TRUNC, ECF_CONST, btrunc, unary)
111
kono
parents:
diff changeset
228
kono
parents:
diff changeset
229 /* Binary math functions. */
kono
parents:
diff changeset
230 DEF_INTERNAL_FLT_FN (ATAN2, ECF_CONST, atan2, binary)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
231 DEF_INTERNAL_FLT_FLOATN_FN (COPYSIGN, ECF_CONST, copysign, binary)
111
kono
parents:
diff changeset
232 DEF_INTERNAL_FLT_FN (FMOD, ECF_CONST, fmod, binary)
kono
parents:
diff changeset
233 DEF_INTERNAL_FLT_FN (POW, ECF_CONST, pow, binary)
kono
parents:
diff changeset
234 DEF_INTERNAL_FLT_FN (REMAINDER, ECF_CONST, remainder, binary)
kono
parents:
diff changeset
235 DEF_INTERNAL_FLT_FN (SCALB, ECF_CONST, scalb, binary)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
236 DEF_INTERNAL_FLT_FLOATN_FN (FMIN, ECF_CONST, fmin, binary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
237 DEF_INTERNAL_FLT_FLOATN_FN (FMAX, ECF_CONST, fmax, binary)
111
kono
parents:
diff changeset
238 DEF_INTERNAL_OPTAB_FN (XORSIGN, ECF_CONST, xorsign, binary)
kono
parents:
diff changeset
239
kono
parents:
diff changeset
240 /* FP scales. */
kono
parents:
diff changeset
241 DEF_INTERNAL_FLT_FN (LDEXP, ECF_CONST, ldexp, binary)
kono
parents:
diff changeset
242
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
243 /* Ternary math functions. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
244 DEF_INTERNAL_FLT_FLOATN_FN (FMA, ECF_CONST, fma, ternary)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
245
111
kono
parents:
diff changeset
246 /* Unary integer ops. */
kono
parents:
diff changeset
247 DEF_INTERNAL_INT_FN (CLRSB, ECF_CONST | ECF_NOTHROW, clrsb, unary)
kono
parents:
diff changeset
248 DEF_INTERNAL_INT_FN (CLZ, ECF_CONST | ECF_NOTHROW, clz, unary)
kono
parents:
diff changeset
249 DEF_INTERNAL_INT_FN (CTZ, ECF_CONST | ECF_NOTHROW, ctz, unary)
kono
parents:
diff changeset
250 DEF_INTERNAL_INT_FN (FFS, ECF_CONST | ECF_NOTHROW, ffs, unary)
kono
parents:
diff changeset
251 DEF_INTERNAL_INT_FN (PARITY, ECF_CONST | ECF_NOTHROW, parity, unary)
kono
parents:
diff changeset
252 DEF_INTERNAL_INT_FN (POPCOUNT, ECF_CONST | ECF_NOTHROW, popcount, unary)
kono
parents:
diff changeset
253
kono
parents:
diff changeset
254 DEF_INTERNAL_FN (GOMP_USE_SIMT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
255 DEF_INTERNAL_FN (GOMP_SIMT_ENTER, ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
256 DEF_INTERNAL_FN (GOMP_SIMT_ENTER_ALLOC, ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
257 DEF_INTERNAL_FN (GOMP_SIMT_EXIT, ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
258 DEF_INTERNAL_FN (GOMP_SIMT_LANE, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
259 DEF_INTERNAL_FN (GOMP_SIMT_VF, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
260 DEF_INTERNAL_FN (GOMP_SIMT_LAST_LANE, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
261 DEF_INTERNAL_FN (GOMP_SIMT_ORDERED_PRED, ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
262 DEF_INTERNAL_FN (GOMP_SIMT_VOTE_ANY, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
263 DEF_INTERNAL_FN (GOMP_SIMT_XCHG_BFLY, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
264 DEF_INTERNAL_FN (GOMP_SIMT_XCHG_IDX, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
265 DEF_INTERNAL_FN (GOMP_SIMD_LANE, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
266 DEF_INTERNAL_FN (GOMP_SIMD_VF, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
267 DEF_INTERNAL_FN (GOMP_SIMD_LAST_LANE, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
268 DEF_INTERNAL_FN (GOMP_SIMD_ORDERED_START, ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
269 DEF_INTERNAL_FN (GOMP_SIMD_ORDERED_END, ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
270 DEF_INTERNAL_FN (LOOP_VECTORIZED, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
271 DEF_INTERNAL_FN (LOOP_DIST_ALIAS, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
272 DEF_INTERNAL_FN (ANNOTATE, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
273 DEF_INTERNAL_FN (UBSAN_NULL, ECF_LEAF | ECF_NOTHROW, ".R.")
kono
parents:
diff changeset
274 DEF_INTERNAL_FN (UBSAN_BOUNDS, ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
275 DEF_INTERNAL_FN (UBSAN_VPTR, ECF_LEAF | ECF_NOTHROW, ".RR..")
kono
parents:
diff changeset
276 DEF_INTERNAL_FN (UBSAN_CHECK_ADD, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
277 DEF_INTERNAL_FN (UBSAN_CHECK_SUB, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
278 DEF_INTERNAL_FN (UBSAN_CHECK_MUL, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
279 DEF_INTERNAL_FN (UBSAN_PTR, ECF_LEAF | ECF_NOTHROW, ".R.")
kono
parents:
diff changeset
280 DEF_INTERNAL_FN (UBSAN_OBJECT_SIZE, ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
281 DEF_INTERNAL_FN (ABNORMAL_DISPATCHER, ECF_NORETURN, NULL)
kono
parents:
diff changeset
282 DEF_INTERNAL_FN (BUILTIN_EXPECT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
283 DEF_INTERNAL_FN (ASAN_CHECK, ECF_TM_PURE | ECF_LEAF | ECF_NOTHROW, "..R..")
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
284 DEF_INTERNAL_FN (ASAN_MARK, ECF_LEAF | ECF_NOTHROW, NULL)
111
kono
parents:
diff changeset
285 DEF_INTERNAL_FN (ASAN_POISON, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL)
kono
parents:
diff changeset
286 DEF_INTERNAL_FN (ASAN_POISON_USE, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL)
kono
parents:
diff changeset
287 DEF_INTERNAL_FN (ADD_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
288 DEF_INTERNAL_FN (SUB_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
289 DEF_INTERNAL_FN (MUL_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
290 DEF_INTERNAL_FN (TSAN_FUNC_EXIT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
291 DEF_INTERNAL_FN (VA_ARG, ECF_NOTHROW | ECF_LEAF, NULL)
kono
parents:
diff changeset
292
kono
parents:
diff changeset
293 /* An unduplicable, uncombinable function. Generally used to preserve
kono
parents:
diff changeset
294 a CFG property in the face of jump threading, tail merging or
kono
parents:
diff changeset
295 other such optimizations. The first argument distinguishes
kono
parents:
diff changeset
296 between uses. See internal-fn.h for usage. */
kono
parents:
diff changeset
297 DEF_INTERNAL_FN (UNIQUE, ECF_NOTHROW, NULL)
kono
parents:
diff changeset
298 DEF_INTERNAL_FN (PHI, 0, NULL)
kono
parents:
diff changeset
299
kono
parents:
diff changeset
300 /* DIM_SIZE and DIM_POS return the size of a particular compute
kono
parents:
diff changeset
301 dimension and the executing thread's position within that
kono
parents:
diff changeset
302 dimension. DIM_POS is pure (and not const) so that it isn't
kono
parents:
diff changeset
303 thought to clobber memory and can be gcse'd within a single
kono
parents:
diff changeset
304 parallel region, but not across FORK/JOIN boundaries. They take a
kono
parents:
diff changeset
305 single INTEGER_CST argument. This might be overly conservative. */
kono
parents:
diff changeset
306 DEF_INTERNAL_FN (GOACC_DIM_SIZE, ECF_CONST | ECF_NOTHROW | ECF_LEAF, ".")
kono
parents:
diff changeset
307 DEF_INTERNAL_FN (GOACC_DIM_POS, ECF_PURE | ECF_NOTHROW | ECF_LEAF, ".")
kono
parents:
diff changeset
308
kono
parents:
diff changeset
309 /* OpenACC looping abstraction. See internal-fn.h for usage. */
kono
parents:
diff changeset
310 DEF_INTERNAL_FN (GOACC_LOOP, ECF_PURE | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
311
kono
parents:
diff changeset
312 /* OpenACC reduction abstraction. See internal-fn.h for usage. */
kono
parents:
diff changeset
313 DEF_INTERNAL_FN (GOACC_REDUCTION, ECF_NOTHROW | ECF_LEAF, NULL)
kono
parents:
diff changeset
314
kono
parents:
diff changeset
315 /* Openacc tile abstraction. Describes the spans of the element loop.
kono
parents:
diff changeset
316 GOACC_TILE (num-loops, loop-no, tile-arg, tile-mask, element-mask). */
kono
parents:
diff changeset
317 DEF_INTERNAL_FN (GOACC_TILE, ECF_NOTHROW | ECF_LEAF, NULL)
kono
parents:
diff changeset
318
kono
parents:
diff changeset
319 /* Set errno to EDOM, if GCC knows how to do that directly for the
kono
parents:
diff changeset
320 current target. */
kono
parents:
diff changeset
321 DEF_INTERNAL_FN (SET_EDOM, ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
322
kono
parents:
diff changeset
323 /* Atomic functions. These don't have ECF_NOTHROW because for
kono
parents:
diff changeset
324 -fnon-call-exceptions they can throw, otherwise we set
kono
parents:
diff changeset
325 gimple_call_nothrow_p on it. */
kono
parents:
diff changeset
326 DEF_INTERNAL_FN (ATOMIC_BIT_TEST_AND_SET, ECF_LEAF, NULL)
kono
parents:
diff changeset
327 DEF_INTERNAL_FN (ATOMIC_BIT_TEST_AND_COMPLEMENT, ECF_LEAF, NULL)
kono
parents:
diff changeset
328 DEF_INTERNAL_FN (ATOMIC_BIT_TEST_AND_RESET, ECF_LEAF, NULL)
kono
parents:
diff changeset
329 DEF_INTERNAL_FN (ATOMIC_COMPARE_EXCHANGE, ECF_LEAF, NULL)
kono
parents:
diff changeset
330
kono
parents:
diff changeset
331 /* To implement [[fallthrough]]. */
kono
parents:
diff changeset
332 DEF_INTERNAL_FN (FALLTHROUGH, ECF_LEAF | ECF_NOTHROW, NULL)
kono
parents:
diff changeset
333
kono
parents:
diff changeset
334 /* To implement __builtin_launder. */
kono
parents:
diff changeset
335 DEF_INTERNAL_FN (LAUNDER, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL)
kono
parents:
diff changeset
336
kono
parents:
diff changeset
337 /* Divmod function. */
kono
parents:
diff changeset
338 DEF_INTERNAL_FN (DIVMOD, ECF_CONST | ECF_LEAF, NULL)
kono
parents:
diff changeset
339
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
340 /* A NOP function with arbitrary arguments and return value. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
341 DEF_INTERNAL_FN (NOP, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
342
111
kono
parents:
diff changeset
343 #undef DEF_INTERNAL_INT_FN
kono
parents:
diff changeset
344 #undef DEF_INTERNAL_FLT_FN
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
345 #undef DEF_INTERNAL_FLT_FLOATN_FN
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
346 #undef DEF_INTERNAL_SIGNED_OPTAB_FN
111
kono
parents:
diff changeset
347 #undef DEF_INTERNAL_OPTAB_FN
kono
parents:
diff changeset
348 #undef DEF_INTERNAL_FN