aarch64-simd-builtins.def revision 1.7 1 1.1 mrg /* Machine description for AArch64 architecture.
2 1.7 mrg Copyright (C) 2012-2018 Free Software Foundation, Inc.
3 1.1 mrg Contributed by ARM Ltd.
4 1.1 mrg
5 1.1 mrg This file is part of GCC.
6 1.1 mrg
7 1.1 mrg GCC is free software; you can redistribute it and/or modify it
8 1.1 mrg under the terms of the GNU General Public License as published by
9 1.1 mrg the Free Software Foundation; either version 3, or (at your option)
10 1.1 mrg any later version.
11 1.1 mrg
12 1.1 mrg GCC is distributed in the hope that it will be useful, but
13 1.1 mrg WITHOUT ANY WARRANTY; without even the implied warranty of
14 1.1 mrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 1.1 mrg General Public License for more details.
16 1.1 mrg
17 1.1 mrg You should have received a copy of the GNU General Public License
18 1.1 mrg along with GCC; see the file COPYING3. If not see
19 1.1 mrg <http://www.gnu.org/licenses/>. */
20 1.1 mrg
21 1.3 mrg /* In the list below, the BUILTIN_<ITERATOR> macros expand to create
22 1.3 mrg builtins for each of the modes described by <ITERATOR>. When adding
23 1.3 mrg new builtins to this list, a helpful idiom to follow is to add
24 1.3 mrg a line for each pattern in the md file. Thus, ADDP, which has one
25 1.3 mrg pattern defined for the VD_BHSI iterator, and one for DImode, has two
26 1.3 mrg entries below.
27 1.3 mrg
28 1.3 mrg Parameter 1 is the 'type' of the intrinsic. This is used to
29 1.3 mrg describe the type modifiers (for example; unsigned) applied to
30 1.3 mrg each of the parameters to the intrinsic function.
31 1.3 mrg
32 1.3 mrg Parameter 2 is the name of the intrinsic. This is appended
33 1.3 mrg to `__builtin_aarch64_<name><mode>` to give the intrinsic name
34 1.3 mrg as exported to the front-ends.
35 1.3 mrg
36 1.3 mrg Parameter 3 describes how to map from the name to the CODE_FOR_
37 1.3 mrg macro holding the RTL pattern for the intrinsic. This mapping is:
38 1.3 mrg 0 - CODE_FOR_aarch64_<name><mode>
39 1.3 mrg 1-9 - CODE_FOR_<name><mode><1-9>
40 1.3 mrg 10 - CODE_FOR_<name><mode>. */
41 1.3 mrg
42 1.3 mrg BUILTIN_VDC (COMBINE, combine, 0)
43 1.6 mrg VAR1 (COMBINEP, combine, 0, di)
44 1.3 mrg BUILTIN_VB (BINOP, pmul, 0)
45 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP, fmulx, 0)
46 1.6 mrg BUILTIN_VHSDF_DF (UNOP, sqrt, 2)
47 1.3 mrg BUILTIN_VD_BHSI (BINOP, addp, 0)
48 1.3 mrg VAR1 (UNOP, addp, 0, di)
49 1.3 mrg BUILTIN_VDQ_BHSI (UNOP, clrsb, 2)
50 1.3 mrg BUILTIN_VDQ_BHSI (UNOP, clz, 2)
51 1.3 mrg BUILTIN_VS (UNOP, ctz, 2)
52 1.3 mrg BUILTIN_VB (UNOP, popcount, 2)
53 1.1 mrg
54 1.1 mrg /* Implemented by aarch64_<sur>q<r>shl<mode>. */
55 1.3 mrg BUILTIN_VSDQ_I (BINOP, sqshl, 0)
56 1.3 mrg BUILTIN_VSDQ_I (BINOP_UUS, uqshl, 0)
57 1.3 mrg BUILTIN_VSDQ_I (BINOP, sqrshl, 0)
58 1.3 mrg BUILTIN_VSDQ_I (BINOP_UUS, uqrshl, 0)
59 1.1 mrg /* Implemented by aarch64_<su_optab><optab><mode>. */
60 1.3 mrg BUILTIN_VSDQ_I (BINOP, sqadd, 0)
61 1.3 mrg BUILTIN_VSDQ_I (BINOPU, uqadd, 0)
62 1.3 mrg BUILTIN_VSDQ_I (BINOP, sqsub, 0)
63 1.3 mrg BUILTIN_VSDQ_I (BINOPU, uqsub, 0)
64 1.1 mrg /* Implemented by aarch64_<sur>qadd<mode>. */
65 1.3 mrg BUILTIN_VSDQ_I (BINOP_SSU, suqadd, 0)
66 1.3 mrg BUILTIN_VSDQ_I (BINOP_UUS, usqadd, 0)
67 1.1 mrg
68 1.1 mrg /* Implemented by aarch64_get_dreg<VSTRUCT:mode><VDC:mode>. */
69 1.3 mrg BUILTIN_VDC (GETREG, get_dregoi, 0)
70 1.3 mrg BUILTIN_VDC (GETREG, get_dregci, 0)
71 1.3 mrg BUILTIN_VDC (GETREG, get_dregxi, 0)
72 1.6 mrg VAR1 (GETREGP, get_dregoi, 0, di)
73 1.6 mrg VAR1 (GETREGP, get_dregci, 0, di)
74 1.6 mrg VAR1 (GETREGP, get_dregxi, 0, di)
75 1.1 mrg /* Implemented by aarch64_get_qreg<VSTRUCT:mode><VQ:mode>. */
76 1.3 mrg BUILTIN_VQ (GETREG, get_qregoi, 0)
77 1.3 mrg BUILTIN_VQ (GETREG, get_qregci, 0)
78 1.3 mrg BUILTIN_VQ (GETREG, get_qregxi, 0)
79 1.6 mrg VAR1 (GETREGP, get_qregoi, 0, v2di)
80 1.6 mrg VAR1 (GETREGP, get_qregci, 0, v2di)
81 1.6 mrg VAR1 (GETREGP, get_qregxi, 0, v2di)
82 1.1 mrg /* Implemented by aarch64_set_qreg<VSTRUCT:mode><VQ:mode>. */
83 1.3 mrg BUILTIN_VQ (SETREG, set_qregoi, 0)
84 1.3 mrg BUILTIN_VQ (SETREG, set_qregci, 0)
85 1.3 mrg BUILTIN_VQ (SETREG, set_qregxi, 0)
86 1.6 mrg VAR1 (SETREGP, set_qregoi, 0, v2di)
87 1.6 mrg VAR1 (SETREGP, set_qregci, 0, v2di)
88 1.6 mrg VAR1 (SETREGP, set_qregxi, 0, v2di)
89 1.7 mrg /* Implemented by aarch64_ld1x2<VQ:mode>. */
90 1.7 mrg BUILTIN_VQ (LOADSTRUCT, ld1x2, 0)
91 1.7 mrg /* Implemented by aarch64_ld1x2<VDC:mode>. */
92 1.7 mrg BUILTIN_VDC (LOADSTRUCT, ld1x2, 0)
93 1.1 mrg /* Implemented by aarch64_ld<VSTRUCT:nregs><VDC:mode>. */
94 1.3 mrg BUILTIN_VDC (LOADSTRUCT, ld2, 0)
95 1.3 mrg BUILTIN_VDC (LOADSTRUCT, ld3, 0)
96 1.3 mrg BUILTIN_VDC (LOADSTRUCT, ld4, 0)
97 1.1 mrg /* Implemented by aarch64_ld<VSTRUCT:nregs><VQ:mode>. */
98 1.3 mrg BUILTIN_VQ (LOADSTRUCT, ld2, 0)
99 1.3 mrg BUILTIN_VQ (LOADSTRUCT, ld3, 0)
100 1.3 mrg BUILTIN_VQ (LOADSTRUCT, ld4, 0)
101 1.3 mrg /* Implemented by aarch64_ld<VSTRUCT:nregs>r<VALLDIF:mode>. */
102 1.3 mrg BUILTIN_VALLDIF (LOADSTRUCT, ld2r, 0)
103 1.3 mrg BUILTIN_VALLDIF (LOADSTRUCT, ld3r, 0)
104 1.3 mrg BUILTIN_VALLDIF (LOADSTRUCT, ld4r, 0)
105 1.3 mrg /* Implemented by aarch64_ld<VSTRUCT:nregs>_lane<VQ:mode>. */
106 1.4 mrg BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld2_lane, 0)
107 1.4 mrg BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld3_lane, 0)
108 1.4 mrg BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld4_lane, 0)
109 1.1 mrg /* Implemented by aarch64_st<VSTRUCT:nregs><VDC:mode>. */
110 1.3 mrg BUILTIN_VDC (STORESTRUCT, st2, 0)
111 1.3 mrg BUILTIN_VDC (STORESTRUCT, st3, 0)
112 1.3 mrg BUILTIN_VDC (STORESTRUCT, st4, 0)
113 1.1 mrg /* Implemented by aarch64_st<VSTRUCT:nregs><VQ:mode>. */
114 1.3 mrg BUILTIN_VQ (STORESTRUCT, st2, 0)
115 1.3 mrg BUILTIN_VQ (STORESTRUCT, st3, 0)
116 1.3 mrg BUILTIN_VQ (STORESTRUCT, st4, 0)
117 1.3 mrg
118 1.4 mrg BUILTIN_VALLDIF (STORESTRUCT_LANE, st2_lane, 0)
119 1.4 mrg BUILTIN_VALLDIF (STORESTRUCT_LANE, st3_lane, 0)
120 1.4 mrg BUILTIN_VALLDIF (STORESTRUCT_LANE, st4_lane, 0)
121 1.3 mrg
122 1.3 mrg BUILTIN_VQW (BINOP, saddl2, 0)
123 1.3 mrg BUILTIN_VQW (BINOP, uaddl2, 0)
124 1.3 mrg BUILTIN_VQW (BINOP, ssubl2, 0)
125 1.3 mrg BUILTIN_VQW (BINOP, usubl2, 0)
126 1.3 mrg BUILTIN_VQW (BINOP, saddw2, 0)
127 1.3 mrg BUILTIN_VQW (BINOP, uaddw2, 0)
128 1.3 mrg BUILTIN_VQW (BINOP, ssubw2, 0)
129 1.3 mrg BUILTIN_VQW (BINOP, usubw2, 0)
130 1.1 mrg /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>l<mode>. */
131 1.3 mrg BUILTIN_VD_BHSI (BINOP, saddl, 0)
132 1.3 mrg BUILTIN_VD_BHSI (BINOP, uaddl, 0)
133 1.3 mrg BUILTIN_VD_BHSI (BINOP, ssubl, 0)
134 1.3 mrg BUILTIN_VD_BHSI (BINOP, usubl, 0)
135 1.1 mrg /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>. */
136 1.3 mrg BUILTIN_VD_BHSI (BINOP, saddw, 0)
137 1.3 mrg BUILTIN_VD_BHSI (BINOP, uaddw, 0)
138 1.3 mrg BUILTIN_VD_BHSI (BINOP, ssubw, 0)
139 1.3 mrg BUILTIN_VD_BHSI (BINOP, usubw, 0)
140 1.1 mrg /* Implemented by aarch64_<sur>h<addsub><mode>. */
141 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, shadd, 0)
142 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, shsub, 0)
143 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, uhadd, 0)
144 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, uhsub, 0)
145 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, srhadd, 0)
146 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, urhadd, 0)
147 1.1 mrg /* Implemented by aarch64_<sur><addsub>hn<mode>. */
148 1.3 mrg BUILTIN_VQN (BINOP, addhn, 0)
149 1.3 mrg BUILTIN_VQN (BINOP, subhn, 0)
150 1.3 mrg BUILTIN_VQN (BINOP, raddhn, 0)
151 1.3 mrg BUILTIN_VQN (BINOP, rsubhn, 0)
152 1.1 mrg /* Implemented by aarch64_<sur><addsub>hn2<mode>. */
153 1.3 mrg BUILTIN_VQN (TERNOP, addhn2, 0)
154 1.3 mrg BUILTIN_VQN (TERNOP, subhn2, 0)
155 1.3 mrg BUILTIN_VQN (TERNOP, raddhn2, 0)
156 1.3 mrg BUILTIN_VQN (TERNOP, rsubhn2, 0)
157 1.1 mrg
158 1.3 mrg BUILTIN_VSQN_HSDI (UNOP, sqmovun, 0)
159 1.1 mrg /* Implemented by aarch64_<sur>qmovn<mode>. */
160 1.3 mrg BUILTIN_VSQN_HSDI (UNOP, sqmovn, 0)
161 1.3 mrg BUILTIN_VSQN_HSDI (UNOP, uqmovn, 0)
162 1.1 mrg /* Implemented by aarch64_s<optab><mode>. */
163 1.3 mrg BUILTIN_VSDQ_I (UNOP, sqabs, 0)
164 1.3 mrg BUILTIN_VSDQ_I (UNOP, sqneg, 0)
165 1.1 mrg
166 1.1 mrg /* Implemented by aarch64_sqdml<SBINQOPS:as>l<mode>. */
167 1.3 mrg BUILTIN_VSD_HSI (TERNOP, sqdmlal, 0)
168 1.3 mrg BUILTIN_VSD_HSI (TERNOP, sqdmlsl, 0)
169 1.3 mrg /* Implemented by aarch64_sqdml<SBINQOPS:as>l_lane<mode>. */
170 1.3 mrg BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlal_lane, 0)
171 1.3 mrg BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlsl_lane, 0)
172 1.3 mrg /* Implemented by aarch64_sqdml<SBINQOPS:as>l_laneq<mode>. */
173 1.3 mrg BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlal_laneq, 0)
174 1.3 mrg BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlsl_laneq, 0)
175 1.1 mrg /* Implemented by aarch64_sqdml<SBINQOPS:as>l_n<mode>. */
176 1.3 mrg BUILTIN_VD_HSI (TERNOP, sqdmlal_n, 0)
177 1.3 mrg BUILTIN_VD_HSI (TERNOP, sqdmlsl_n, 0)
178 1.1 mrg
179 1.3 mrg BUILTIN_VQ_HSI (TERNOP, sqdmlal2, 0)
180 1.3 mrg BUILTIN_VQ_HSI (TERNOP, sqdmlsl2, 0)
181 1.3 mrg BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlal2_lane, 0)
182 1.3 mrg BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlsl2_lane, 0)
183 1.3 mrg BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlal2_laneq, 0)
184 1.3 mrg BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlsl2_laneq, 0)
185 1.3 mrg BUILTIN_VQ_HSI (TERNOP, sqdmlal2_n, 0)
186 1.3 mrg BUILTIN_VQ_HSI (TERNOP, sqdmlsl2_n, 0)
187 1.3 mrg
188 1.3 mrg BUILTIN_VSD_HSI (BINOP, sqdmull, 0)
189 1.3 mrg BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_lane, 0)
190 1.3 mrg BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_laneq, 0)
191 1.3 mrg BUILTIN_VD_HSI (BINOP, sqdmull_n, 0)
192 1.3 mrg BUILTIN_VQ_HSI (BINOP, sqdmull2, 0)
193 1.3 mrg BUILTIN_VQ_HSI (TERNOP_LANE, sqdmull2_lane, 0)
194 1.3 mrg BUILTIN_VQ_HSI (TERNOP_LANE, sqdmull2_laneq, 0)
195 1.3 mrg BUILTIN_VQ_HSI (BINOP, sqdmull2_n, 0)
196 1.1 mrg /* Implemented by aarch64_sq<r>dmulh<mode>. */
197 1.3 mrg BUILTIN_VSDQ_HSI (BINOP, sqdmulh, 0)
198 1.3 mrg BUILTIN_VSDQ_HSI (BINOP, sqrdmulh, 0)
199 1.1 mrg /* Implemented by aarch64_sq<r>dmulh_lane<q><mode>. */
200 1.3 mrg BUILTIN_VSDQ_HSI (TERNOP_LANE, sqdmulh_lane, 0)
201 1.3 mrg BUILTIN_VSDQ_HSI (TERNOP_LANE, sqdmulh_laneq, 0)
202 1.3 mrg BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_lane, 0)
203 1.3 mrg BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_laneq, 0)
204 1.1 mrg
205 1.3 mrg BUILTIN_VSDQ_I_DI (BINOP, ashl, 3)
206 1.1 mrg /* Implemented by aarch64_<sur>shl<mode>. */
207 1.3 mrg BUILTIN_VSDQ_I_DI (BINOP, sshl, 0)
208 1.3 mrg BUILTIN_VSDQ_I_DI (BINOP_UUS, ushl, 0)
209 1.3 mrg BUILTIN_VSDQ_I_DI (BINOP, srshl, 0)
210 1.3 mrg BUILTIN_VSDQ_I_DI (BINOP_UUS, urshl, 0)
211 1.3 mrg
212 1.7 mrg /* Implemented by aarch64_<sur><dotprod>{_lane}{q}<dot_mode>. */
213 1.7 mrg BUILTIN_VB (TERNOP, sdot, 0)
214 1.7 mrg BUILTIN_VB (TERNOPU, udot, 0)
215 1.7 mrg BUILTIN_VB (QUADOP_LANE, sdot_lane, 0)
216 1.7 mrg BUILTIN_VB (QUADOPU_LANE, udot_lane, 0)
217 1.7 mrg BUILTIN_VB (QUADOP_LANE, sdot_laneq, 0)
218 1.7 mrg BUILTIN_VB (QUADOPU_LANE, udot_laneq, 0)
219 1.7 mrg
220 1.3 mrg BUILTIN_VDQ_I (SHIFTIMM, ashr, 3)
221 1.3 mrg VAR1 (SHIFTIMM, ashr_simd, 0, di)
222 1.3 mrg BUILTIN_VDQ_I (SHIFTIMM, lshr, 3)
223 1.3 mrg VAR1 (USHIFTIMM, lshr_simd, 0, di)
224 1.1 mrg /* Implemented by aarch64_<sur>shr_n<mode>. */
225 1.3 mrg BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n, 0)
226 1.3 mrg BUILTIN_VSDQ_I_DI (USHIFTIMM, urshr_n, 0)
227 1.1 mrg /* Implemented by aarch64_<sur>sra_n<mode>. */
228 1.3 mrg BUILTIN_VSDQ_I_DI (SHIFTACC, ssra_n, 0)
229 1.3 mrg BUILTIN_VSDQ_I_DI (USHIFTACC, usra_n, 0)
230 1.3 mrg BUILTIN_VSDQ_I_DI (SHIFTACC, srsra_n, 0)
231 1.3 mrg BUILTIN_VSDQ_I_DI (USHIFTACC, ursra_n, 0)
232 1.1 mrg /* Implemented by aarch64_<sur>shll_n<mode>. */
233 1.3 mrg BUILTIN_VD_BHSI (SHIFTIMM, sshll_n, 0)
234 1.3 mrg BUILTIN_VD_BHSI (USHIFTIMM, ushll_n, 0)
235 1.1 mrg /* Implemented by aarch64_<sur>shll2_n<mode>. */
236 1.3 mrg BUILTIN_VQW (SHIFTIMM, sshll2_n, 0)
237 1.3 mrg BUILTIN_VQW (SHIFTIMM, ushll2_n, 0)
238 1.1 mrg /* Implemented by aarch64_<sur>q<r>shr<u>n_n<mode>. */
239 1.3 mrg BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrun_n, 0)
240 1.3 mrg BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrun_n, 0)
241 1.3 mrg BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrn_n, 0)
242 1.3 mrg BUILTIN_VSQN_HSDI (USHIFTIMM, uqshrn_n, 0)
243 1.3 mrg BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrn_n, 0)
244 1.3 mrg BUILTIN_VSQN_HSDI (USHIFTIMM, uqrshrn_n, 0)
245 1.1 mrg /* Implemented by aarch64_<sur>s<lr>i_n<mode>. */
246 1.3 mrg BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssri_n, 0)
247 1.3 mrg BUILTIN_VSDQ_I_DI (USHIFTACC, usri_n, 0)
248 1.3 mrg BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssli_n, 0)
249 1.6 mrg VAR2 (SHIFTINSERTP, ssli_n, 0, di, v2di)
250 1.3 mrg BUILTIN_VSDQ_I_DI (USHIFTACC, usli_n, 0)
251 1.1 mrg /* Implemented by aarch64_<sur>qshl<u>_n<mode>. */
252 1.3 mrg BUILTIN_VSDQ_I (SHIFTIMM_USS, sqshlu_n, 0)
253 1.3 mrg BUILTIN_VSDQ_I (SHIFTIMM, sqshl_n, 0)
254 1.3 mrg BUILTIN_VSDQ_I (USHIFTIMM, uqshl_n, 0)
255 1.3 mrg
256 1.3 mrg /* Implemented by aarch64_reduc_plus_<mode>. */
257 1.3 mrg BUILTIN_VALL (UNOP, reduc_plus_scal_, 10)
258 1.3 mrg
259 1.3 mrg /* Implemented by reduc_<maxmin_uns>_scal_<mode> (producing scalar). */
260 1.6 mrg BUILTIN_VDQIF_F16 (UNOP, reduc_smax_scal_, 10)
261 1.6 mrg BUILTIN_VDQIF_F16 (UNOP, reduc_smin_scal_, 10)
262 1.3 mrg BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10)
263 1.3 mrg BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10)
264 1.6 mrg BUILTIN_VHSDF (UNOP, reduc_smax_nan_scal_, 10)
265 1.6 mrg BUILTIN_VHSDF (UNOP, reduc_smin_nan_scal_, 10)
266 1.3 mrg
267 1.6 mrg /* Implemented by <maxmin_uns><mode>3.
268 1.3 mrg smax variants map to fmaxnm,
269 1.3 mrg smax_nan variants map to fmax. */
270 1.4 mrg BUILTIN_VDQ_BHSI (BINOP, smax, 3)
271 1.4 mrg BUILTIN_VDQ_BHSI (BINOP, smin, 3)
272 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, umax, 3)
273 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, umin, 3)
274 1.6 mrg BUILTIN_VHSDF_DF (BINOP, smax_nan, 3)
275 1.6 mrg BUILTIN_VHSDF_DF (BINOP, smin_nan, 3)
276 1.3 mrg
277 1.6 mrg /* Implemented by <maxmin_uns><mode>3. */
278 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP, fmax, 3)
279 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP, fmin, 3)
280 1.4 mrg
281 1.3 mrg /* Implemented by aarch64_<maxmin_uns>p<mode>. */
282 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, smaxp, 0)
283 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, sminp, 0)
284 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, umaxp, 0)
285 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, uminp, 0)
286 1.6 mrg BUILTIN_VHSDF (BINOP, smaxp, 0)
287 1.6 mrg BUILTIN_VHSDF (BINOP, sminp, 0)
288 1.6 mrg BUILTIN_VHSDF (BINOP, smax_nanp, 0)
289 1.6 mrg BUILTIN_VHSDF (BINOP, smin_nanp, 0)
290 1.3 mrg
291 1.3 mrg /* Implemented by <frint_pattern><mode>2. */
292 1.6 mrg BUILTIN_VHSDF (UNOP, btrunc, 2)
293 1.6 mrg BUILTIN_VHSDF (UNOP, ceil, 2)
294 1.6 mrg BUILTIN_VHSDF (UNOP, floor, 2)
295 1.6 mrg BUILTIN_VHSDF (UNOP, nearbyint, 2)
296 1.6 mrg BUILTIN_VHSDF (UNOP, rint, 2)
297 1.6 mrg BUILTIN_VHSDF (UNOP, round, 2)
298 1.6 mrg BUILTIN_VHSDF_DF (UNOP, frintn, 2)
299 1.6 mrg
300 1.6 mrg VAR1 (UNOP, btrunc, 2, hf)
301 1.6 mrg VAR1 (UNOP, ceil, 2, hf)
302 1.6 mrg VAR1 (UNOP, floor, 2, hf)
303 1.6 mrg VAR1 (UNOP, frintn, 2, hf)
304 1.6 mrg VAR1 (UNOP, nearbyint, 2, hf)
305 1.6 mrg VAR1 (UNOP, rint, 2, hf)
306 1.6 mrg VAR1 (UNOP, round, 2, hf)
307 1.3 mrg
308 1.3 mrg /* Implemented by l<fcvt_pattern><su_optab><VQDF:mode><vcvt_target>2. */
309 1.6 mrg VAR1 (UNOP, lbtruncv4hf, 2, v4hi)
310 1.6 mrg VAR1 (UNOP, lbtruncv8hf, 2, v8hi)
311 1.3 mrg VAR1 (UNOP, lbtruncv2sf, 2, v2si)
312 1.3 mrg VAR1 (UNOP, lbtruncv4sf, 2, v4si)
313 1.3 mrg VAR1 (UNOP, lbtruncv2df, 2, v2di)
314 1.3 mrg
315 1.6 mrg VAR1 (UNOPUS, lbtruncuv4hf, 2, v4hi)
316 1.6 mrg VAR1 (UNOPUS, lbtruncuv8hf, 2, v8hi)
317 1.4 mrg VAR1 (UNOPUS, lbtruncuv2sf, 2, v2si)
318 1.4 mrg VAR1 (UNOPUS, lbtruncuv4sf, 2, v4si)
319 1.4 mrg VAR1 (UNOPUS, lbtruncuv2df, 2, v2di)
320 1.3 mrg
321 1.6 mrg VAR1 (UNOP, lroundv4hf, 2, v4hi)
322 1.6 mrg VAR1 (UNOP, lroundv8hf, 2, v8hi)
323 1.3 mrg VAR1 (UNOP, lroundv2sf, 2, v2si)
324 1.3 mrg VAR1 (UNOP, lroundv4sf, 2, v4si)
325 1.3 mrg VAR1 (UNOP, lroundv2df, 2, v2di)
326 1.6 mrg /* Implemented by l<fcvt_pattern><su_optab><GPF_F16:mode><GPI:mode>2. */
327 1.6 mrg BUILTIN_GPI_I16 (UNOP, lroundhf, 2)
328 1.3 mrg VAR1 (UNOP, lroundsf, 2, si)
329 1.3 mrg VAR1 (UNOP, lrounddf, 2, di)
330 1.3 mrg
331 1.6 mrg VAR1 (UNOPUS, lrounduv4hf, 2, v4hi)
332 1.6 mrg VAR1 (UNOPUS, lrounduv8hf, 2, v8hi)
333 1.4 mrg VAR1 (UNOPUS, lrounduv2sf, 2, v2si)
334 1.4 mrg VAR1 (UNOPUS, lrounduv4sf, 2, v4si)
335 1.4 mrg VAR1 (UNOPUS, lrounduv2df, 2, v2di)
336 1.6 mrg BUILTIN_GPI_I16 (UNOPUS, lrounduhf, 2)
337 1.4 mrg VAR1 (UNOPUS, lroundusf, 2, si)
338 1.4 mrg VAR1 (UNOPUS, lroundudf, 2, di)
339 1.3 mrg
340 1.6 mrg VAR1 (UNOP, lceilv4hf, 2, v4hi)
341 1.6 mrg VAR1 (UNOP, lceilv8hf, 2, v8hi)
342 1.3 mrg VAR1 (UNOP, lceilv2sf, 2, v2si)
343 1.3 mrg VAR1 (UNOP, lceilv4sf, 2, v4si)
344 1.3 mrg VAR1 (UNOP, lceilv2df, 2, v2di)
345 1.6 mrg BUILTIN_GPI_I16 (UNOP, lceilhf, 2)
346 1.3 mrg
347 1.6 mrg VAR1 (UNOPUS, lceiluv4hf, 2, v4hi)
348 1.6 mrg VAR1 (UNOPUS, lceiluv8hf, 2, v8hi)
349 1.4 mrg VAR1 (UNOPUS, lceiluv2sf, 2, v2si)
350 1.4 mrg VAR1 (UNOPUS, lceiluv4sf, 2, v4si)
351 1.4 mrg VAR1 (UNOPUS, lceiluv2df, 2, v2di)
352 1.6 mrg BUILTIN_GPI_I16 (UNOPUS, lceiluhf, 2)
353 1.4 mrg VAR1 (UNOPUS, lceilusf, 2, si)
354 1.4 mrg VAR1 (UNOPUS, lceiludf, 2, di)
355 1.3 mrg
356 1.6 mrg VAR1 (UNOP, lfloorv4hf, 2, v4hi)
357 1.6 mrg VAR1 (UNOP, lfloorv8hf, 2, v8hi)
358 1.3 mrg VAR1 (UNOP, lfloorv2sf, 2, v2si)
359 1.3 mrg VAR1 (UNOP, lfloorv4sf, 2, v4si)
360 1.3 mrg VAR1 (UNOP, lfloorv2df, 2, v2di)
361 1.6 mrg BUILTIN_GPI_I16 (UNOP, lfloorhf, 2)
362 1.3 mrg
363 1.6 mrg VAR1 (UNOPUS, lflooruv4hf, 2, v4hi)
364 1.6 mrg VAR1 (UNOPUS, lflooruv8hf, 2, v8hi)
365 1.4 mrg VAR1 (UNOPUS, lflooruv2sf, 2, v2si)
366 1.4 mrg VAR1 (UNOPUS, lflooruv4sf, 2, v4si)
367 1.4 mrg VAR1 (UNOPUS, lflooruv2df, 2, v2di)
368 1.6 mrg BUILTIN_GPI_I16 (UNOPUS, lflooruhf, 2)
369 1.4 mrg VAR1 (UNOPUS, lfloorusf, 2, si)
370 1.4 mrg VAR1 (UNOPUS, lfloorudf, 2, di)
371 1.3 mrg
372 1.6 mrg VAR1 (UNOP, lfrintnv4hf, 2, v4hi)
373 1.6 mrg VAR1 (UNOP, lfrintnv8hf, 2, v8hi)
374 1.3 mrg VAR1 (UNOP, lfrintnv2sf, 2, v2si)
375 1.3 mrg VAR1 (UNOP, lfrintnv4sf, 2, v4si)
376 1.3 mrg VAR1 (UNOP, lfrintnv2df, 2, v2di)
377 1.6 mrg BUILTIN_GPI_I16 (UNOP, lfrintnhf, 2)
378 1.3 mrg VAR1 (UNOP, lfrintnsf, 2, si)
379 1.3 mrg VAR1 (UNOP, lfrintndf, 2, di)
380 1.3 mrg
381 1.6 mrg VAR1 (UNOPUS, lfrintnuv4hf, 2, v4hi)
382 1.6 mrg VAR1 (UNOPUS, lfrintnuv8hf, 2, v8hi)
383 1.4 mrg VAR1 (UNOPUS, lfrintnuv2sf, 2, v2si)
384 1.4 mrg VAR1 (UNOPUS, lfrintnuv4sf, 2, v4si)
385 1.4 mrg VAR1 (UNOPUS, lfrintnuv2df, 2, v2di)
386 1.6 mrg BUILTIN_GPI_I16 (UNOPUS, lfrintnuhf, 2)
387 1.4 mrg VAR1 (UNOPUS, lfrintnusf, 2, si)
388 1.4 mrg VAR1 (UNOPUS, lfrintnudf, 2, di)
389 1.3 mrg
390 1.3 mrg /* Implemented by <optab><fcvt_target><VDQF:mode>2. */
391 1.6 mrg VAR1 (UNOP, floatv4hi, 2, v4hf)
392 1.6 mrg VAR1 (UNOP, floatv8hi, 2, v8hf)
393 1.3 mrg VAR1 (UNOP, floatv2si, 2, v2sf)
394 1.3 mrg VAR1 (UNOP, floatv4si, 2, v4sf)
395 1.3 mrg VAR1 (UNOP, floatv2di, 2, v2df)
396 1.3 mrg
397 1.6 mrg VAR1 (UNOP, floatunsv4hi, 2, v4hf)
398 1.6 mrg VAR1 (UNOP, floatunsv8hi, 2, v8hf)
399 1.3 mrg VAR1 (UNOP, floatunsv2si, 2, v2sf)
400 1.3 mrg VAR1 (UNOP, floatunsv4si, 2, v4sf)
401 1.3 mrg VAR1 (UNOP, floatunsv2di, 2, v2df)
402 1.3 mrg
403 1.3 mrg VAR5 (UNOPU, bswap, 2, v4hi, v8hi, v2si, v4si, v2di)
404 1.3 mrg
405 1.3 mrg BUILTIN_VB (UNOP, rbit, 0)
406 1.1 mrg
407 1.1 mrg /* Implemented by
408 1.1 mrg aarch64_<PERMUTE:perm_insn><PERMUTE:perm_hilo><mode>. */
409 1.3 mrg BUILTIN_VALL (BINOP, zip1, 0)
410 1.3 mrg BUILTIN_VALL (BINOP, zip2, 0)
411 1.3 mrg BUILTIN_VALL (BINOP, uzp1, 0)
412 1.3 mrg BUILTIN_VALL (BINOP, uzp2, 0)
413 1.3 mrg BUILTIN_VALL (BINOP, trn1, 0)
414 1.3 mrg BUILTIN_VALL (BINOP, trn2, 0)
415 1.3 mrg
416 1.3 mrg /* Implemented by
417 1.3 mrg aarch64_frecp<FRECP:frecp_suffix><mode>. */
418 1.6 mrg BUILTIN_GPF_F16 (UNOP, frecpe, 0)
419 1.6 mrg BUILTIN_GPF_F16 (UNOP, frecpx, 0)
420 1.3 mrg
421 1.3 mrg BUILTIN_VDQ_SI (UNOP, urecpe, 0)
422 1.3 mrg
423 1.6 mrg BUILTIN_VHSDF (UNOP, frecpe, 0)
424 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP, frecps, 0)
425 1.3 mrg
426 1.3 mrg /* Implemented by a mixture of abs2 patterns. Note the DImode builtin is
427 1.3 mrg only ever used for the int64x1_t intrinsic, there is no scalar version. */
428 1.3 mrg BUILTIN_VSDQ_I_DI (UNOP, abs, 0)
429 1.6 mrg BUILTIN_VHSDF (UNOP, abs, 2)
430 1.6 mrg VAR1 (UNOP, abs, 2, hf)
431 1.3 mrg
432 1.4 mrg BUILTIN_VQ_HSF (UNOP, vec_unpacks_hi_, 10)
433 1.3 mrg VAR1 (BINOP, float_truncate_hi_, 0, v4sf)
434 1.4 mrg VAR1 (BINOP, float_truncate_hi_, 0, v8hf)
435 1.3 mrg
436 1.3 mrg VAR1 (UNOP, float_extend_lo_, 0, v2df)
437 1.4 mrg VAR1 (UNOP, float_extend_lo_, 0, v4sf)
438 1.4 mrg BUILTIN_VDF (UNOP, float_truncate_lo_, 0)
439 1.1 mrg
440 1.4 mrg /* Implemented by aarch64_ld1<VALL_F16:mode>. */
441 1.4 mrg BUILTIN_VALL_F16 (LOAD1, ld1, 0)
442 1.6 mrg VAR1(STORE1P, ld1, 0, v2di)
443 1.1 mrg
444 1.4 mrg /* Implemented by aarch64_st1<VALL_F16:mode>. */
445 1.4 mrg BUILTIN_VALL_F16 (STORE1, st1, 0)
446 1.6 mrg VAR1(STORE1P, st1, 0, v2di)
447 1.3 mrg
448 1.3 mrg /* Implemented by fma<mode>4. */
449 1.6 mrg BUILTIN_VHSDF (TERNOP, fma, 4)
450 1.6 mrg VAR1 (TERNOP, fma, 4, hf)
451 1.6 mrg /* Implemented by fnma<mode>4. */
452 1.6 mrg BUILTIN_VHSDF (TERNOP, fnma, 4)
453 1.6 mrg VAR1 (TERNOP, fnma, 4, hf)
454 1.3 mrg
455 1.3 mrg /* Implemented by aarch64_simd_bsl<mode>. */
456 1.3 mrg BUILTIN_VDQQH (BSL_P, simd_bsl, 0)
457 1.6 mrg VAR2 (BSL_P, simd_bsl,0, di, v2di)
458 1.3 mrg BUILTIN_VSDQ_I_DI (BSL_U, simd_bsl, 0)
459 1.3 mrg BUILTIN_VALLDIF (BSL_S, simd_bsl, 0)
460 1.3 mrg
461 1.3 mrg /* Implemented by aarch64_crypto_aes<op><mode>. */
462 1.3 mrg VAR1 (BINOPU, crypto_aese, 0, v16qi)
463 1.3 mrg VAR1 (BINOPU, crypto_aesd, 0, v16qi)
464 1.3 mrg VAR1 (UNOPU, crypto_aesmc, 0, v16qi)
465 1.3 mrg VAR1 (UNOPU, crypto_aesimc, 0, v16qi)
466 1.3 mrg
467 1.3 mrg /* Implemented by aarch64_crypto_sha1<op><mode>. */
468 1.3 mrg VAR1 (UNOPU, crypto_sha1h, 0, si)
469 1.3 mrg VAR1 (BINOPU, crypto_sha1su1, 0, v4si)
470 1.3 mrg VAR1 (TERNOPU, crypto_sha1c, 0, v4si)
471 1.3 mrg VAR1 (TERNOPU, crypto_sha1m, 0, v4si)
472 1.3 mrg VAR1 (TERNOPU, crypto_sha1p, 0, v4si)
473 1.3 mrg VAR1 (TERNOPU, crypto_sha1su0, 0, v4si)
474 1.3 mrg
475 1.3 mrg /* Implemented by aarch64_crypto_sha256<op><mode>. */
476 1.3 mrg VAR1 (TERNOPU, crypto_sha256h, 0, v4si)
477 1.3 mrg VAR1 (TERNOPU, crypto_sha256h2, 0, v4si)
478 1.3 mrg VAR1 (BINOPU, crypto_sha256su0, 0, v4si)
479 1.3 mrg VAR1 (TERNOPU, crypto_sha256su1, 0, v4si)
480 1.3 mrg
481 1.3 mrg /* Implemented by aarch64_crypto_pmull<mode>. */
482 1.3 mrg VAR1 (BINOPP, crypto_pmull, 0, di)
483 1.3 mrg VAR1 (BINOPP, crypto_pmull, 0, v2di)
484 1.1 mrg
485 1.4 mrg /* Implemented by aarch64_tbl3<mode>. */
486 1.4 mrg VAR1 (BINOP, tbl3, 0, v8qi)
487 1.4 mrg VAR1 (BINOP, tbl3, 0, v16qi)
488 1.4 mrg
489 1.4 mrg /* Implemented by aarch64_qtbl3<mode>. */
490 1.4 mrg VAR1 (BINOP, qtbl3, 0, v8qi)
491 1.4 mrg VAR1 (BINOP, qtbl3, 0, v16qi)
492 1.4 mrg
493 1.4 mrg /* Implemented by aarch64_qtbl4<mode>. */
494 1.4 mrg VAR1 (BINOP, qtbl4, 0, v8qi)
495 1.4 mrg VAR1 (BINOP, qtbl4, 0, v16qi)
496 1.4 mrg
497 1.4 mrg /* Implemented by aarch64_tbx4<mode>. */
498 1.4 mrg VAR1 (TERNOP, tbx4, 0, v8qi)
499 1.4 mrg VAR1 (TERNOP, tbx4, 0, v16qi)
500 1.4 mrg
501 1.4 mrg /* Implemented by aarch64_qtbx3<mode>. */
502 1.4 mrg VAR1 (TERNOP, qtbx3, 0, v8qi)
503 1.4 mrg VAR1 (TERNOP, qtbx3, 0, v16qi)
504 1.4 mrg
505 1.4 mrg /* Implemented by aarch64_qtbx4<mode>. */
506 1.4 mrg VAR1 (TERNOP, qtbx4, 0, v8qi)
507 1.4 mrg VAR1 (TERNOP, qtbx4, 0, v16qi)
508 1.4 mrg
509 1.6 mrg /* Builtins for ARMv8.1-A Adv.SIMD instructions. */
510 1.4 mrg
511 1.4 mrg /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>. */
512 1.4 mrg BUILTIN_VSDQ_HSI (TERNOP, sqrdmlah, 0)
513 1.4 mrg BUILTIN_VSDQ_HSI (TERNOP, sqrdmlsh, 0)
514 1.4 mrg
515 1.4 mrg /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>. */
516 1.4 mrg BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlah_lane, 0)
517 1.4 mrg BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlsh_lane, 0)
518 1.4 mrg
519 1.4 mrg /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>. */
520 1.4 mrg BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlah_laneq, 0)
521 1.4 mrg BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlsh_laneq, 0)
522 1.6 mrg
523 1.6 mrg /* Implemented by <FCVT_F2FIXED/FIXED2F:fcvt_fixed_insn><*><*>3. */
524 1.6 mrg BUILTIN_VSDQ_HSDI (SHIFTIMM, scvtf, 3)
525 1.6 mrg BUILTIN_VSDQ_HSDI (FCVTIMM_SUS, ucvtf, 3)
526 1.6 mrg BUILTIN_VHSDF_HSDF (SHIFTIMM, fcvtzs, 3)
527 1.6 mrg BUILTIN_VHSDF_HSDF (SHIFTIMM_USS, fcvtzu, 3)
528 1.6 mrg VAR1 (SHIFTIMM, scvtfsi, 3, hf)
529 1.6 mrg VAR1 (SHIFTIMM, scvtfdi, 3, hf)
530 1.6 mrg VAR1 (FCVTIMM_SUS, ucvtfsi, 3, hf)
531 1.6 mrg VAR1 (FCVTIMM_SUS, ucvtfdi, 3, hf)
532 1.6 mrg BUILTIN_GPI (SHIFTIMM, fcvtzshf, 3)
533 1.6 mrg BUILTIN_GPI (SHIFTIMM_USS, fcvtzuhf, 3)
534 1.6 mrg
535 1.6 mrg /* Implemented by aarch64_rsqrte<mode>. */
536 1.6 mrg BUILTIN_VHSDF_HSDF (UNOP, rsqrte, 0)
537 1.6 mrg
538 1.6 mrg /* Implemented by aarch64_rsqrts<mode>. */
539 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP, rsqrts, 0)
540 1.6 mrg
541 1.6 mrg /* Implemented by fabd<mode>3. */
542 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP, fabd, 3)
543 1.6 mrg
544 1.6 mrg /* Implemented by aarch64_faddp<mode>. */
545 1.6 mrg BUILTIN_VHSDF (BINOP, faddp, 0)
546 1.6 mrg
547 1.6 mrg /* Implemented by aarch64_cm<optab><mode>. */
548 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, cmeq, 0)
549 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, cmge, 0)
550 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, cmgt, 0)
551 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, cmle, 0)
552 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, cmlt, 0)
553 1.6 mrg
554 1.6 mrg /* Implemented by neg<mode>2. */
555 1.6 mrg BUILTIN_VHSDF_HSDF (UNOP, neg, 2)
556 1.6 mrg
557 1.6 mrg /* Implemented by aarch64_fac<optab><mode>. */
558 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, faclt, 0)
559 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, facle, 0)
560 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, facgt, 0)
561 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, facge, 0)
562 1.6 mrg
563 1.6 mrg /* Implemented by sqrt<mode>2. */
564 1.6 mrg VAR1 (UNOP, sqrt, 2, hf)
565 1.6 mrg
566 1.6 mrg /* Implemented by <optab><mode>hf2. */
567 1.6 mrg VAR1 (UNOP, floatdi, 2, hf)
568 1.6 mrg VAR1 (UNOP, floatsi, 2, hf)
569 1.6 mrg VAR1 (UNOP, floathi, 2, hf)
570 1.6 mrg VAR1 (UNOPUS, floatunsdi, 2, hf)
571 1.6 mrg VAR1 (UNOPUS, floatunssi, 2, hf)
572 1.6 mrg VAR1 (UNOPUS, floatunshi, 2, hf)
573 1.6 mrg BUILTIN_GPI_I16 (UNOP, fix_trunchf, 2)
574 1.6 mrg BUILTIN_GPI (UNOP, fix_truncsf, 2)
575 1.6 mrg BUILTIN_GPI (UNOP, fix_truncdf, 2)
576 1.6 mrg BUILTIN_GPI_I16 (UNOPUS, fixuns_trunchf, 2)
577 1.6 mrg BUILTIN_GPI (UNOPUS, fixuns_truncsf, 2)
578 1.7 mrg BUILTIN_GPI (UNOPUS, fixuns_truncdf, 2)
579 1.7 mrg
580 1.7 mrg /* Implemented by aarch64_sm3ss1qv4si. */
581 1.7 mrg VAR1 (TERNOPU, sm3ss1q, 0, v4si)
582 1.7 mrg /* Implemented by aarch64_sm3tt<sm3tt_op>qv4si. */
583 1.7 mrg VAR1 (QUADOPUI, sm3tt1aq, 0, v4si)
584 1.7 mrg VAR1 (QUADOPUI, sm3tt1bq, 0, v4si)
585 1.7 mrg VAR1 (QUADOPUI, sm3tt2aq, 0, v4si)
586 1.7 mrg VAR1 (QUADOPUI, sm3tt2bq, 0, v4si)
587 1.7 mrg /* Implemented by aarch64_sm3partw<sm3part_op>qv4si. */
588 1.7 mrg VAR1 (TERNOPU, sm3partw1q, 0, v4si)
589 1.7 mrg VAR1 (TERNOPU, sm3partw2q, 0, v4si)
590 1.7 mrg /* Implemented by aarch64_sm4eqv4si. */
591 1.7 mrg VAR1 (BINOPU, sm4eq, 0, v4si)
592 1.7 mrg /* Implemented by aarch64_sm4ekeyqv4si. */
593 1.7 mrg VAR1 (BINOPU, sm4ekeyq, 0, v4si)
594 1.7 mrg /* Implemented by aarch64_crypto_sha512hqv2di. */
595 1.7 mrg VAR1 (TERNOPU, crypto_sha512hq, 0, v2di)
596 1.7 mrg /* Implemented by aarch64_sha512h2qv2di. */
597 1.7 mrg VAR1 (TERNOPU, crypto_sha512h2q, 0, v2di)
598 1.7 mrg /* Implemented by aarch64_crypto_sha512su0qv2di. */
599 1.7 mrg VAR1 (BINOPU, crypto_sha512su0q, 0, v2di)
600 1.7 mrg /* Implemented by aarch64_crypto_sha512su1qv2di. */
601 1.7 mrg VAR1 (TERNOPU, crypto_sha512su1q, 0, v2di)
602 1.7 mrg /* Implemented by aarch64_eor3qv8hi. */
603 1.7 mrg VAR1 (TERNOPU, eor3q, 0, v8hi)
604 1.7 mrg /* Implemented by aarch64_rax1qv2di. */
605 1.7 mrg VAR1 (BINOPU, rax1q, 0, v2di)
606 1.7 mrg /* Implemented by aarch64_xarqv2di. */
607 1.7 mrg VAR1 (TERNOPUI, xarq, 0, v2di)
608 1.7 mrg /* Implemented by aarch64_bcaxqv8hi. */
609 1.7 mrg VAR1 (TERNOPU, bcaxq, 0, v8hi)
610 1.7 mrg
611 1.7 mrg /* Implemented by aarch64_fml<f16mac1>l<f16quad>_low<mode>. */
612 1.7 mrg VAR1 (TERNOP, fmlal_low, 0, v2sf)
613 1.7 mrg VAR1 (TERNOP, fmlsl_low, 0, v2sf)
614 1.7 mrg VAR1 (TERNOP, fmlalq_low, 0, v4sf)
615 1.7 mrg VAR1 (TERNOP, fmlslq_low, 0, v4sf)
616 1.7 mrg /* Implemented by aarch64_fml<f16mac1>l<f16quad>_high<mode>. */
617 1.7 mrg VAR1 (TERNOP, fmlal_high, 0, v2sf)
618 1.7 mrg VAR1 (TERNOP, fmlsl_high, 0, v2sf)
619 1.7 mrg VAR1 (TERNOP, fmlalq_high, 0, v4sf)
620 1.7 mrg VAR1 (TERNOP, fmlslq_high, 0, v4sf)
621 1.7 mrg /* Implemented by aarch64_fml<f16mac1>l_lane_lowv2sf. */
622 1.7 mrg VAR1 (QUADOP_LANE, fmlal_lane_low, 0, v2sf)
623 1.7 mrg VAR1 (QUADOP_LANE, fmlsl_lane_low, 0, v2sf)
624 1.7 mrg /* Implemented by aarch64_fml<f16mac1>l_laneq_lowv2sf. */
625 1.7 mrg VAR1 (QUADOP_LANE, fmlal_laneq_low, 0, v2sf)
626 1.7 mrg VAR1 (QUADOP_LANE, fmlsl_laneq_low, 0, v2sf)
627 1.7 mrg /* Implemented by aarch64_fml<f16mac1>lq_lane_lowv4sf. */
628 1.7 mrg VAR1 (QUADOP_LANE, fmlalq_lane_low, 0, v4sf)
629 1.7 mrg VAR1 (QUADOP_LANE, fmlslq_lane_low, 0, v4sf)
630 1.7 mrg /* Implemented by aarch64_fml<f16mac1>lq_laneq_lowv4sf. */
631 1.7 mrg VAR1 (QUADOP_LANE, fmlalq_laneq_low, 0, v4sf)
632 1.7 mrg VAR1 (QUADOP_LANE, fmlslq_laneq_low, 0, v4sf)
633 1.7 mrg /* Implemented by aarch64_fml<f16mac1>l_lane_highv2sf. */
634 1.7 mrg VAR1 (QUADOP_LANE, fmlal_lane_high, 0, v2sf)
635 1.7 mrg VAR1 (QUADOP_LANE, fmlsl_lane_high, 0, v2sf)
636 1.7 mrg /* Implemented by aarch64_fml<f16mac1>l_laneq_highv2sf. */
637 1.7 mrg VAR1 (QUADOP_LANE, fmlal_laneq_high, 0, v2sf)
638 1.7 mrg VAR1 (QUADOP_LANE, fmlsl_laneq_high, 0, v2sf)
639 1.7 mrg /* Implemented by aarch64_fml<f16mac1>lq_lane_highv4sf. */
640 1.7 mrg VAR1 (QUADOP_LANE, fmlalq_lane_high, 0, v4sf)
641 1.7 mrg VAR1 (QUADOP_LANE, fmlslq_lane_high, 0, v4sf)
642 1.7 mrg /* Implemented by aarch64_fml<f16mac1>lq_laneq_highv4sf. */
643 1.7 mrg VAR1 (QUADOP_LANE, fmlalq_laneq_high, 0, v4sf)
644 1.7 mrg VAR1 (QUADOP_LANE, fmlslq_laneq_high, 0, v4sf)
645