[PR testsuite/116860] Testsuite adjustment for recently added tests
[official-gcc.git] / gcc / config / aarch64 / aarch64-simd-builtins.def
blob6cc45b18a723fc9621e2da6220231e61b621185a
1 /* Machine description for AArch64 architecture.
2 Copyright (C) 2012-2025 Free Software Foundation, Inc.
3 Contributed by ARM Ltd.
5 This file is part of GCC.
7 GCC is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3, or (at your option)
10 any later version.
12 GCC is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GCC; see the file COPYING3. If not see
19 <http://www.gnu.org/licenses/>. */
21 /* In the list below, the BUILTIN_<ITERATOR> macros expand to create
22 builtins for each of the modes described by <ITERATOR>. When adding
23 new builtins to this list, a helpful idiom to follow is to add
24 a line for each pattern in the md file. Thus, ADDP, which has one
25 pattern defined for the VD_BHSI iterator, and one for DImode, has two
26 entries below.
28 Parameter 1 is the 'type' of the intrinsic. This is used to
29 describe the type modifiers (for example; unsigned) applied to
30 each of the parameters to the intrinsic function.
32 Parameter 2 is the name of the intrinsic. This is appended
33 to `__builtin_aarch64_<name><mode>` to give the intrinsic name
34 as exported to the front-ends.
36 Parameter 3 describes how to map from the name to the CODE_FOR_
37 macro holding the RTL pattern for the intrinsic. This mapping is:
38 0 - CODE_FOR_aarch64_<name><mode>
39 1-9 - CODE_FOR_<name><mode><1-9>
40 10 - CODE_FOR_<name><mode>.
42 Parameter 4 is the 'flag' of the intrinsic. This is used to
43 help describe the attributes (for example, pure) for the intrinsic
44 function. */
46 BUILTIN_V12DIF (LOADSTRUCT_LANE, vec_ldap1_lane, 0, ALL)
47 BUILTIN_V12DI (LOADSTRUCT_LANE_U, vec_ldap1_lane, 0, ALL)
48 BUILTIN_V12DI (LOADSTRUCT_LANE_P, vec_ldap1_lane, 0, ALL)
49 BUILTIN_V12DIF (STORESTRUCT_LANE, vec_stl1_lane, 0, ALL)
50 BUILTIN_V12DI (STORESTRUCT_LANE_U, vec_stl1_lane, 0, ALL)
51 BUILTIN_V12DI (STORESTRUCT_LANE_P, vec_stl1_lane, 0, ALL)
53 BUILTIN_VDC (BINOP, combine, 0, QUIET)
54 BUILTIN_VD_I (BINOPU, combine, 0, DEFAULT)
55 BUILTIN_VDC_P (BINOPP, combine, 0, DEFAULT)
56 BUILTIN_VB (BINOPP, pmul, 0, DEFAULT)
57 VAR1 (BINOPP, pmull, 0, DEFAULT, v8qi)
58 VAR1 (BINOPP, pmull_hi, 0, DEFAULT, v16qi)
59 BUILTIN_VHSDF_HSDF (BINOP, fmulx, 0, FP)
60 BUILTIN_VHSDF_DF (UNOP, sqrt, 2, FP)
61 BUILTIN_VDQ_I (BINOP, addp, 0, DEFAULT)
62 BUILTIN_VDQ_I (BINOPU, addp, 0, DEFAULT)
63 BUILTIN_VDQ_BHSI (UNOP, clrsb, 2, DEFAULT)
64 BUILTIN_VDQ_BHSI (UNOP, clz, 2, DEFAULT)
65 BUILTIN_VS (UNOP, ctz, 2, DEFAULT)
66 BUILTIN_VB (UNOP, popcount, 2, DEFAULT)
68 /* Implemented by aarch64_<sur>q<r>shl<mode>. */
69 BUILTIN_VSDQ_I (BINOP, sqshl, 0, DEFAULT)
70 BUILTIN_VSDQ_I (BINOP_UUS, uqshl, 0, DEFAULT)
71 BUILTIN_VSDQ_I (BINOP, sqrshl, 0, DEFAULT)
72 BUILTIN_VSDQ_I (BINOP_UUS, uqrshl, 0, DEFAULT)
73 /* Implemented by aarch64_<su_optab><optab><mode>. */
74 BUILTIN_VSDQ_I (BINOP, ssadd, 3, DEFAULT)
75 BUILTIN_VSDQ_I (BINOPU, usadd, 3, DEFAULT)
76 BUILTIN_VSDQ_I (BINOP, sssub, 3, DEFAULT)
77 BUILTIN_VSDQ_I (BINOPU, ussub, 3, DEFAULT)
78 /* Implemented by aarch64_<sur>qadd<mode>. */
79 BUILTIN_VSDQ_I (BINOP_SSU, suqadd, 0, DEFAULT)
80 BUILTIN_VSDQ_I (BINOP_UUS, usqadd, 0, DEFAULT)
82 /* Implemented by aarch64_ld1x2<vstruct_elt>. */
83 BUILTIN_VALLDIF (LOADSTRUCT, ld1x2, 0, LOAD)
84 BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld1x2, 0, LOAD)
85 BUILTIN_VALLP (LOADSTRUCT_P, ld1x2, 0, LOAD)
86 /* Implemented by aarch64_ld1x3<vstruct_elt>. */
87 BUILTIN_VALLDIF (LOADSTRUCT, ld1x3, 0, LOAD)
88 BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld1x3, 0, LOAD)
89 BUILTIN_VALLP (LOADSTRUCT_P, ld1x3, 0, LOAD)
90 /* Implemented by aarch64_ld1x4<vstruct_elt>. */
91 BUILTIN_VALLDIF (LOADSTRUCT, ld1x4, 0, LOAD)
92 BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld1x4, 0, LOAD)
93 BUILTIN_VALLP (LOADSTRUCT_P, ld1x4, 0, LOAD)
95 /* Implemented by aarch64_st1x2<vstruct_elt>. */
96 BUILTIN_VALLDIF (STORESTRUCT, st1x2, 0, STORE)
97 BUILTIN_VSDQ_I_DI (STORESTRUCT_U, st1x2, 0, STORE)
98 BUILTIN_VALLP (STORESTRUCT_P, st1x2, 0, STORE)
99 /* Implemented by aarch64_st1x3<vstruct_elt>. */
100 BUILTIN_VALLDIF (STORESTRUCT, st1x3, 0, STORE)
101 BUILTIN_VSDQ_I_DI (STORESTRUCT_U, st1x3, 0, STORE)
102 BUILTIN_VALLP (STORESTRUCT_P, st1x3, 0, STORE)
103 /* Implemented by aarch64_st1x4<vstruct_elt>. */
104 BUILTIN_VALLDIF (STORESTRUCT, st1x4, 0, STORE)
105 BUILTIN_VSDQ_I_DI (STORESTRUCT_U, st1x4, 0, STORE)
106 BUILTIN_VALLP (STORESTRUCT_P, st1x4, 0, STORE)
108 /* Implemented by aarch64_ld<nregs><vstruct_elt>. */
109 BUILTIN_VALLDIF (LOADSTRUCT, ld2, 0, LOAD)
110 BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld2, 0, LOAD)
111 BUILTIN_VALLP (LOADSTRUCT_P, ld2, 0, LOAD)
112 BUILTIN_VALLDIF (LOADSTRUCT, ld3, 0, LOAD)
113 BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld3, 0, LOAD)
114 BUILTIN_VALLP (LOADSTRUCT_P, ld3, 0, LOAD)
115 BUILTIN_VALLDIF (LOADSTRUCT, ld4, 0, LOAD)
116 BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld4, 0, LOAD)
117 BUILTIN_VALLP (LOADSTRUCT_P, ld4, 0, LOAD)
119 /* Implemented by aarch64_st<nregs><vstruct_elt>. */
120 BUILTIN_VALLDIF (STORESTRUCT, st2, 0, STORE)
121 BUILTIN_VSDQ_I_DI (STORESTRUCT_U, st2, 0, STORE)
122 BUILTIN_VALLP (STORESTRUCT_P, st2, 0, STORE)
123 BUILTIN_VALLDIF (STORESTRUCT, st3, 0, STORE)
124 BUILTIN_VSDQ_I_DI (STORESTRUCT_U, st3, 0, STORE)
125 BUILTIN_VALLP (STORESTRUCT_P, st3, 0, STORE)
126 BUILTIN_VALLDIF (STORESTRUCT, st4, 0, STORE)
127 BUILTIN_VSDQ_I_DI (STORESTRUCT_U, st4, 0, STORE)
128 BUILTIN_VALLP (STORESTRUCT_P, st4, 0, STORE)
130 /* Implemented by aarch64_ld<nregs>r<vstruct_elt>. */
131 BUILTIN_VALLDIF (LOADSTRUCT, ld2r, 0, LOAD)
132 BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld2r, 0, LOAD)
133 BUILTIN_VALLP (LOADSTRUCT_P, ld2r, 0, LOAD)
134 BUILTIN_VALLDIF (LOADSTRUCT, ld3r, 0, LOAD)
135 BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld3r, 0, LOAD)
136 BUILTIN_VALLP (LOADSTRUCT_P, ld3r, 0, LOAD)
137 BUILTIN_VALLDIF (LOADSTRUCT, ld4r, 0, LOAD)
138 BUILTIN_VSDQ_I_DI (LOADSTRUCT_U, ld4r, 0, LOAD)
139 BUILTIN_VALLP (LOADSTRUCT_P, ld4r, 0, LOAD)
141 /* Implemented by aarch64_ld<nregs>_lane<vstruct_elt>. */
142 BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld2_lane, 0, ALL)
143 BUILTIN_VSDQ_I_DI (LOADSTRUCT_LANE_U, ld2_lane, 0, ALL)
144 BUILTIN_VALLP (LOADSTRUCT_LANE_P, ld2_lane, 0, ALL)
145 BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld3_lane, 0, ALL)
146 BUILTIN_VSDQ_I_DI (LOADSTRUCT_LANE_U, ld3_lane, 0, ALL)
147 BUILTIN_VALLP (LOADSTRUCT_LANE_P, ld3_lane, 0, ALL)
148 BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld4_lane, 0, ALL)
149 BUILTIN_VSDQ_I_DI (LOADSTRUCT_LANE_U, ld4_lane, 0, ALL)
150 BUILTIN_VALLP (LOADSTRUCT_LANE_P, ld4_lane, 0, ALL)
152 /* Implemented by aarch64_st<nregs>_lane<vstruct_elt>. */
153 BUILTIN_VALLDIF (STORESTRUCT_LANE, st2_lane, 0, ALL)
154 BUILTIN_VSDQ_I_DI (STORESTRUCT_LANE_U, st2_lane, 0, ALL)
155 BUILTIN_VALLP (STORESTRUCT_LANE_P, st2_lane, 0, ALL)
156 BUILTIN_VALLDIF (STORESTRUCT_LANE, st3_lane, 0, ALL)
157 BUILTIN_VSDQ_I_DI (STORESTRUCT_LANE_U, st3_lane, 0, ALL)
158 BUILTIN_VALLP (STORESTRUCT_LANE_P, st3_lane, 0, ALL)
159 BUILTIN_VALLDIF (STORESTRUCT_LANE, st4_lane, 0, ALL)
160 BUILTIN_VSDQ_I_DI (STORESTRUCT_LANE_U, st4_lane, 0, ALL)
161 BUILTIN_VALLP (STORESTRUCT_LANE_P, st4_lane, 0, ALL)
163 BUILTIN_VQW (BINOP, saddl2, 0, DEFAULT)
164 BUILTIN_VQW (BINOPU, uaddl2, 0, DEFAULT)
165 BUILTIN_VQW (BINOP, ssubl2, 0, DEFAULT)
166 BUILTIN_VQW (BINOPU, usubl2, 0, DEFAULT)
167 BUILTIN_VQW (BINOP, saddw2, 0, DEFAULT)
168 BUILTIN_VQW (BINOPU, uaddw2, 0, DEFAULT)
169 BUILTIN_VQW (BINOP, ssubw2, 0, DEFAULT)
170 BUILTIN_VQW (BINOPU, usubw2, 0, DEFAULT)
171 /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>l<mode>. */
172 BUILTIN_VD_BHSI (BINOP, saddl, 0, DEFAULT)
173 BUILTIN_VD_BHSI (BINOPU, uaddl, 0, DEFAULT)
174 BUILTIN_VD_BHSI (BINOP, ssubl, 0, DEFAULT)
175 BUILTIN_VD_BHSI (BINOPU, usubl, 0, DEFAULT)
176 /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>. */
177 BUILTIN_VD_BHSI (BINOP, saddw, 0, DEFAULT)
178 BUILTIN_VD_BHSI (BINOPU, uaddw, 0, DEFAULT)
179 BUILTIN_VD_BHSI (BINOP, ssubw, 0, DEFAULT)
180 BUILTIN_VD_BHSI (BINOPU, usubw, 0, DEFAULT)
181 /* Implemented by aarch64_<sur>h<addsub><mode>. */
182 BUILTIN_VDQ_BHSI (BINOP, shadd, 0, DEFAULT)
183 BUILTIN_VDQ_BHSI (BINOP, shsub, 0, DEFAULT)
184 BUILTIN_VDQ_BHSI (BINOPU, uhadd, 0, DEFAULT)
185 BUILTIN_VDQ_BHSI (BINOPU, uhsub, 0, DEFAULT)
186 BUILTIN_VDQ_BHSI (BINOP, srhadd, 0, DEFAULT)
187 BUILTIN_VDQ_BHSI (BINOPU, urhadd, 0, DEFAULT)
189 /* Implemented by aarch64_<su>addlp<mode>. */
190 BUILTIN_VDQV_L (UNOP, saddlp, 0, DEFAULT)
191 BUILTIN_VDQV_L (UNOPU, uaddlp, 0, DEFAULT)
193 /* Implemented by aarch64_<su>addlv<mode>. */
194 BUILTIN_VDQV_L (UNOP, saddlv, 0, DEFAULT)
195 BUILTIN_VDQV_L (UNOPU, uaddlv, 0, DEFAULT)
197 /* Implemented by aarch64_<su>abd<mode>. */
198 BUILTIN_VDQ_BHSI (BINOP, sabd, 0, DEFAULT)
199 BUILTIN_VDQ_BHSI (BINOPU, uabd, 0, DEFAULT)
201 /* Implemented by aarch64_<su>aba<mode>. */
202 BUILTIN_VDQ_BHSI (TERNOP, saba, 0, DEFAULT)
203 BUILTIN_VDQ_BHSI (TERNOPU, uaba, 0, DEFAULT)
205 BUILTIN_VDQV_L (BINOP, sadalp, 0, DEFAULT)
206 BUILTIN_VDQV_L (BINOPU, uadalp, 0, DEFAULT)
208 /* Implemented by aarch64_<sur>abal<mode>. */
209 BUILTIN_VD_BHSI (TERNOP, sabal, 0, DEFAULT)
210 BUILTIN_VD_BHSI (TERNOPU, uabal, 0, DEFAULT)
212 /* Implemented by aarch64_<sur>abal2<mode>. */
213 BUILTIN_VQW (TERNOP, sabal2, 0, DEFAULT)
214 BUILTIN_VQW (TERNOPU, uabal2, 0, DEFAULT)
216 /* Implemented by aarch64_<sur>abdl<mode>. */
217 BUILTIN_VD_BHSI (BINOP, sabdl, 0, DEFAULT)
218 BUILTIN_VD_BHSI (BINOPU, uabdl, 0, DEFAULT)
220 /* Implemented by aarch64_<sur>abdl2<mode>. */
221 BUILTIN_VQW (BINOP, sabdl2, 0, DEFAULT)
222 BUILTIN_VQW (BINOPU, uabdl2, 0, DEFAULT)
224 /* Implemented by aarch64_<sur><addsub>hn<mode>. */
225 BUILTIN_VQN (BINOP, addhn, 0, DEFAULT)
226 BUILTIN_VQN (BINOPU, addhn, 0, DEFAULT)
227 BUILTIN_VQN (BINOP, subhn, 0, DEFAULT)
228 BUILTIN_VQN (BINOPU, subhn, 0, DEFAULT)
229 BUILTIN_VQN (BINOP, raddhn, 0, DEFAULT)
230 BUILTIN_VQN (BINOPU, raddhn, 0, DEFAULT)
231 BUILTIN_VQN (BINOP, rsubhn, 0, DEFAULT)
232 BUILTIN_VQN (BINOPU, rsubhn, 0, DEFAULT)
233 /* Implemented by aarch64_<sur><addsub>hn2<mode>. */
234 BUILTIN_VQN (TERNOP, addhn2, 0, DEFAULT)
235 BUILTIN_VQN (TERNOPU, addhn2, 0, DEFAULT)
236 BUILTIN_VQN (TERNOP, subhn2, 0, DEFAULT)
237 BUILTIN_VQN (TERNOPU, subhn2, 0, DEFAULT)
238 BUILTIN_VQN (TERNOP, raddhn2, 0, DEFAULT)
239 BUILTIN_VQN (TERNOPU, raddhn2, 0, DEFAULT)
240 BUILTIN_VQN (TERNOP, rsubhn2, 0, DEFAULT)
241 BUILTIN_VQN (TERNOPU, rsubhn2, 0, DEFAULT)
243 /* Implemented by aarch64_<us>xtl<mode>. */
244 BUILTIN_VQN (UNOP, sxtl, 0, DEFAULT)
245 BUILTIN_VQN (UNOPU, uxtl, 0, DEFAULT)
247 /* Implemented by aarch64_xtn<mode>. */
248 BUILTIN_VQN (UNOP, xtn, 0, DEFAULT)
249 BUILTIN_VQN (UNOPU, xtn, 0, DEFAULT)
251 /* Implemented by aarch64_mla<mode>. */
252 BUILTIN_VDQ_BHSI (TERNOP, mla, 0, DEFAULT)
253 BUILTIN_VDQ_BHSI (TERNOPU, mla, 0, DEFAULT)
254 /* Implemented by aarch64_mla_n<mode>. */
255 BUILTIN_VDQHS (TERNOP, mla_n, 0, DEFAULT)
256 BUILTIN_VDQHS (TERNOPU, mla_n, 0, DEFAULT)
258 /* Implemented by aarch64_mls<mode>. */
259 BUILTIN_VDQ_BHSI (TERNOP, mls, 0, DEFAULT)
260 BUILTIN_VDQ_BHSI (TERNOPU, mls, 0, DEFAULT)
261 /* Implemented by aarch64_mls_n<mode>. */
262 BUILTIN_VDQHS (TERNOP, mls_n, 0, DEFAULT)
263 BUILTIN_VDQHS (TERNOPU, mls_n, 0, DEFAULT)
265 BUILTIN_VQN (SHIFTIMM, shrn_n, 0, DEFAULT)
266 BUILTIN_VQN (USHIFTIMM, shrn_n, 0, DEFAULT)
268 BUILTIN_VQN (SHIFT2IMM, ushrn2_n, 0, DEFAULT)
269 BUILTIN_VQN (USHIFT2IMM, ushrn2_n, 0, DEFAULT)
271 BUILTIN_VQN (SHIFTIMM, rshrn_n, 0, DEFAULT)
272 BUILTIN_VQN (USHIFTIMM, rshrn_n, 0, DEFAULT)
274 BUILTIN_VQN (SHIFT2IMM, rshrn2_n, 0, DEFAULT)
275 BUILTIN_VQN (USHIFT2IMM, rshrn2_n, 0, DEFAULT)
277 /* Implemented by aarch64_<su>mlsl<mode>. */
278 BUILTIN_VD_BHSI (TERNOP, smlsl, 0, DEFAULT)
279 BUILTIN_VD_BHSI (TERNOPU, umlsl, 0, DEFAULT)
281 /* Implemented by aarch64_<su>mlsl_n<mode>. */
282 BUILTIN_VD_HSI (TERNOP, smlsl_n, 0, DEFAULT)
283 BUILTIN_VD_HSI (TERNOPU, umlsl_n, 0, DEFAULT)
285 /* Implemented by aarch64_<su>mlal<mode>. */
286 BUILTIN_VD_BHSI (TERNOP, smlal, 0, DEFAULT)
287 BUILTIN_VD_BHSI (TERNOPU, umlal, 0, DEFAULT)
289 /* Implemented by aarch64_<su>mlal_n<mode>. */
290 BUILTIN_VD_HSI (TERNOP, smlal_n, 0, DEFAULT)
291 BUILTIN_VD_HSI (TERNOPU, umlal_n, 0, DEFAULT)
293 /* Implemented by aarch64_<su>mlsl_hi<mode>. */
294 BUILTIN_VQW (TERNOP, smlsl_hi, 0, DEFAULT)
295 BUILTIN_VQW (TERNOPU, umlsl_hi, 0, DEFAULT)
297 /* Implemented by aarch64_<su>mlsl_hi_n<mode>. */
298 BUILTIN_VQ_HSI (TERNOP, smlsl_hi_n, 0, DEFAULT)
299 BUILTIN_VQ_HSI (TERNOPU, umlsl_hi_n, 0, DEFAULT)
301 /* Implemented by aarch64_<su>mlal_hi<mode>. */
302 BUILTIN_VQW (TERNOP, smlal_hi, 0, DEFAULT)
303 BUILTIN_VQW (TERNOPU, umlal_hi, 0, DEFAULT)
305 /* Implemented by aarch64_<su>mlal_hi_n<mode>. */
306 BUILTIN_VQ_HSI (TERNOP, smlal_hi_n, 0, DEFAULT)
307 BUILTIN_VQ_HSI (TERNOPU, umlal_hi_n, 0, DEFAULT)
309 /* Implemented by aarch64_sqmovun<mode>. */
310 BUILTIN_VQN (UNOPUS, sqmovun, 0, DEFAULT)
311 BUILTIN_SD_HSDI (UNOPUS, sqmovun, 0, DEFAULT)
313 /* Implemented by aarch64_sqxtun2<mode>. */
314 BUILTIN_VQN (BINOP_UUS, sqxtun2, 0, DEFAULT)
316 /* Implemented by aarch64_<su>qmovn<mode>. */
317 BUILTIN_VQN (UNOP, sqmovn, 0, DEFAULT)
318 BUILTIN_SD_HSDI (UNOP, sqmovn, 0, DEFAULT)
319 BUILTIN_VQN (UNOP, uqmovn, 0, DEFAULT)
320 BUILTIN_SD_HSDI (UNOP, uqmovn, 0, DEFAULT)
322 /* Implemented by aarch64_<su>qxtn2<mode>. */
323 BUILTIN_VQN (BINOP, sqxtn2, 0, DEFAULT)
324 BUILTIN_VQN (BINOPU, uqxtn2, 0, DEFAULT)
326 /* Implemented by aarch64_s<optab><mode>. */
327 BUILTIN_VSDQ_I (UNOP, sqabs, 0, DEFAULT)
328 BUILTIN_VSDQ_I (UNOP, sqneg, 0, DEFAULT)
330 /* Implemented by aarch64_sqdml<SBINQOPS:as>l<mode>. */
331 BUILTIN_VSD_HSI (TERNOP, sqdmlal, 0, DEFAULT)
332 BUILTIN_VSD_HSI (TERNOP, sqdmlsl, 0, DEFAULT)
333 /* Implemented by aarch64_sqdml<SBINQOPS:as>l_lane<mode>. */
334 BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlal_lane, 0, DEFAULT)
335 BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlsl_lane, 0, DEFAULT)
336 /* Implemented by aarch64_sqdml<SBINQOPS:as>l_laneq<mode>. */
337 BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlal_laneq, 0, DEFAULT)
338 BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlsl_laneq, 0, DEFAULT)
339 /* Implemented by aarch64_sqdml<SBINQOPS:as>l_n<mode>. */
340 BUILTIN_VD_HSI (TERNOP, sqdmlal_n, 0, DEFAULT)
341 BUILTIN_VD_HSI (TERNOP, sqdmlsl_n, 0, DEFAULT)
343 BUILTIN_VQ_HSI (TERNOP, sqdmlal2, 0, DEFAULT)
344 BUILTIN_VQ_HSI (TERNOP, sqdmlsl2, 0, DEFAULT)
345 BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlal2_lane, 0, DEFAULT)
346 BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlsl2_lane, 0, DEFAULT)
347 BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlal2_laneq, 0, DEFAULT)
348 BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlsl2_laneq, 0, DEFAULT)
349 BUILTIN_VQ_HSI (TERNOP, sqdmlal2_n, 0, DEFAULT)
350 BUILTIN_VQ_HSI (TERNOP, sqdmlsl2_n, 0, DEFAULT)
352 BUILTIN_VD_BHSI (BINOP, intrinsic_vec_smult_lo_, 0, DEFAULT)
353 BUILTIN_VD_BHSI (BINOPU, intrinsic_vec_umult_lo_, 0, DEFAULT)
355 BUILTIN_VQW (BINOP, vec_widen_smult_hi_, 10, DEFAULT)
356 BUILTIN_VQW (BINOPU, vec_widen_umult_hi_, 10, DEFAULT)
358 BUILTIN_VD_HSI (BINOP, smull_n, 0, DEFAULT)
359 BUILTIN_VD_HSI (BINOPU, umull_n, 0, DEFAULT)
361 BUILTIN_VQ_HSI (BINOP, smull_hi_n, 0, DEFAULT)
362 BUILTIN_VQ_HSI (BINOPU, umull_hi_n, 0, DEFAULT)
364 BUILTIN_VQ_HSI (TERNOP_LANE, smull_hi_lane, 0, DEFAULT)
365 BUILTIN_VQ_HSI (TERNOP_LANE, smull_hi_laneq, 0, DEFAULT)
366 BUILTIN_VQ_HSI (TERNOPU_LANE, umull_hi_lane, 0, DEFAULT)
367 BUILTIN_VQ_HSI (TERNOPU_LANE, umull_hi_laneq, 0, DEFAULT)
369 BUILTIN_VD_HSI (TERNOP_LANE, vec_smult_lane_, 0, DEFAULT)
370 BUILTIN_VD_HSI (QUADOP_LANE, vec_smlal_lane_, 0, DEFAULT)
371 BUILTIN_VD_HSI (TERNOP_LANE, vec_smult_laneq_, 0, DEFAULT)
372 BUILTIN_VD_HSI (QUADOP_LANE, vec_smlal_laneq_, 0, DEFAULT)
373 BUILTIN_VD_HSI (TERNOPU_LANE, vec_umult_lane_, 0, DEFAULT)
374 BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlal_lane_, 0, DEFAULT)
375 BUILTIN_VD_HSI (TERNOPU_LANE, vec_umult_laneq_, 0, DEFAULT)
376 BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlal_laneq_, 0, DEFAULT)
378 BUILTIN_VD_HSI (QUADOP_LANE, vec_smlsl_lane_, 0, DEFAULT)
379 BUILTIN_VD_HSI (QUADOP_LANE, vec_smlsl_laneq_, 0, DEFAULT)
380 BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlsl_lane_, 0, DEFAULT)
381 BUILTIN_VD_HSI (QUADOPU_LANE, vec_umlsl_laneq_, 0, DEFAULT)
383 BUILTIN_VQ_HSI (QUADOP_LANE, smlal_hi_lane, 0, DEFAULT)
384 BUILTIN_VQ_HSI (QUADOP_LANE, smlal_hi_laneq, 0, DEFAULT)
385 BUILTIN_VQ_HSI (QUADOPU_LANE, umlal_hi_lane, 0, DEFAULT)
386 BUILTIN_VQ_HSI (QUADOPU_LANE, umlal_hi_laneq, 0, DEFAULT)
388 BUILTIN_VQ_HSI (QUADOP_LANE, smlsl_hi_lane, 0, DEFAULT)
389 BUILTIN_VQ_HSI (QUADOP_LANE, smlsl_hi_laneq, 0, DEFAULT)
390 BUILTIN_VQ_HSI (QUADOPU_LANE, umlsl_hi_lane, 0, DEFAULT)
391 BUILTIN_VQ_HSI (QUADOPU_LANE, umlsl_hi_laneq, 0, DEFAULT)
393 BUILTIN_VSD_HSI (BINOP, sqdmull, 0, DEFAULT)
394 BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_lane, 0, DEFAULT)
395 BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_laneq, 0, DEFAULT)
396 BUILTIN_VD_HSI (BINOP, sqdmull_n, 0, DEFAULT)
397 BUILTIN_VQ_HSI (BINOP, sqdmull2, 0, DEFAULT)
398 BUILTIN_VQ_HSI (TERNOP_LANE, sqdmull2_lane, 0, DEFAULT)
399 BUILTIN_VQ_HSI (TERNOP_LANE, sqdmull2_laneq, 0, DEFAULT)
400 BUILTIN_VQ_HSI (BINOP, sqdmull2_n, 0, DEFAULT)
401 /* Implemented by aarch64_sq<r>dmulh<mode>. */
402 BUILTIN_VSDQ_HSI (BINOP, sqdmulh, 0, DEFAULT)
403 BUILTIN_VSDQ_HSI (BINOP, sqrdmulh, 0, DEFAULT)
404 /* Implemented by aarch64_sq<r>dmulh_n<mode>. */
405 BUILTIN_VDQHS (BINOP, sqdmulh_n, 0, DEFAULT)
406 BUILTIN_VDQHS (BINOP, sqrdmulh_n, 0, DEFAULT)
407 /* Implemented by aarch64_sq<r>dmulh_lane<q><mode>. */
408 BUILTIN_VSDQ_HSI (TERNOP_LANE, sqdmulh_lane, 0, DEFAULT)
409 BUILTIN_VSDQ_HSI (TERNOP_LANE, sqdmulh_laneq, 0, DEFAULT)
410 BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_lane, 0, DEFAULT)
411 BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_laneq, 0, DEFAULT)
413 BUILTIN_VSDQ_I_DI (BINOP, ashl, 3, DEFAULT)
414 /* Implemented by aarch64_<sur>shl<mode>. */
415 BUILTIN_VSDQ_I_DI (BINOP, sshl, 0, DEFAULT)
416 BUILTIN_VSDQ_I_DI (BINOP_UUS, ushl, 0, DEFAULT)
417 BUILTIN_VSDQ_I_DI (BINOP, srshl, 0, DEFAULT)
418 BUILTIN_VSDQ_I_DI (BINOP_UUS, urshl, 0, DEFAULT)
420 /* Implemented by <sur><dotprod>_prod<dot_mode>. */
421 BUILTIN_VB (TERNOP, sdot_prod, 0, DEFAULT)
422 BUILTIN_VB (TERNOPU, udot_prod, 0, DEFAULT)
423 BUILTIN_VB (TERNOP_SUSS, usdot_prod, 0, DEFAULT)
424 /* Implemented by aarch64_<sur><dotprod>_lane{q}<dot_mode>. */
425 BUILTIN_VB (QUADOP_LANE, sdot_lane, 0, DEFAULT)
426 BUILTIN_VB (QUADOPU_LANE, udot_lane, 0, DEFAULT)
427 BUILTIN_VB (QUADOP_LANE, sdot_laneq, 0, DEFAULT)
428 BUILTIN_VB (QUADOPU_LANE, udot_laneq, 0, DEFAULT)
429 BUILTIN_VB (QUADOPSSUS_LANE_QUADTUP, usdot_lane, 0, DEFAULT)
430 BUILTIN_VB (QUADOPSSUS_LANE_QUADTUP, usdot_laneq, 0, DEFAULT)
431 BUILTIN_VB (QUADOPSSSU_LANE_QUADTUP, sudot_lane, 0, DEFAULT)
432 BUILTIN_VB (QUADOPSSSU_LANE_QUADTUP, sudot_laneq, 0, DEFAULT)
434 /* Implemented by aarch64_fcadd<rot><mode>. */
435 BUILTIN_VHSDF (BINOP, fcadd90, 0, FP)
436 BUILTIN_VHSDF (BINOP, fcadd270, 0, FP)
438 /* Implemented by aarch64_fcmla{_lane}{q}<rot><mode>. */
439 BUILTIN_VHSDF (TERNOP, fcmla0, 0, FP)
440 BUILTIN_VHSDF (TERNOP, fcmla90, 0, FP)
441 BUILTIN_VHSDF (TERNOP, fcmla180, 0, FP)
442 BUILTIN_VHSDF (TERNOP, fcmla270, 0, FP)
443 BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane0, 0, FP)
444 BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane90, 0, FP)
445 BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane180, 0, FP)
446 BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane270, 0, FP)
448 BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane0, 0, FP)
449 BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane90, 0, FP)
450 BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane180, 0, FP)
451 BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane270, 0, FP)
453 BUILTIN_VDQ_I (SHIFTIMM, ashr, 3, DEFAULT)
454 VAR1 (SHIFTIMM, ashr_simd, 0, DEFAULT, di)
455 BUILTIN_VDQ_I (USHIFTIMM, lshr, 3, DEFAULT)
456 VAR1 (USHIFTIMM, lshr_simd, 0, DEFAULT, di)
457 /* Implemented by aarch64_<sur>shr_n<mode>. */
458 BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n, 0, DEFAULT)
459 BUILTIN_VSDQ_I_DI (USHIFTIMM, urshr_n, 0, DEFAULT)
460 /* Implemented by aarch64_<sur>sra_n<mode>. */
461 BUILTIN_VSDQ_I_DI (SHIFTACC, ssra_n, 0, DEFAULT)
462 BUILTIN_VSDQ_I_DI (USHIFTACC, usra_n, 0, DEFAULT)
463 BUILTIN_VSDQ_I_DI (SHIFTACC, srsra_n, 0, DEFAULT)
464 BUILTIN_VSDQ_I_DI (USHIFTACC, ursra_n, 0, DEFAULT)
465 /* Implemented by aarch64_<sur>shll_n<mode>. */
466 BUILTIN_VD_BHSI (SHIFTIMM, sshll_n, 0, DEFAULT)
467 BUILTIN_VD_BHSI (USHIFTIMM, ushll_n, 0, DEFAULT)
468 /* Implemented by aarch64_<sur>shll2_n<mode>. */
469 BUILTIN_VQW (SHIFTIMM, sshll2_n, 0, DEFAULT)
470 BUILTIN_VQW (SHIFTIMM, ushll2_n, 0, DEFAULT)
471 BUILTIN_VQN (SHIFTIMM, sqshrun_n, 0, DEFAULT)
472 BUILTIN_VQN (SHIFTIMM, sqrshrun_n, 0, DEFAULT)
473 BUILTIN_VQN (SHIFTIMM, sqshrn_n, 0, DEFAULT)
474 BUILTIN_VQN (USHIFTIMM, uqshrn_n, 0, DEFAULT)
475 BUILTIN_VQN (SHIFTIMM, sqrshrn_n, 0, DEFAULT)
476 BUILTIN_VQN (USHIFTIMM, uqrshrn_n, 0, DEFAULT)
477 BUILTIN_SD_HSDI (SHIFTIMM, sqshrun_n, 0, DEFAULT)
478 BUILTIN_SD_HSDI (SHIFTIMM, sqrshrun_n, 0, DEFAULT)
479 BUILTIN_SD_HSDI (SHIFTIMM, sqshrn_n, 0, DEFAULT)
480 BUILTIN_SD_HSDI (USHIFTIMM, uqshrn_n, 0, DEFAULT)
481 BUILTIN_SD_HSDI (SHIFTIMM, sqrshrn_n, 0, DEFAULT)
482 BUILTIN_SD_HSDI (USHIFTIMM, uqrshrn_n, 0, DEFAULT)
483 BUILTIN_VQN (SHIFT2IMM_UUSS, sqshrun2_n, 0, DEFAULT)
484 BUILTIN_VQN (SHIFT2IMM_UUSS, sqrshrun2_n, 0, DEFAULT)
485 BUILTIN_VQN (SHIFT2IMM, sqsshrn2_n, 0, DEFAULT)
486 BUILTIN_VQN (USHIFT2IMM, uqushrn2_n, 0, DEFAULT)
487 BUILTIN_VQN (SHIFT2IMM, sqrshrn2_n, 0, DEFAULT)
488 BUILTIN_VQN (USHIFT2IMM, uqrshrn2_n, 0, DEFAULT)
489 /* Implemented by aarch64_<sur>s<lr>i_n<mode>. */
490 BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssri_n, 0, DEFAULT)
491 BUILTIN_VALLP (SHIFTINSERTP, ssri_n, 0, DEFAULT)
492 BUILTIN_VSDQ_I_DI (USHIFTACC, usri_n, 0, DEFAULT)
493 BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssli_n, 0, DEFAULT)
494 BUILTIN_VALLP (SHIFTINSERTP, ssli_n, 0, DEFAULT)
495 BUILTIN_VSDQ_I_DI (USHIFTACC, usli_n, 0, DEFAULT)
496 /* Implemented by aarch64_<sur>qshl<u>_n<mode>. */
497 BUILTIN_VSDQ_I (SHIFTIMM_USS, sqshlu_n, 0, DEFAULT)
498 BUILTIN_VSDQ_I (SHIFTIMM, sqshl_n, 0, DEFAULT)
499 BUILTIN_VSDQ_I (USHIFTIMM, uqshl_n, 0, DEFAULT)
501 /* Implemented by aarch64_xtn2<mode>. */
502 BUILTIN_VQN (BINOP, xtn2, 0, DEFAULT)
503 BUILTIN_VQN (BINOPU, xtn2, 0, DEFAULT)
505 /* Implemented by vec_unpack<su>_hi_<mode>. */
506 BUILTIN_VQW (UNOP, vec_unpacks_hi_, 10, DEFAULT)
507 BUILTIN_VQW (UNOPU, vec_unpacku_hi_, 10, DEFAULT)
509 /* Implemented by aarch64_reduc_plus_<mode>. */
510 BUILTIN_VALL (UNOP, reduc_plus_scal_, 10, DEFAULT)
511 BUILTIN_VDQ_I (UNOPU, reduc_plus_scal_, 10, DEFAULT)
513 /* Implemented by reduc_<maxmin_uns>_scal_<mode> (producing scalar). */
514 BUILTIN_VDQIF_F16 (UNOP, reduc_smax_scal_, 10, DEFAULT)
515 BUILTIN_VDQIF_F16 (UNOP, reduc_smin_scal_, 10, DEFAULT)
516 BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10, DEFAULT)
517 BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10, DEFAULT)
518 BUILTIN_VHSDF (UNOP, reduc_smax_nan_scal_, 10, DEFAULT)
519 BUILTIN_VHSDF (UNOP, reduc_smin_nan_scal_, 10, DEFAULT)
521 /* Implemented by <optab><mode>3. */
522 BUILTIN_VDQ_BHSI (BINOP, smax, 3, DEFAULT)
523 BUILTIN_VDQ_BHSI (BINOP, smin, 3, DEFAULT)
524 BUILTIN_VDQ_BHSI (BINOP, umax, 3, DEFAULT)
525 BUILTIN_VDQ_BHSI (BINOP, umin, 3, DEFAULT)
527 /* Implemented by <fmaxmin><mode>3. */
528 BUILTIN_VHSDF_HSDF (BINOP, fmax, 3, FP)
529 BUILTIN_VHSDF_HSDF (BINOP, fmin, 3, FP)
530 BUILTIN_VHSDF_DF (BINOP, fmax_nan, 3, FP)
531 BUILTIN_VHSDF_DF (BINOP, fmin_nan, 3, FP)
533 /* Implemented by aarch64_<optab>p<mode>. */
534 BUILTIN_VDQ_BHSI (BINOP, smaxp, 0, DEFAULT)
535 BUILTIN_VDQ_BHSI (BINOP, sminp, 0, DEFAULT)
536 BUILTIN_VDQ_BHSI (BINOP, umaxp, 0, DEFAULT)
537 BUILTIN_VDQ_BHSI (BINOP, uminp, 0, DEFAULT)
538 BUILTIN_VHSDF (BINOP, smaxp, 0, DEFAULT)
539 BUILTIN_VHSDF (BINOP, sminp, 0, DEFAULT)
540 BUILTIN_VHSDF (BINOP, smax_nanp, 0, DEFAULT)
541 BUILTIN_VHSDF (BINOP, smin_nanp, 0, DEFAULT)
543 /* Implemented by <frint_pattern><mode>2. */
544 BUILTIN_VHSDF (UNOP, btrunc, 2, FP)
545 BUILTIN_VHSDF (UNOP, ceil, 2, FP)
546 BUILTIN_VHSDF (UNOP, floor, 2, FP)
547 BUILTIN_VHSDF (UNOP, nearbyint, 2, FP)
548 BUILTIN_VHSDF (UNOP, rint, 2, FP)
549 BUILTIN_VHSDF (UNOP, round, 2, FP)
550 BUILTIN_VHSDF_HSDF (UNOP, roundeven, 2, FP)
552 VAR1 (UNOP, btrunc, 2, FP, hf)
553 VAR1 (UNOP, ceil, 2, FP, hf)
554 VAR1 (UNOP, floor, 2, FP, hf)
555 VAR1 (UNOP, nearbyint, 2, FP, hf)
556 VAR1 (UNOP, rint, 2, FP, hf)
557 VAR1 (UNOP, round, 2, FP, hf)
559 /* Implemented by l<fcvt_pattern><su_optab><VQDF:mode><vcvt_target>2. */
560 VAR1 (UNOP, lbtruncv4hf, 2, FP, v4hi)
561 VAR1 (UNOP, lbtruncv8hf, 2, FP, v8hi)
562 VAR1 (UNOP, lbtruncv2sf, 2, FP, v2si)
563 VAR1 (UNOP, lbtruncv4sf, 2, FP, v4si)
564 VAR1 (UNOP, lbtruncv2df, 2, FP, v2di)
566 VAR1 (UNOPUS, lbtruncuv4hf, 2, FP, v4hi)
567 VAR1 (UNOPUS, lbtruncuv8hf, 2, FP, v8hi)
568 VAR1 (UNOPUS, lbtruncuv2sf, 2, FP, v2si)
569 VAR1 (UNOPUS, lbtruncuv4sf, 2, FP, v4si)
570 VAR1 (UNOPUS, lbtruncuv2df, 2, FP, v2di)
572 VAR1 (UNOP, lroundv4hf, 2, FP, v4hi)
573 VAR1 (UNOP, lroundv8hf, 2, FP, v8hi)
574 VAR1 (UNOP, lroundv2sf, 2, FP, v2si)
575 VAR1 (UNOP, lroundv4sf, 2, FP, v4si)
576 VAR1 (UNOP, lroundv2df, 2, FP, v2di)
577 /* Implemented by l<fcvt_pattern><su_optab><GPF_F16:mode><GPI:mode>2. */
578 BUILTIN_GPI_I16 (UNOP, lroundhf, 2, FP)
579 VAR1 (UNOP, lroundsf, 2, FP, si)
580 VAR1 (UNOP, lrounddf, 2, FP, di)
582 VAR1 (UNOPUS, lrounduv4hf, 2, FP, v4hi)
583 VAR1 (UNOPUS, lrounduv8hf, 2, FP, v8hi)
584 VAR1 (UNOPUS, lrounduv2sf, 2, FP, v2si)
585 VAR1 (UNOPUS, lrounduv4sf, 2, FP, v4si)
586 VAR1 (UNOPUS, lrounduv2df, 2, FP, v2di)
587 BUILTIN_GPI_I16 (UNOPUS, lrounduhf, 2, FP)
588 VAR1 (UNOPUS, lroundusf, 2, FP, si)
589 VAR1 (UNOPUS, lroundudf, 2, FP, di)
591 VAR1 (UNOP, lceilv4hf, 2, FP, v4hi)
592 VAR1 (UNOP, lceilv8hf, 2, FP, v8hi)
593 VAR1 (UNOP, lceilv2sf, 2, FP, v2si)
594 VAR1 (UNOP, lceilv4sf, 2, FP, v4si)
595 VAR1 (UNOP, lceilv2df, 2, FP, v2di)
596 BUILTIN_GPI_I16 (UNOP, lceilhf, 2, FP)
598 VAR1 (UNOPUS, lceiluv4hf, 2, FP, v4hi)
599 VAR1 (UNOPUS, lceiluv8hf, 2, FP, v8hi)
600 VAR1 (UNOPUS, lceiluv2sf, 2, FP, v2si)
601 VAR1 (UNOPUS, lceiluv4sf, 2, FP, v4si)
602 VAR1 (UNOPUS, lceiluv2df, 2, FP, v2di)
603 BUILTIN_GPI_I16 (UNOPUS, lceiluhf, 2, FP)
604 VAR1 (UNOPUS, lceilusf, 2, FP, si)
605 VAR1 (UNOPUS, lceiludf, 2, FP, di)
607 VAR1 (UNOP, lfloorv4hf, 2, FP, v4hi)
608 VAR1 (UNOP, lfloorv8hf, 2, FP, v8hi)
609 VAR1 (UNOP, lfloorv2sf, 2, FP, v2si)
610 VAR1 (UNOP, lfloorv4sf, 2, FP, v4si)
611 VAR1 (UNOP, lfloorv2df, 2, FP, v2di)
612 BUILTIN_GPI_I16 (UNOP, lfloorhf, 2, FP)
614 VAR1 (UNOPUS, lflooruv4hf, 2, FP, v4hi)
615 VAR1 (UNOPUS, lflooruv8hf, 2, FP, v8hi)
616 VAR1 (UNOPUS, lflooruv2sf, 2, FP, v2si)
617 VAR1 (UNOPUS, lflooruv4sf, 2, FP, v4si)
618 VAR1 (UNOPUS, lflooruv2df, 2, FP, v2di)
619 BUILTIN_GPI_I16 (UNOPUS, lflooruhf, 2, FP)
620 VAR1 (UNOPUS, lfloorusf, 2, FP, si)
621 VAR1 (UNOPUS, lfloorudf, 2, FP, di)
623 VAR1 (UNOP, lfrintnv4hf, 2, FP, v4hi)
624 VAR1 (UNOP, lfrintnv8hf, 2, FP, v8hi)
625 VAR1 (UNOP, lfrintnv2sf, 2, FP, v2si)
626 VAR1 (UNOP, lfrintnv4sf, 2, FP, v4si)
627 VAR1 (UNOP, lfrintnv2df, 2, FP, v2di)
628 BUILTIN_GPI_I16 (UNOP, lfrintnhf, 2, FP)
629 VAR1 (UNOP, lfrintnsf, 2, FP, si)
630 VAR1 (UNOP, lfrintndf, 2, FP, di)
632 VAR1 (UNOPUS, lfrintnuv4hf, 2, FP, v4hi)
633 VAR1 (UNOPUS, lfrintnuv8hf, 2, FP, v8hi)
634 VAR1 (UNOPUS, lfrintnuv2sf, 2, FP, v2si)
635 VAR1 (UNOPUS, lfrintnuv4sf, 2, FP, v4si)
636 VAR1 (UNOPUS, lfrintnuv2df, 2, FP, v2di)
637 BUILTIN_GPI_I16 (UNOPUS, lfrintnuhf, 2, FP)
638 VAR1 (UNOPUS, lfrintnusf, 2, FP, si)
639 VAR1 (UNOPUS, lfrintnudf, 2, FP, di)
641 /* Implemented by <optab><fcvt_target><VDQF:mode>2. */
642 VAR1 (UNOP, floatv4hi, 2, FP, v4hf)
643 VAR1 (UNOP, floatv8hi, 2, FP, v8hf)
644 VAR1 (UNOP, floatv2si, 2, FP, v2sf)
645 VAR1 (UNOP, floatv4si, 2, FP, v4sf)
646 VAR1 (UNOP, floatv2di, 2, FP, v2df)
648 VAR1 (UNOP, floatunsv4hi, 2, FP, v4hf)
649 VAR1 (UNOP, floatunsv8hi, 2, FP, v8hf)
650 VAR1 (UNOP, floatunsv2si, 2, FP, v2sf)
651 VAR1 (UNOP, floatunsv4si, 2, FP, v4sf)
652 VAR1 (UNOP, floatunsv2di, 2, FP, v2df)
654 VAR5 (UNOPU, bswap, 2, DEFAULT, v4hi, v8hi, v2si, v4si, v2di)
656 BUILTIN_VB (UNOP, rbit, 0, DEFAULT)
658 /* Implemented by
659 aarch64_<PERMUTE:perm_insn><mode>. */
660 BUILTIN_VALL (BINOP, zip1, 0, QUIET)
661 BUILTIN_VALL (BINOP, zip2, 0, QUIET)
662 BUILTIN_VALL (BINOP, uzp1, 0, QUIET)
663 BUILTIN_VALL (BINOP, uzp2, 0, QUIET)
664 BUILTIN_VALL (BINOP, trn1, 0, QUIET)
665 BUILTIN_VALL (BINOP, trn2, 0, QUIET)
667 BUILTIN_GPF_F16 (UNOP, frecpe, 0, FP)
668 BUILTIN_GPF_F16 (UNOP, frecpx, 0, FP)
670 BUILTIN_VDQ_SI (UNOP, urecpe, 0, DEFAULT)
672 BUILTIN_VHSDF (UNOP, frecpe, 0, FP)
673 BUILTIN_VHSDF_HSDF (BINOP, frecps, 0, FP)
675 /* Implemented by a mixture of abs2 patterns. Note the DImode builtin is
676 only ever used for the int64x1_t intrinsic, there is no scalar version. */
677 BUILTIN_VSDQ_I_DI (UNOP, abs, 0, QUIET)
678 BUILTIN_VHSDF (UNOP, abs, 2, QUIET)
679 VAR1 (UNOP, abs, 2, QUIET, hf)
681 BUILTIN_VQ_HSF (UNOP, vec_unpacks_hi_, 10, FP)
682 VAR1 (BINOP, float_truncate_hi_, 0, FP, v4sf)
683 VAR1 (BINOP, float_truncate_hi_, 0, FP, v8hf)
685 VAR1 (UNOP, float_extend_lo_, 0, FP, v2df)
686 VAR1 (UNOP, float_extend_lo_, 0, FP, v4sf)
687 BUILTIN_VDF (UNOP, float_truncate_lo_, 0, FP)
689 VAR1 (UNOP, float_trunc_rodd_, 0, FP, df)
690 VAR1 (UNOP, float_trunc_rodd_lo_, 0, FP, v2sf)
691 VAR1 (BINOP, float_trunc_rodd_hi_, 0, FP, v4sf)
693 /* Implemented by aarch64_ld1<VALL_F16:mode>. */
694 BUILTIN_VALL_F16 (LOAD1, ld1, 0, LOAD)
695 BUILTIN_VDQ_I (LOAD1_U, ld1, 0, LOAD)
696 BUILTIN_VALLP_NO_DI (LOAD1_P, ld1, 0, LOAD)
698 /* Implemented by aarch64_st1<VALL_F16:mode>. */
699 BUILTIN_VALL_F16 (STORE1, st1, 0, STORE)
700 BUILTIN_VDQ_I (STORE1_U, st1, 0, STORE)
701 BUILTIN_VALLP_NO_DI (STORE1_P, st1, 0, STORE)
703 /* Implemented by fma<mode>4. */
704 BUILTIN_VHSDF (TERNOP, fma, 4, FP)
705 VAR1 (TERNOP, fma, 4, FP, hf)
706 /* Implemented by fnma<mode>4. */
707 BUILTIN_VHSDF (TERNOP, fnma, 4, FP)
708 VAR1 (TERNOP, fnma, 4, FP, hf)
710 BUILTIN_VDQF_DF (TERNOP, float_mla, 0, FP)
711 BUILTIN_VDQF_DF (TERNOP, float_mls, 0, FP)
712 BUILTIN_VDQSF (TERNOP, float_mla_n, 0, FP)
713 BUILTIN_VDQSF (TERNOP, float_mls_n, 0, FP)
714 BUILTIN_VDQSF (QUADOP_LANE, float_mla_lane, 0, FP)
715 BUILTIN_VDQSF (QUADOP_LANE, float_mls_lane, 0, FP)
716 BUILTIN_VDQSF (QUADOP_LANE, float_mla_laneq, 0, FP)
717 BUILTIN_VDQSF (QUADOP_LANE, float_mls_laneq, 0, FP)
719 /* Implemented by aarch64_simd_bsl<mode>. */
720 BUILTIN_VDQQH (BSL_P, simd_bsl, 0, DEFAULT)
721 VAR2 (BSL_P, simd_bsl,0, DEFAULT, di, v2di)
722 BUILTIN_VSDQ_I_DI (BSL_U, simd_bsl, 0, DEFAULT)
723 BUILTIN_VALLDIF (BSL_S, simd_bsl, 0, QUIET)
725 /* Implemented by aarch64_crypto_aes<op><mode>. */
726 VAR1 (BINOPU, crypto_aese, 0, DEFAULT, v16qi)
727 VAR1 (BINOPU, crypto_aesd, 0, DEFAULT, v16qi)
728 VAR1 (UNOPU, crypto_aesmc, 0, DEFAULT, v16qi)
729 VAR1 (UNOPU, crypto_aesimc, 0, DEFAULT, v16qi)
731 /* Implemented by aarch64_crypto_sha1<op><mode>. */
732 VAR1 (UNOPU, crypto_sha1h, 0, DEFAULT, si)
733 VAR1 (BINOPU, crypto_sha1su1, 0, DEFAULT, v4si)
734 VAR1 (TERNOPU, crypto_sha1c, 0, DEFAULT, v4si)
735 VAR1 (TERNOPU, crypto_sha1m, 0, DEFAULT, v4si)
736 VAR1 (TERNOPU, crypto_sha1p, 0, DEFAULT, v4si)
737 VAR1 (TERNOPU, crypto_sha1su0, 0, DEFAULT, v4si)
739 /* Implemented by aarch64_crypto_sha256<op><mode>. */
740 VAR1 (TERNOPU, crypto_sha256h, 0, DEFAULT, v4si)
741 VAR1 (TERNOPU, crypto_sha256h2, 0, DEFAULT, v4si)
742 VAR1 (BINOPU, crypto_sha256su0, 0, DEFAULT, v4si)
743 VAR1 (TERNOPU, crypto_sha256su1, 0, DEFAULT, v4si)
745 /* Implemented by aarch64_crypto_pmull<mode>. */
746 VAR1 (BINOPP, crypto_pmull, 0, DEFAULT, di)
747 VAR1 (BINOPP, crypto_pmull, 0, DEFAULT, v2di)
749 /* Implemented by aarch64_qtbl1<mode>. */
750 VAR2 (BINOP, qtbl1, 0, DEFAULT, v8qi, v16qi)
751 VAR2 (BINOPU, qtbl1, 0, DEFAULT, v8qi, v16qi)
752 VAR2 (BINOP_PPU, qtbl1, 0, DEFAULT, v8qi, v16qi)
753 VAR2 (BINOP_SSU, qtbl1, 0, DEFAULT, v8qi, v16qi)
755 /* Implemented by aarch64_qtbl2<mode>. */
756 VAR2 (BINOP, qtbl2, 0, DEFAULT, v8qi, v16qi)
757 VAR2 (BINOPU, qtbl2, 0, DEFAULT, v8qi, v16qi)
758 VAR2 (BINOP_PPU, qtbl2, 0, DEFAULT, v8qi, v16qi)
759 VAR2 (BINOP_SSU, qtbl2, 0, DEFAULT, v8qi, v16qi)
761 /* Implemented by aarch64_qtbl3<mode>. */
762 VAR2 (BINOP, qtbl3, 0, DEFAULT, v8qi, v16qi)
763 VAR2 (BINOPU, qtbl3, 0, DEFAULT, v8qi, v16qi)
764 VAR2 (BINOP_PPU, qtbl3, 0, DEFAULT, v8qi, v16qi)
765 VAR2 (BINOP_SSU, qtbl3, 0, DEFAULT, v8qi, v16qi)
767 /* Implemented by aarch64_qtbl4<mode>. */
768 VAR2 (BINOP, qtbl4, 0, DEFAULT, v8qi, v16qi)
769 VAR2 (BINOPU, qtbl4, 0, DEFAULT, v8qi, v16qi)
770 VAR2 (BINOP_PPU, qtbl4, 0, DEFAULT, v8qi, v16qi)
771 VAR2 (BINOP_SSU, qtbl4, 0, DEFAULT, v8qi, v16qi)
773 /* Implemented by aarch64_qtbx1<mode>. */
774 VAR2 (TERNOP, qtbx1, 0, DEFAULT, v8qi, v16qi)
775 VAR2 (TERNOPU, qtbx1, 0, DEFAULT, v8qi, v16qi)
776 VAR2 (TERNOP_PPPU, qtbx1, 0, DEFAULT, v8qi, v16qi)
777 VAR2 (TERNOP_SSSU, qtbx1, 0, DEFAULT, v8qi, v16qi)
779 /* Implemented by aarch64_qtbx2<mode>. */
780 VAR2 (TERNOP, qtbx2, 0, DEFAULT, v8qi, v16qi)
781 VAR2 (TERNOPU, qtbx2, 0, DEFAULT, v8qi, v16qi)
782 VAR2 (TERNOP_PPPU, qtbx2, 0, DEFAULT, v8qi, v16qi)
783 VAR2 (TERNOP_SSSU, qtbx2, 0, DEFAULT, v8qi, v16qi)
785 /* Implemented by aarch64_qtbx3<mode>. */
786 VAR2 (TERNOP, qtbx3, 0, DEFAULT, v8qi, v16qi)
787 VAR2 (TERNOPU, qtbx3, 0, DEFAULT, v8qi, v16qi)
788 VAR2 (TERNOP_PPPU, qtbx3, 0, DEFAULT, v8qi, v16qi)
789 VAR2 (TERNOP_SSSU, qtbx3, 0, DEFAULT, v8qi, v16qi)
791 /* Implemented by aarch64_qtbx4<mode>. */
792 VAR2 (TERNOP, qtbx4, 0, DEFAULT, v8qi, v16qi)
793 VAR2 (TERNOPU, qtbx4, 0, DEFAULT, v8qi, v16qi)
794 VAR2 (TERNOP_PPPU, qtbx4, 0, DEFAULT, v8qi, v16qi)
795 VAR2 (TERNOP_SSSU, qtbx4, 0, DEFAULT, v8qi, v16qi)
797 /* Builtins for ARMv8.1-A Adv.SIMD instructions. */
799 /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>. */
800 BUILTIN_VSDQ_HSI (TERNOP, sqrdmlah, 0, DEFAULT)
801 BUILTIN_VSDQ_HSI (TERNOP, sqrdmlsh, 0, DEFAULT)
803 /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>. */
804 BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlah_lane, 0, DEFAULT)
805 BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlsh_lane, 0, DEFAULT)
807 /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>. */
808 BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlah_laneq, 0, DEFAULT)
809 BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlsh_laneq, 0, DEFAULT)
811 /* Implemented by <FCVT_F2FIXED/FIXED2F:fcvt_fixed_insn><*><*>3. */
812 BUILTIN_VSDQ_HSDI (SHIFTIMM, scvtf, 3, FP)
813 BUILTIN_VSDQ_HSDI (FCVTIMM_SUS, ucvtf, 3, FP)
814 BUILTIN_VHSDF_HSDF (SHIFTIMM, fcvtzs, 3, FP)
815 BUILTIN_VHSDF_HSDF (SHIFTIMM_USS, fcvtzu, 3, FP)
816 VAR1 (SHIFTIMM, scvtfsi, 3, FP, hf)
817 VAR1 (SHIFTIMM, scvtfdi, 3, FP, hf)
818 VAR1 (FCVTIMM_SUS, ucvtfsi, 3, FP, hf)
819 VAR1 (FCVTIMM_SUS, ucvtfdi, 3, FP, hf)
820 BUILTIN_GPI (SHIFTIMM, fcvtzshf, 3, FP)
821 BUILTIN_GPI (SHIFTIMM_USS, fcvtzuhf, 3, FP)
823 /* Implemented by aarch64_rsqrte<mode>. */
824 BUILTIN_VHSDF_HSDF (UNOP, rsqrte, 0, FP)
826 /* Implemented by aarch64_rsqrts<mode>. */
827 BUILTIN_VHSDF_HSDF (BINOP, rsqrts, 0, FP)
829 /* Implemented by aarch64_ursqrte<mode>. */
830 BUILTIN_VDQ_SI (UNOPU, ursqrte, 0, DEFAULT)
832 /* Implemented by fabd<mode>3. */
833 BUILTIN_VHSDF_HSDF (BINOP, fabd, 3, FP)
835 /* Implemented by aarch64_faddp<mode>. */
836 BUILTIN_VHSDF (BINOP, faddp, 0, FP)
838 /* Implemented by aarch64_cm<optab><mode>. */
839 BUILTIN_VHSDF_HSDF (BINOP_USS, cmeq, 0, FP)
840 BUILTIN_VHSDF_HSDF (BINOP_USS, cmge, 0, FP)
841 BUILTIN_VHSDF_HSDF (BINOP_USS, cmgt, 0, FP)
842 BUILTIN_VHSDF_HSDF (BINOP_USS, cmle, 0, FP)
843 BUILTIN_VHSDF_HSDF (BINOP_USS, cmlt, 0, FP)
845 /* Implemented by aarch64_fac<optab><mode>. */
846 BUILTIN_VHSDF_HSDF (BINOP_USS, faclt, 0, FP)
847 BUILTIN_VHSDF_HSDF (BINOP_USS, facle, 0, FP)
848 BUILTIN_VHSDF_HSDF (BINOP_USS, facgt, 0, FP)
849 BUILTIN_VHSDF_HSDF (BINOP_USS, facge, 0, FP)
851 /* Implemented by sqrt<mode>2. */
852 VAR1 (UNOP, sqrt, 2, FP, hf)
854 /* Implemented by <optab><mode>hf2. */
855 VAR1 (UNOP, floatdi, 2, FP, hf)
856 VAR1 (UNOP, floatsi, 2, FP, hf)
857 VAR1 (UNOP, floathi, 2, FP, hf)
858 VAR1 (UNOPUS, floatunsdi, 2, FP, hf)
859 VAR1 (UNOPUS, floatunssi, 2, FP, hf)
860 VAR1 (UNOPUS, floatunshi, 2, FP, hf)
861 BUILTIN_GPI_I16 (UNOP, fix_trunchf, 2, FP)
862 BUILTIN_GPI (UNOP, fix_truncsf, 2, FP)
863 BUILTIN_GPI (UNOP, fix_truncdf, 2, FP)
864 BUILTIN_GPI_I16 (UNOPUS, fixuns_trunchf, 2, FP)
865 BUILTIN_GPI (UNOPUS, fixuns_truncsf, 2, FP)
866 BUILTIN_GPI (UNOPUS, fixuns_truncdf, 2, FP)
868 /* Implemented by aarch64_sm3ss1qv4si. */
869 VAR1 (TERNOPU, sm3ss1q, 0, DEFAULT, v4si)
870 /* Implemented by aarch64_sm3tt<sm3tt_op>qv4si. */
871 VAR1 (QUADOPUI, sm3tt1aq, 0, DEFAULT, v4si)
872 VAR1 (QUADOPUI, sm3tt1bq, 0, DEFAULT, v4si)
873 VAR1 (QUADOPUI, sm3tt2aq, 0, DEFAULT, v4si)
874 VAR1 (QUADOPUI, sm3tt2bq, 0, DEFAULT, v4si)
875 /* Implemented by aarch64_sm3partw<sm3part_op>qv4si. */
876 VAR1 (TERNOPU, sm3partw1q, 0, DEFAULT, v4si)
877 VAR1 (TERNOPU, sm3partw2q, 0, DEFAULT, v4si)
878 /* Implemented by aarch64_sm4eqv4si. */
879 VAR1 (BINOPU, sm4eq, 0, DEFAULT, v4si)
880 /* Implemented by aarch64_sm4ekeyqv4si. */
881 VAR1 (BINOPU, sm4ekeyq, 0, DEFAULT, v4si)
882 /* Implemented by aarch64_crypto_sha512hqv2di. */
883 VAR1 (TERNOPU, crypto_sha512hq, 0, DEFAULT, v2di)
884 /* Implemented by aarch64_sha512h2qv2di. */
885 VAR1 (TERNOPU, crypto_sha512h2q, 0, DEFAULT, v2di)
886 /* Implemented by aarch64_crypto_sha512su0qv2di. */
887 VAR1 (BINOPU, crypto_sha512su0q, 0, DEFAULT, v2di)
888 /* Implemented by aarch64_crypto_sha512su1qv2di. */
889 VAR1 (TERNOPU, crypto_sha512su1q, 0, DEFAULT, v2di)
890 /* Implemented by eor3q<mode>4. */
891 BUILTIN_VQ_I (TERNOPU, eor3q, 4, DEFAULT)
892 BUILTIN_VQ_I (TERNOP, eor3q, 4, DEFAULT)
893 /* Implemented by aarch64_rax1qv2di. */
894 VAR1 (BINOPU, rax1q, 0, DEFAULT, v2di)
895 /* Implemented by aarch64_xarqv2di. */
896 VAR1 (TERNOPUI, xarq, 0, DEFAULT, v2di)
897 /* Implemented by bcaxq<mode>4. */
898 BUILTIN_VQ_I (TERNOPU, bcaxq, 4, DEFAULT)
899 BUILTIN_VQ_I (TERNOP, bcaxq, 4, DEFAULT)
901 /* Implemented by aarch64_fml<f16mac1>l<f16quad>_low<mode>. */
902 VAR1 (TERNOP, fmlal_low, 0, FP, v2sf)
903 VAR1 (TERNOP, fmlsl_low, 0, FP, v2sf)
904 VAR1 (TERNOP, fmlalq_low, 0, FP, v4sf)
905 VAR1 (TERNOP, fmlslq_low, 0, FP, v4sf)
906 /* Implemented by aarch64_fml<f16mac1>l<f16quad>_high<mode>. */
907 VAR1 (TERNOP, fmlal_high, 0, FP, v2sf)
908 VAR1 (TERNOP, fmlsl_high, 0, FP, v2sf)
909 VAR1 (TERNOP, fmlalq_high, 0, FP, v4sf)
910 VAR1 (TERNOP, fmlslq_high, 0, FP, v4sf)
911 /* Implemented by aarch64_fml<f16mac1>l_lane_lowv2sf. */
912 VAR1 (QUADOP_LANE, fmlal_lane_low, 0, FP, v2sf)
913 VAR1 (QUADOP_LANE, fmlsl_lane_low, 0, FP, v2sf)
914 /* Implemented by aarch64_fml<f16mac1>l_laneq_lowv2sf. */
915 VAR1 (QUADOP_LANE, fmlal_laneq_low, 0, FP, v2sf)
916 VAR1 (QUADOP_LANE, fmlsl_laneq_low, 0, FP, v2sf)
917 /* Implemented by aarch64_fml<f16mac1>lq_lane_lowv4sf. */
918 VAR1 (QUADOP_LANE, fmlalq_lane_low, 0, FP, v4sf)
919 VAR1 (QUADOP_LANE, fmlslq_lane_low, 0, FP, v4sf)
920 /* Implemented by aarch64_fml<f16mac1>lq_laneq_lowv4sf. */
921 VAR1 (QUADOP_LANE, fmlalq_laneq_low, 0, FP, v4sf)
922 VAR1 (QUADOP_LANE, fmlslq_laneq_low, 0, FP, v4sf)
923 /* Implemented by aarch64_fml<f16mac1>l_lane_highv2sf. */
924 VAR1 (QUADOP_LANE, fmlal_lane_high, 0, FP, v2sf)
925 VAR1 (QUADOP_LANE, fmlsl_lane_high, 0, FP, v2sf)
926 /* Implemented by aarch64_fml<f16mac1>l_laneq_highv2sf. */
927 VAR1 (QUADOP_LANE, fmlal_laneq_high, 0, FP, v2sf)
928 VAR1 (QUADOP_LANE, fmlsl_laneq_high, 0, FP, v2sf)
929 /* Implemented by aarch64_fml<f16mac1>lq_lane_highv4sf. */
930 VAR1 (QUADOP_LANE, fmlalq_lane_high, 0, FP, v4sf)
931 VAR1 (QUADOP_LANE, fmlslq_lane_high, 0, FP, v4sf)
932 /* Implemented by aarch64_fml<f16mac1>lq_laneq_highv4sf. */
933 VAR1 (QUADOP_LANE, fmlalq_laneq_high, 0, FP, v4sf)
934 VAR1 (QUADOP_LANE, fmlslq_laneq_high, 0, FP, v4sf)
936 /* Implemented by aarch64_<frintnzs_op><mode>. */
937 BUILTIN_VSFDF (UNOP, frint32z, 0, FP)
938 BUILTIN_VSFDF (UNOP, frint32x, 0, FP)
939 BUILTIN_VSFDF (UNOP, frint64z, 0, FP)
940 BUILTIN_VSFDF (UNOP, frint64x, 0, FP)
942 /* Implemented by aarch64_bfdot{_lane}{q}<mode>. */
943 VAR2 (TERNOP, bfdot, 0, QUIET, v2sf, v4sf)
944 VAR2 (QUADOP_LANE_PAIR, bfdot_lane, 0, QUIET, v2sf, v4sf)
945 VAR2 (QUADOP_LANE_PAIR, bfdot_laneq, 0, QUIET, v2sf, v4sf)
947 /* Implemented by aarch64_bfmmlaqv4sf */
948 VAR1 (TERNOP, bfmmlaq, 0, QUIET, v4sf)
950 /* Implemented by aarch64_bfmlal<bt>{_lane{q}}v4sf */
951 VAR1 (TERNOP, bfmlalb, 0, FP, v4sf)
952 VAR1 (TERNOP, bfmlalt, 0, FP, v4sf)
953 VAR1 (QUADOP_LANE, bfmlalb_lane, 0, FP, v4sf)
954 VAR1 (QUADOP_LANE, bfmlalt_lane, 0, FP, v4sf)
955 VAR1 (QUADOP_LANE, bfmlalb_lane_q, 0, FP, v4sf)
956 VAR1 (QUADOP_LANE, bfmlalt_lane_q, 0, FP, v4sf)
958 /* Implemented by aarch64_simd_<sur>mmlav16qi. */
959 VAR1 (TERNOP, simd_smmla, 0, DEFAULT, v16qi)
960 VAR1 (TERNOPU, simd_ummla, 0, DEFAULT, v16qi)
961 VAR1 (TERNOP_SSUS, simd_usmmla, 0, DEFAULT, v16qi)
963 /* Implemented by aarch64_bfcvtn{q}{2}<mode> */
964 VAR1 (UNOP, bfcvtn, 0, FP, v4bf)
965 VAR1 (UNOP, bfcvtn_q, 0, FP, v8bf)
966 VAR1 (BINOP, bfcvtn2, 0, FP, v8bf)
967 VAR1 (UNOP, bfcvt, 0, FP, bf)
969 /* Implemented by aarch64_{v}bfcvt{_high}<mode>. */
970 VAR2 (UNOP, vbfcvt, 0, QUIET, v4bf, v8bf)
971 VAR1 (UNOP, vbfcvt_high, 0, QUIET, v8bf)
972 VAR1 (UNOP, bfcvt, 0, QUIET, sf)