aarch64-simd-builtins.def revision 1.8 1 1.1 mrg /* Machine description for AArch64 architecture.
2 1.8 mrg Copyright (C) 2012-2019 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.8 mrg /* Implemented by aarch64_fcadd<rot><mode>. */
221 1.8 mrg BUILTIN_VHSDF (BINOP, fcadd90, 0)
222 1.8 mrg BUILTIN_VHSDF (BINOP, fcadd270, 0)
223 1.8 mrg
224 1.8 mrg /* Implemented by aarch64_fcmla{_lane}{q}<rot><mode>. */
225 1.8 mrg BUILTIN_VHSDF (TERNOP, fcmla0, 0)
226 1.8 mrg BUILTIN_VHSDF (TERNOP, fcmla90, 0)
227 1.8 mrg BUILTIN_VHSDF (TERNOP, fcmla180, 0)
228 1.8 mrg BUILTIN_VHSDF (TERNOP, fcmla270, 0)
229 1.8 mrg BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane0, 0)
230 1.8 mrg BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane90, 0)
231 1.8 mrg BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane180, 0)
232 1.8 mrg BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane270, 0)
233 1.8 mrg
234 1.8 mrg BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane0, 0)
235 1.8 mrg BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane90, 0)
236 1.8 mrg BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane180, 0)
237 1.8 mrg BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane270, 0)
238 1.8 mrg
239 1.3 mrg BUILTIN_VDQ_I (SHIFTIMM, ashr, 3)
240 1.3 mrg VAR1 (SHIFTIMM, ashr_simd, 0, di)
241 1.3 mrg BUILTIN_VDQ_I (SHIFTIMM, lshr, 3)
242 1.3 mrg VAR1 (USHIFTIMM, lshr_simd, 0, di)
243 1.1 mrg /* Implemented by aarch64_<sur>shr_n<mode>. */
244 1.3 mrg BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n, 0)
245 1.3 mrg BUILTIN_VSDQ_I_DI (USHIFTIMM, urshr_n, 0)
246 1.1 mrg /* Implemented by aarch64_<sur>sra_n<mode>. */
247 1.3 mrg BUILTIN_VSDQ_I_DI (SHIFTACC, ssra_n, 0)
248 1.3 mrg BUILTIN_VSDQ_I_DI (USHIFTACC, usra_n, 0)
249 1.3 mrg BUILTIN_VSDQ_I_DI (SHIFTACC, srsra_n, 0)
250 1.3 mrg BUILTIN_VSDQ_I_DI (USHIFTACC, ursra_n, 0)
251 1.1 mrg /* Implemented by aarch64_<sur>shll_n<mode>. */
252 1.3 mrg BUILTIN_VD_BHSI (SHIFTIMM, sshll_n, 0)
253 1.3 mrg BUILTIN_VD_BHSI (USHIFTIMM, ushll_n, 0)
254 1.1 mrg /* Implemented by aarch64_<sur>shll2_n<mode>. */
255 1.3 mrg BUILTIN_VQW (SHIFTIMM, sshll2_n, 0)
256 1.3 mrg BUILTIN_VQW (SHIFTIMM, ushll2_n, 0)
257 1.1 mrg /* Implemented by aarch64_<sur>q<r>shr<u>n_n<mode>. */
258 1.3 mrg BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrun_n, 0)
259 1.3 mrg BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrun_n, 0)
260 1.3 mrg BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrn_n, 0)
261 1.3 mrg BUILTIN_VSQN_HSDI (USHIFTIMM, uqshrn_n, 0)
262 1.3 mrg BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrn_n, 0)
263 1.3 mrg BUILTIN_VSQN_HSDI (USHIFTIMM, uqrshrn_n, 0)
264 1.1 mrg /* Implemented by aarch64_<sur>s<lr>i_n<mode>. */
265 1.3 mrg BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssri_n, 0)
266 1.3 mrg BUILTIN_VSDQ_I_DI (USHIFTACC, usri_n, 0)
267 1.3 mrg BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssli_n, 0)
268 1.6 mrg VAR2 (SHIFTINSERTP, ssli_n, 0, di, v2di)
269 1.3 mrg BUILTIN_VSDQ_I_DI (USHIFTACC, usli_n, 0)
270 1.1 mrg /* Implemented by aarch64_<sur>qshl<u>_n<mode>. */
271 1.3 mrg BUILTIN_VSDQ_I (SHIFTIMM_USS, sqshlu_n, 0)
272 1.3 mrg BUILTIN_VSDQ_I (SHIFTIMM, sqshl_n, 0)
273 1.3 mrg BUILTIN_VSDQ_I (USHIFTIMM, uqshl_n, 0)
274 1.3 mrg
275 1.3 mrg /* Implemented by aarch64_reduc_plus_<mode>. */
276 1.3 mrg BUILTIN_VALL (UNOP, reduc_plus_scal_, 10)
277 1.3 mrg
278 1.3 mrg /* Implemented by reduc_<maxmin_uns>_scal_<mode> (producing scalar). */
279 1.6 mrg BUILTIN_VDQIF_F16 (UNOP, reduc_smax_scal_, 10)
280 1.6 mrg BUILTIN_VDQIF_F16 (UNOP, reduc_smin_scal_, 10)
281 1.3 mrg BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10)
282 1.3 mrg BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10)
283 1.6 mrg BUILTIN_VHSDF (UNOP, reduc_smax_nan_scal_, 10)
284 1.6 mrg BUILTIN_VHSDF (UNOP, reduc_smin_nan_scal_, 10)
285 1.3 mrg
286 1.6 mrg /* Implemented by <maxmin_uns><mode>3.
287 1.3 mrg smax variants map to fmaxnm,
288 1.3 mrg smax_nan variants map to fmax. */
289 1.4 mrg BUILTIN_VDQ_BHSI (BINOP, smax, 3)
290 1.4 mrg BUILTIN_VDQ_BHSI (BINOP, smin, 3)
291 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, umax, 3)
292 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, umin, 3)
293 1.6 mrg BUILTIN_VHSDF_DF (BINOP, smax_nan, 3)
294 1.6 mrg BUILTIN_VHSDF_DF (BINOP, smin_nan, 3)
295 1.3 mrg
296 1.6 mrg /* Implemented by <maxmin_uns><mode>3. */
297 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP, fmax, 3)
298 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP, fmin, 3)
299 1.4 mrg
300 1.3 mrg /* Implemented by aarch64_<maxmin_uns>p<mode>. */
301 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, smaxp, 0)
302 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, sminp, 0)
303 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, umaxp, 0)
304 1.3 mrg BUILTIN_VDQ_BHSI (BINOP, uminp, 0)
305 1.6 mrg BUILTIN_VHSDF (BINOP, smaxp, 0)
306 1.6 mrg BUILTIN_VHSDF (BINOP, sminp, 0)
307 1.6 mrg BUILTIN_VHSDF (BINOP, smax_nanp, 0)
308 1.6 mrg BUILTIN_VHSDF (BINOP, smin_nanp, 0)
309 1.3 mrg
310 1.3 mrg /* Implemented by <frint_pattern><mode>2. */
311 1.6 mrg BUILTIN_VHSDF (UNOP, btrunc, 2)
312 1.6 mrg BUILTIN_VHSDF (UNOP, ceil, 2)
313 1.6 mrg BUILTIN_VHSDF (UNOP, floor, 2)
314 1.6 mrg BUILTIN_VHSDF (UNOP, nearbyint, 2)
315 1.6 mrg BUILTIN_VHSDF (UNOP, rint, 2)
316 1.6 mrg BUILTIN_VHSDF (UNOP, round, 2)
317 1.6 mrg BUILTIN_VHSDF_DF (UNOP, frintn, 2)
318 1.6 mrg
319 1.6 mrg VAR1 (UNOP, btrunc, 2, hf)
320 1.6 mrg VAR1 (UNOP, ceil, 2, hf)
321 1.6 mrg VAR1 (UNOP, floor, 2, hf)
322 1.6 mrg VAR1 (UNOP, frintn, 2, hf)
323 1.6 mrg VAR1 (UNOP, nearbyint, 2, hf)
324 1.6 mrg VAR1 (UNOP, rint, 2, hf)
325 1.6 mrg VAR1 (UNOP, round, 2, hf)
326 1.3 mrg
327 1.3 mrg /* Implemented by l<fcvt_pattern><su_optab><VQDF:mode><vcvt_target>2. */
328 1.6 mrg VAR1 (UNOP, lbtruncv4hf, 2, v4hi)
329 1.6 mrg VAR1 (UNOP, lbtruncv8hf, 2, v8hi)
330 1.3 mrg VAR1 (UNOP, lbtruncv2sf, 2, v2si)
331 1.3 mrg VAR1 (UNOP, lbtruncv4sf, 2, v4si)
332 1.3 mrg VAR1 (UNOP, lbtruncv2df, 2, v2di)
333 1.3 mrg
334 1.6 mrg VAR1 (UNOPUS, lbtruncuv4hf, 2, v4hi)
335 1.6 mrg VAR1 (UNOPUS, lbtruncuv8hf, 2, v8hi)
336 1.4 mrg VAR1 (UNOPUS, lbtruncuv2sf, 2, v2si)
337 1.4 mrg VAR1 (UNOPUS, lbtruncuv4sf, 2, v4si)
338 1.4 mrg VAR1 (UNOPUS, lbtruncuv2df, 2, v2di)
339 1.3 mrg
340 1.6 mrg VAR1 (UNOP, lroundv4hf, 2, v4hi)
341 1.6 mrg VAR1 (UNOP, lroundv8hf, 2, v8hi)
342 1.3 mrg VAR1 (UNOP, lroundv2sf, 2, v2si)
343 1.3 mrg VAR1 (UNOP, lroundv4sf, 2, v4si)
344 1.3 mrg VAR1 (UNOP, lroundv2df, 2, v2di)
345 1.6 mrg /* Implemented by l<fcvt_pattern><su_optab><GPF_F16:mode><GPI:mode>2. */
346 1.6 mrg BUILTIN_GPI_I16 (UNOP, lroundhf, 2)
347 1.3 mrg VAR1 (UNOP, lroundsf, 2, si)
348 1.3 mrg VAR1 (UNOP, lrounddf, 2, di)
349 1.3 mrg
350 1.6 mrg VAR1 (UNOPUS, lrounduv4hf, 2, v4hi)
351 1.6 mrg VAR1 (UNOPUS, lrounduv8hf, 2, v8hi)
352 1.4 mrg VAR1 (UNOPUS, lrounduv2sf, 2, v2si)
353 1.4 mrg VAR1 (UNOPUS, lrounduv4sf, 2, v4si)
354 1.4 mrg VAR1 (UNOPUS, lrounduv2df, 2, v2di)
355 1.6 mrg BUILTIN_GPI_I16 (UNOPUS, lrounduhf, 2)
356 1.4 mrg VAR1 (UNOPUS, lroundusf, 2, si)
357 1.4 mrg VAR1 (UNOPUS, lroundudf, 2, di)
358 1.3 mrg
359 1.6 mrg VAR1 (UNOP, lceilv4hf, 2, v4hi)
360 1.6 mrg VAR1 (UNOP, lceilv8hf, 2, v8hi)
361 1.3 mrg VAR1 (UNOP, lceilv2sf, 2, v2si)
362 1.3 mrg VAR1 (UNOP, lceilv4sf, 2, v4si)
363 1.3 mrg VAR1 (UNOP, lceilv2df, 2, v2di)
364 1.6 mrg BUILTIN_GPI_I16 (UNOP, lceilhf, 2)
365 1.3 mrg
366 1.6 mrg VAR1 (UNOPUS, lceiluv4hf, 2, v4hi)
367 1.6 mrg VAR1 (UNOPUS, lceiluv8hf, 2, v8hi)
368 1.4 mrg VAR1 (UNOPUS, lceiluv2sf, 2, v2si)
369 1.4 mrg VAR1 (UNOPUS, lceiluv4sf, 2, v4si)
370 1.4 mrg VAR1 (UNOPUS, lceiluv2df, 2, v2di)
371 1.6 mrg BUILTIN_GPI_I16 (UNOPUS, lceiluhf, 2)
372 1.4 mrg VAR1 (UNOPUS, lceilusf, 2, si)
373 1.4 mrg VAR1 (UNOPUS, lceiludf, 2, di)
374 1.3 mrg
375 1.6 mrg VAR1 (UNOP, lfloorv4hf, 2, v4hi)
376 1.6 mrg VAR1 (UNOP, lfloorv8hf, 2, v8hi)
377 1.3 mrg VAR1 (UNOP, lfloorv2sf, 2, v2si)
378 1.3 mrg VAR1 (UNOP, lfloorv4sf, 2, v4si)
379 1.3 mrg VAR1 (UNOP, lfloorv2df, 2, v2di)
380 1.6 mrg BUILTIN_GPI_I16 (UNOP, lfloorhf, 2)
381 1.3 mrg
382 1.6 mrg VAR1 (UNOPUS, lflooruv4hf, 2, v4hi)
383 1.6 mrg VAR1 (UNOPUS, lflooruv8hf, 2, v8hi)
384 1.4 mrg VAR1 (UNOPUS, lflooruv2sf, 2, v2si)
385 1.4 mrg VAR1 (UNOPUS, lflooruv4sf, 2, v4si)
386 1.4 mrg VAR1 (UNOPUS, lflooruv2df, 2, v2di)
387 1.6 mrg BUILTIN_GPI_I16 (UNOPUS, lflooruhf, 2)
388 1.4 mrg VAR1 (UNOPUS, lfloorusf, 2, si)
389 1.4 mrg VAR1 (UNOPUS, lfloorudf, 2, di)
390 1.3 mrg
391 1.6 mrg VAR1 (UNOP, lfrintnv4hf, 2, v4hi)
392 1.6 mrg VAR1 (UNOP, lfrintnv8hf, 2, v8hi)
393 1.3 mrg VAR1 (UNOP, lfrintnv2sf, 2, v2si)
394 1.3 mrg VAR1 (UNOP, lfrintnv4sf, 2, v4si)
395 1.3 mrg VAR1 (UNOP, lfrintnv2df, 2, v2di)
396 1.6 mrg BUILTIN_GPI_I16 (UNOP, lfrintnhf, 2)
397 1.3 mrg VAR1 (UNOP, lfrintnsf, 2, si)
398 1.3 mrg VAR1 (UNOP, lfrintndf, 2, di)
399 1.3 mrg
400 1.6 mrg VAR1 (UNOPUS, lfrintnuv4hf, 2, v4hi)
401 1.6 mrg VAR1 (UNOPUS, lfrintnuv8hf, 2, v8hi)
402 1.4 mrg VAR1 (UNOPUS, lfrintnuv2sf, 2, v2si)
403 1.4 mrg VAR1 (UNOPUS, lfrintnuv4sf, 2, v4si)
404 1.4 mrg VAR1 (UNOPUS, lfrintnuv2df, 2, v2di)
405 1.6 mrg BUILTIN_GPI_I16 (UNOPUS, lfrintnuhf, 2)
406 1.4 mrg VAR1 (UNOPUS, lfrintnusf, 2, si)
407 1.4 mrg VAR1 (UNOPUS, lfrintnudf, 2, di)
408 1.3 mrg
409 1.3 mrg /* Implemented by <optab><fcvt_target><VDQF:mode>2. */
410 1.6 mrg VAR1 (UNOP, floatv4hi, 2, v4hf)
411 1.6 mrg VAR1 (UNOP, floatv8hi, 2, v8hf)
412 1.3 mrg VAR1 (UNOP, floatv2si, 2, v2sf)
413 1.3 mrg VAR1 (UNOP, floatv4si, 2, v4sf)
414 1.3 mrg VAR1 (UNOP, floatv2di, 2, v2df)
415 1.3 mrg
416 1.6 mrg VAR1 (UNOP, floatunsv4hi, 2, v4hf)
417 1.6 mrg VAR1 (UNOP, floatunsv8hi, 2, v8hf)
418 1.3 mrg VAR1 (UNOP, floatunsv2si, 2, v2sf)
419 1.3 mrg VAR1 (UNOP, floatunsv4si, 2, v4sf)
420 1.3 mrg VAR1 (UNOP, floatunsv2di, 2, v2df)
421 1.3 mrg
422 1.3 mrg VAR5 (UNOPU, bswap, 2, v4hi, v8hi, v2si, v4si, v2di)
423 1.3 mrg
424 1.3 mrg BUILTIN_VB (UNOP, rbit, 0)
425 1.1 mrg
426 1.1 mrg /* Implemented by
427 1.1 mrg aarch64_<PERMUTE:perm_insn><PERMUTE:perm_hilo><mode>. */
428 1.3 mrg BUILTIN_VALL (BINOP, zip1, 0)
429 1.3 mrg BUILTIN_VALL (BINOP, zip2, 0)
430 1.3 mrg BUILTIN_VALL (BINOP, uzp1, 0)
431 1.3 mrg BUILTIN_VALL (BINOP, uzp2, 0)
432 1.3 mrg BUILTIN_VALL (BINOP, trn1, 0)
433 1.3 mrg BUILTIN_VALL (BINOP, trn2, 0)
434 1.3 mrg
435 1.6 mrg BUILTIN_GPF_F16 (UNOP, frecpe, 0)
436 1.6 mrg BUILTIN_GPF_F16 (UNOP, frecpx, 0)
437 1.3 mrg
438 1.3 mrg BUILTIN_VDQ_SI (UNOP, urecpe, 0)
439 1.3 mrg
440 1.6 mrg BUILTIN_VHSDF (UNOP, frecpe, 0)
441 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP, frecps, 0)
442 1.3 mrg
443 1.3 mrg /* Implemented by a mixture of abs2 patterns. Note the DImode builtin is
444 1.3 mrg only ever used for the int64x1_t intrinsic, there is no scalar version. */
445 1.3 mrg BUILTIN_VSDQ_I_DI (UNOP, abs, 0)
446 1.6 mrg BUILTIN_VHSDF (UNOP, abs, 2)
447 1.6 mrg VAR1 (UNOP, abs, 2, hf)
448 1.3 mrg
449 1.4 mrg BUILTIN_VQ_HSF (UNOP, vec_unpacks_hi_, 10)
450 1.3 mrg VAR1 (BINOP, float_truncate_hi_, 0, v4sf)
451 1.4 mrg VAR1 (BINOP, float_truncate_hi_, 0, v8hf)
452 1.3 mrg
453 1.3 mrg VAR1 (UNOP, float_extend_lo_, 0, v2df)
454 1.4 mrg VAR1 (UNOP, float_extend_lo_, 0, v4sf)
455 1.4 mrg BUILTIN_VDF (UNOP, float_truncate_lo_, 0)
456 1.1 mrg
457 1.4 mrg /* Implemented by aarch64_ld1<VALL_F16:mode>. */
458 1.4 mrg BUILTIN_VALL_F16 (LOAD1, ld1, 0)
459 1.6 mrg VAR1(STORE1P, ld1, 0, v2di)
460 1.1 mrg
461 1.4 mrg /* Implemented by aarch64_st1<VALL_F16:mode>. */
462 1.4 mrg BUILTIN_VALL_F16 (STORE1, st1, 0)
463 1.6 mrg VAR1(STORE1P, st1, 0, v2di)
464 1.3 mrg
465 1.8 mrg /* Implemented by aarch64_ld1x3<VALLDIF:mode>. */
466 1.8 mrg BUILTIN_VALLDIF (LOADSTRUCT, ld1x3, 0)
467 1.8 mrg
468 1.8 mrg /* Implemented by aarch64_st1x2<VALLDIF:mode>. */
469 1.8 mrg BUILTIN_VALLDIF (STORESTRUCT, st1x2, 0)
470 1.8 mrg
471 1.8 mrg /* Implemented by aarch64_st1x3<VALLDIF:mode>. */
472 1.8 mrg BUILTIN_VALLDIF (STORESTRUCT, st1x3, 0)
473 1.8 mrg
474 1.3 mrg /* Implemented by fma<mode>4. */
475 1.6 mrg BUILTIN_VHSDF (TERNOP, fma, 4)
476 1.6 mrg VAR1 (TERNOP, fma, 4, hf)
477 1.6 mrg /* Implemented by fnma<mode>4. */
478 1.6 mrg BUILTIN_VHSDF (TERNOP, fnma, 4)
479 1.6 mrg VAR1 (TERNOP, fnma, 4, hf)
480 1.3 mrg
481 1.3 mrg /* Implemented by aarch64_simd_bsl<mode>. */
482 1.3 mrg BUILTIN_VDQQH (BSL_P, simd_bsl, 0)
483 1.6 mrg VAR2 (BSL_P, simd_bsl,0, di, v2di)
484 1.3 mrg BUILTIN_VSDQ_I_DI (BSL_U, simd_bsl, 0)
485 1.3 mrg BUILTIN_VALLDIF (BSL_S, simd_bsl, 0)
486 1.3 mrg
487 1.3 mrg /* Implemented by aarch64_crypto_aes<op><mode>. */
488 1.3 mrg VAR1 (BINOPU, crypto_aese, 0, v16qi)
489 1.3 mrg VAR1 (BINOPU, crypto_aesd, 0, v16qi)
490 1.3 mrg VAR1 (UNOPU, crypto_aesmc, 0, v16qi)
491 1.3 mrg VAR1 (UNOPU, crypto_aesimc, 0, v16qi)
492 1.3 mrg
493 1.3 mrg /* Implemented by aarch64_crypto_sha1<op><mode>. */
494 1.3 mrg VAR1 (UNOPU, crypto_sha1h, 0, si)
495 1.3 mrg VAR1 (BINOPU, crypto_sha1su1, 0, v4si)
496 1.3 mrg VAR1 (TERNOPU, crypto_sha1c, 0, v4si)
497 1.3 mrg VAR1 (TERNOPU, crypto_sha1m, 0, v4si)
498 1.3 mrg VAR1 (TERNOPU, crypto_sha1p, 0, v4si)
499 1.3 mrg VAR1 (TERNOPU, crypto_sha1su0, 0, v4si)
500 1.3 mrg
501 1.3 mrg /* Implemented by aarch64_crypto_sha256<op><mode>. */
502 1.3 mrg VAR1 (TERNOPU, crypto_sha256h, 0, v4si)
503 1.3 mrg VAR1 (TERNOPU, crypto_sha256h2, 0, v4si)
504 1.3 mrg VAR1 (BINOPU, crypto_sha256su0, 0, v4si)
505 1.3 mrg VAR1 (TERNOPU, crypto_sha256su1, 0, v4si)
506 1.3 mrg
507 1.3 mrg /* Implemented by aarch64_crypto_pmull<mode>. */
508 1.3 mrg VAR1 (BINOPP, crypto_pmull, 0, di)
509 1.3 mrg VAR1 (BINOPP, crypto_pmull, 0, v2di)
510 1.1 mrg
511 1.4 mrg /* Implemented by aarch64_tbl3<mode>. */
512 1.4 mrg VAR1 (BINOP, tbl3, 0, v8qi)
513 1.4 mrg VAR1 (BINOP, tbl3, 0, v16qi)
514 1.4 mrg
515 1.4 mrg /* Implemented by aarch64_qtbl3<mode>. */
516 1.4 mrg VAR1 (BINOP, qtbl3, 0, v8qi)
517 1.4 mrg VAR1 (BINOP, qtbl3, 0, v16qi)
518 1.4 mrg
519 1.4 mrg /* Implemented by aarch64_qtbl4<mode>. */
520 1.4 mrg VAR1 (BINOP, qtbl4, 0, v8qi)
521 1.4 mrg VAR1 (BINOP, qtbl4, 0, v16qi)
522 1.4 mrg
523 1.4 mrg /* Implemented by aarch64_tbx4<mode>. */
524 1.4 mrg VAR1 (TERNOP, tbx4, 0, v8qi)
525 1.4 mrg VAR1 (TERNOP, tbx4, 0, v16qi)
526 1.4 mrg
527 1.4 mrg /* Implemented by aarch64_qtbx3<mode>. */
528 1.4 mrg VAR1 (TERNOP, qtbx3, 0, v8qi)
529 1.4 mrg VAR1 (TERNOP, qtbx3, 0, v16qi)
530 1.4 mrg
531 1.4 mrg /* Implemented by aarch64_qtbx4<mode>. */
532 1.4 mrg VAR1 (TERNOP, qtbx4, 0, v8qi)
533 1.4 mrg VAR1 (TERNOP, qtbx4, 0, v16qi)
534 1.4 mrg
535 1.6 mrg /* Builtins for ARMv8.1-A Adv.SIMD instructions. */
536 1.4 mrg
537 1.4 mrg /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>. */
538 1.4 mrg BUILTIN_VSDQ_HSI (TERNOP, sqrdmlah, 0)
539 1.4 mrg BUILTIN_VSDQ_HSI (TERNOP, sqrdmlsh, 0)
540 1.4 mrg
541 1.4 mrg /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>. */
542 1.4 mrg BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlah_lane, 0)
543 1.4 mrg BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlsh_lane, 0)
544 1.4 mrg
545 1.4 mrg /* Implemented by aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>. */
546 1.4 mrg BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlah_laneq, 0)
547 1.4 mrg BUILTIN_VSDQ_HSI (QUADOP_LANE, sqrdmlsh_laneq, 0)
548 1.6 mrg
549 1.6 mrg /* Implemented by <FCVT_F2FIXED/FIXED2F:fcvt_fixed_insn><*><*>3. */
550 1.6 mrg BUILTIN_VSDQ_HSDI (SHIFTIMM, scvtf, 3)
551 1.6 mrg BUILTIN_VSDQ_HSDI (FCVTIMM_SUS, ucvtf, 3)
552 1.6 mrg BUILTIN_VHSDF_HSDF (SHIFTIMM, fcvtzs, 3)
553 1.6 mrg BUILTIN_VHSDF_HSDF (SHIFTIMM_USS, fcvtzu, 3)
554 1.6 mrg VAR1 (SHIFTIMM, scvtfsi, 3, hf)
555 1.6 mrg VAR1 (SHIFTIMM, scvtfdi, 3, hf)
556 1.6 mrg VAR1 (FCVTIMM_SUS, ucvtfsi, 3, hf)
557 1.6 mrg VAR1 (FCVTIMM_SUS, ucvtfdi, 3, hf)
558 1.6 mrg BUILTIN_GPI (SHIFTIMM, fcvtzshf, 3)
559 1.6 mrg BUILTIN_GPI (SHIFTIMM_USS, fcvtzuhf, 3)
560 1.6 mrg
561 1.6 mrg /* Implemented by aarch64_rsqrte<mode>. */
562 1.6 mrg BUILTIN_VHSDF_HSDF (UNOP, rsqrte, 0)
563 1.6 mrg
564 1.6 mrg /* Implemented by aarch64_rsqrts<mode>. */
565 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP, rsqrts, 0)
566 1.6 mrg
567 1.6 mrg /* Implemented by fabd<mode>3. */
568 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP, fabd, 3)
569 1.6 mrg
570 1.6 mrg /* Implemented by aarch64_faddp<mode>. */
571 1.6 mrg BUILTIN_VHSDF (BINOP, faddp, 0)
572 1.6 mrg
573 1.6 mrg /* Implemented by aarch64_cm<optab><mode>. */
574 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, cmeq, 0)
575 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, cmge, 0)
576 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, cmgt, 0)
577 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, cmle, 0)
578 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, cmlt, 0)
579 1.6 mrg
580 1.6 mrg /* Implemented by neg<mode>2. */
581 1.6 mrg BUILTIN_VHSDF_HSDF (UNOP, neg, 2)
582 1.6 mrg
583 1.6 mrg /* Implemented by aarch64_fac<optab><mode>. */
584 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, faclt, 0)
585 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, facle, 0)
586 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, facgt, 0)
587 1.6 mrg BUILTIN_VHSDF_HSDF (BINOP_USS, facge, 0)
588 1.6 mrg
589 1.6 mrg /* Implemented by sqrt<mode>2. */
590 1.6 mrg VAR1 (UNOP, sqrt, 2, hf)
591 1.6 mrg
592 1.6 mrg /* Implemented by <optab><mode>hf2. */
593 1.6 mrg VAR1 (UNOP, floatdi, 2, hf)
594 1.6 mrg VAR1 (UNOP, floatsi, 2, hf)
595 1.6 mrg VAR1 (UNOP, floathi, 2, hf)
596 1.6 mrg VAR1 (UNOPUS, floatunsdi, 2, hf)
597 1.6 mrg VAR1 (UNOPUS, floatunssi, 2, hf)
598 1.6 mrg VAR1 (UNOPUS, floatunshi, 2, hf)
599 1.6 mrg BUILTIN_GPI_I16 (UNOP, fix_trunchf, 2)
600 1.6 mrg BUILTIN_GPI (UNOP, fix_truncsf, 2)
601 1.6 mrg BUILTIN_GPI (UNOP, fix_truncdf, 2)
602 1.6 mrg BUILTIN_GPI_I16 (UNOPUS, fixuns_trunchf, 2)
603 1.6 mrg BUILTIN_GPI (UNOPUS, fixuns_truncsf, 2)
604 1.7 mrg BUILTIN_GPI (UNOPUS, fixuns_truncdf, 2)
605 1.7 mrg
606 1.7 mrg /* Implemented by aarch64_sm3ss1qv4si. */
607 1.7 mrg VAR1 (TERNOPU, sm3ss1q, 0, v4si)
608 1.7 mrg /* Implemented by aarch64_sm3tt<sm3tt_op>qv4si. */
609 1.7 mrg VAR1 (QUADOPUI, sm3tt1aq, 0, v4si)
610 1.7 mrg VAR1 (QUADOPUI, sm3tt1bq, 0, v4si)
611 1.7 mrg VAR1 (QUADOPUI, sm3tt2aq, 0, v4si)
612 1.7 mrg VAR1 (QUADOPUI, sm3tt2bq, 0, v4si)
613 1.7 mrg /* Implemented by aarch64_sm3partw<sm3part_op>qv4si. */
614 1.7 mrg VAR1 (TERNOPU, sm3partw1q, 0, v4si)
615 1.7 mrg VAR1 (TERNOPU, sm3partw2q, 0, v4si)
616 1.7 mrg /* Implemented by aarch64_sm4eqv4si. */
617 1.7 mrg VAR1 (BINOPU, sm4eq, 0, v4si)
618 1.7 mrg /* Implemented by aarch64_sm4ekeyqv4si. */
619 1.7 mrg VAR1 (BINOPU, sm4ekeyq, 0, v4si)
620 1.7 mrg /* Implemented by aarch64_crypto_sha512hqv2di. */
621 1.7 mrg VAR1 (TERNOPU, crypto_sha512hq, 0, v2di)
622 1.7 mrg /* Implemented by aarch64_sha512h2qv2di. */
623 1.7 mrg VAR1 (TERNOPU, crypto_sha512h2q, 0, v2di)
624 1.7 mrg /* Implemented by aarch64_crypto_sha512su0qv2di. */
625 1.7 mrg VAR1 (BINOPU, crypto_sha512su0q, 0, v2di)
626 1.7 mrg /* Implemented by aarch64_crypto_sha512su1qv2di. */
627 1.7 mrg VAR1 (TERNOPU, crypto_sha512su1q, 0, v2di)
628 1.8 mrg /* Implemented by eor3q<mode>4. */
629 1.8 mrg BUILTIN_VQ_I (TERNOPU, eor3q, 4)
630 1.8 mrg BUILTIN_VQ_I (TERNOP, eor3q, 4)
631 1.7 mrg /* Implemented by aarch64_rax1qv2di. */
632 1.7 mrg VAR1 (BINOPU, rax1q, 0, v2di)
633 1.7 mrg /* Implemented by aarch64_xarqv2di. */
634 1.7 mrg VAR1 (TERNOPUI, xarq, 0, v2di)
635 1.8 mrg /* Implemented by bcaxq<mode>4. */
636 1.8 mrg BUILTIN_VQ_I (TERNOPU, bcaxq, 4)
637 1.8 mrg BUILTIN_VQ_I (TERNOP, bcaxq, 4)
638 1.7 mrg
639 1.7 mrg /* Implemented by aarch64_fml<f16mac1>l<f16quad>_low<mode>. */
640 1.7 mrg VAR1 (TERNOP, fmlal_low, 0, v2sf)
641 1.7 mrg VAR1 (TERNOP, fmlsl_low, 0, v2sf)
642 1.7 mrg VAR1 (TERNOP, fmlalq_low, 0, v4sf)
643 1.7 mrg VAR1 (TERNOP, fmlslq_low, 0, v4sf)
644 1.7 mrg /* Implemented by aarch64_fml<f16mac1>l<f16quad>_high<mode>. */
645 1.7 mrg VAR1 (TERNOP, fmlal_high, 0, v2sf)
646 1.7 mrg VAR1 (TERNOP, fmlsl_high, 0, v2sf)
647 1.7 mrg VAR1 (TERNOP, fmlalq_high, 0, v4sf)
648 1.7 mrg VAR1 (TERNOP, fmlslq_high, 0, v4sf)
649 1.7 mrg /* Implemented by aarch64_fml<f16mac1>l_lane_lowv2sf. */
650 1.7 mrg VAR1 (QUADOP_LANE, fmlal_lane_low, 0, v2sf)
651 1.7 mrg VAR1 (QUADOP_LANE, fmlsl_lane_low, 0, v2sf)
652 1.7 mrg /* Implemented by aarch64_fml<f16mac1>l_laneq_lowv2sf. */
653 1.7 mrg VAR1 (QUADOP_LANE, fmlal_laneq_low, 0, v2sf)
654 1.7 mrg VAR1 (QUADOP_LANE, fmlsl_laneq_low, 0, v2sf)
655 1.7 mrg /* Implemented by aarch64_fml<f16mac1>lq_lane_lowv4sf. */
656 1.7 mrg VAR1 (QUADOP_LANE, fmlalq_lane_low, 0, v4sf)
657 1.7 mrg VAR1 (QUADOP_LANE, fmlslq_lane_low, 0, v4sf)
658 1.7 mrg /* Implemented by aarch64_fml<f16mac1>lq_laneq_lowv4sf. */
659 1.7 mrg VAR1 (QUADOP_LANE, fmlalq_laneq_low, 0, v4sf)
660 1.7 mrg VAR1 (QUADOP_LANE, fmlslq_laneq_low, 0, v4sf)
661 1.7 mrg /* Implemented by aarch64_fml<f16mac1>l_lane_highv2sf. */
662 1.7 mrg VAR1 (QUADOP_LANE, fmlal_lane_high, 0, v2sf)
663 1.7 mrg VAR1 (QUADOP_LANE, fmlsl_lane_high, 0, v2sf)
664 1.7 mrg /* Implemented by aarch64_fml<f16mac1>l_laneq_highv2sf. */
665 1.7 mrg VAR1 (QUADOP_LANE, fmlal_laneq_high, 0, v2sf)
666 1.7 mrg VAR1 (QUADOP_LANE, fmlsl_laneq_high, 0, v2sf)
667 1.7 mrg /* Implemented by aarch64_fml<f16mac1>lq_lane_highv4sf. */
668 1.7 mrg VAR1 (QUADOP_LANE, fmlalq_lane_high, 0, v4sf)
669 1.7 mrg VAR1 (QUADOP_LANE, fmlslq_lane_high, 0, v4sf)
670 1.7 mrg /* Implemented by aarch64_fml<f16mac1>lq_laneq_highv4sf. */
671 1.7 mrg VAR1 (QUADOP_LANE, fmlalq_laneq_high, 0, v4sf)
672 1.7 mrg VAR1 (QUADOP_LANE, fmlslq_laneq_high, 0, v4sf)
673