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
)
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