[PR testsuite/116860] Testsuite adjustment for recently added tests
[official-gcc.git] / gcc / config / aarch64 / aarch64-sve-builtins-sve2.def
blobb622fe334587b016959ecf59007c06a62a2729f9
1 /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
2 Copyright (C) 2020-2025 Free Software Foundation, Inc.
4 This file is part of GCC.
6 GCC is free software; you can redistribute it and/or modify it
7 under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
9 any later version.
11 GCC is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
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 #define REQUIRED_EXTENSIONS sve_and_sme (AARCH64_FL_SVE2, 0)
21 DEF_SVE_FUNCTION (svaba, ternary_opt_n, all_integer, none)
22 DEF_SVE_FUNCTION (svabalb, ternary_long_opt_n, hsd_integer, none)
23 DEF_SVE_FUNCTION (svabalt, ternary_long_opt_n, hsd_integer, none)
24 DEF_SVE_FUNCTION (svabdlb, binary_long_opt_n, hsd_integer, none)
25 DEF_SVE_FUNCTION (svabdlt, binary_long_opt_n, hsd_integer, none)
26 DEF_SVE_FUNCTION (svadalp, binary_wide, hsd_integer, mxz)
27 DEF_SVE_FUNCTION (svadclb, ternary_opt_n, sd_unsigned, none)
28 DEF_SVE_FUNCTION (svadclt, ternary_opt_n, sd_unsigned, none)
29 DEF_SVE_FUNCTION (svaddhnb, binary_narrowb_opt_n, hsd_integer, none)
30 DEF_SVE_FUNCTION (svaddhnt, binary_narrowt_opt_n, hsd_integer, none)
31 DEF_SVE_FUNCTION (svaddlb, binary_long_opt_n, hsd_integer, none)
32 DEF_SVE_FUNCTION (svaddlbt, binary_long_opt_n, hsd_signed, none)
33 DEF_SVE_FUNCTION (svaddlt, binary_long_opt_n, hsd_integer, none)
34 DEF_SVE_FUNCTION (svaddp, binary, all_arith, mx)
35 DEF_SVE_FUNCTION (svaddwb, binary_wide_opt_n, hsd_integer, none)
36 DEF_SVE_FUNCTION (svaddwt, binary_wide_opt_n, hsd_integer, none)
37 DEF_SVE_FUNCTION (svbcax, ternary_opt_n, all_integer, none)
38 DEF_SVE_FUNCTION (svbsl, ternary_opt_n, all_integer, none)
39 DEF_SVE_FUNCTION (svbsl1n, ternary_opt_n, all_integer, none)
40 DEF_SVE_FUNCTION (svbsl2n, ternary_opt_n, all_integer, none)
41 DEF_SVE_FUNCTION (svcadd, binary_rotate, all_integer, none)
42 DEF_SVE_FUNCTION (svcdot, ternary_qq_rotate, sd_signed, none)
43 DEF_SVE_FUNCTION (svcdot_lane, ternary_qq_lane_rotate, sd_signed, none)
44 DEF_SVE_FUNCTION (svcmla, ternary_rotate, all_integer, none)
45 DEF_SVE_FUNCTION (svcmla_lane, ternary_lane_rotate, hs_integer, none)
46 DEF_SVE_FUNCTION (svcvtlt, unary_convert, cvt_long, mx)
47 DEF_SVE_FUNCTION (svcvtnt, unary_convert_narrowt, cvt_narrow, mx)
48 DEF_SVE_FUNCTION (svcvtx, unary_convert, cvt_narrow_s, mxz)
49 DEF_SVE_FUNCTION (svcvtxnt, unary_convert_narrowt, cvt_narrow_s, mx)
50 DEF_SVE_FUNCTION (sveor3, ternary_opt_n, all_integer, none)
51 DEF_SVE_FUNCTION (sveorbt, ternary_opt_n, all_integer, none)
52 DEF_SVE_FUNCTION (sveortb, ternary_opt_n, all_integer, none)
53 DEF_SVE_FUNCTION (svhadd, binary_opt_n, all_integer, mxz)
54 DEF_SVE_FUNCTION (svhsub, binary_opt_n, all_integer, mxz)
55 DEF_SVE_FUNCTION (svhsubr, binary_opt_n, all_integer, mxz)
56 DEF_SVE_FUNCTION (svlogb, unary_to_int, all_float, mxz)
57 DEF_SVE_FUNCTION (svmaxnmp, binary, all_float, mx)
58 DEF_SVE_FUNCTION (svmaxp, binary, all_arith, mx)
59 DEF_SVE_FUNCTION (svminnmp, binary, all_float, mx)
60 DEF_SVE_FUNCTION (svminp, binary, all_arith, mx)
61 DEF_SVE_FUNCTION (svmla_lane, ternary_lane, hsd_integer, none)
62 DEF_SVE_FUNCTION (svmlalb, ternary_long_opt_n, s_float_hsd_integer, none)
63 DEF_SVE_FUNCTION (svmlalb_lane, ternary_long_lane, s_float_sd_integer, none)
64 DEF_SVE_FUNCTION (svmlalt, ternary_long_opt_n, s_float_hsd_integer, none)
65 DEF_SVE_FUNCTION (svmlalt_lane, ternary_long_lane, s_float_sd_integer, none)
66 DEF_SVE_FUNCTION (svmls_lane, ternary_lane, hsd_integer, none)
67 DEF_SVE_FUNCTION (svmlslb, ternary_long_opt_n, s_float_hsd_integer, none)
68 DEF_SVE_FUNCTION (svmlslb_lane, ternary_long_lane, s_float_sd_integer, none)
69 DEF_SVE_FUNCTION (svmlslt, ternary_long_opt_n, s_float_hsd_integer, none)
70 DEF_SVE_FUNCTION (svmlslt_lane, ternary_long_lane, s_float_sd_integer, none)
71 DEF_SVE_FUNCTION (svmovlb, unary_long, hsd_integer, none)
72 DEF_SVE_FUNCTION (svmovlt, unary_long, hsd_integer, none)
73 DEF_SVE_FUNCTION (svmul_lane, binary_lane, hsd_integer, none)
74 DEF_SVE_FUNCTION (svmullb, binary_long_opt_n, hsd_integer, none)
75 DEF_SVE_FUNCTION (svmullb_lane, binary_long_lane, sd_integer, none)
76 DEF_SVE_FUNCTION (svmullt, binary_long_opt_n, hsd_integer, none)
77 DEF_SVE_FUNCTION (svmullt_lane, binary_long_lane, sd_integer, none)
78 DEF_SVE_FUNCTION (svnbsl, ternary_opt_n, all_integer, none)
79 DEF_SVE_FUNCTION (svpmul, binary_opt_n, b_unsigned, none)
80 DEF_SVE_FUNCTION (svpmullb, binary_long_opt_n, hd_unsigned, none)
81 DEF_SVE_FUNCTION (svpmullb_pair, binary_opt_n, bs_unsigned, none)
82 DEF_SVE_FUNCTION (svpmullt, binary_long_opt_n, hd_unsigned, none)
83 DEF_SVE_FUNCTION (svpmullt_pair, binary_opt_n, bs_unsigned, none)
84 DEF_SVE_FUNCTION (svqabs, unary, all_signed, mxz)
85 DEF_SVE_FUNCTION (svqadd, binary_opt_n, all_integer, mxz)
86 DEF_SVE_FUNCTION (svqcadd, binary_rotate, all_signed, none)
87 DEF_SVE_FUNCTION (svqdmlalb, ternary_long_opt_n, hsd_signed, none)
88 DEF_SVE_FUNCTION (svqdmlalb_lane, ternary_long_lane, sd_signed, none)
89 DEF_SVE_FUNCTION (svqdmlalbt, ternary_long_opt_n, hsd_signed, none)
90 DEF_SVE_FUNCTION (svqdmlalt, ternary_long_opt_n, hsd_signed, none)
91 DEF_SVE_FUNCTION (svqdmlalt_lane, ternary_long_lane, sd_signed, none)
92 DEF_SVE_FUNCTION (svqdmlslb, ternary_long_opt_n, hsd_signed, none)
93 DEF_SVE_FUNCTION (svqdmlslb_lane, ternary_long_lane, sd_signed, none)
94 DEF_SVE_FUNCTION (svqdmlslbt, ternary_long_opt_n, hsd_signed, none)
95 DEF_SVE_FUNCTION (svqdmlslt, ternary_long_opt_n, hsd_signed, none)
96 DEF_SVE_FUNCTION (svqdmlslt_lane, ternary_long_lane, sd_signed, none)
97 DEF_SVE_FUNCTION (svqdmulh, binary_opt_single_n, all_signed, none)
98 DEF_SVE_FUNCTION (svqdmulh_lane, binary_lane, hsd_signed, none)
99 DEF_SVE_FUNCTION (svqdmullb, binary_long_opt_n, hsd_signed, none)
100 DEF_SVE_FUNCTION (svqdmullb_lane, binary_long_lane, sd_signed, none)
101 DEF_SVE_FUNCTION (svqdmullt, binary_long_opt_n, hsd_signed, none)
102 DEF_SVE_FUNCTION (svqdmullt_lane, binary_long_lane, sd_signed, none)
103 DEF_SVE_FUNCTION (svqneg, unary, all_signed, mxz)
104 DEF_SVE_FUNCTION (svqrdcmlah, ternary_rotate, all_signed, none)
105 DEF_SVE_FUNCTION (svqrdcmlah_lane, ternary_lane_rotate, hs_signed, none)
106 DEF_SVE_FUNCTION (svqrdmlah, ternary_opt_n, all_signed, none)
107 DEF_SVE_FUNCTION (svqrdmlah_lane, ternary_lane, hsd_signed, none)
108 DEF_SVE_FUNCTION (svqrdmlsh, ternary_opt_n, all_signed, none)
109 DEF_SVE_FUNCTION (svqrdmlsh_lane, ternary_lane, hsd_signed, none)
110 DEF_SVE_FUNCTION (svqrdmulh, binary_opt_n, all_signed, none)
111 DEF_SVE_FUNCTION (svqrdmulh_lane, binary_lane, hsd_signed, none)
112 DEF_SVE_FUNCTION (svqrshl, binary_int_opt_n, all_integer, mxz)
113 DEF_SVE_FUNCTION (svqrshrnb, shift_right_imm_narrowb, hsd_integer, none)
114 DEF_SVE_FUNCTION (svqrshrnt, shift_right_imm_narrowt, hsd_integer, none)
115 DEF_SVE_FUNCTION (svqrshrunb, shift_right_imm_narrowb_to_uint, hsd_signed, none)
116 DEF_SVE_FUNCTION (svqrshrunt, shift_right_imm_narrowt_to_uint, hsd_signed, none)
117 DEF_SVE_FUNCTION (svqshl, binary_int_opt_n, all_integer, mxz)
118 DEF_SVE_FUNCTION (svqshlu, shift_left_imm_to_uint, all_signed, mxz)
119 DEF_SVE_FUNCTION (svqshrnb, shift_right_imm_narrowb, hsd_integer, none)
120 DEF_SVE_FUNCTION (svqshrnt, shift_right_imm_narrowt, hsd_integer, none)
121 DEF_SVE_FUNCTION (svqshrunb, shift_right_imm_narrowb_to_uint, hsd_signed, none)
122 DEF_SVE_FUNCTION (svqshrunt, shift_right_imm_narrowt_to_uint, hsd_signed, none)
123 DEF_SVE_FUNCTION (svqsub, binary_opt_n, all_integer, mxz)
124 DEF_SVE_FUNCTION (svqsubr, binary_opt_n, all_integer, mxz)
125 DEF_SVE_FUNCTION (svqxtnb, unary_narrowb, hsd_integer, none)
126 DEF_SVE_FUNCTION (svqxtnt, unary_narrowt, hsd_integer, none)
127 DEF_SVE_FUNCTION (svqxtunb, unary_narrowb_to_uint, hsd_signed, none)
128 DEF_SVE_FUNCTION (svqxtunt, unary_narrowt_to_uint, hsd_signed, none)
129 DEF_SVE_FUNCTION (svraddhnb, binary_narrowb_opt_n, hsd_integer, none)
130 DEF_SVE_FUNCTION (svraddhnt, binary_narrowt_opt_n, hsd_integer, none)
131 DEF_SVE_FUNCTION (svrecpe, unary, s_unsigned, mxz)
132 DEF_SVE_FUNCTION (svrhadd, binary_opt_n, all_integer, mxz)
133 DEF_SVE_FUNCTION (svrshl, binary_int_opt_single_n, all_integer, mxz)
134 DEF_SVE_FUNCTION (svrshr, shift_right_imm, all_integer, mxz)
135 DEF_SVE_FUNCTION (svrshrnb, shift_right_imm_narrowb, hsd_integer, none)
136 DEF_SVE_FUNCTION (svrshrnt, shift_right_imm_narrowt, hsd_integer, none)
137 DEF_SVE_FUNCTION (svrsqrte, unary, s_unsigned, mxz)
138 DEF_SVE_FUNCTION (svrsra, ternary_shift_right_imm, all_integer, none)
139 DEF_SVE_FUNCTION (svrsubhnb, binary_narrowb_opt_n, hsd_integer, none)
140 DEF_SVE_FUNCTION (svrsubhnt, binary_narrowt_opt_n, hsd_integer, none)
141 DEF_SVE_FUNCTION (svsbclb, ternary_opt_n, sd_unsigned, none)
142 DEF_SVE_FUNCTION (svsbclt, ternary_opt_n, sd_unsigned, none)
143 DEF_SVE_FUNCTION (svshllb, shift_left_imm_long, hsd_integer, none)
144 DEF_SVE_FUNCTION (svshllt, shift_left_imm_long, hsd_integer, none)
145 DEF_SVE_FUNCTION (svshrnb, shift_right_imm_narrowb, hsd_integer, none)
146 DEF_SVE_FUNCTION (svshrnt, shift_right_imm_narrowt, hsd_integer, none)
147 DEF_SVE_FUNCTION (svsli, ternary_shift_left_imm, all_integer, none)
148 DEF_SVE_FUNCTION (svsqadd, binary_int_opt_n, all_unsigned, mxz)
149 DEF_SVE_FUNCTION (svsra, ternary_shift_right_imm, all_integer, none)
150 DEF_SVE_FUNCTION (svsri, ternary_shift_right_imm, all_integer, none)
151 DEF_SVE_FUNCTION (svsubhnb, binary_narrowb_opt_n, hsd_integer, none)
152 DEF_SVE_FUNCTION (svsubhnt, binary_narrowt_opt_n, hsd_integer, none)
153 DEF_SVE_FUNCTION (svsublb, binary_long_opt_n, hsd_integer, none)
154 DEF_SVE_FUNCTION (svsublbt, binary_long_opt_n, hsd_signed, none)
155 DEF_SVE_FUNCTION (svsublt, binary_long_opt_n, hsd_integer, none)
156 DEF_SVE_FUNCTION (svsubltb, binary_long_opt_n, hsd_signed, none)
157 DEF_SVE_FUNCTION (svsubwb, binary_wide_opt_n, hsd_integer, none)
158 DEF_SVE_FUNCTION (svsubwt, binary_wide_opt_n, hsd_integer, none)
159 DEF_SVE_FUNCTION (svtbl2, tbl_tuple, all_data, none)
160 DEF_SVE_FUNCTION (svtbx, ternary_uint, all_data, none)
161 DEF_SVE_FUNCTION (svuqadd, binary_uint_opt_n, all_signed, mxz)
162 DEF_SVE_FUNCTION (svwhilege, compare_scalar, while, none)
163 DEF_SVE_FUNCTION (svwhilegt, compare_scalar, while, none)
164 DEF_SVE_FUNCTION (svwhilerw, compare_ptr, all_data, none)
165 DEF_SVE_FUNCTION (svwhilewr, compare_ptr, all_data, none)
166 DEF_SVE_FUNCTION (svxar, ternary_shift_right_imm, all_integer, none)
167 #undef REQUIRED_EXTENSIONS
169 #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2)
170 DEF_SVE_FUNCTION (svhistcnt, binary_to_uint, sd_integer, z)
171 DEF_SVE_FUNCTION (svhistseg, binary_to_uint, b_integer, none)
172 DEF_SVE_FUNCTION (svldnt1_gather, load_gather_sv_restricted, sd_data, implicit)
173 DEF_SVE_FUNCTION (svldnt1_gather, load_gather_vs, sd_data, implicit)
174 DEF_SVE_FUNCTION (svldnt1sb_gather, load_ext_gather_offset_restricted, sd_integer, implicit)
175 DEF_SVE_FUNCTION (svldnt1sh_gather, load_ext_gather_index_restricted, sd_integer, implicit)
176 DEF_SVE_FUNCTION (svldnt1sh_gather, load_ext_gather_offset_restricted, sd_integer, implicit)
177 DEF_SVE_FUNCTION (svldnt1sw_gather, load_ext_gather_index_restricted, d_integer, implicit)
178 DEF_SVE_FUNCTION (svldnt1sw_gather, load_ext_gather_offset_restricted, d_integer, implicit)
179 DEF_SVE_FUNCTION (svldnt1ub_gather, load_ext_gather_offset_restricted, sd_integer, implicit)
180 DEF_SVE_FUNCTION (svldnt1uh_gather, load_ext_gather_index_restricted, sd_integer, implicit)
181 DEF_SVE_FUNCTION (svldnt1uh_gather, load_ext_gather_offset_restricted, sd_integer, implicit)
182 DEF_SVE_FUNCTION (svldnt1uw_gather, load_ext_gather_index_restricted, d_integer, implicit)
183 DEF_SVE_FUNCTION (svldnt1uw_gather, load_ext_gather_offset_restricted, d_integer, implicit)
184 DEF_SVE_FUNCTION (svmatch, compare, bh_integer, implicit)
185 DEF_SVE_FUNCTION (svnmatch, compare, bh_integer, implicit)
186 DEF_SVE_FUNCTION (svstnt1_scatter, store_scatter_index_restricted, sd_data, implicit)
187 DEF_SVE_FUNCTION (svstnt1_scatter, store_scatter_offset_restricted, sd_data, implicit)
188 DEF_SVE_FUNCTION (svstnt1b_scatter, store_scatter_offset_restricted, sd_integer, implicit)
189 DEF_SVE_FUNCTION (svstnt1h_scatter, store_scatter_index_restricted, sd_integer, implicit)
190 DEF_SVE_FUNCTION (svstnt1h_scatter, store_scatter_offset_restricted, sd_integer, implicit)
191 DEF_SVE_FUNCTION (svstnt1w_scatter, store_scatter_index_restricted, d_integer, implicit)
192 DEF_SVE_FUNCTION (svstnt1w_scatter, store_scatter_offset_restricted, d_integer, implicit)
193 #undef REQUIRED_EXTENSIONS
195 #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2 \
196 | AARCH64_FL_SVE2_AES)
197 DEF_SVE_FUNCTION (svaesd, binary, b_unsigned, none)
198 DEF_SVE_FUNCTION (svaese, binary, b_unsigned, none)
199 DEF_SVE_FUNCTION (svaesimc, unary, b_unsigned, none)
200 DEF_SVE_FUNCTION (svaesmc, unary, b_unsigned, none)
201 DEF_SVE_FUNCTION (svpmullb_pair, binary_opt_n, d_unsigned, none)
202 DEF_SVE_FUNCTION (svpmullt_pair, binary_opt_n, d_unsigned, none)
203 #undef REQUIRED_EXTENSIONS
205 #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2 \
206 | AARCH64_FL_SVE2_BITPERM)
207 DEF_SVE_FUNCTION (svbdep, binary_opt_n, all_unsigned, none)
208 DEF_SVE_FUNCTION (svbext, binary_opt_n, all_unsigned, none)
209 DEF_SVE_FUNCTION (svbgrp, binary_opt_n, all_unsigned, none)
210 #undef REQUIRED_EXTENSIONS
212 #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2 \
213 | AARCH64_FL_SVE2_SHA3)
214 DEF_SVE_FUNCTION (svrax1, binary, d_integer, none)
215 #undef REQUIRED_EXTENSIONS
217 #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2 \
218 | AARCH64_FL_SVE2_SM4)
219 DEF_SVE_FUNCTION (svsm4e, binary, s_unsigned, none)
220 DEF_SVE_FUNCTION (svsm4ekey, binary, s_unsigned, none)
221 #undef REQUIRED_EXTENSIONS
223 #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2p1)
224 DEF_SVE_FUNCTION (svaddqv, reduction_neonq, all_arith, implicit)
225 DEF_SVE_FUNCTION (svandqv, reduction_neonq, all_integer, implicit)
226 DEF_SVE_FUNCTION (svdup_laneq, unary_lane, all_data, none)
227 DEF_SVE_FUNCTION (sveorqv, reduction_neonq, all_integer, implicit)
228 DEF_SVE_FUNCTION (svextq, extq, all_data, none)
229 DEF_SVE_FUNCTION (svld2q, load, all_data, implicit)
230 DEF_SVE_FUNCTION (svld3q, load, all_data, implicit)
231 DEF_SVE_FUNCTION (svld4q, load, all_data, implicit)
232 DEF_SVE_FUNCTION (svmaxnmqv, reduction_neonq, all_float, implicit)
233 DEF_SVE_FUNCTION (svmaxqv, reduction_neonq, all_arith, implicit)
234 DEF_SVE_FUNCTION (svminnmqv, reduction_neonq, all_float, implicit)
235 DEF_SVE_FUNCTION (svminqv, reduction_neonq, all_arith, implicit)
236 DEF_SVE_FUNCTION (svpmov, pmov_from_vector, all_integer, none)
237 DEF_SVE_FUNCTION (svpmov, inherent, all_integer, z)
238 DEF_SVE_FUNCTION (svpmov_lane, pmov_from_vector_lane, all_integer, none)
239 DEF_SVE_FUNCTION (svpmov_lane, pmov_to_vector_lane, hsd_integer, m)
240 DEF_SVE_FUNCTION (svorqv, reduction_neonq, all_integer, implicit)
241 DEF_SVE_FUNCTION (svst2q, store, all_data, implicit)
242 DEF_SVE_FUNCTION (svst3q, store, all_data, implicit)
243 DEF_SVE_FUNCTION (svst4q, store, all_data, implicit)
244 DEF_SVE_FUNCTION (svtblq, binary_uint, all_data, none)
245 DEF_SVE_FUNCTION (svtbxq, ternary_uint, all_data, none)
246 DEF_SVE_FUNCTION (svuzpq1, binary, all_data, none)
247 DEF_SVE_FUNCTION (svuzpq2, binary, all_data, none)
248 DEF_SVE_FUNCTION (svzipq1, binary, all_data, none)
249 DEF_SVE_FUNCTION (svzipq2, binary, all_data, none)
250 #undef REQUIRED_EXTENSIONS
252 #define REQUIRED_EXTENSIONS sve_and_sme (AARCH64_FL_SVE2p1, 0)
253 DEF_SVE_FUNCTION (svclamp, clamp, all_integer, none)
254 DEF_SVE_FUNCTION (svpsel_lane, select_pred, all_pred_count, none)
255 DEF_SVE_FUNCTION (svrevd, unary, all_data, mxz)
256 #undef REQUIRED_EXTENSIONS
258 #define REQUIRED_EXTENSIONS sve_and_sme (AARCH64_FL_SVE2p1, AARCH64_FL_SME2)
259 DEF_SVE_FUNCTION (svbfmlslb, ternary_bfloat_opt_n, s_float, none)
260 DEF_SVE_FUNCTION (svbfmlslb_lane, ternary_bfloat_lane, s_float, none)
261 DEF_SVE_FUNCTION (svbfmlslt, ternary_bfloat_opt_n, s_float, none)
262 DEF_SVE_FUNCTION (svbfmlslt_lane, ternary_bfloat_lane, s_float, none)
263 DEF_SVE_FUNCTION (svclamp, clamp, all_float, none)
264 DEF_SVE_FUNCTION (svcntp, count_pred_c, all_count, none)
265 DEF_SVE_FUNCTION (svdot, ternary_qq_opt_n_or_011, s_narrow_fsu, none)
266 DEF_SVE_FUNCTION (svdot_lane, ternary_qq_or_011_lane, s_narrow_fsu, none)
267 DEF_SVE_FUNCTION_GS (svld1, load, all_data, x24, implicit)
268 DEF_SVE_FUNCTION_GS (svldnt1, load, all_data, x24, implicit)
269 DEF_SVE_FUNCTION_GS (svpext_lane, extract_pred, all_count, x12, none)
270 DEF_SVE_FUNCTION (svptrue, inherent, all_count, none)
271 DEF_SVE_FUNCTION_GS (svqcvtn, unary_convertxn, qcvt_x2, x2, none)
272 DEF_SVE_FUNCTION_GS (svqrshrn, shift_right_imm_narrowxn, qrshr_x2, x2, none)
273 DEF_SVE_FUNCTION_GS (svqrshrun, shift_right_imm_narrowxn, qrshru_x2, x2, none)
274 DEF_SVE_FUNCTION_GS (svst1, storexn, all_data, x24, implicit)
275 DEF_SVE_FUNCTION_GS (svstnt1, storexn, all_data, x24, implicit)
276 DEF_SVE_FUNCTION_GS (svwhilege, compare_scalar, while_x, x2, none)
277 DEF_SVE_FUNCTION (svwhilege, compare_scalar_count, while_x_c, none)
278 DEF_SVE_FUNCTION_GS (svwhilegt, compare_scalar, while_x, x2, none)
279 DEF_SVE_FUNCTION (svwhilegt, compare_scalar_count, while_x_c, none)
280 DEF_SVE_FUNCTION_GS (svwhilele, compare_scalar, while_x, x2, none)
281 DEF_SVE_FUNCTION (svwhilele, compare_scalar_count, while_x_c, none)
282 DEF_SVE_FUNCTION_GS (svwhilelt, compare_scalar, while_x, x2, none)
283 DEF_SVE_FUNCTION (svwhilelt, compare_scalar_count, while_x_c, none)
284 #undef REQUIRED_EXTENSIONS
286 #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2p1)
287 DEF_SVE_FUNCTION (svld1q_gather, load_gather64_sv_offset, all_data, implicit)
288 DEF_SVE_FUNCTION (svld1q_gather, load_gather64_sv_index, hsd_data, implicit)
289 DEF_SVE_FUNCTION (svld1q_gather, load_gather64_vs_offset, all_data, implicit)
290 DEF_SVE_FUNCTION (svld1q_gather, load_gather64_vs_index, hsd_data, implicit)
291 DEF_SVE_FUNCTION (svld1udq, load, d_data, implicit)
292 DEF_SVE_FUNCTION (svld1uwq, load, s_data, implicit)
293 DEF_SVE_FUNCTION (svst1dq, store, d_data, implicit)
294 DEF_SVE_FUNCTION (svst1q_scatter, store_scatter64_offset, all_data, implicit)
295 DEF_SVE_FUNCTION (svst1q_scatter, store_scatter64_index, hsd_data, implicit)
296 DEF_SVE_FUNCTION (svst1wq, store, s_data, implicit)
297 #undef REQUIRED_EXTENSIONS
299 #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2)
300 DEF_SVE_FUNCTION_GS (svadd, binary_single, all_integer, x24, none)
301 DEF_SVE_FUNCTION_GS (svclamp, clamp, all_arith, x24, none)
302 DEF_SVE_FUNCTION_GS (svcvt, unary_convertxn, cvt_h_s_float, x2, none)
303 DEF_SVE_FUNCTION_GS (svcvt, unary_convertxn, cvt_s_s, x24, none)
304 DEF_SVE_FUNCTION_GS (svcvtn, unary_convertxn, cvt_h_s_float, x2, none)
305 DEF_SVE_FUNCTION_GS (svmax, binary_opt_single_n, all_arith, x24, none)
306 DEF_SVE_FUNCTION_GS (svmaxnm, binary_opt_single_n, all_float, x24, none)
307 DEF_SVE_FUNCTION_GS (svmin, binary_opt_single_n, all_arith, x24, none)
308 DEF_SVE_FUNCTION_GS (svminnm, binary_opt_single_n, all_float, x24, none)
309 DEF_SVE_FUNCTION_GS (svqcvt, unary_convertxn, qcvt_x2, x2, none)
310 DEF_SVE_FUNCTION_GS (svqcvt, unary_convertxn, qcvt_x4, x4, none)
311 DEF_SVE_FUNCTION_GS (svqcvtn, unary_convertxn, qcvt_x4, x4, none)
312 DEF_SVE_FUNCTION_GS (svqdmulh, binary_opt_single_n, all_signed, x24, none)
313 DEF_SVE_FUNCTION_GS (svqrshr, shift_right_imm_narrowxn, qrshr_x2, x2, none)
314 DEF_SVE_FUNCTION_GS (svqrshr, shift_right_imm_narrowxn, qrshr_x4, x4, none)
315 DEF_SVE_FUNCTION_GS (svqrshrn, shift_right_imm_narrowxn, qrshr_x4, x4, none)
316 DEF_SVE_FUNCTION_GS (svqrshru, shift_right_imm_narrowxn, qrshru_x2, x2, none)
317 DEF_SVE_FUNCTION_GS (svqrshru, shift_right_imm_narrowxn, qrshru_x4, x4, none)
318 DEF_SVE_FUNCTION_GS (svqrshrun, shift_right_imm_narrowxn, qrshru_x4, x4, none)
319 DEF_SVE_FUNCTION_GS (svrinta, unaryxn, s_float, x24, none)
320 DEF_SVE_FUNCTION_GS (svrintm, unaryxn, s_float, x24, none)
321 DEF_SVE_FUNCTION_GS (svrintn, unaryxn, s_float, x24, none)
322 DEF_SVE_FUNCTION_GS (svrintp, unaryxn, s_float, x24, none)
323 DEF_SVE_FUNCTION_GS (svrshl, binary_int_opt_single_n, all_integer, x24, none)
324 DEF_SVE_FUNCTION_GS (svsel, binaryxn, all_data, x24, implicit)
325 DEF_SVE_FUNCTION_GS (svunpk, unary_convertxn, bhs_widen, x24, none)
326 DEF_SVE_FUNCTION_GS (svuzp, unaryxn, all_data, x24, none)
327 DEF_SVE_FUNCTION_GS (svuzpq, unaryxn, all_data, x24, none)
328 DEF_SVE_FUNCTION_GS (svzip, unaryxn, all_data, x24, none)
329 DEF_SVE_FUNCTION_GS (svzipq, unaryxn, all_data, x24, none)
330 #undef REQUIRED_EXTENSIONS
332 #define REQUIRED_EXTENSIONS \
333 sve_and_sme (AARCH64_FL_SVE2 | AARCH64_FL_FAMINMAX, \
334 AARCH64_FL_SME2 | AARCH64_FL_FAMINMAX)
335 DEF_SVE_FUNCTION (svamax, binary_opt_single_n, all_float, mxz)
336 DEF_SVE_FUNCTION (svamin, binary_opt_single_n, all_float, mxz)
337 #undef REQUIRED_EXTENSIONS
339 #define REQUIRED_EXTENSIONS \
340 sve_and_sme (AARCH64_FL_SVE2 | AARCH64_FL_LUT, \
341 AARCH64_FL_SME2 | AARCH64_FL_LUT)
342 DEF_SVE_FUNCTION (svluti2_lane, luti2, bh_data, none)
343 DEF_SVE_FUNCTION (svluti4_lane, luti4, bh_data, none)
344 DEF_SVE_FUNCTION_GS (svluti4_lane, luti4, h_data, x2, none)
345 #undef REQUIRED_EXTENSIONS
347 #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME_F16F16)
348 DEF_SVE_FUNCTION_GS (svcvt, unary_convertxn, cvt_f32_f16, x2, none)
349 DEF_SVE_FUNCTION_GS (svcvtl, unary_convertxn, cvt_f32_f16, x2, none)
350 #undef REQUIRED_EXTENSIONS
352 #define REQUIRED_EXTENSIONS \
353 sve_and_sme (AARCH64_FL_SVE2 | AARCH64_FL_SVE_B16B16, \
354 AARCH64_FL_SME2 | AARCH64_FL_SVE_B16B16)
355 DEF_SVE_FUNCTION (svadd, binary_opt_n, h_bfloat, mxz)
356 DEF_SVE_FUNCTION (svclamp, clamp, h_bfloat, none)
357 DEF_SVE_FUNCTION (svmax, binary_opt_single_n, h_bfloat, mxz)
358 DEF_SVE_FUNCTION (svmaxnm, binary_opt_single_n, h_bfloat, mxz)
359 DEF_SVE_FUNCTION (svmla, ternary_opt_n, h_bfloat, mxz)
360 DEF_SVE_FUNCTION (svmla_lane, ternary_lane, h_bfloat, none)
361 DEF_SVE_FUNCTION (svmls, ternary_opt_n, h_bfloat, mxz)
362 DEF_SVE_FUNCTION (svmls_lane, ternary_lane, h_bfloat, none)
363 DEF_SVE_FUNCTION (svmin, binary_opt_single_n, h_bfloat, mxz)
364 DEF_SVE_FUNCTION (svminnm, binary_opt_single_n, h_bfloat, mxz)
365 DEF_SVE_FUNCTION (svmul, binary_opt_n, h_bfloat, mxz)
366 DEF_SVE_FUNCTION (svmul_lane, binary_lane, h_bfloat, none)
367 DEF_SVE_FUNCTION (svsub, binary_opt_n, h_bfloat, mxz)
368 #undef REQUIRED_EXTENSIONS
370 #define REQUIRED_EXTENSIONS \
371 streaming_only (AARCH64_FL_SME2 | AARCH64_FL_SVE_B16B16)
372 DEF_SVE_FUNCTION_GS (svclamp, clamp, h_bfloat, x24, none)
373 DEF_SVE_FUNCTION_GS (svmax, binary_opt_single_n, h_bfloat, x24, none)
374 DEF_SVE_FUNCTION_GS (svmaxnm, binary_opt_single_n, h_bfloat, x24, none)
375 DEF_SVE_FUNCTION_GS (svmin, binary_opt_single_n, h_bfloat, x24, none)
376 DEF_SVE_FUNCTION_GS (svminnm, binary_opt_single_n, h_bfloat, x24, none)
377 #undef REQUIRED_EXTENSIONS
379 #define REQUIRED_EXTENSIONS \
380 sve_and_sme (AARCH64_FL_SVE2 | AARCH64_FL_FP8, \
381 AARCH64_FL_SME2 | AARCH64_FL_FP8)
382 DEF_SVE_FUNCTION_GS_FPM (svcvt1, unary_convert, cvt_mf8, none, none, set)
383 DEF_SVE_FUNCTION_GS_FPM (svcvt2, unary_convert, cvt_mf8, none, none, set)
384 DEF_SVE_FUNCTION_GS_FPM (svcvtlt1, unary_convert, cvt_mf8, none, none, set)
385 DEF_SVE_FUNCTION_GS_FPM (svcvtlt2, unary_convert, cvt_mf8, none, none, set)
386 DEF_SVE_FUNCTION_GS_FPM (svcvtn, unary_convertxn_narrow, cvtn_mf8, x2, none, set)
387 DEF_SVE_FUNCTION_GS_FPM (svcvtnb, unary_convertxn_narrow, cvtnx_mf8, x2, none, set)
388 DEF_SVE_FUNCTION_GS_FPM (svcvtnt, unary_convertxn_narrowt, cvtnx_mf8, x2, none, set)
389 #undef REQUIRED_EXTENSIONS
391 #define REQUIRED_EXTENSIONS \
392 streaming_compatible (AARCH64_FL_SVE2 | AARCH64_FL_FP8FMA, \
393 AARCH64_FL_SSVE_FP8FMA)
394 DEF_SVE_FUNCTION_GS_FPM (svmlalb, ternary_mfloat8_opt_n, h_float_mf8, none, none, set)
395 DEF_SVE_FUNCTION_GS_FPM (svmlalt, ternary_mfloat8_opt_n, h_float_mf8, none, none, set)
396 DEF_SVE_FUNCTION_GS_FPM (svmlalb_lane, ternary_mfloat8_lane, h_float_mf8, none, none, set)
397 DEF_SVE_FUNCTION_GS_FPM (svmlalt_lane, ternary_mfloat8_lane, h_float_mf8, none, none, set)
398 DEF_SVE_FUNCTION_GS_FPM (svmlallbb, ternary_mfloat8_opt_n, s_float_mf8, none, none, set)
399 DEF_SVE_FUNCTION_GS_FPM (svmlallbt, ternary_mfloat8_opt_n, s_float_mf8, none, none, set)
400 DEF_SVE_FUNCTION_GS_FPM (svmlalltb, ternary_mfloat8_opt_n, s_float_mf8, none, none, set)
401 DEF_SVE_FUNCTION_GS_FPM (svmlalltt, ternary_mfloat8_opt_n, s_float_mf8, none, none, set)
402 DEF_SVE_FUNCTION_GS_FPM (svmlalltt_lane, ternary_mfloat8_lane, s_float_mf8, none, none, set)
403 DEF_SVE_FUNCTION_GS_FPM (svmlallbb_lane, ternary_mfloat8_lane, s_float_mf8, none, none, set)
404 DEF_SVE_FUNCTION_GS_FPM (svmlallbt_lane, ternary_mfloat8_lane, s_float_mf8, none, none, set)
405 DEF_SVE_FUNCTION_GS_FPM (svmlalltb_lane, ternary_mfloat8_lane, s_float_mf8, none, none, set)
406 #undef REQUIRED_EXTENSIONS
408 #define REQUIRED_EXTENSIONS \
409 streaming_compatible (AARCH64_FL_SVE2 | AARCH64_FL_FP8DOT4, \
410 AARCH64_FL_SSVE_FP8DOT4)
411 DEF_SVE_FUNCTION_GS_FPM (svdot, ternary_mfloat8, s_float_mf8, none, none, set)
412 DEF_SVE_FUNCTION_GS_FPM (svdot_lane, ternary_mfloat8_lane_group_selection, s_float_mf8, none, none, set)
413 #undef REQUIRED_EXTENSIONS
415 #define REQUIRED_EXTENSIONS \
416 streaming_compatible (AARCH64_FL_SVE2 | AARCH64_FL_FP8DOT2, \
417 AARCH64_FL_SSVE_FP8DOT2)
418 DEF_SVE_FUNCTION_GS_FPM (svdot, ternary_mfloat8, h_float_mf8, none, none, set)
419 DEF_SVE_FUNCTION_GS_FPM (svdot_lane, ternary_mfloat8_lane_group_selection, h_float_mf8, none, none, set)
420 #undef REQUIRED_EXTENSIONS