xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/optabs.def (revision 8feb0f0b7eaff0608f8350bbfa3098827b4bb91b)
1/* Definitions for operation tables, or "optabs".
2   Copyright (C) 1987-2020 Free Software Foundation, Inc.
3
4This file is part of GCC.
5
6GCC is free software; you can redistribute it and/or modify it under
7the terms of the GNU General Public License as published by the Free
8Software Foundation; either version 3, or (at your option) any later
9version.
10
11GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12WARRANTY; without even the implied warranty of MERCHANTABILITY or
13FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14for more details.
15
16You should have received a copy of the GNU General Public License
17along with GCC; see the file COPYING3.  If not see
18<http://www.gnu.org/licenses/>.  */
19
20/* 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
25        code_to_optab.
26
27     CX, NX, VX: An extra pattern entry for a conversion or normal optab.
28
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).
34
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.
39
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
42   the md files.  */
43
44/* The extension libcalls are used for float extension.  */
45OPTAB_CL(sext_optab, "extend$b$a2", SIGN_EXTEND, "extend", gen_extend_conv_libfunc)
46OPTAB_CL(trunc_optab, "trunc$b$a2", TRUNCATE, "trunc", gen_trunc_conv_libfunc)
47OPTAB_CL(zext_optab, "zero_extend$b$a2", ZERO_EXTEND, NULL, NULL)
48
49OPTAB_CL(sfix_optab, "fix$F$b$I$a2", FIX, "fix", gen_fp_to_int_conv_libfunc)
50OPTAB_CL(ufix_optab, "fixuns$F$b$a2", UNSIGNED_FIX, "fixuns", gen_fp_to_int_conv_libfunc)
51OPTAB_CL(sfloat_optab, "float$I$b$F$a2", FLOAT, "float", gen_int_to_fp_conv_libfunc)
52OPTAB_CL(ufloat_optab, "floatuns$I$b$F$a2", UNSIGNED_FLOAT, NULL, gen_ufloat_conv_libfunc)
53
54OPTAB_CL(lrint_optab, "lrint$F$b$I$a2", UNKNOWN, "lrint", gen_int_to_fp_nondecimal_conv_libfunc)
55OPTAB_CL(lround_optab, "lround$F$b$I$a2", UNKNOWN, "lround", gen_int_to_fp_nondecimal_conv_libfunc)
56OPTAB_CL(lfloor_optab, "lfloor$F$b$I$a2", UNKNOWN, "lfloor", gen_int_to_fp_nondecimal_conv_libfunc)
57OPTAB_CL(lceil_optab, "lceil$F$b$I$a2", UNKNOWN, "lceil", gen_int_to_fp_nondecimal_conv_libfunc)
58
59/* Conversions for fixed-point modes and other modes.  */
60OPTAB_CL(fract_optab, "fract$b$a2", FRACT_CONVERT, "fract", gen_fract_conv_libfunc)
61OPTAB_CL(fractuns_optab, "fractuns$I$b$Q$a2", UNSIGNED_FRACT_CONVERT, "fractuns", gen_fractuns_conv_libfunc)
62OPTAB_CX(fractuns_optab, "fractuns$Q$b$I$a2")
63OPTAB_CL(satfract_optab, "satfract$b$Q$a2", SAT_FRACT, "satfract", gen_satfract_conv_libfunc)
64OPTAB_CL(satfractuns_optab, "satfractuns$I$b$Q$a2", UNSIGNED_SAT_FRACT, "satfractuns", gen_satfractuns_conv_libfunc)
65
66OPTAB_CD(sfixtrunc_optab, "fix_trunc$F$b$I$a2")
67OPTAB_CD(ufixtrunc_optab, "fixuns_trunc$F$b$I$a2")
68
69/* Misc optabs that use two modes; model them as "conversions".  */
70OPTAB_CD(smul_widen_optab, "mul$b$a3")
71OPTAB_CD(umul_widen_optab, "umul$b$a3")
72OPTAB_CD(usmul_widen_optab, "usmul$b$a3")
73OPTAB_CD(smadd_widen_optab, "madd$b$a4")
74OPTAB_CD(umadd_widen_optab, "umadd$b$a4")
75OPTAB_CD(ssmadd_widen_optab, "ssmadd$b$a4")
76OPTAB_CD(usmadd_widen_optab, "usmadd$b$a4")
77OPTAB_CD(smsub_widen_optab, "msub$b$a4")
78OPTAB_CD(umsub_widen_optab, "umsub$b$a4")
79OPTAB_CD(ssmsub_widen_optab, "ssmsub$b$a4")
80OPTAB_CD(usmsub_widen_optab, "usmsub$a$b4")
81OPTAB_CD(vec_load_lanes_optab, "vec_load_lanes$a$b")
82OPTAB_CD(vec_store_lanes_optab, "vec_store_lanes$a$b")
83OPTAB_CD(vec_mask_load_lanes_optab, "vec_mask_load_lanes$a$b")
84OPTAB_CD(vec_mask_store_lanes_optab, "vec_mask_store_lanes$a$b")
85OPTAB_CD(vcond_optab, "vcond$a$b")
86OPTAB_CD(vcondu_optab, "vcondu$a$b")
87OPTAB_CD(vcondeq_optab, "vcondeq$a$b")
88OPTAB_CD(vcond_mask_optab, "vcond_mask_$a$b")
89OPTAB_CD(vec_cmp_optab, "vec_cmp$a$b")
90OPTAB_CD(vec_cmpu_optab, "vec_cmpu$a$b")
91OPTAB_CD(vec_cmpeq_optab, "vec_cmpeq$a$b")
92OPTAB_CD(maskload_optab, "maskload$a$b")
93OPTAB_CD(maskstore_optab, "maskstore$a$b")
94OPTAB_CD(gather_load_optab, "gather_load$a$b")
95OPTAB_CD(mask_gather_load_optab, "mask_gather_load$a$b")
96OPTAB_CD(scatter_store_optab, "scatter_store$a$b")
97OPTAB_CD(mask_scatter_store_optab, "mask_scatter_store$a$b")
98OPTAB_CD(vec_extract_optab, "vec_extract$a$b")
99OPTAB_CD(vec_init_optab, "vec_init$a$b")
100
101OPTAB_CD (while_ult_optab, "while_ult$a$b")
102
103OPTAB_NL(add_optab, "add$P$a3", PLUS, "add", '3', gen_int_fp_fixed_libfunc)
104OPTAB_NX(add_optab, "add$F$a3")
105OPTAB_NX(add_optab, "add$Q$a3")
106OPTAB_VL(addv_optab, "addv$I$a3", PLUS, "add", '3', gen_intv_fp_libfunc)
107OPTAB_VX(addv_optab, "add$F$a3")
108OPTAB_NL(ssadd_optab, "ssadd$Q$a3", SS_PLUS, "ssadd", '3', gen_signed_fixed_libfunc)
109OPTAB_NL(usadd_optab, "usadd$Q$a3", US_PLUS, "usadd", '3', gen_unsigned_fixed_libfunc)
110OPTAB_NL(sub_optab, "sub$P$a3", MINUS, "sub", '3', gen_int_fp_fixed_libfunc)
111OPTAB_NX(sub_optab, "sub$F$a3")
112OPTAB_NX(sub_optab, "sub$Q$a3")
113OPTAB_VL(subv_optab, "subv$I$a3", MINUS, "sub", '3', gen_intv_fp_libfunc)
114OPTAB_VX(subv_optab, "sub$F$a3")
115OPTAB_NL(sssub_optab, "sssub$Q$a3", SS_MINUS, "sssub", '3', gen_signed_fixed_libfunc)
116OPTAB_NL(ussub_optab, "ussub$Q$a3", US_MINUS, "ussub", '3', gen_unsigned_fixed_libfunc)
117OPTAB_NL(smul_optab, "mul$Q$a3", MULT, "mul", '3', gen_int_fp_fixed_libfunc)
118OPTAB_NX(smul_optab, "mul$P$a3")
119OPTAB_NX(smul_optab, "mul$F$a3")
120OPTAB_VL(smulv_optab, "mulv$I$a3", MULT, "mul", '3', gen_intv_fp_libfunc)
121OPTAB_VX(smulv_optab, "mul$F$a3")
122OPTAB_NL(ssmul_optab, "ssmul$Q$a3", SS_MULT, "ssmul", '3', gen_signed_fixed_libfunc)
123OPTAB_NL(usmul_optab, "usmul$Q$a3", US_MULT, "usmul", '3', gen_unsigned_fixed_libfunc)
124OPTAB_NL(sdiv_optab, "div$a3", DIV, "div", '3', gen_int_fp_signed_fixed_libfunc)
125OPTAB_VL(sdivv_optab, "divv$I$a3", DIV, "divv", '3', gen_int_libfunc)
126OPTAB_VX(sdivv_optab, "div$F$a3")
127OPTAB_NL(ssdiv_optab, "ssdiv$Q$a3", SS_DIV, "ssdiv", '3', gen_signed_fixed_libfunc)
128OPTAB_NL(udiv_optab, "udiv$I$a3", UDIV, "udiv", '3', gen_int_unsigned_fixed_libfunc)
129OPTAB_NX(udiv_optab, "udiv$Q$a3")
130OPTAB_NL(usdiv_optab, "usdiv$Q$a3", US_DIV, "usdiv", '3', gen_unsigned_fixed_libfunc)
131OPTAB_NC(sdivmod_optab, "divmod$a4", UNKNOWN)
132OPTAB_NC(udivmod_optab, "udivmod$a4", UNKNOWN)
133OPTAB_NL(smod_optab, "mod$a3", MOD, "mod", '3', gen_int_libfunc)
134OPTAB_NL(umod_optab, "umod$a3", UMOD, "umod", '3', gen_int_libfunc)
135OPTAB_NL(ftrunc_optab, "ftrunc$F$a2", UNKNOWN, "ftrunc", '2', gen_fp_libfunc)
136OPTAB_NL(and_optab, "and$a3", AND, "and", '3', gen_int_libfunc)
137OPTAB_NL(ior_optab, "ior$a3", IOR, "ior", '3', gen_int_libfunc)
138OPTAB_NL(xor_optab, "xor$a3", XOR, "xor", '3', gen_int_libfunc)
139OPTAB_NL(ashl_optab, "ashl$a3", ASHIFT, "ashl", '3', gen_int_fixed_libfunc)
140OPTAB_NL(ssashl_optab, "ssashl$Q$a3", SS_ASHIFT, "ssashl", '3', gen_signed_fixed_libfunc)
141OPTAB_NL(usashl_optab, "usashl$Q$a3", US_ASHIFT, "usashl", '3', gen_unsigned_fixed_libfunc)
142OPTAB_NL(ashr_optab, "ashr$a3", ASHIFTRT, "ashr", '3', gen_int_signed_fixed_libfunc)
143OPTAB_NL(lshr_optab, "lshr$a3", LSHIFTRT, "lshr", '3', gen_int_unsigned_fixed_libfunc)
144OPTAB_NC(rotl_optab, "rotl$a3", ROTATE)
145OPTAB_NC(rotr_optab, "rotr$a3", ROTATERT)
146OPTAB_VC(vashl_optab, "vashl$a3", ASHIFT)
147OPTAB_VC(vashr_optab, "vashr$a3", ASHIFTRT)
148OPTAB_VC(vlshr_optab, "vlshr$a3", LSHIFTRT)
149OPTAB_VC(vrotl_optab, "vrotl$a3", ROTATE)
150OPTAB_VC(vrotr_optab, "vrotr$a3", ROTATERT)
151OPTAB_NL(smin_optab, "smin$a3", SMIN, "min", '3', gen_int_fp_libfunc)
152OPTAB_NL(smax_optab, "smax$a3", SMAX, "max", '3', gen_int_fp_libfunc)
153OPTAB_NL(umin_optab, "umin$I$a3", UMIN, "umin", '3', gen_int_libfunc)
154OPTAB_NL(umax_optab, "umax$I$a3", UMAX, "umax", '3', gen_int_libfunc)
155
156OPTAB_NL(neg_optab, "neg$P$a2", NEG, "neg", '2', gen_int_fp_fixed_libfunc)
157OPTAB_NX(neg_optab, "neg$F$a2")
158OPTAB_NX(neg_optab, "neg$Q$a2")
159OPTAB_VL(negv_optab, "negv$I$a2", NEG, "neg", '2', gen_intv_fp_libfunc)
160OPTAB_VX(negv_optab, "neg$F$a2")
161OPTAB_NL(ssneg_optab, "ssneg$Q$a2", SS_NEG, "ssneg", '2', gen_signed_fixed_libfunc)
162OPTAB_NL(usneg_optab, "usneg$Q$a2", US_NEG, "usneg", '2', gen_unsigned_fixed_libfunc)
163OPTAB_NC(abs_optab, "abs$P$a2", ABS)
164OPTAB_NX(abs_optab, "abs$F$a2")
165OPTAB_VC(absv_optab, "absv$I$a2", ABS)
166OPTAB_VX(absv_optab, "abs$F$a2")
167OPTAB_NL(one_cmpl_optab, "one_cmpl$a2", NOT, "one_cmpl", '2', gen_int_libfunc)
168OPTAB_NC(bswap_optab, "bswap$a2", BSWAP)
169OPTAB_NL(ffs_optab, "ffs$a2", FFS, "ffs", '2', gen_int_libfunc)
170OPTAB_NL(clz_optab, "clz$a2", CLZ, "clz", '2', gen_int_libfunc)
171OPTAB_NL(ctz_optab, "ctz$a2", CTZ, "ctz", '2', gen_int_libfunc)
172OPTAB_NL(clrsb_optab, "clrsb$a2", CLRSB, "clrsb", '2', gen_int_libfunc)
173OPTAB_NL(popcount_optab, "popcount$a2", POPCOUNT, "popcount", '2', gen_int_libfunc)
174OPTAB_NL(parity_optab, "parity$a2", PARITY, "parity", '2', gen_int_libfunc)
175
176/* Comparison libcalls for integers MUST come in pairs, signed/unsigned.  */
177OPTAB_NL(cmp_optab, NULL, UNKNOWN, "cmp", '2', gen_int_fp_fixed_libfunc)
178OPTAB_NL(ucmp_optab, NULL, UNKNOWN, "ucmp", '2', gen_int_libfunc)
179
180/* EQ etc are floating point comparisons.  */
181OPTAB_NL(eq_optab, NULL, EQ, "eq", '2', gen_fp_libfunc)
182OPTAB_NL(ne_optab, NULL, NE, "ne", '2', gen_fp_libfunc)
183OPTAB_NL(gt_optab, NULL, GT, "gt", '2', gen_fp_libfunc)
184OPTAB_NL(ge_optab, NULL, GE, "ge", '2', gen_fp_libfunc)
185OPTAB_NL(lt_optab, NULL, LT, "lt", '2', gen_fp_libfunc)
186OPTAB_NL(le_optab, NULL, LE, "le", '2', gen_fp_libfunc)
187OPTAB_NL(unord_optab, NULL, UNORDERED, "unord", '2', gen_fp_libfunc)
188
189OPTAB_NL(powi_optab, NULL, UNKNOWN, "powi", '2', gen_fp_libfunc)
190
191/* These are all initialized individually, on a per-host basis.  */
192OPTAB_NC(sqrt_optab, "sqrt$a2", SQRT)
193OPTAB_NC(sync_old_add_optab, "sync_old_add$I$a", UNKNOWN)
194OPTAB_NC(sync_old_sub_optab, "sync_old_sub$I$a", UNKNOWN)
195OPTAB_NC(sync_old_ior_optab, "sync_old_ior$I$a", UNKNOWN)
196OPTAB_NC(sync_old_and_optab, "sync_old_and$I$a", UNKNOWN)
197OPTAB_NC(sync_old_xor_optab, "sync_old_xor$I$a", UNKNOWN)
198OPTAB_NC(sync_old_nand_optab, "sync_old_nand$I$a", UNKNOWN)
199OPTAB_NC(sync_new_add_optab, "sync_new_add$I$a", UNKNOWN)
200OPTAB_NC(sync_new_sub_optab, "sync_new_sub$I$a", UNKNOWN)
201OPTAB_NC(sync_new_ior_optab, "sync_new_ior$I$a", UNKNOWN)
202OPTAB_NC(sync_new_and_optab, "sync_new_and$I$a", UNKNOWN)
203OPTAB_NC(sync_new_xor_optab, "sync_new_xor$I$a", UNKNOWN)
204OPTAB_NC(sync_new_nand_optab, "sync_new_nand$I$a", UNKNOWN)
205OPTAB_NC(sync_compare_and_swap_optab, "sync_compare_and_swap$I$a", UNKNOWN)
206OPTAB_NC(sync_lock_test_and_set_optab, "sync_lock_test_and_set$I$a", UNKNOWN)
207
208OPTAB_DC(mov_optab, "mov$a", SET)
209OPTAB_DC(movstrict_optab, "movstrict$a", STRICT_LOW_PART)
210OPTAB_D (movmisalign_optab, "movmisalign$a")
211OPTAB_D (storent_optab, "storent$a")
212OPTAB_D (insv_optab, "insv$a")
213OPTAB_D (extv_optab, "extv$a")
214OPTAB_D (extzv_optab, "extzv$a")
215OPTAB_D (insvmisalign_optab, "insvmisalign$a")
216OPTAB_D (extvmisalign_optab, "extvmisalign$a")
217OPTAB_D (extzvmisalign_optab, "extzvmisalign$a")
218OPTAB_D (push_optab, "push$a1")
219OPTAB_D (reload_in_optab, "reload_in$a")
220OPTAB_D (reload_out_optab, "reload_out$a")
221
222OPTAB_DC(cbranch_optab, "cbranch$a4", COMPARE)
223OPTAB_D (addcc_optab, "add$acc")
224OPTAB_D (negcc_optab, "neg$acc")
225OPTAB_D (notcc_optab, "not$acc")
226OPTAB_D (movcc_optab, "mov$acc")
227OPTAB_D (cond_add_optab, "cond_add$a")
228OPTAB_D (cond_sub_optab, "cond_sub$a")
229OPTAB_D (cond_smul_optab, "cond_mul$a")
230OPTAB_D (cond_sdiv_optab, "cond_div$a")
231OPTAB_D (cond_smod_optab, "cond_mod$a")
232OPTAB_D (cond_udiv_optab, "cond_udiv$a")
233OPTAB_D (cond_umod_optab, "cond_umod$a")
234OPTAB_D (cond_and_optab, "cond_and$a")
235OPTAB_D (cond_ior_optab, "cond_ior$a")
236OPTAB_D (cond_xor_optab, "cond_xor$a")
237OPTAB_D (cond_ashl_optab, "cond_ashl$a")
238OPTAB_D (cond_ashr_optab, "cond_ashr$a")
239OPTAB_D (cond_lshr_optab, "cond_lshr$a")
240OPTAB_D (cond_smin_optab, "cond_smin$a")
241OPTAB_D (cond_smax_optab, "cond_smax$a")
242OPTAB_D (cond_umin_optab, "cond_umin$a")
243OPTAB_D (cond_umax_optab, "cond_umax$a")
244OPTAB_D (cond_fma_optab, "cond_fma$a")
245OPTAB_D (cond_fms_optab, "cond_fms$a")
246OPTAB_D (cond_fnma_optab, "cond_fnma$a")
247OPTAB_D (cond_fnms_optab, "cond_fnms$a")
248OPTAB_D (cmov_optab, "cmov$a6")
249OPTAB_D (cstore_optab, "cstore$a4")
250OPTAB_D (ctrap_optab, "ctrap$a4")
251OPTAB_D (addv4_optab, "addv$I$a4")
252OPTAB_D (subv4_optab, "subv$I$a4")
253OPTAB_D (mulv4_optab, "mulv$I$a4")
254OPTAB_D (uaddv4_optab, "uaddv$I$a4")
255OPTAB_D (usubv4_optab, "usubv$I$a4")
256OPTAB_D (umulv4_optab, "umulv$I$a4")
257OPTAB_D (negv3_optab, "negv$I$a3")
258OPTAB_D (addptr3_optab, "addptr$a3")
259
260OPTAB_D (smul_highpart_optab, "smul$a3_highpart")
261OPTAB_D (umul_highpart_optab, "umul$a3_highpart")
262
263OPTAB_D (cmpmem_optab, "cmpmem$a")
264OPTAB_D (cmpstr_optab, "cmpstr$a")
265OPTAB_D (cmpstrn_optab, "cmpstrn$a")
266OPTAB_D (cpymem_optab, "cpymem$a")
267OPTAB_D (movmem_optab, "movmem$a")
268OPTAB_D (setmem_optab, "setmem$a")
269OPTAB_D (strlen_optab, "strlen$a")
270
271OPTAB_DC(fma_optab, "fma$a4", FMA)
272OPTAB_D (fms_optab, "fms$a4")
273OPTAB_D (fnma_optab, "fnma$a4")
274OPTAB_D (fnms_optab, "fnms$a4")
275
276OPTAB_D (rint_optab, "rint$a2")
277OPTAB_D (round_optab, "round$a2")
278OPTAB_D (roundeven_optab, "roundeven$a2")
279OPTAB_D (floor_optab, "floor$a2")
280OPTAB_D (ceil_optab, "ceil$a2")
281OPTAB_D (btrunc_optab, "btrunc$a2")
282OPTAB_D (nearbyint_optab, "nearbyint$a2")
283
284OPTAB_D (acos_optab, "acos$a2")
285OPTAB_D (acosh_optab, "acosh$a2")
286OPTAB_D (asin_optab, "asin$a2")
287OPTAB_D (asinh_optab, "asinh$a2")
288OPTAB_D (atan2_optab, "atan2$a3")
289OPTAB_D (atan_optab, "atan$a2")
290OPTAB_D (atanh_optab, "atanh$a2")
291OPTAB_D (copysign_optab, "copysign$F$a3")
292OPTAB_D (xorsign_optab, "xorsign$F$a3")
293OPTAB_D (cos_optab, "cos$a2")
294OPTAB_D (cosh_optab, "cosh$a2")
295OPTAB_D (exp10_optab, "exp10$a2")
296OPTAB_D (exp2_optab, "exp2$a2")
297OPTAB_D (exp_optab, "exp$a2")
298OPTAB_D (expm1_optab, "expm1$a2")
299OPTAB_D (fmod_optab, "fmod$a3")
300OPTAB_D (hypot_optab, "hypot$a3")
301OPTAB_D (ilogb_optab, "ilogb$a2")
302OPTAB_D (isinf_optab, "isinf$a2")
303OPTAB_D (ldexp_optab, "ldexp$a3")
304OPTAB_D (log10_optab, "log10$a2")
305OPTAB_D (log1p_optab, "log1p$a2")
306OPTAB_D (log2_optab, "log2$a2")
307OPTAB_D (log_optab, "log$a2")
308OPTAB_D (logb_optab, "logb$a2")
309OPTAB_D (pow_optab, "pow$a3")
310OPTAB_D (remainder_optab, "remainder$a3")
311OPTAB_D (rsqrt_optab, "rsqrt$a2")
312OPTAB_D (scalb_optab, "scalb$a3")
313OPTAB_D (signbit_optab, "signbit$F$a2")
314OPTAB_D (significand_optab, "significand$a2")
315OPTAB_D (sin_optab, "sin$a2")
316OPTAB_D (sincos_optab, "sincos$a3")
317OPTAB_D (sinh_optab, "sinh$a2")
318OPTAB_D (tan_optab, "tan$a2")
319OPTAB_D (tanh_optab, "tanh$a2")
320
321/* C99 implementations of fmax/fmin.  */
322OPTAB_D (fmax_optab, "fmax$a3")
323OPTAB_D (fmin_optab, "fmin$a3")
324
325/* Vector reduction to a scalar.  */
326OPTAB_D (reduc_smax_scal_optab, "reduc_smax_scal_$a")
327OPTAB_D (reduc_smin_scal_optab, "reduc_smin_scal_$a")
328OPTAB_D (reduc_plus_scal_optab, "reduc_plus_scal_$a")
329OPTAB_D (reduc_umax_scal_optab, "reduc_umax_scal_$a")
330OPTAB_D (reduc_umin_scal_optab, "reduc_umin_scal_$a")
331OPTAB_D (reduc_and_scal_optab,  "reduc_and_scal_$a")
332OPTAB_D (reduc_ior_scal_optab,  "reduc_ior_scal_$a")
333OPTAB_D (reduc_xor_scal_optab,  "reduc_xor_scal_$a")
334OPTAB_D (fold_left_plus_optab, "fold_left_plus_$a")
335OPTAB_D (mask_fold_left_plus_optab, "mask_fold_left_plus_$a")
336
337OPTAB_D (extract_last_optab, "extract_last_$a")
338OPTAB_D (fold_extract_last_optab, "fold_extract_last_$a")
339
340OPTAB_D (savg_floor_optab, "avg$a3_floor")
341OPTAB_D (uavg_floor_optab, "uavg$a3_floor")
342OPTAB_D (savg_ceil_optab, "avg$a3_ceil")
343OPTAB_D (uavg_ceil_optab, "uavg$a3_ceil")
344OPTAB_D (sdot_prod_optab, "sdot_prod$I$a")
345OPTAB_D (ssum_widen_optab, "widen_ssum$I$a3")
346OPTAB_D (udot_prod_optab, "udot_prod$I$a")
347OPTAB_D (usum_widen_optab, "widen_usum$I$a3")
348OPTAB_D (usad_optab, "usad$I$a")
349OPTAB_D (ssad_optab, "ssad$I$a")
350OPTAB_D (smulhs_optab, "smulhs$a3")
351OPTAB_D (smulhrs_optab, "smulhrs$a3")
352OPTAB_D (umulhs_optab, "umulhs$a3")
353OPTAB_D (umulhrs_optab, "umulhrs$a3")
354OPTAB_D (sdiv_pow2_optab, "sdiv_pow2$a3")
355OPTAB_D (vec_pack_sfix_trunc_optab, "vec_pack_sfix_trunc_$a")
356OPTAB_D (vec_pack_ssat_optab, "vec_pack_ssat_$a")
357OPTAB_D (vec_pack_trunc_optab, "vec_pack_trunc_$a")
358OPTAB_D (vec_pack_ufix_trunc_optab, "vec_pack_ufix_trunc_$a")
359OPTAB_D (vec_pack_sbool_trunc_optab, "vec_pack_sbool_trunc_$a")
360OPTAB_D (vec_pack_usat_optab, "vec_pack_usat_$a")
361OPTAB_D (vec_packs_float_optab, "vec_packs_float_$a")
362OPTAB_D (vec_packu_float_optab, "vec_packu_float_$a")
363OPTAB_D (vec_perm_optab, "vec_perm$a")
364OPTAB_D (vec_realign_load_optab, "vec_realign_load_$a")
365OPTAB_D (vec_set_optab, "vec_set$a")
366OPTAB_D (vec_shl_optab, "vec_shl_$a")
367OPTAB_D (vec_shr_optab, "vec_shr_$a")
368OPTAB_D (vec_unpack_sfix_trunc_hi_optab, "vec_unpack_sfix_trunc_hi_$a")
369OPTAB_D (vec_unpack_sfix_trunc_lo_optab, "vec_unpack_sfix_trunc_lo_$a")
370OPTAB_D (vec_unpack_ufix_trunc_hi_optab, "vec_unpack_ufix_trunc_hi_$a")
371OPTAB_D (vec_unpack_ufix_trunc_lo_optab, "vec_unpack_ufix_trunc_lo_$a")
372OPTAB_D (vec_unpacks_float_hi_optab, "vec_unpacks_float_hi_$a")
373OPTAB_D (vec_unpacks_float_lo_optab, "vec_unpacks_float_lo_$a")
374OPTAB_D (vec_unpacks_hi_optab, "vec_unpacks_hi_$a")
375OPTAB_D (vec_unpacks_lo_optab, "vec_unpacks_lo_$a")
376OPTAB_D (vec_unpacks_sbool_hi_optab, "vec_unpacks_sbool_hi_$a")
377OPTAB_D (vec_unpacks_sbool_lo_optab, "vec_unpacks_sbool_lo_$a")
378OPTAB_D (vec_unpacku_float_hi_optab, "vec_unpacku_float_hi_$a")
379OPTAB_D (vec_unpacku_float_lo_optab, "vec_unpacku_float_lo_$a")
380OPTAB_D (vec_unpacku_hi_optab, "vec_unpacku_hi_$a")
381OPTAB_D (vec_unpacku_lo_optab, "vec_unpacku_lo_$a")
382OPTAB_D (vec_widen_smult_even_optab, "vec_widen_smult_even_$a")
383OPTAB_D (vec_widen_smult_hi_optab, "vec_widen_smult_hi_$a")
384OPTAB_D (vec_widen_smult_lo_optab, "vec_widen_smult_lo_$a")
385OPTAB_D (vec_widen_smult_odd_optab, "vec_widen_smult_odd_$a")
386OPTAB_D (vec_widen_sshiftl_hi_optab, "vec_widen_sshiftl_hi_$a")
387OPTAB_D (vec_widen_sshiftl_lo_optab, "vec_widen_sshiftl_lo_$a")
388OPTAB_D (vec_widen_umult_even_optab, "vec_widen_umult_even_$a")
389OPTAB_D (vec_widen_umult_hi_optab, "vec_widen_umult_hi_$a")
390OPTAB_D (vec_widen_umult_lo_optab, "vec_widen_umult_lo_$a")
391OPTAB_D (vec_widen_umult_odd_optab, "vec_widen_umult_odd_$a")
392OPTAB_D (vec_widen_ushiftl_hi_optab, "vec_widen_ushiftl_hi_$a")
393OPTAB_D (vec_widen_ushiftl_lo_optab, "vec_widen_ushiftl_lo_$a")
394
395OPTAB_D (sync_add_optab, "sync_add$I$a")
396OPTAB_D (sync_and_optab, "sync_and$I$a")
397OPTAB_D (sync_ior_optab, "sync_ior$I$a")
398OPTAB_D (sync_lock_release_optab, "sync_lock_release$I$a")
399OPTAB_D (sync_nand_optab, "sync_nand$I$a")
400OPTAB_D (sync_sub_optab, "sync_sub$I$a")
401OPTAB_D (sync_xor_optab, "sync_xor$I$a")
402
403OPTAB_D (atomic_add_fetch_optab, "atomic_add_fetch$I$a")
404OPTAB_D (atomic_add_optab, "atomic_add$I$a")
405OPTAB_D (atomic_and_fetch_optab, "atomic_and_fetch$I$a")
406OPTAB_D (atomic_and_optab, "atomic_and$I$a")
407OPTAB_D (atomic_bit_test_and_set_optab, "atomic_bit_test_and_set$I$a")
408OPTAB_D (atomic_bit_test_and_complement_optab, "atomic_bit_test_and_complement$I$a")
409OPTAB_D (atomic_bit_test_and_reset_optab, "atomic_bit_test_and_reset$I$a")
410OPTAB_D (atomic_compare_and_swap_optab, "atomic_compare_and_swap$I$a")
411OPTAB_D (atomic_exchange_optab,	 "atomic_exchange$I$a")
412OPTAB_D (atomic_fetch_add_optab, "atomic_fetch_add$I$a")
413OPTAB_D (atomic_fetch_and_optab, "atomic_fetch_and$I$a")
414OPTAB_D (atomic_fetch_nand_optab, "atomic_fetch_nand$I$a")
415OPTAB_D (atomic_fetch_or_optab, "atomic_fetch_or$I$a")
416OPTAB_D (atomic_fetch_sub_optab, "atomic_fetch_sub$I$a")
417OPTAB_D (atomic_fetch_xor_optab, "atomic_fetch_xor$I$a")
418OPTAB_D (atomic_load_optab, "atomic_load$I$a")
419OPTAB_D (atomic_nand_fetch_optab, "atomic_nand_fetch$I$a")
420OPTAB_D (atomic_nand_optab, "atomic_nand$I$a")
421OPTAB_D (atomic_or_fetch_optab, "atomic_or_fetch$I$a")
422OPTAB_D (atomic_or_optab, "atomic_or$I$a")
423OPTAB_D (atomic_store_optab, "atomic_store$I$a")
424OPTAB_D (atomic_sub_fetch_optab, "atomic_sub_fetch$I$a")
425OPTAB_D (atomic_sub_optab, "atomic_sub$I$a")
426OPTAB_D (atomic_xor_fetch_optab, "atomic_xor_fetch$I$a")
427OPTAB_D (atomic_xor_optab, "atomic_xor$I$a")
428
429OPTAB_D (get_thread_pointer_optab, "get_thread_pointer$I$a")
430OPTAB_D (set_thread_pointer_optab, "set_thread_pointer$I$a")
431
432OPTAB_D (check_raw_ptrs_optab, "check_raw_ptrs$a")
433OPTAB_D (check_war_ptrs_optab, "check_war_ptrs$a")
434
435OPTAB_DC (vec_duplicate_optab, "vec_duplicate$a", VEC_DUPLICATE)
436OPTAB_DC (vec_series_optab, "vec_series$a", VEC_SERIES)
437OPTAB_D (vec_shl_insert_optab, "vec_shl_insert_$a")
438