]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/optabs.def
[Ada] Fix documentation for GNAT.Command_Line.Exit_From_Command_Line
[thirdparty/gcc.git] / gcc / optabs.def
CommitLineData
ee65118b 1/* Definitions for operation tables, or "optabs".
fbd26352 2 Copyright (C) 1987-2019 Free Software Foundation, Inc.
ee65118b 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
592e7d69 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. */
ee65118b 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")
2dd8e84c 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")
ee65118b 85OPTAB_CD(vcond_optab, "vcond$a$b")
86OPTAB_CD(vcondu_optab, "vcondu$a$b")
6a2e2a85 87OPTAB_CD(vcondeq_optab, "vcondeq$a$b")
b602a8ec 88OPTAB_CD(vcond_mask_optab, "vcond_mask_$a$b")
dab48979 89OPTAB_CD(vec_cmp_optab, "vec_cmp$a$b")
90OPTAB_CD(vec_cmpu_optab, "vec_cmpu$a$b")
6a2e2a85 91OPTAB_CD(vec_cmpeq_optab, "vec_cmpeq$a$b")
f636f094 92OPTAB_CD(maskload_optab, "maskload$a$b")
93OPTAB_CD(maskstore_optab, "maskstore$a$b")
447443f5 94OPTAB_CD(vec_extract_optab, "vec_extract$a$b")
95OPTAB_CD(vec_init_optab, "vec_init$a$b")
ee65118b 96
60b29a7e 97OPTAB_CD (while_ult_optab, "while_ult$a$b")
98
ee65118b 99OPTAB_NL(add_optab, "add$P$a3", PLUS, "add", '3', gen_int_fp_fixed_libfunc)
100OPTAB_NX(add_optab, "add$F$a3")
101OPTAB_NX(add_optab, "add$Q$a3")
102OPTAB_VL(addv_optab, "addv$I$a3", PLUS, "add", '3', gen_intv_fp_libfunc)
103OPTAB_VX(addv_optab, "add$F$a3")
104OPTAB_NL(ssadd_optab, "ssadd$Q$a3", SS_PLUS, "ssadd", '3', gen_signed_fixed_libfunc)
105OPTAB_NL(usadd_optab, "usadd$Q$a3", US_PLUS, "usadd", '3', gen_unsigned_fixed_libfunc)
106OPTAB_NL(sub_optab, "sub$P$a3", MINUS, "sub", '3', gen_int_fp_fixed_libfunc)
107OPTAB_NX(sub_optab, "sub$F$a3")
108OPTAB_NX(sub_optab, "sub$Q$a3")
109OPTAB_VL(subv_optab, "subv$I$a3", MINUS, "sub", '3', gen_intv_fp_libfunc)
110OPTAB_VX(subv_optab, "sub$F$a3")
111OPTAB_NL(sssub_optab, "sssub$Q$a3", SS_MINUS, "sssub", '3', gen_signed_fixed_libfunc)
112OPTAB_NL(ussub_optab, "ussub$Q$a3", US_MINUS, "ussub", '3', gen_unsigned_fixed_libfunc)
113OPTAB_NL(smul_optab, "mul$Q$a3", MULT, "mul", '3', gen_int_fp_fixed_libfunc)
114OPTAB_NX(smul_optab, "mul$P$a3")
115OPTAB_NX(smul_optab, "mul$F$a3")
116OPTAB_VL(smulv_optab, "mulv$I$a3", MULT, "mul", '3', gen_intv_fp_libfunc)
117OPTAB_VX(smulv_optab, "mul$F$a3")
118OPTAB_NL(ssmul_optab, "ssmul$Q$a3", SS_MULT, "ssmul", '3', gen_signed_fixed_libfunc)
119OPTAB_NL(usmul_optab, "usmul$Q$a3", US_MULT, "usmul", '3', gen_unsigned_fixed_libfunc)
120OPTAB_NL(sdiv_optab, "div$a3", DIV, "div", '3', gen_int_fp_signed_fixed_libfunc)
121OPTAB_VL(sdivv_optab, "divv$I$a3", DIV, "divv", '3', gen_int_libfunc)
122OPTAB_VX(sdivv_optab, "div$F$a3")
123OPTAB_NL(ssdiv_optab, "ssdiv$Q$a3", SS_DIV, "ssdiv", '3', gen_signed_fixed_libfunc)
124OPTAB_NL(udiv_optab, "udiv$I$a3", UDIV, "udiv", '3', gen_int_unsigned_fixed_libfunc)
125OPTAB_NX(udiv_optab, "udiv$Q$a3")
126OPTAB_NL(usdiv_optab, "usdiv$Q$a3", US_DIV, "usdiv", '3', gen_unsigned_fixed_libfunc)
69cf0cfd 127OPTAB_NC(sdivmod_optab, "divmod$a4", UNKNOWN)
128OPTAB_NC(udivmod_optab, "udivmod$a4", UNKNOWN)
ee65118b 129OPTAB_NL(smod_optab, "mod$a3", MOD, "mod", '3', gen_int_libfunc)
130OPTAB_NL(umod_optab, "umod$a3", UMOD, "umod", '3', gen_int_libfunc)
131OPTAB_NL(ftrunc_optab, "ftrunc$F$a2", UNKNOWN, "ftrunc", '2', gen_fp_libfunc)
132OPTAB_NL(and_optab, "and$a3", AND, "and", '3', gen_int_libfunc)
133OPTAB_NL(ior_optab, "ior$a3", IOR, "ior", '3', gen_int_libfunc)
134OPTAB_NL(xor_optab, "xor$a3", XOR, "xor", '3', gen_int_libfunc)
135OPTAB_NL(ashl_optab, "ashl$a3", ASHIFT, "ashl", '3', gen_int_fixed_libfunc)
136OPTAB_NL(ssashl_optab, "ssashl$Q$a3", SS_ASHIFT, "ssashl", '3', gen_signed_fixed_libfunc)
137OPTAB_NL(usashl_optab, "usashl$Q$a3", US_ASHIFT, "usashl", '3', gen_unsigned_fixed_libfunc)
138OPTAB_NL(ashr_optab, "ashr$a3", ASHIFTRT, "ashr", '3', gen_int_signed_fixed_libfunc)
139OPTAB_NL(lshr_optab, "lshr$a3", LSHIFTRT, "lshr", '3', gen_int_unsigned_fixed_libfunc)
140OPTAB_NC(rotl_optab, "rotl$a3", ROTATE)
141OPTAB_NC(rotr_optab, "rotr$a3", ROTATERT)
142OPTAB_VC(vashl_optab, "vashl$a3", ASHIFT)
143OPTAB_VC(vashr_optab, "vashr$a3", ASHIFTRT)
144OPTAB_VC(vlshr_optab, "vlshr$a3", LSHIFTRT)
145OPTAB_VC(vrotl_optab, "vrotl$a3", ROTATE)
146OPTAB_VC(vrotr_optab, "vrotr$a3", ROTATERT)
147OPTAB_NL(smin_optab, "smin$a3", SMIN, "min", '3', gen_int_fp_libfunc)
148OPTAB_NL(smax_optab, "smax$a3", SMAX, "max", '3', gen_int_fp_libfunc)
149OPTAB_NL(umin_optab, "umin$I$a3", UMIN, "umin", '3', gen_int_libfunc)
150OPTAB_NL(umax_optab, "umax$I$a3", UMAX, "umax", '3', gen_int_libfunc)
151
152OPTAB_NL(neg_optab, "neg$P$a2", NEG, "neg", '2', gen_int_fp_fixed_libfunc)
153OPTAB_NX(neg_optab, "neg$F$a2")
154OPTAB_NX(neg_optab, "neg$Q$a2")
155OPTAB_VL(negv_optab, "negv$I$a2", NEG, "neg", '2', gen_intv_fp_libfunc)
156OPTAB_VX(negv_optab, "neg$F$a2")
157OPTAB_NL(ssneg_optab, "ssneg$Q$a2", SS_NEG, "ssneg", '2', gen_signed_fixed_libfunc)
158OPTAB_NL(usneg_optab, "usneg$Q$a2", US_NEG, "usneg", '2', gen_unsigned_fixed_libfunc)
159OPTAB_NC(abs_optab, "abs$P$a2", ABS)
160OPTAB_NX(abs_optab, "abs$F$a2")
161OPTAB_VC(absv_optab, "absv$I$a2", ABS)
162OPTAB_VX(absv_optab, "abs$F$a2")
163OPTAB_NL(one_cmpl_optab, "one_cmpl$a2", NOT, "one_cmpl", '2', gen_int_libfunc)
164OPTAB_NC(bswap_optab, "bswap$a2", BSWAP)
165OPTAB_NL(ffs_optab, "ffs$a2", FFS, "ffs", '2', gen_int_libfunc)
166OPTAB_NL(clz_optab, "clz$a2", CLZ, "clz", '2', gen_int_libfunc)
167OPTAB_NL(ctz_optab, "ctz$a2", CTZ, "ctz", '2', gen_int_libfunc)
168OPTAB_NL(clrsb_optab, "clrsb$a2", CLRSB, "clrsb", '2', gen_int_libfunc)
169OPTAB_NL(popcount_optab, "popcount$a2", POPCOUNT, "popcount", '2', gen_int_libfunc)
170OPTAB_NL(parity_optab, "parity$a2", PARITY, "parity", '2', gen_int_libfunc)
171
172/* Comparison libcalls for integers MUST come in pairs, signed/unsigned. */
173OPTAB_NL(cmp_optab, NULL, UNKNOWN, "cmp", '2', gen_int_fp_fixed_libfunc)
174OPTAB_NL(ucmp_optab, NULL, UNKNOWN, "ucmp", '2', gen_int_libfunc)
175
176/* EQ etc are floating point comparisons. */
177OPTAB_NL(eq_optab, NULL, EQ, "eq", '2', gen_fp_libfunc)
178OPTAB_NL(ne_optab, NULL, NE, "ne", '2', gen_fp_libfunc)
179OPTAB_NL(gt_optab, NULL, GT, "gt", '2', gen_fp_libfunc)
180OPTAB_NL(ge_optab, NULL, GE, "ge", '2', gen_fp_libfunc)
181OPTAB_NL(lt_optab, NULL, LT, "lt", '2', gen_fp_libfunc)
182OPTAB_NL(le_optab, NULL, LE, "le", '2', gen_fp_libfunc)
183OPTAB_NL(unord_optab, NULL, UNORDERED, "unord", '2', gen_fp_libfunc)
184
185OPTAB_NL(powi_optab, NULL, UNKNOWN, "powi", '2', gen_fp_libfunc)
186
187/* These are all initialized individually, on a per-host basis. */
188OPTAB_NC(sqrt_optab, "sqrt$a2", SQRT)
189OPTAB_NC(sync_old_add_optab, "sync_old_add$I$a", UNKNOWN)
190OPTAB_NC(sync_old_sub_optab, "sync_old_sub$I$a", UNKNOWN)
191OPTAB_NC(sync_old_ior_optab, "sync_old_ior$I$a", UNKNOWN)
192OPTAB_NC(sync_old_and_optab, "sync_old_and$I$a", UNKNOWN)
193OPTAB_NC(sync_old_xor_optab, "sync_old_xor$I$a", UNKNOWN)
194OPTAB_NC(sync_old_nand_optab, "sync_old_nand$I$a", UNKNOWN)
195OPTAB_NC(sync_new_add_optab, "sync_new_add$I$a", UNKNOWN)
196OPTAB_NC(sync_new_sub_optab, "sync_new_sub$I$a", UNKNOWN)
197OPTAB_NC(sync_new_ior_optab, "sync_new_ior$I$a", UNKNOWN)
198OPTAB_NC(sync_new_and_optab, "sync_new_and$I$a", UNKNOWN)
199OPTAB_NC(sync_new_xor_optab, "sync_new_xor$I$a", UNKNOWN)
200OPTAB_NC(sync_new_nand_optab, "sync_new_nand$I$a", UNKNOWN)
201OPTAB_NC(sync_compare_and_swap_optab, "sync_compare_and_swap$I$a", UNKNOWN)
202OPTAB_NC(sync_lock_test_and_set_optab, "sync_lock_test_and_set$I$a", UNKNOWN)
203
204OPTAB_DC(mov_optab, "mov$a", SET)
205OPTAB_DC(movstrict_optab, "movstrict$a", STRICT_LOW_PART)
206OPTAB_D (movmisalign_optab, "movmisalign$a")
207OPTAB_D (storent_optab, "storent$a")
43850f7a 208OPTAB_D (insv_optab, "insv$a")
209OPTAB_D (extv_optab, "extv$a")
210OPTAB_D (extzv_optab, "extzv$a")
211OPTAB_D (insvmisalign_optab, "insvmisalign$a")
212OPTAB_D (extvmisalign_optab, "extvmisalign$a")
213OPTAB_D (extzvmisalign_optab, "extzvmisalign$a")
ee65118b 214OPTAB_D (push_optab, "push$a1")
215OPTAB_D (reload_in_optab, "reload_in$a")
216OPTAB_D (reload_out_optab, "reload_out$a")
217
218OPTAB_DC(cbranch_optab, "cbranch$a4", COMPARE)
219OPTAB_D (addcc_optab, "add$acc")
d3faf604 220OPTAB_D (negcc_optab, "neg$acc")
221OPTAB_D (notcc_optab, "not$acc")
ee65118b 222OPTAB_D (movcc_optab, "mov$acc")
88fefa8f 223OPTAB_D (cond_add_optab, "cond_add$a")
224OPTAB_D (cond_sub_optab, "cond_sub$a")
cdb4d5d0 225OPTAB_D (cond_smul_optab, "cond_mul$a")
226OPTAB_D (cond_sdiv_optab, "cond_div$a")
227OPTAB_D (cond_smod_optab, "cond_mod$a")
228OPTAB_D (cond_udiv_optab, "cond_udiv$a")
229OPTAB_D (cond_umod_optab, "cond_umod$a")
88fefa8f 230OPTAB_D (cond_and_optab, "cond_and$a")
231OPTAB_D (cond_ior_optab, "cond_ior$a")
232OPTAB_D (cond_xor_optab, "cond_xor$a")
8d60bb3e 233OPTAB_D (cond_ashl_optab, "cond_ashl$a")
234OPTAB_D (cond_ashr_optab, "cond_ashr$a")
235OPTAB_D (cond_lshr_optab, "cond_lshr$a")
88fefa8f 236OPTAB_D (cond_smin_optab, "cond_smin$a")
237OPTAB_D (cond_smax_optab, "cond_smax$a")
238OPTAB_D (cond_umin_optab, "cond_umin$a")
239OPTAB_D (cond_umax_optab, "cond_umax$a")
6682fc02 240OPTAB_D (cond_fma_optab, "cond_fma$a")
241OPTAB_D (cond_fms_optab, "cond_fms$a")
242OPTAB_D (cond_fnma_optab, "cond_fnma$a")
243OPTAB_D (cond_fnms_optab, "cond_fnms$a")
ee65118b 244OPTAB_D (cmov_optab, "cmov$a6")
245OPTAB_D (cstore_optab, "cstore$a4")
246OPTAB_D (ctrap_optab, "ctrap$a4")
137559b2 247OPTAB_D (addv4_optab, "addv$I$a4")
248OPTAB_D (subv4_optab, "subv$I$a4")
249OPTAB_D (mulv4_optab, "mulv$I$a4")
8e766069 250OPTAB_D (uaddv4_optab, "uaddv$I$a4")
251OPTAB_D (usubv4_optab, "usubv$I$a4")
0c93c8a9 252OPTAB_D (umulv4_optab, "umulv$I$a4")
137559b2 253OPTAB_D (negv3_optab, "negv$I$a3")
79127ad5 254OPTAB_D (addptr3_optab, "addptr$a3")
ee65118b 255
256OPTAB_D (smul_highpart_optab, "smul$a3_highpart")
257OPTAB_D (umul_highpart_optab, "umul$a3_highpart")
258
259OPTAB_D (cmpmem_optab, "cmpmem$a")
260OPTAB_D (cmpstr_optab, "cmpstr$a")
261OPTAB_D (cmpstrn_optab, "cmpstrn$a")
f135a8d4 262OPTAB_D (cpymem_optab, "cpymem$a")
2c958f98 263OPTAB_D (movmem_optab, "movmem$a")
ee65118b 264OPTAB_D (setmem_optab, "setmem$a")
265OPTAB_D (strlen_optab, "strlen$a")
266
267OPTAB_DC(fma_optab, "fma$a4", FMA)
268OPTAB_D (fms_optab, "fms$a4")
269OPTAB_D (fnma_optab, "fnma$a4")
270OPTAB_D (fnms_optab, "fnms$a4")
271
272OPTAB_D (rint_optab, "rint$a2")
273OPTAB_D (round_optab, "round$a2")
274OPTAB_D (floor_optab, "floor$a2")
275OPTAB_D (ceil_optab, "ceil$a2")
276OPTAB_D (btrunc_optab, "btrunc$a2")
277OPTAB_D (nearbyint_optab, "nearbyint$a2")
278
279OPTAB_D (acos_optab, "acos$a2")
2dad6ce6 280OPTAB_D (acosh_optab, "acosh$a2")
ee65118b 281OPTAB_D (asin_optab, "asin$a2")
2dad6ce6 282OPTAB_D (asinh_optab, "asinh$a2")
ee65118b 283OPTAB_D (atan2_optab, "atan2$a3")
284OPTAB_D (atan_optab, "atan$a2")
2dad6ce6 285OPTAB_D (atanh_optab, "atanh$a2")
ee65118b 286OPTAB_D (copysign_optab, "copysign$F$a3")
eb728046 287OPTAB_D (xorsign_optab, "xorsign$F$a3")
ee65118b 288OPTAB_D (cos_optab, "cos$a2")
bfb02b0c 289OPTAB_D (cosh_optab, "cosh$a2")
ee65118b 290OPTAB_D (exp10_optab, "exp10$a2")
291OPTAB_D (exp2_optab, "exp2$a2")
292OPTAB_D (exp_optab, "exp$a2")
293OPTAB_D (expm1_optab, "expm1$a2")
294OPTAB_D (fmod_optab, "fmod$a3")
d4b5717b 295OPTAB_D (hypot_optab, "hypot$a3")
ee65118b 296OPTAB_D (ilogb_optab, "ilogb$a2")
297OPTAB_D (isinf_optab, "isinf$a2")
298OPTAB_D (ldexp_optab, "ldexp$a3")
299OPTAB_D (log10_optab, "log10$a2")
300OPTAB_D (log1p_optab, "log1p$a2")
301OPTAB_D (log2_optab, "log2$a2")
302OPTAB_D (log_optab, "log$a2")
303OPTAB_D (logb_optab, "logb$a2")
304OPTAB_D (pow_optab, "pow$a3")
305OPTAB_D (remainder_optab, "remainder$a3")
4cfd27a5 306OPTAB_D (rsqrt_optab, "rsqrt$a2")
ee65118b 307OPTAB_D (scalb_optab, "scalb$a3")
308OPTAB_D (signbit_optab, "signbit$F$a2")
309OPTAB_D (significand_optab, "significand$a2")
310OPTAB_D (sin_optab, "sin$a2")
311OPTAB_D (sincos_optab, "sincos$a3")
bfb02b0c 312OPTAB_D (sinh_optab, "sinh$a2")
ee65118b 313OPTAB_D (tan_optab, "tan$a2")
bfb02b0c 314OPTAB_D (tanh_optab, "tanh$a2")
ee65118b 315
15429499 316/* C99 implementations of fmax/fmin. */
317OPTAB_D (fmax_optab, "fmax$a3")
318OPTAB_D (fmin_optab, "fmin$a3")
319
f3d76545 320/* Vector reduction to a scalar. */
321OPTAB_D (reduc_smax_scal_optab, "reduc_smax_scal_$a")
322OPTAB_D (reduc_smin_scal_optab, "reduc_smin_scal_$a")
323OPTAB_D (reduc_plus_scal_optab, "reduc_plus_scal_$a")
324OPTAB_D (reduc_umax_scal_optab, "reduc_umax_scal_$a")
325OPTAB_D (reduc_umin_scal_optab, "reduc_umin_scal_$a")
216934f9 326OPTAB_D (reduc_and_scal_optab, "reduc_and_scal_$a")
327OPTAB_D (reduc_ior_scal_optab, "reduc_ior_scal_$a")
328OPTAB_D (reduc_xor_scal_optab, "reduc_xor_scal_$a")
d77809a4 329OPTAB_D (fold_left_plus_optab, "fold_left_plus_$a")
26fb5106 330OPTAB_D (mask_fold_left_plus_optab, "mask_fold_left_plus_$a")
f3d76545 331
384eaff1 332OPTAB_D (extract_last_optab, "extract_last_$a")
3bf95150 333OPTAB_D (fold_extract_last_optab, "fold_extract_last_$a")
384eaff1 334
3f887927 335OPTAB_D (savg_floor_optab, "avg$a3_floor")
336OPTAB_D (uavg_floor_optab, "uavg$a3_floor")
337OPTAB_D (savg_ceil_optab, "avg$a3_ceil")
338OPTAB_D (uavg_ceil_optab, "uavg$a3_ceil")
ee65118b 339OPTAB_D (sdot_prod_optab, "sdot_prod$I$a")
340OPTAB_D (ssum_widen_optab, "widen_ssum$I$a3")
341OPTAB_D (udot_prod_optab, "udot_prod$I$a")
342OPTAB_D (usum_widen_optab, "widen_usum$I$a3")
a2287001 343OPTAB_D (usad_optab, "usad$I$a")
344OPTAB_D (ssad_optab, "ssad$I$a")
ee65118b 345OPTAB_D (vec_pack_sfix_trunc_optab, "vec_pack_sfix_trunc_$a")
346OPTAB_D (vec_pack_ssat_optab, "vec_pack_ssat_$a")
347OPTAB_D (vec_pack_trunc_optab, "vec_pack_trunc_$a")
348OPTAB_D (vec_pack_ufix_trunc_optab, "vec_pack_ufix_trunc_$a")
c04d5ea4 349OPTAB_D (vec_pack_sbool_trunc_optab, "vec_pack_sbool_trunc_$a")
ee65118b 350OPTAB_D (vec_pack_usat_optab, "vec_pack_usat_$a")
0efcdf5a 351OPTAB_D (vec_packs_float_optab, "vec_packs_float_$a")
352OPTAB_D (vec_packu_float_optab, "vec_packu_float_$a")
ee65118b 353OPTAB_D (vec_perm_optab, "vec_perm$a")
354OPTAB_D (vec_realign_load_optab, "vec_realign_load_$a")
355OPTAB_D (vec_set_optab, "vec_set$a")
a79718ca 356OPTAB_D (vec_shl_optab, "vec_shl_$a")
ee65118b 357OPTAB_D (vec_shr_optab, "vec_shr_$a")
0efcdf5a 358OPTAB_D (vec_unpack_sfix_trunc_hi_optab, "vec_unpack_sfix_trunc_hi_$a")
359OPTAB_D (vec_unpack_sfix_trunc_lo_optab, "vec_unpack_sfix_trunc_lo_$a")
360OPTAB_D (vec_unpack_ufix_trunc_hi_optab, "vec_unpack_ufix_trunc_hi_$a")
361OPTAB_D (vec_unpack_ufix_trunc_lo_optab, "vec_unpack_ufix_trunc_lo_$a")
ee65118b 362OPTAB_D (vec_unpacks_float_hi_optab, "vec_unpacks_float_hi_$a")
363OPTAB_D (vec_unpacks_float_lo_optab, "vec_unpacks_float_lo_$a")
364OPTAB_D (vec_unpacks_hi_optab, "vec_unpacks_hi_$a")
365OPTAB_D (vec_unpacks_lo_optab, "vec_unpacks_lo_$a")
c04d5ea4 366OPTAB_D (vec_unpacks_sbool_hi_optab, "vec_unpacks_sbool_hi_$a")
367OPTAB_D (vec_unpacks_sbool_lo_optab, "vec_unpacks_sbool_lo_$a")
ee65118b 368OPTAB_D (vec_unpacku_float_hi_optab, "vec_unpacku_float_hi_$a")
369OPTAB_D (vec_unpacku_float_lo_optab, "vec_unpacku_float_lo_$a")
370OPTAB_D (vec_unpacku_hi_optab, "vec_unpacku_hi_$a")
371OPTAB_D (vec_unpacku_lo_optab, "vec_unpacku_lo_$a")
372OPTAB_D (vec_widen_smult_even_optab, "vec_widen_smult_even_$a")
373OPTAB_D (vec_widen_smult_hi_optab, "vec_widen_smult_hi_$a")
374OPTAB_D (vec_widen_smult_lo_optab, "vec_widen_smult_lo_$a")
375OPTAB_D (vec_widen_smult_odd_optab, "vec_widen_smult_odd_$a")
376OPTAB_D (vec_widen_sshiftl_hi_optab, "vec_widen_sshiftl_hi_$a")
377OPTAB_D (vec_widen_sshiftl_lo_optab, "vec_widen_sshiftl_lo_$a")
378OPTAB_D (vec_widen_umult_even_optab, "vec_widen_umult_even_$a")
379OPTAB_D (vec_widen_umult_hi_optab, "vec_widen_umult_hi_$a")
380OPTAB_D (vec_widen_umult_lo_optab, "vec_widen_umult_lo_$a")
381OPTAB_D (vec_widen_umult_odd_optab, "vec_widen_umult_odd_$a")
382OPTAB_D (vec_widen_ushiftl_hi_optab, "vec_widen_ushiftl_hi_$a")
383OPTAB_D (vec_widen_ushiftl_lo_optab, "vec_widen_ushiftl_lo_$a")
384
385OPTAB_D (sync_add_optab, "sync_add$I$a")
386OPTAB_D (sync_and_optab, "sync_and$I$a")
387OPTAB_D (sync_ior_optab, "sync_ior$I$a")
388OPTAB_D (sync_lock_release_optab, "sync_lock_release$I$a")
389OPTAB_D (sync_nand_optab, "sync_nand$I$a")
390OPTAB_D (sync_sub_optab, "sync_sub$I$a")
391OPTAB_D (sync_xor_optab, "sync_xor$I$a")
392
393OPTAB_D (atomic_add_fetch_optab, "atomic_add_fetch$I$a")
394OPTAB_D (atomic_add_optab, "atomic_add$I$a")
395OPTAB_D (atomic_and_fetch_optab, "atomic_and_fetch$I$a")
396OPTAB_D (atomic_and_optab, "atomic_and$I$a")
9c1a31e4 397OPTAB_D (atomic_bit_test_and_set_optab, "atomic_bit_test_and_set$I$a")
398OPTAB_D (atomic_bit_test_and_complement_optab, "atomic_bit_test_and_complement$I$a")
399OPTAB_D (atomic_bit_test_and_reset_optab, "atomic_bit_test_and_reset$I$a")
ee65118b 400OPTAB_D (atomic_compare_and_swap_optab, "atomic_compare_and_swap$I$a")
401OPTAB_D (atomic_exchange_optab, "atomic_exchange$I$a")
402OPTAB_D (atomic_fetch_add_optab, "atomic_fetch_add$I$a")
403OPTAB_D (atomic_fetch_and_optab, "atomic_fetch_and$I$a")
404OPTAB_D (atomic_fetch_nand_optab, "atomic_fetch_nand$I$a")
405OPTAB_D (atomic_fetch_or_optab, "atomic_fetch_or$I$a")
406OPTAB_D (atomic_fetch_sub_optab, "atomic_fetch_sub$I$a")
407OPTAB_D (atomic_fetch_xor_optab, "atomic_fetch_xor$I$a")
408OPTAB_D (atomic_load_optab, "atomic_load$I$a")
409OPTAB_D (atomic_nand_fetch_optab, "atomic_nand_fetch$I$a")
410OPTAB_D (atomic_nand_optab, "atomic_nand$I$a")
411OPTAB_D (atomic_or_fetch_optab, "atomic_or_fetch$I$a")
412OPTAB_D (atomic_or_optab, "atomic_or$I$a")
413OPTAB_D (atomic_store_optab, "atomic_store$I$a")
414OPTAB_D (atomic_sub_fetch_optab, "atomic_sub_fetch$I$a")
415OPTAB_D (atomic_sub_optab, "atomic_sub$I$a")
416OPTAB_D (atomic_xor_fetch_optab, "atomic_xor_fetch$I$a")
417OPTAB_D (atomic_xor_optab, "atomic_xor$I$a")
badaa04c 418
419OPTAB_D (get_thread_pointer_optab, "get_thread_pointer$I$a")
420OPTAB_D (set_thread_pointer_optab, "set_thread_pointer$I$a")
a308fcf8 421
1619606c 422OPTAB_D (gather_load_optab, "gather_load$a")
423OPTAB_D (mask_gather_load_optab, "mask_gather_load$a")
0bf8b382 424OPTAB_D (scatter_store_optab, "scatter_store$a")
425OPTAB_D (mask_scatter_store_optab, "mask_scatter_store$a")
1619606c 426
a308fcf8 427OPTAB_DC (vec_duplicate_optab, "vec_duplicate$a", VEC_DUPLICATE)
7ed29fa2 428OPTAB_DC (vec_series_optab, "vec_series$a", VEC_SERIES)
633af029 429OPTAB_D (vec_shl_insert_optab, "vec_shl_insert_$a")