1 /* Definitions for operation tables
, or
"optabs".
2 Copyright (C
) 1987-2024 Free Software Foundation
, Inc.
4 This file is part of GCC.
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
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
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
/>.
*/
20 /* The entries in optabs.def are categorized
:
21 C
: A
"conversion" optab
, which uses two modes
; has libcall data.
22 N
: A
"normal" optab
, which uses one mode
; has libcall data.
23 D
: A
"direct" optab
, which uses one mode
; does not have libcall data.
24 V
: An
"oVerflow" optab. Like N
, but does not record its code in
27 CX
, NX
, VX
: An extra pattern entry for a conversion or normal optab.
29 These patterns may be present in the MD file with names that contain
30 the
mode(s
) used and the name of the operation. This array contains
31 a list of optabs that need to be initialized. Within each name
,
32 $a and $b are used to match a short mode
name (the part of the mode
33 name not including `mode
' and converted to lower-case).
35 $I means that only full integer modes should be considered for the
36 next mode, and $F means that only float modes should be considered.
37 $P means that both full and partial integer modes should be considered.
38 $Q means that only fixed-point modes should be considered.
40 The pattern may be NULL if the optab exists only for the libcalls
41 that we plan to attach to it, and there are no named patterns in
44 /* The extension libcalls are used for float extension. */
45 OPTAB_CL(sext_optab, "extend$b$a2", SIGN_EXTEND, "extend", gen_extend_conv_libfunc)
46 OPTAB_CL(trunc_optab, "trunc$b$a2", TRUNCATE, "trunc", gen_trunc_conv_libfunc)
47 OPTAB_CL(zext_optab, "zero_extend$b$a2", ZERO_EXTEND, NULL, NULL)
49 OPTAB_CL(sfix_optab, "fix$F$b$I$a2", FIX, "fix", gen_fp_to_int_conv_libfunc)
50 OPTAB_CL(ufix_optab, "fixuns$F$b$a2", UNSIGNED_FIX, "fixuns", gen_fp_to_int_conv_libfunc)
51 OPTAB_CL(sfloat_optab, "float$I$b$F$a2", FLOAT, "float", gen_int_to_fp_conv_libfunc)
52 OPTAB_CL(ufloat_optab, "floatuns$I$b$F$a2", UNSIGNED_FLOAT, NULL, gen_ufloat_conv_libfunc)
54 OPTAB_CL(lrint_optab, "lrint$F$b$I$a2", UNKNOWN, "lrint", gen_int_to_fp_nondecimal_conv_libfunc)
55 OPTAB_CL(lround_optab, "lround$F$b$I$a2", UNKNOWN, "lround", gen_int_to_fp_nondecimal_conv_libfunc)
56 OPTAB_CL(lfloor_optab, "lfloor$F$b$I$a2", UNKNOWN, "lfloor", gen_int_to_fp_nondecimal_conv_libfunc)
57 OPTAB_CL(lceil_optab, "lceil$F$b$I$a2", UNKNOWN, "lceil", gen_int_to_fp_nondecimal_conv_libfunc)
59 /* Conversions for fixed-point modes and other modes. */
60 OPTAB_CL(fract_optab, "fract$b$a2", FRACT_CONVERT, "fract", gen_fract_conv_libfunc)
61 OPTAB_CL(fractuns_optab, "fractuns$I$b$Q$a2", UNSIGNED_FRACT_CONVERT, "fractuns", gen_fractuns_conv_libfunc)
62 OPTAB_CX(fractuns_optab, "fractuns$Q$b$I$a2")
63 OPTAB_CL(satfract_optab, "satfract$b$Q$a2", SAT_FRACT, "satfract", gen_satfract_conv_libfunc)
64 OPTAB_CL(satfractuns_optab, "satfractuns$I$b$Q$a2", UNSIGNED_SAT_FRACT, "satfractuns", gen_satfractuns_conv_libfunc)
66 OPTAB_CD(sfixtrunc_optab, "fix_trunc$F$b$I$a2")
67 OPTAB_CD(ufixtrunc_optab, "fixuns_trunc$F$b$I$a2")
69 /* Misc optabs that use two modes; model them as "conversions". */
70 OPTAB_CD(smul_widen_optab, "mul$b$a3")
71 OPTAB_CD(umul_widen_optab, "umul$b$a3")
72 OPTAB_CD(usmul_widen_optab, "usmul$b$a3")
73 OPTAB_CD(smadd_widen_optab, "madd$b$a4")
74 OPTAB_CD(umadd_widen_optab, "umadd$b$a4")
75 OPTAB_CD(ssmadd_widen_optab, "ssmadd$b$a4")
76 OPTAB_CD(usmadd_widen_optab, "usmadd$b$a4")
77 OPTAB_CD(smsub_widen_optab, "msub$b$a4")
78 OPTAB_CD(umsub_widen_optab, "umsub$b$a4")
79 OPTAB_CD(ssmsub_widen_optab, "ssmsub$b$a4")
80 OPTAB_CD(usmsub_widen_optab, "usmsub$a$b4")
81 OPTAB_CD(vec_load_lanes_optab, "vec_load_lanes$a$b")
82 OPTAB_CD(vec_store_lanes_optab, "vec_store_lanes$a$b")
83 OPTAB_CD(vec_mask_load_lanes_optab, "vec_mask_load_lanes$a$b")
84 OPTAB_CD(vec_mask_store_lanes_optab, "vec_mask_store_lanes$a$b")
85 OPTAB_CD(vec_mask_len_load_lanes_optab, "vec_mask_len_load_lanes$a$b")
86 OPTAB_CD(vec_mask_len_store_lanes_optab, "vec_mask_len_store_lanes$a$b")
87 OPTAB_CD(vcond_optab, "vcond$a$b")
88 OPTAB_CD(vcondu_optab, "vcondu$a$b")
89 OPTAB_CD(vcondeq_optab, "vcondeq$a$b")
90 OPTAB_CD(vcond_mask_optab, "vcond_mask_$a$b")
91 OPTAB_CD(vec_cmp_optab, "vec_cmp$a$b")
92 OPTAB_CD(vec_cmpu_optab, "vec_cmpu$a$b")
93 OPTAB_CD(vec_cmpeq_optab, "vec_cmpeq$a$b")
94 OPTAB_CD(maskload_optab, "maskload$a$b")
95 OPTAB_CD(maskstore_optab, "maskstore$a$b")
96 OPTAB_CD(mask_len_load_optab, "mask_len_load$a$b")
97 OPTAB_CD(mask_len_store_optab, "mask_len_store$a$b")
98 OPTAB_CD(gather_load_optab, "gather_load$a$b")
99 OPTAB_CD(mask_gather_load_optab, "mask_gather_load$a$b")
100 OPTAB_CD(mask_len_gather_load_optab, "mask_len_gather_load$a$b")
101 OPTAB_CD(scatter_store_optab, "scatter_store$a$b")
102 OPTAB_CD(mask_scatter_store_optab, "mask_scatter_store$a$b")
103 OPTAB_CD(mask_len_scatter_store_optab, "mask_len_scatter_store$a$b")
104 OPTAB_CD(vec_extract_optab, "vec_extract$a$b")
105 OPTAB_CD(vec_init_optab, "vec_init$a$b")
107 OPTAB_CD (while_ult_optab, "while_ult$a$b")
109 OPTAB_NL(add_optab, "add$P$a3", PLUS, "add", '3', gen_int_fp_fixed_libfunc)
110 OPTAB_NX(add_optab, "add$F$a3")
111 OPTAB_NX(add_optab, "add$Q$a3")
112 OPTAB_VL(addv_optab, "addv$I$a3", PLUS, "add", '3', gen_intv_fp_libfunc)
113 OPTAB_VX(addv_optab, "add$F$a3")
114 OPTAB_NL(ssadd_optab, "ssadd$Q$a3", SS_PLUS, "ssadd", '3', gen_signed_fixed_libfunc)
115 OPTAB_NL(usadd_optab, "usadd$Q$a3", US_PLUS, "usadd", '3', gen_unsigned_fixed_libfunc)
116 OPTAB_NL(sub_optab, "sub$P$a3", MINUS, "sub", '3', gen_int_fp_fixed_libfunc)
117 OPTAB_NX(sub_optab, "sub$F$a3")
118 OPTAB_NX(sub_optab, "sub$Q$a3")
119 OPTAB_VL(subv_optab, "subv$I$a3", MINUS, "sub", '3', gen_intv_fp_libfunc)
120 OPTAB_VX(subv_optab, "sub$F$a3")
121 OPTAB_NL(sssub_optab, "sssub$Q$a3", SS_MINUS, "sssub", '3', gen_signed_fixed_libfunc)
122 OPTAB_NL(ussub_optab, "ussub$Q$a3", US_MINUS, "ussub", '3', gen_unsigned_fixed_libfunc)
123 OPTAB_NL(smul_optab, "mul$Q$a3", MULT, "mul", '3', gen_int_fp_fixed_libfunc)
124 OPTAB_NX(smul_optab, "mul$P$a3")
125 OPTAB_NX(smul_optab, "mul$F$a3")
126 OPTAB_VL(smulv_optab, "mulv$I$a3", MULT, "mul", '3', gen_intv_fp_libfunc)
127 OPTAB_VX(smulv_optab, "mul$F$a3")
128 OPTAB_NL(ssmul_optab, "ssmul$Q$a3", SS_MULT, "ssmul", '3', gen_signed_fixed_libfunc)
129 OPTAB_NL(usmul_optab, "usmul$Q$a3", US_MULT, "usmul", '3', gen_unsigned_fixed_libfunc)
130 OPTAB_NL(sdiv_optab, "div$a3", DIV, "div", '3', gen_int_fp_signed_fixed_libfunc)
131 OPTAB_VL(sdivv_optab, "divv$I$a3", DIV, "divv", '3', gen_int_libfunc)
132 OPTAB_VX(sdivv_optab, "div$F$a3")
133 OPTAB_NL(ssdiv_optab, "ssdiv$Q$a3", SS_DIV, "ssdiv", '3', gen_signed_fixed_libfunc)
134 OPTAB_NL(udiv_optab, "udiv$I$a3", UDIV, "udiv", '3', gen_int_unsigned_fixed_libfunc)
135 OPTAB_NX(udiv_optab, "udiv$Q$a3")
136 OPTAB_NL(usdiv_optab, "usdiv$Q$a3", US_DIV, "usdiv", '3', gen_unsigned_fixed_libfunc)
137 OPTAB_NC(sdivmod_optab, "divmod$a4", UNKNOWN)
138 OPTAB_NC(udivmod_optab, "udivmod$a4", UNKNOWN)
139 OPTAB_NL(smod_optab, "mod$a3", MOD, "mod", '3', gen_int_libfunc)
140 OPTAB_NL(umod_optab, "umod$a3", UMOD, "umod", '3', gen_int_libfunc)
141 OPTAB_NL(ftrunc_optab, "ftrunc$F$a2", UNKNOWN, "ftrunc", '2', gen_fp_libfunc)
142 OPTAB_NL(and_optab, "and$a3", AND, "and", '3', gen_int_libfunc)
143 OPTAB_NL(ior_optab, "ior$a3", IOR, "ior", '3', gen_int_libfunc)
144 OPTAB_NL(xor_optab, "xor$a3", XOR, "xor", '3', gen_int_libfunc)
145 OPTAB_NL(ashl_optab, "ashl$a3", ASHIFT, "ashl", '3', gen_int_fixed_libfunc)
146 OPTAB_NL(ssashl_optab, "ssashl$Q$a3", SS_ASHIFT, "ssashl", '3', gen_signed_fixed_libfunc)
147 OPTAB_NL(usashl_optab, "usashl$Q$a3", US_ASHIFT, "usashl", '3', gen_unsigned_fixed_libfunc)
148 OPTAB_NL(ashr_optab, "ashr$a3", ASHIFTRT, "ashr", '3', gen_int_signed_fixed_libfunc)
149 OPTAB_NL(lshr_optab, "lshr$a3", LSHIFTRT, "lshr", '3', gen_int_unsigned_fixed_libfunc)
150 OPTAB_NC(rotl_optab, "rotl$a3", ROTATE)
151 OPTAB_NC(rotr_optab, "rotr$a3", ROTATERT)
152 OPTAB_VC(vashl_optab, "vashl$a3", ASHIFT)
153 OPTAB_VC(vashr_optab, "vashr$a3", ASHIFTRT)
154 OPTAB_VC(vlshr_optab, "vlshr$a3", LSHIFTRT)
155 OPTAB_VC(vrotl_optab, "vrotl$a3", ROTATE)
156 OPTAB_VC(vrotr_optab, "vrotr$a3", ROTATERT)
157 OPTAB_NL(smin_optab, "smin$a3", SMIN, "min", '3', gen_int_fp_libfunc)
158 OPTAB_NL(smax_optab, "smax$a3", SMAX, "max", '3', gen_int_fp_libfunc)
159 OPTAB_NL(umin_optab, "umin$I$a3", UMIN, "umin", '3', gen_int_libfunc)
160 OPTAB_NL(umax_optab, "umax$I$a3", UMAX, "umax", '3', gen_int_libfunc)
162 OPTAB_NL(neg_optab, "neg$P$a2", NEG, "neg", '2', gen_int_fp_fixed_libfunc)
163 OPTAB_NX(neg_optab, "neg$F$a2")
164 OPTAB_NX(neg_optab, "neg$Q$a2")
165 OPTAB_VL(negv_optab, "negv$I$a2", NEG, "neg", '2', gen_intv_fp_libfunc)
166 OPTAB_VX(negv_optab, "neg$F$a2")
167 OPTAB_NL(ssneg_optab, "ssneg$Q$a2", SS_NEG, "ssneg", '2', gen_signed_fixed_libfunc)
168 OPTAB_NL(usneg_optab, "usneg$Q$a2", US_NEG, "usneg", '2', gen_unsigned_fixed_libfunc)
169 OPTAB_NC(abs_optab, "abs$P$a2", ABS)
170 OPTAB_NX(abs_optab, "abs$F$a2")
171 OPTAB_VC(absv_optab, "absv$I$a2", ABS)
172 OPTAB_VX(absv_optab, "abs$F$a2")
173 OPTAB_NL(one_cmpl_optab, "one_cmpl$a2", NOT, "one_cmpl", '2', gen_int_libfunc)
174 OPTAB_NC(bswap_optab, "bswap$a2", BSWAP)
175 OPTAB_NL(ffs_optab, "ffs$a2", FFS, "ffs", '2', gen_int_libfunc)
176 OPTAB_NL(clz_optab, "clz$a2", CLZ, "clz", '2', gen_int_libfunc)
177 OPTAB_NL(ctz_optab, "ctz$a2", CTZ, "ctz", '2', gen_int_libfunc)
178 OPTAB_NL(clrsb_optab, "clrsb$a2", CLRSB, "clrsb", '2', gen_int_libfunc)
179 OPTAB_NL(popcount_optab, "popcount$a2", POPCOUNT, "popcount", '2', gen_int_libfunc)
180 OPTAB_NL(parity_optab, "parity$a2", PARITY, "parity", '2', gen_int_libfunc)
182 /* Comparison libcalls for integers MUST come in pairs, signed/unsigned. */
183 OPTAB_NL(cmp_optab, NULL, UNKNOWN, "cmp", '2', gen_int_fp_fixed_libfunc)
184 OPTAB_NL(ucmp_optab, NULL, UNKNOWN, "ucmp", '2', gen_int_libfunc)
186 /* EQ etc are floating point comparisons. */
187 OPTAB_NL(eq_optab, NULL, EQ, "eq", '2', gen_fp_libfunc)
188 OPTAB_NL(ne_optab, NULL, NE, "ne", '2', gen_fp_libfunc)
189 OPTAB_NL(gt_optab, NULL, GT, "gt", '2', gen_fp_libfunc)
190 OPTAB_NL(ge_optab, NULL, GE, "ge", '2', gen_fp_libfunc)
191 OPTAB_NL(lt_optab, NULL, LT, "lt", '2', gen_fp_libfunc)
192 OPTAB_NL(le_optab, NULL, LE, "le", '2', gen_fp_libfunc)
193 OPTAB_NL(unord_optab, NULL, UNORDERED, "unord", '2', gen_fp_libfunc)
195 OPTAB_NL(powi_optab, NULL, UNKNOWN, "powi", '2', gen_fp_libfunc)
197 /* These are all initialized individually, on a per-host basis. */
198 OPTAB_NC(sqrt_optab, "sqrt$a2", SQRT)
199 OPTAB_NC(sync_old_add_optab, "sync_old_add$I$a", UNKNOWN)
200 OPTAB_NC(sync_old_sub_optab, "sync_old_sub$I$a", UNKNOWN)
201 OPTAB_NC(sync_old_ior_optab, "sync_old_ior$I$a", UNKNOWN)
202 OPTAB_NC(sync_old_and_optab, "sync_old_and$I$a", UNKNOWN)
203 OPTAB_NC(sync_old_xor_optab, "sync_old_xor$I$a", UNKNOWN)
204 OPTAB_NC(sync_old_nand_optab, "sync_old_nand$I$a", UNKNOWN)
205 OPTAB_NC(sync_new_add_optab, "sync_new_add$I$a", UNKNOWN)
206 OPTAB_NC(sync_new_sub_optab, "sync_new_sub$I$a", UNKNOWN)
207 OPTAB_NC(sync_new_ior_optab, "sync_new_ior$I$a", UNKNOWN)
208 OPTAB_NC(sync_new_and_optab, "sync_new_and$I$a", UNKNOWN)
209 OPTAB_NC(sync_new_xor_optab, "sync_new_xor$I$a", UNKNOWN)
210 OPTAB_NC(sync_new_nand_optab, "sync_new_nand$I$a", UNKNOWN)
211 OPTAB_NC(sync_compare_and_swap_optab, "sync_compare_and_swap$I$a", UNKNOWN)
212 OPTAB_NC(sync_lock_test_and_set_optab, "sync_lock_test_and_set$I$a", UNKNOWN)
214 OPTAB_DC(mov_optab, "mov$a", SET)
215 OPTAB_DC(movstrict_optab, "movstrict$a", STRICT_LOW_PART)
216 OPTAB_D (movmisalign_optab, "movmisalign$a")
217 OPTAB_D (storent_optab, "storent$a")
218 OPTAB_D (insv_optab, "insv$a")
219 OPTAB_D (extv_optab, "extv$a")
220 OPTAB_D (extzv_optab, "extzv$a")
221 OPTAB_D (insvmisalign_optab, "insvmisalign$a")
222 OPTAB_D (extvmisalign_optab, "extvmisalign$a")
223 OPTAB_D (extzvmisalign_optab, "extzvmisalign$a")
224 OPTAB_D (push_optab, "push$a1")
225 OPTAB_D (reload_in_optab, "reload_in$a")
226 OPTAB_D (reload_out_optab, "reload_out$a")
228 OPTAB_DC(cbranch_optab, "cbranch$a4", COMPARE)
229 OPTAB_D (tbranch_eq_optab, "tbranch_eq$a3")
230 OPTAB_D (tbranch_ne_optab, "tbranch_ne$a3")
231 OPTAB_D (addcc_optab, "add$acc")
232 OPTAB_D (negcc_optab, "neg$acc")
233 OPTAB_D (notcc_optab, "not$acc")
234 OPTAB_D (movcc_optab, "mov$acc")
235 OPTAB_D (cond_add_optab, "cond_add$a")
236 OPTAB_D (cond_sub_optab, "cond_sub$a")
237 OPTAB_D (cond_smul_optab, "cond_mul$a")
238 OPTAB_D (cond_sdiv_optab, "cond_div$a")
239 OPTAB_D (cond_smod_optab, "cond_mod$a")
240 OPTAB_D (cond_udiv_optab, "cond_udiv$a")
241 OPTAB_D (cond_umod_optab, "cond_umod$a")
242 OPTAB_D (cond_and_optab, "cond_and$a")
243 OPTAB_D (cond_ior_optab, "cond_ior$a")
244 OPTAB_D (cond_xor_optab, "cond_xor$a")
245 OPTAB_D (cond_ashl_optab, "cond_ashl$a")
246 OPTAB_D (cond_ashr_optab, "cond_ashr$a")
247 OPTAB_D (cond_lshr_optab, "cond_lshr$a")
248 OPTAB_D (cond_smin_optab, "cond_smin$a")
249 OPTAB_D (cond_smax_optab, "cond_smax$a")
250 OPTAB_D (cond_umin_optab, "cond_umin$a")
251 OPTAB_D (cond_umax_optab, "cond_umax$a")
252 OPTAB_D (cond_copysign_optab, "cond_copysign$F$a")
253 OPTAB_D (cond_fmin_optab, "cond_fmin$a")
254 OPTAB_D (cond_fmax_optab, "cond_fmax$a")
255 OPTAB_D (cond_fma_optab, "cond_fma$a")
256 OPTAB_D (cond_fms_optab, "cond_fms$a")
257 OPTAB_D (cond_fnma_optab, "cond_fnma$a")
258 OPTAB_D (cond_fnms_optab, "cond_fnms$a")
259 OPTAB_D (cond_neg_optab, "cond_neg$a")
260 OPTAB_D (cond_one_cmpl_optab, "cond_one_cmpl$a")
261 OPTAB_D (cond_len_add_optab, "cond_len_add$a")
262 OPTAB_D (cond_len_sub_optab, "cond_len_sub$a")
263 OPTAB_D (cond_len_smul_optab, "cond_len_mul$a")
264 OPTAB_D (cond_len_sdiv_optab, "cond_len_div$a")
265 OPTAB_D (cond_len_smod_optab, "cond_len_mod$a")
266 OPTAB_D (cond_len_udiv_optab, "cond_len_udiv$a")
267 OPTAB_D (cond_len_umod_optab, "cond_len_umod$a")
268 OPTAB_D (cond_len_and_optab, "cond_len_and$a")
269 OPTAB_D (cond_len_ior_optab, "cond_len_ior$a")
270 OPTAB_D (cond_len_xor_optab, "cond_len_xor$a")
271 OPTAB_D (cond_len_ashl_optab, "cond_len_ashl$a")
272 OPTAB_D (cond_len_ashr_optab, "cond_len_ashr$a")
273 OPTAB_D (cond_len_lshr_optab, "cond_len_lshr$a")
274 OPTAB_D (cond_len_smin_optab, "cond_len_smin$a")
275 OPTAB_D (cond_len_smax_optab, "cond_len_smax$a")
276 OPTAB_D (cond_len_umin_optab, "cond_len_umin$a")
277 OPTAB_D (cond_len_umax_optab, "cond_len_umax$a")
278 OPTAB_D (cond_len_copysign_optab, "cond_len_copysign$F$a")
279 OPTAB_D (cond_len_fmin_optab, "cond_len_fmin$a")
280 OPTAB_D (cond_len_fmax_optab, "cond_len_fmax$a")
281 OPTAB_D (cond_len_fma_optab, "cond_len_fma$a")
282 OPTAB_D (cond_len_fms_optab, "cond_len_fms$a")
283 OPTAB_D (cond_len_fnma_optab, "cond_len_fnma$a")
284 OPTAB_D (cond_len_fnms_optab, "cond_len_fnms$a")
285 OPTAB_D (cond_len_neg_optab, "cond_len_neg$a")
286 OPTAB_D (cond_len_one_cmpl_optab, "cond_len_one_cmpl$a")
287 OPTAB_D (vcond_mask_len_optab, "vcond_mask_len_$a")
288 OPTAB_D (cmov_optab, "cmov$a6")
289 OPTAB_D (cstore_optab, "cstore$a4")
290 OPTAB_D (ctrap_optab, "ctrap$a4")
291 OPTAB_D (addv4_optab, "addv$I$a4")
292 OPTAB_D (subv4_optab, "subv$I$a4")
293 OPTAB_D (mulv4_optab, "mulv$I$a4")
294 OPTAB_D (uaddv4_optab, "uaddv$I$a4")
295 OPTAB_D (usubv4_optab, "usubv$I$a4")
296 OPTAB_D (umulv4_optab, "umulv$I$a4")
297 OPTAB_D (negv3_optab, "negv$I$a3")
298 OPTAB_D (uaddc5_optab, "uaddc$I$a5")
299 OPTAB_D (usubc5_optab, "usubc$I$a5")
300 OPTAB_D (addptr3_optab, "addptr$a3")
301 OPTAB_D (spaceship_optab, "spaceship$a3")
303 OPTAB_D (smul_highpart_optab, "smul$a3_highpart")
304 OPTAB_D (umul_highpart_optab, "umul$a3_highpart")
306 OPTAB_D (cmpmem_optab, "cmpmem$a")
307 OPTAB_D (cmpstr_optab, "cmpstr$a")
308 OPTAB_D (cmpstrn_optab, "cmpstrn$a")
309 OPTAB_D (cpymem_optab, "cpymem$a")
310 OPTAB_D (movmem_optab, "movmem$a")
311 OPTAB_D (setmem_optab, "setmem$a")
312 OPTAB_D (strlen_optab, "strlen$a")
313 OPTAB_D (rawmemchr_optab, "rawmemchr$a")
315 OPTAB_DC(fma_optab, "fma$a4", FMA)
316 OPTAB_D (fms_optab, "fms$a4")
317 OPTAB_D (fnma_optab, "fnma$a4")
318 OPTAB_D (fnms_optab, "fnms$a4")
320 OPTAB_D (rint_optab, "rint$a2")
321 OPTAB_D (round_optab, "round$a2")
322 OPTAB_D (roundeven_optab, "roundeven$a2")
323 OPTAB_D (floor_optab, "floor$a2")
324 OPTAB_D (ceil_optab, "ceil$a2")
325 OPTAB_D (btrunc_optab, "btrunc$a2")
326 OPTAB_D (nearbyint_optab, "nearbyint$a2")
328 OPTAB_D (acos_optab, "acos$a2")
329 OPTAB_D (acosh_optab, "acosh$a2")
330 OPTAB_D (asin_optab, "asin$a2")
331 OPTAB_D (asinh_optab, "asinh$a2")
332 OPTAB_D (atan2_optab, "atan2$a3")
333 OPTAB_D (atan_optab, "atan$a2")
334 OPTAB_D (atanh_optab, "atanh$a2")
335 OPTAB_D (copysign_optab, "copysign$F$a3")
336 OPTAB_D (xorsign_optab, "xorsign$F$a3")
337 OPTAB_D (cadd90_optab, "cadd90$a3")
338 OPTAB_D (cadd270_optab, "cadd270$a3")
339 OPTAB_D (cmul_optab, "cmul$a3")
340 OPTAB_D (cmul_conj_optab, "cmul_conj$a3")
341 OPTAB_D (cmla_optab, "cmla$a4")
342 OPTAB_D (cmla_conj_optab, "cmla_conj$a4")
343 OPTAB_D (cmls_optab, "cmls$a4")
344 OPTAB_D (cmls_conj_optab, "cmls_conj$a4")
345 OPTAB_D (cos_optab, "cos$a2")
346 OPTAB_D (cosh_optab, "cosh$a2")
347 OPTAB_D (exp10_optab, "exp10$a2")
348 OPTAB_D (exp2_optab, "exp2$a2")
349 OPTAB_D (exp_optab, "exp$a2")
350 OPTAB_D (expm1_optab, "expm1$a2")
351 OPTAB_D (fmod_optab, "fmod$a3")
352 OPTAB_D (hypot_optab, "hypot$a3")
353 OPTAB_D (ilogb_optab, "ilogb$a2")
354 OPTAB_D (isinf_optab, "isinf$a2")
355 OPTAB_D (issignaling_optab, "issignaling$a2")
356 OPTAB_D (ldexp_optab, "ldexp$a3")
357 OPTAB_D (log10_optab, "log10$a2")
358 OPTAB_D (log1p_optab, "log1p$a2")
359 OPTAB_D (log2_optab, "log2$a2")
360 OPTAB_D (log_optab, "log$a2")
361 OPTAB_D (logb_optab, "logb$a2")
362 OPTAB_D (pow_optab, "pow$a3")
363 OPTAB_D (remainder_optab, "remainder$a3")
364 OPTAB_D (rsqrt_optab, "rsqrt$a2")
365 OPTAB_D (scalb_optab, "scalb$a3")
366 OPTAB_D (signbit_optab, "signbit$F$a2")
367 OPTAB_D (significand_optab, "significand$a2")
368 OPTAB_D (sin_optab, "sin$a2")
369 OPTAB_D (sincos_optab, "sincos$a3")
370 OPTAB_D (sinh_optab, "sinh$a2")
371 OPTAB_D (tan_optab, "tan$a2")
372 OPTAB_D (tanh_optab, "tanh$a2")
374 OPTAB_D (fegetround_optab, "fegetround$a")
375 OPTAB_D (feclearexcept_optab, "feclearexcept$a")
376 OPTAB_D (feraiseexcept_optab, "feraiseexcept$a")
378 /* C99 implementations of fmax/fmin. */
379 OPTAB_D (fmax_optab, "fmax$a3")
380 OPTAB_D (fmin_optab, "fmin$a3")
382 /* Vector reduction to a scalar. */
383 OPTAB_D (reduc_fmax_scal_optab, "reduc_fmax_scal_$a")
384 OPTAB_D (reduc_fmin_scal_optab, "reduc_fmin_scal_$a")
385 OPTAB_D (reduc_smax_scal_optab, "reduc_smax_scal_$a")
386 OPTAB_D (reduc_smin_scal_optab, "reduc_smin_scal_$a")
387 OPTAB_D (reduc_plus_scal_optab, "reduc_plus_scal_$a")
388 OPTAB_D (reduc_umax_scal_optab, "reduc_umax_scal_$a")
389 OPTAB_D (reduc_umin_scal_optab, "reduc_umin_scal_$a")
390 OPTAB_D (reduc_and_scal_optab, "reduc_and_scal_$a")
391 OPTAB_D (reduc_ior_scal_optab, "reduc_ior_scal_$a")
392 OPTAB_D (reduc_xor_scal_optab, "reduc_xor_scal_$a")
393 OPTAB_D (fold_left_plus_optab, "fold_left_plus_$a")
394 OPTAB_D (mask_fold_left_plus_optab, "mask_fold_left_plus_$a")
395 OPTAB_D (mask_len_fold_left_plus_optab, "mask_len_fold_left_plus_$a")
397 OPTAB_D (extract_last_optab, "extract_last_$a")
398 OPTAB_D (fold_extract_last_optab, "fold_extract_last_$a")
399 OPTAB_D (len_fold_extract_last_optab, "len_fold_extract_last_$a")
401 OPTAB_D (uabd_optab, "uabd$a3")
402 OPTAB_D (sabd_optab, "sabd$a3")
403 OPTAB_D (savg_floor_optab, "avg$a3_floor")
404 OPTAB_D (uavg_floor_optab, "uavg$a3_floor")
405 OPTAB_D (savg_ceil_optab, "avg$a3_ceil")
406 OPTAB_D (uavg_ceil_optab, "uavg$a3_ceil")
407 OPTAB_D (sdot_prod_optab, "sdot_prod$I$a")
408 OPTAB_D (ssum_widen_optab, "widen_ssum$I$a3")
409 OPTAB_D (udot_prod_optab, "udot_prod$I$a")
410 OPTAB_D (usdot_prod_optab, "usdot_prod$I$a")
411 OPTAB_D (usum_widen_optab, "widen_usum$I$a3")
412 OPTAB_D (usad_optab, "usad$I$a")
413 OPTAB_D (ssad_optab, "ssad$I$a")
414 OPTAB_D (smulhs_optab, "smulhs$a3")
415 OPTAB_D (smulhrs_optab, "smulhrs$a3")
416 OPTAB_D (umulhs_optab, "umulhs$a3")
417 OPTAB_D (umulhrs_optab, "umulhrs$a3")
418 OPTAB_D (sdiv_pow2_optab, "sdiv_pow2$a3")
419 OPTAB_D (vec_pack_sfix_trunc_optab, "vec_pack_sfix_trunc_$a")
420 OPTAB_D (vec_pack_ssat_optab, "vec_pack_ssat_$a")
421 OPTAB_D (vec_pack_trunc_optab, "vec_pack_trunc_$a")
422 OPTAB_D (vec_pack_ufix_trunc_optab, "vec_pack_ufix_trunc_$a")
423 OPTAB_D (vec_pack_sbool_trunc_optab, "vec_pack_sbool_trunc_$a")
424 OPTAB_D (vec_pack_usat_optab, "vec_pack_usat_$a")
425 OPTAB_D (vec_packs_float_optab, "vec_packs_float_$a")
426 OPTAB_D (vec_packu_float_optab, "vec_packu_float_$a")
427 OPTAB_D (vec_perm_optab, "vec_perm$a")
428 OPTAB_D (vec_realign_load_optab, "vec_realign_load_$a")
429 OPTAB_D (vec_set_optab, "vec_set$a")
430 OPTAB_D (vec_shl_optab, "vec_shl_$a")
431 OPTAB_D (vec_shr_optab, "vec_shr_$a")
432 OPTAB_D (vec_unpack_sfix_trunc_hi_optab, "vec_unpack_sfix_trunc_hi_$a")
433 OPTAB_D (vec_unpack_sfix_trunc_lo_optab, "vec_unpack_sfix_trunc_lo_$a")
434 OPTAB_D (vec_unpack_ufix_trunc_hi_optab, "vec_unpack_ufix_trunc_hi_$a")
435 OPTAB_D (vec_unpack_ufix_trunc_lo_optab, "vec_unpack_ufix_trunc_lo_$a")
436 OPTAB_D (vec_unpacks_float_hi_optab, "vec_unpacks_float_hi_$a")
437 OPTAB_D (vec_unpacks_float_lo_optab, "vec_unpacks_float_lo_$a")
438 OPTAB_D (vec_unpacks_hi_optab, "vec_unpacks_hi_$a")
439 OPTAB_D (vec_unpacks_lo_optab, "vec_unpacks_lo_$a")
440 OPTAB_D (vec_unpacks_sbool_hi_optab, "vec_unpacks_sbool_hi_$a")
441 OPTAB_D (vec_unpacks_sbool_lo_optab, "vec_unpacks_sbool_lo_$a")
442 OPTAB_D (vec_unpacku_float_hi_optab, "vec_unpacku_float_hi_$a")
443 OPTAB_D (vec_unpacku_float_lo_optab, "vec_unpacku_float_lo_$a")
444 OPTAB_D (vec_unpacku_hi_optab, "vec_unpacku_hi_$a")
445 OPTAB_D (vec_unpacku_lo_optab, "vec_unpacku_lo_$a")
446 OPTAB_D (vec_widen_smult_even_optab, "vec_widen_smult_even_$a")
447 OPTAB_D (vec_widen_smult_hi_optab, "vec_widen_smult_hi_$a")
448 OPTAB_D (vec_widen_smult_lo_optab, "vec_widen_smult_lo_$a")
449 OPTAB_D (vec_widen_smult_odd_optab, "vec_widen_smult_odd_$a")
450 OPTAB_D (vec_widen_ssub_optab, "vec_widen_ssub_$a")
451 OPTAB_D (vec_widen_ssub_hi_optab, "vec_widen_ssub_hi_$a")
452 OPTAB_D (vec_widen_ssub_lo_optab, "vec_widen_ssub_lo_$a")
453 OPTAB_D (vec_widen_ssub_odd_optab, "vec_widen_ssub_odd_$a")
454 OPTAB_D (vec_widen_ssub_even_optab, "vec_widen_ssub_even_$a")
455 OPTAB_D (vec_widen_sadd_optab, "vec_widen_sadd_$a")
456 OPTAB_D (vec_widen_sadd_hi_optab, "vec_widen_sadd_hi_$a")
457 OPTAB_D (vec_widen_sadd_lo_optab, "vec_widen_sadd_lo_$a")
458 OPTAB_D (vec_widen_sadd_odd_optab, "vec_widen_sadd_odd_$a")
459 OPTAB_D (vec_widen_sadd_even_optab, "vec_widen_sadd_even_$a")
460 OPTAB_D (vec_widen_sabd_optab, "vec_widen_sabd_$a")
461 OPTAB_D (vec_widen_sabd_hi_optab, "vec_widen_sabd_hi_$a")
462 OPTAB_D (vec_widen_sabd_lo_optab, "vec_widen_sabd_lo_$a")
463 OPTAB_D (vec_widen_sabd_odd_optab, "vec_widen_sabd_odd_$a")
464 OPTAB_D (vec_widen_sabd_even_optab, "vec_widen_sabd_even_$a")
465 OPTAB_D (vec_widen_sshiftl_hi_optab, "vec_widen_sshiftl_hi_$a")
466 OPTAB_D (vec_widen_sshiftl_lo_optab, "vec_widen_sshiftl_lo_$a")
467 OPTAB_D (vec_widen_umult_even_optab, "vec_widen_umult_even_$a")
468 OPTAB_D (vec_widen_umult_hi_optab, "vec_widen_umult_hi_$a")
469 OPTAB_D (vec_widen_umult_lo_optab, "vec_widen_umult_lo_$a")
470 OPTAB_D (vec_widen_umult_odd_optab, "vec_widen_umult_odd_$a")
471 OPTAB_D (vec_widen_ushiftl_hi_optab, "vec_widen_ushiftl_hi_$a")
472 OPTAB_D (vec_widen_ushiftl_lo_optab, "vec_widen_ushiftl_lo_$a")
473 OPTAB_D (vec_widen_usub_optab, "vec_widen_usub_$a")
474 OPTAB_D (vec_widen_usub_hi_optab, "vec_widen_usub_hi_$a")
475 OPTAB_D (vec_widen_usub_lo_optab, "vec_widen_usub_lo_$a")
476 OPTAB_D (vec_widen_usub_odd_optab, "vec_widen_usub_odd_$a")
477 OPTAB_D (vec_widen_usub_even_optab, "vec_widen_usub_even_$a")
478 OPTAB_D (vec_widen_uadd_optab, "vec_widen_uadd_$a")
479 OPTAB_D (vec_widen_uadd_hi_optab, "vec_widen_uadd_hi_$a")
480 OPTAB_D (vec_widen_uadd_lo_optab, "vec_widen_uadd_lo_$a")
481 OPTAB_D (vec_widen_uadd_odd_optab, "vec_widen_uadd_odd_$a")
482 OPTAB_D (vec_widen_uadd_even_optab, "vec_widen_uadd_even_$a")
483 OPTAB_D (vec_widen_uabd_optab, "vec_widen_uabd_$a")
484 OPTAB_D (vec_widen_uabd_hi_optab, "vec_widen_uabd_hi_$a")
485 OPTAB_D (vec_widen_uabd_lo_optab, "vec_widen_uabd_lo_$a")
486 OPTAB_D (vec_widen_uabd_odd_optab, "vec_widen_uabd_odd_$a")
487 OPTAB_D (vec_widen_uabd_even_optab, "vec_widen_uabd_even_$a")
488 OPTAB_D (vec_addsub_optab, "vec_addsub$a3")
489 OPTAB_D (vec_fmaddsub_optab, "vec_fmaddsub$a4")
490 OPTAB_D (vec_fmsubadd_optab, "vec_fmsubadd$a4")
492 OPTAB_D (sync_add_optab, "sync_add$I$a")
493 OPTAB_D (sync_and_optab, "sync_and$I$a")
494 OPTAB_D (sync_ior_optab, "sync_ior$I$a")
495 OPTAB_D (sync_lock_release_optab, "sync_lock_release$I$a")
496 OPTAB_D (sync_nand_optab, "sync_nand$I$a")
497 OPTAB_D (sync_sub_optab, "sync_sub$I$a")
498 OPTAB_D (sync_xor_optab, "sync_xor$I$a")
500 OPTAB_D (atomic_add_fetch_optab, "atomic_add_fetch$I$a")
501 OPTAB_D (atomic_add_optab, "atomic_add$I$a")
502 OPTAB_D (atomic_and_fetch_optab, "atomic_and_fetch$I$a")
503 OPTAB_D (atomic_and_optab, "atomic_and$I$a")
504 OPTAB_D (atomic_bit_test_and_set_optab, "atomic_bit_test_and_set$I$a")
505 OPTAB_D (atomic_bit_test_and_complement_optab, "atomic_bit_test_and_complement$I$a")
506 OPTAB_D (atomic_bit_test_and_reset_optab, "atomic_bit_test_and_reset$I$a")
507 OPTAB_D (atomic_compare_and_swap_optab, "atomic_compare_and_swap$I$a")
508 OPTAB_D (atomic_exchange_optab, "atomic_exchange$I$a")
509 OPTAB_D (atomic_fetch_add_optab, "atomic_fetch_add$I$a")
510 OPTAB_D (atomic_fetch_and_optab, "atomic_fetch_and$I$a")
511 OPTAB_D (atomic_fetch_nand_optab, "atomic_fetch_nand$I$a")
512 OPTAB_D (atomic_fetch_or_optab, "atomic_fetch_or$I$a")
513 OPTAB_D (atomic_fetch_sub_optab, "atomic_fetch_sub$I$a")
514 OPTAB_D (atomic_fetch_xor_optab, "atomic_fetch_xor$I$a")
515 OPTAB_D (atomic_load_optab, "atomic_load$I$a")
516 OPTAB_D (atomic_nand_fetch_optab, "atomic_nand_fetch$I$a")
517 OPTAB_D (atomic_nand_optab, "atomic_nand$I$a")
518 OPTAB_D (atomic_or_fetch_optab, "atomic_or_fetch$I$a")
519 OPTAB_D (atomic_or_optab, "atomic_or$I$a")
520 OPTAB_D (atomic_store_optab, "atomic_store$I$a")
521 OPTAB_D (atomic_sub_fetch_optab, "atomic_sub_fetch$I$a")
522 OPTAB_D (atomic_sub_optab, "atomic_sub$I$a")
523 OPTAB_D (atomic_xor_fetch_optab, "atomic_xor_fetch$I$a")
524 OPTAB_D (atomic_xor_optab, "atomic_xor$I$a")
525 OPTAB_D (atomic_add_fetch_cmp_0_optab, "atomic_add_fetch_cmp_0$I$a")
526 OPTAB_D (atomic_sub_fetch_cmp_0_optab, "atomic_sub_fetch_cmp_0$I$a")
527 OPTAB_D (atomic_and_fetch_cmp_0_optab, "atomic_and_fetch_cmp_0$I$a")
528 OPTAB_D (atomic_or_fetch_cmp_0_optab, "atomic_or_fetch_cmp_0$I$a")
529 OPTAB_D (atomic_xor_fetch_cmp_0_optab, "atomic_xor_fetch_cmp_0$I$a")
531 OPTAB_D (get_thread_pointer_optab, "get_thread_pointer$I$a")
532 OPTAB_D (set_thread_pointer_optab, "set_thread_pointer$I$a")
534 OPTAB_D (check_raw_ptrs_optab, "check_raw_ptrs$a")
535 OPTAB_D (check_war_ptrs_optab, "check_war_ptrs$a")
537 OPTAB_DC (vec_duplicate_optab, "vec_duplicate$a", VEC_DUPLICATE)
538 OPTAB_DC (vec_series_optab, "vec_series$a", VEC_SERIES)
539 OPTAB_D (vec_shl_insert_optab, "vec_shl_insert_$a")
540 OPTAB_D (len_load_optab, "len_load_$a")
541 OPTAB_D (len_store_optab, "len_store_$a")
542 OPTAB_D (select_vl_optab, "select_vl$a")