Mercurial > hg > CbC > CbC_gcc
comparison gcc/internal-fn.def @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
comparison
equal
deleted
inserted
replaced
131:84e7813d76e9 | 145:1830386684a0 |
---|---|
1 /* Internal functions. | 1 /* Internal functions. |
2 Copyright (C) 2011-2018 Free Software Foundation, Inc. | 2 Copyright (C) 2011-2020 Free Software Foundation, Inc. |
3 | 3 |
4 This file is part of GCC. | 4 This file is part of GCC. |
5 | 5 |
6 GCC is free software; you can redistribute it and/or modify it under | 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 | 7 the terms of the GNU General Public License as published by the Free |
61 | 61 |
62 - cond_binary: a conditional binary optab, such as cond_add<mode> | 62 - cond_binary: a conditional binary optab, such as cond_add<mode> |
63 - cond_ternary: a conditional ternary optab, such as cond_fma_rev<mode> | 63 - cond_ternary: a conditional ternary optab, such as cond_fma_rev<mode> |
64 | 64 |
65 - fold_left: for scalar = FN (scalar, vector), keyed off the vector mode | 65 - fold_left: for scalar = FN (scalar, vector), keyed off the vector mode |
66 - check_ptrs: used for check_{raw,war}_ptrs | |
66 | 67 |
67 DEF_INTERNAL_SIGNED_OPTAB_FN defines an internal function that | 68 DEF_INTERNAL_SIGNED_OPTAB_FN defines an internal function that |
68 maps to one of two optabs, depending on the signedness of an input. | 69 maps to one of two optabs, depending on the signedness of an input. |
69 SIGNED_OPTAB and UNSIGNED_OPTAB are the optabs for signed and | 70 SIGNED_OPTAB and UNSIGNED_OPTAB are the optabs for signed and |
70 unsigned inputs respectively, both without the trailing "_optab". | 71 unsigned inputs respectively, both without the trailing "_optab". |
134 DEF_INTERNAL_OPTAB_FN (STORE_LANES, ECF_CONST, vec_store_lanes, store_lanes) | 135 DEF_INTERNAL_OPTAB_FN (STORE_LANES, ECF_CONST, vec_store_lanes, store_lanes) |
135 DEF_INTERNAL_OPTAB_FN (MASK_STORE_LANES, 0, | 136 DEF_INTERNAL_OPTAB_FN (MASK_STORE_LANES, 0, |
136 vec_mask_store_lanes, mask_store_lanes) | 137 vec_mask_store_lanes, mask_store_lanes) |
137 | 138 |
138 DEF_INTERNAL_OPTAB_FN (WHILE_ULT, ECF_CONST | ECF_NOTHROW, while_ult, while) | 139 DEF_INTERNAL_OPTAB_FN (WHILE_ULT, ECF_CONST | ECF_NOTHROW, while_ult, while) |
140 DEF_INTERNAL_OPTAB_FN (CHECK_RAW_PTRS, ECF_CONST | ECF_NOTHROW, | |
141 check_raw_ptrs, check_ptrs) | |
142 DEF_INTERNAL_OPTAB_FN (CHECK_WAR_PTRS, ECF_CONST | ECF_NOTHROW, | |
143 check_war_ptrs, check_ptrs) | |
139 | 144 |
140 DEF_INTERNAL_OPTAB_FN (VEC_SHL_INSERT, ECF_CONST | ECF_NOTHROW, | 145 DEF_INTERNAL_OPTAB_FN (VEC_SHL_INSERT, ECF_CONST | ECF_NOTHROW, |
141 vec_shl_insert, binary) | 146 vec_shl_insert, binary) |
147 | |
148 DEF_INTERNAL_OPTAB_FN (DIV_POW2, ECF_CONST | ECF_NOTHROW, sdiv_pow2, binary) | |
142 | 149 |
143 DEF_INTERNAL_OPTAB_FN (FMS, ECF_CONST, fms, ternary) | 150 DEF_INTERNAL_OPTAB_FN (FMS, ECF_CONST, fms, ternary) |
144 DEF_INTERNAL_OPTAB_FN (FNMA, ECF_CONST, fnma, ternary) | 151 DEF_INTERNAL_OPTAB_FN (FNMA, ECF_CONST, fnma, ternary) |
145 DEF_INTERNAL_OPTAB_FN (FNMS, ECF_CONST, fnms, ternary) | 152 DEF_INTERNAL_OPTAB_FN (FNMS, ECF_CONST, fnms, ternary) |
146 | 153 |
147 DEF_INTERNAL_SIGNED_OPTAB_FN (AVG_FLOOR, ECF_CONST | ECF_NOTHROW, first, | 154 DEF_INTERNAL_SIGNED_OPTAB_FN (AVG_FLOOR, ECF_CONST | ECF_NOTHROW, first, |
148 savg_floor, uavg_floor, binary) | 155 savg_floor, uavg_floor, binary) |
149 DEF_INTERNAL_SIGNED_OPTAB_FN (AVG_CEIL, ECF_CONST | ECF_NOTHROW, first, | 156 DEF_INTERNAL_SIGNED_OPTAB_FN (AVG_CEIL, ECF_CONST | ECF_NOTHROW, first, |
150 savg_ceil, uavg_ceil, binary) | 157 savg_ceil, uavg_ceil, binary) |
158 | |
159 DEF_INTERNAL_SIGNED_OPTAB_FN (MULHS, ECF_CONST | ECF_NOTHROW, first, | |
160 smulhs, umulhs, binary) | |
161 DEF_INTERNAL_SIGNED_OPTAB_FN (MULHRS, ECF_CONST | ECF_NOTHROW, first, | |
162 smulhrs, umulhrs, binary) | |
151 | 163 |
152 DEF_INTERNAL_OPTAB_FN (COND_ADD, ECF_CONST, cond_add, cond_binary) | 164 DEF_INTERNAL_OPTAB_FN (COND_ADD, ECF_CONST, cond_add, cond_binary) |
153 DEF_INTERNAL_OPTAB_FN (COND_SUB, ECF_CONST, cond_sub, cond_binary) | 165 DEF_INTERNAL_OPTAB_FN (COND_SUB, ECF_CONST, cond_sub, cond_binary) |
154 DEF_INTERNAL_OPTAB_FN (COND_MUL, ECF_CONST, cond_smul, cond_binary) | 166 DEF_INTERNAL_OPTAB_FN (COND_MUL, ECF_CONST, cond_smul, cond_binary) |
155 DEF_INTERNAL_SIGNED_OPTAB_FN (COND_DIV, ECF_CONST, first, | 167 DEF_INTERNAL_SIGNED_OPTAB_FN (COND_DIV, ECF_CONST, first, |
165 cond_and, cond_binary) | 177 cond_and, cond_binary) |
166 DEF_INTERNAL_OPTAB_FN (COND_IOR, ECF_CONST | ECF_NOTHROW, | 178 DEF_INTERNAL_OPTAB_FN (COND_IOR, ECF_CONST | ECF_NOTHROW, |
167 cond_ior, cond_binary) | 179 cond_ior, cond_binary) |
168 DEF_INTERNAL_OPTAB_FN (COND_XOR, ECF_CONST | ECF_NOTHROW, | 180 DEF_INTERNAL_OPTAB_FN (COND_XOR, ECF_CONST | ECF_NOTHROW, |
169 cond_xor, cond_binary) | 181 cond_xor, cond_binary) |
182 DEF_INTERNAL_OPTAB_FN (COND_SHL, ECF_CONST | ECF_NOTHROW, | |
183 cond_ashl, cond_binary) | |
184 DEF_INTERNAL_SIGNED_OPTAB_FN (COND_SHR, ECF_CONST | ECF_NOTHROW, first, | |
185 cond_ashr, cond_lshr, cond_binary) | |
170 | 186 |
171 DEF_INTERNAL_OPTAB_FN (COND_FMA, ECF_CONST, cond_fma, cond_ternary) | 187 DEF_INTERNAL_OPTAB_FN (COND_FMA, ECF_CONST, cond_fma, cond_ternary) |
172 DEF_INTERNAL_OPTAB_FN (COND_FMS, ECF_CONST, cond_fms, cond_ternary) | 188 DEF_INTERNAL_OPTAB_FN (COND_FMS, ECF_CONST, cond_fms, cond_ternary) |
173 DEF_INTERNAL_OPTAB_FN (COND_FNMA, ECF_CONST, cond_fnma, cond_ternary) | 189 DEF_INTERNAL_OPTAB_FN (COND_FNMA, ECF_CONST, cond_fnma, cond_ternary) |
174 DEF_INTERNAL_OPTAB_FN (COND_FNMS, ECF_CONST, cond_fnms, cond_ternary) | 190 DEF_INTERNAL_OPTAB_FN (COND_FNMS, ECF_CONST, cond_fnms, cond_ternary) |
197 fold_extract_last, fold_extract) | 213 fold_extract_last, fold_extract) |
198 | 214 |
199 DEF_INTERNAL_OPTAB_FN (FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW, | 215 DEF_INTERNAL_OPTAB_FN (FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW, |
200 fold_left_plus, fold_left) | 216 fold_left_plus, fold_left) |
201 | 217 |
218 DEF_INTERNAL_OPTAB_FN (MASK_FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW, | |
219 mask_fold_left_plus, mask_fold_left) | |
220 | |
202 /* Unary math functions. */ | 221 /* Unary math functions. */ |
203 DEF_INTERNAL_FLT_FN (ACOS, ECF_CONST, acos, unary) | 222 DEF_INTERNAL_FLT_FN (ACOS, ECF_CONST, acos, unary) |
223 DEF_INTERNAL_FLT_FN (ACOSH, ECF_CONST, acosh, unary) | |
204 DEF_INTERNAL_FLT_FN (ASIN, ECF_CONST, asin, unary) | 224 DEF_INTERNAL_FLT_FN (ASIN, ECF_CONST, asin, unary) |
225 DEF_INTERNAL_FLT_FN (ASINH, ECF_CONST, asinh, unary) | |
205 DEF_INTERNAL_FLT_FN (ATAN, ECF_CONST, atan, unary) | 226 DEF_INTERNAL_FLT_FN (ATAN, ECF_CONST, atan, unary) |
227 DEF_INTERNAL_FLT_FN (ATANH, ECF_CONST, atanh, unary) | |
206 DEF_INTERNAL_FLT_FN (COS, ECF_CONST, cos, unary) | 228 DEF_INTERNAL_FLT_FN (COS, ECF_CONST, cos, unary) |
229 DEF_INTERNAL_FLT_FN (COSH, ECF_CONST, cosh, unary) | |
207 DEF_INTERNAL_FLT_FN (EXP, ECF_CONST, exp, unary) | 230 DEF_INTERNAL_FLT_FN (EXP, ECF_CONST, exp, unary) |
208 DEF_INTERNAL_FLT_FN (EXP10, ECF_CONST, exp10, unary) | 231 DEF_INTERNAL_FLT_FN (EXP10, ECF_CONST, exp10, unary) |
209 DEF_INTERNAL_FLT_FN (EXP2, ECF_CONST, exp2, unary) | 232 DEF_INTERNAL_FLT_FN (EXP2, ECF_CONST, exp2, unary) |
210 DEF_INTERNAL_FLT_FN (EXPM1, ECF_CONST, expm1, unary) | 233 DEF_INTERNAL_FLT_FN (EXPM1, ECF_CONST, expm1, unary) |
211 DEF_INTERNAL_FLT_FN (LOG, ECF_CONST, log, unary) | 234 DEF_INTERNAL_FLT_FN (LOG, ECF_CONST, log, unary) |
212 DEF_INTERNAL_FLT_FN (LOG10, ECF_CONST, log10, unary) | 235 DEF_INTERNAL_FLT_FN (LOG10, ECF_CONST, log10, unary) |
213 DEF_INTERNAL_FLT_FN (LOG1P, ECF_CONST, log1p, unary) | 236 DEF_INTERNAL_FLT_FN (LOG1P, ECF_CONST, log1p, unary) |
214 DEF_INTERNAL_FLT_FN (LOG2, ECF_CONST, log2, unary) | 237 DEF_INTERNAL_FLT_FN (LOG2, ECF_CONST, log2, unary) |
215 DEF_INTERNAL_FLT_FN (LOGB, ECF_CONST, logb, unary) | 238 DEF_INTERNAL_FLT_FN (LOGB, ECF_CONST, logb, unary) |
239 DEF_INTERNAL_FLT_FN (SIGNBIT, ECF_CONST, signbit, unary) | |
216 DEF_INTERNAL_FLT_FN (SIGNIFICAND, ECF_CONST, significand, unary) | 240 DEF_INTERNAL_FLT_FN (SIGNIFICAND, ECF_CONST, significand, unary) |
217 DEF_INTERNAL_FLT_FN (SIN, ECF_CONST, sin, unary) | 241 DEF_INTERNAL_FLT_FN (SIN, ECF_CONST, sin, unary) |
242 DEF_INTERNAL_FLT_FN (SINH, ECF_CONST, sinh, unary) | |
218 DEF_INTERNAL_FLT_FLOATN_FN (SQRT, ECF_CONST, sqrt, unary) | 243 DEF_INTERNAL_FLT_FLOATN_FN (SQRT, ECF_CONST, sqrt, unary) |
219 DEF_INTERNAL_FLT_FN (TAN, ECF_CONST, tan, unary) | 244 DEF_INTERNAL_FLT_FN (TAN, ECF_CONST, tan, unary) |
245 DEF_INTERNAL_FLT_FN (TANH, ECF_CONST, tanh, unary) | |
220 | 246 |
221 /* FP rounding. */ | 247 /* FP rounding. */ |
222 DEF_INTERNAL_FLT_FLOATN_FN (CEIL, ECF_CONST, ceil, unary) | 248 DEF_INTERNAL_FLT_FLOATN_FN (CEIL, ECF_CONST, ceil, unary) |
223 DEF_INTERNAL_FLT_FLOATN_FN (FLOOR, ECF_CONST, floor, unary) | 249 DEF_INTERNAL_FLT_FLOATN_FN (FLOOR, ECF_CONST, floor, unary) |
224 DEF_INTERNAL_FLT_FLOATN_FN (NEARBYINT, ECF_CONST, nearbyint, unary) | 250 DEF_INTERNAL_FLT_FLOATN_FN (NEARBYINT, ECF_CONST, nearbyint, unary) |
225 DEF_INTERNAL_FLT_FLOATN_FN (RINT, ECF_CONST, rint, unary) | 251 DEF_INTERNAL_FLT_FLOATN_FN (RINT, ECF_CONST, rint, unary) |
226 DEF_INTERNAL_FLT_FLOATN_FN (ROUND, ECF_CONST, round, unary) | 252 DEF_INTERNAL_FLT_FLOATN_FN (ROUND, ECF_CONST, round, unary) |
253 DEF_INTERNAL_FLT_FLOATN_FN (ROUNDEVEN, ECF_CONST, roundeven, unary) | |
227 DEF_INTERNAL_FLT_FLOATN_FN (TRUNC, ECF_CONST, btrunc, unary) | 254 DEF_INTERNAL_FLT_FLOATN_FN (TRUNC, ECF_CONST, btrunc, unary) |
228 | 255 |
229 /* Binary math functions. */ | 256 /* Binary math functions. */ |
230 DEF_INTERNAL_FLT_FN (ATAN2, ECF_CONST, atan2, binary) | 257 DEF_INTERNAL_FLT_FN (ATAN2, ECF_CONST, atan2, binary) |
231 DEF_INTERNAL_FLT_FLOATN_FN (COPYSIGN, ECF_CONST, copysign, binary) | 258 DEF_INTERNAL_FLT_FLOATN_FN (COPYSIGN, ECF_CONST, copysign, binary) |
232 DEF_INTERNAL_FLT_FN (FMOD, ECF_CONST, fmod, binary) | 259 DEF_INTERNAL_FLT_FN (FMOD, ECF_CONST, fmod, binary) |
260 DEF_INTERNAL_FLT_FN (HYPOT, ECF_CONST, hypot, binary) | |
233 DEF_INTERNAL_FLT_FN (POW, ECF_CONST, pow, binary) | 261 DEF_INTERNAL_FLT_FN (POW, ECF_CONST, pow, binary) |
234 DEF_INTERNAL_FLT_FN (REMAINDER, ECF_CONST, remainder, binary) | 262 DEF_INTERNAL_FLT_FN (REMAINDER, ECF_CONST, remainder, binary) |
235 DEF_INTERNAL_FLT_FN (SCALB, ECF_CONST, scalb, binary) | 263 DEF_INTERNAL_FLT_FN (SCALB, ECF_CONST, scalb, binary) |
236 DEF_INTERNAL_FLT_FLOATN_FN (FMIN, ECF_CONST, fmin, binary) | 264 DEF_INTERNAL_FLT_FLOATN_FN (FMIN, ECF_CONST, fmin, binary) |
237 DEF_INTERNAL_FLT_FLOATN_FN (FMAX, ECF_CONST, fmax, binary) | 265 DEF_INTERNAL_FLT_FLOATN_FN (FMAX, ECF_CONST, fmax, binary) |
287 DEF_INTERNAL_FN (ADD_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL) | 315 DEF_INTERNAL_FN (ADD_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL) |
288 DEF_INTERNAL_FN (SUB_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL) | 316 DEF_INTERNAL_FN (SUB_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL) |
289 DEF_INTERNAL_FN (MUL_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL) | 317 DEF_INTERNAL_FN (MUL_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL) |
290 DEF_INTERNAL_FN (TSAN_FUNC_EXIT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL) | 318 DEF_INTERNAL_FN (TSAN_FUNC_EXIT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL) |
291 DEF_INTERNAL_FN (VA_ARG, ECF_NOTHROW | ECF_LEAF, NULL) | 319 DEF_INTERNAL_FN (VA_ARG, ECF_NOTHROW | ECF_LEAF, NULL) |
320 DEF_INTERNAL_FN (VEC_CONVERT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL) | |
292 | 321 |
293 /* An unduplicable, uncombinable function. Generally used to preserve | 322 /* An unduplicable, uncombinable function. Generally used to preserve |
294 a CFG property in the face of jump threading, tail merging or | 323 a CFG property in the face of jump threading, tail merging or |
295 other such optimizations. The first argument distinguishes | 324 other such optimizations. The first argument distinguishes |
296 between uses. See internal-fn.h for usage. */ | 325 between uses. See internal-fn.h for usage. */ |
335 DEF_INTERNAL_FN (LAUNDER, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL) | 364 DEF_INTERNAL_FN (LAUNDER, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL) |
336 | 365 |
337 /* Divmod function. */ | 366 /* Divmod function. */ |
338 DEF_INTERNAL_FN (DIVMOD, ECF_CONST | ECF_LEAF, NULL) | 367 DEF_INTERNAL_FN (DIVMOD, ECF_CONST | ECF_LEAF, NULL) |
339 | 368 |
369 /* For coroutines. */ | |
370 DEF_INTERNAL_FN (CO_ACTOR, ECF_NOTHROW | ECF_LEAF, NULL) | |
371 DEF_INTERNAL_FN (CO_YIELD, ECF_NOTHROW, NULL) | |
372 DEF_INTERNAL_FN (CO_SUSPN, ECF_NOTHROW, NULL) | |
373 DEF_INTERNAL_FN (CO_FRAME, ECF_PURE | ECF_NOTHROW | ECF_LEAF, NULL) | |
374 | |
340 /* A NOP function with arbitrary arguments and return value. */ | 375 /* A NOP function with arbitrary arguments and return value. */ |
341 DEF_INTERNAL_FN (NOP, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL) | 376 DEF_INTERNAL_FN (NOP, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL) |
342 | 377 |
343 #undef DEF_INTERNAL_INT_FN | 378 #undef DEF_INTERNAL_INT_FN |
344 #undef DEF_INTERNAL_FLT_FN | 379 #undef DEF_INTERNAL_FLT_FN |