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