aarch64-simd-builtins.def revision 1.1.1.2 1 1.1 mrg /* Machine description for AArch64 architecture.
2 1.1.1.2 mrg Copyright (C) 2012-2015 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.1.1.2 mrg /* In the list below, the BUILTIN_<ITERATOR> macros expand to create
22 1.1.1.2 mrg builtins for each of the modes described by <ITERATOR>. When adding
23 1.1.1.2 mrg new builtins to this list, a helpful idiom to follow is to add
24 1.1.1.2 mrg a line for each pattern in the md file. Thus, ADDP, which has one
25 1.1.1.2 mrg pattern defined for the VD_BHSI iterator, and one for DImode, has two
26 1.1.1.2 mrg entries below.
27 1.1.1.2 mrg
28 1.1.1.2 mrg Parameter 1 is the 'type' of the intrinsic. This is used to
29 1.1.1.2 mrg describe the type modifiers (for example; unsigned) applied to
30 1.1.1.2 mrg each of the parameters to the intrinsic function.
31 1.1.1.2 mrg
32 1.1.1.2 mrg Parameter 2 is the name of the intrinsic. This is appended
33 1.1.1.2 mrg to `__builtin_aarch64_<name><mode>` to give the intrinsic name
34 1.1.1.2 mrg as exported to the front-ends.
35 1.1.1.2 mrg
36 1.1.1.2 mrg Parameter 3 describes how to map from the name to the CODE_FOR_
37 1.1.1.2 mrg macro holding the RTL pattern for the intrinsic. This mapping is:
38 1.1.1.2 mrg 0 - CODE_FOR_aarch64_<name><mode>
39 1.1.1.2 mrg 1-9 - CODE_FOR_<name><mode><1-9>
40 1.1.1.2 mrg 10 - CODE_FOR_<name><mode>. */
41 1.1.1.2 mrg
42 1.1.1.2 mrg BUILTIN_VDC (COMBINE, combine, 0)
43 1.1.1.2 mrg BUILTIN_VB (BINOP, pmul, 0)
44 1.1.1.2 mrg BUILTIN_VDQF_DF (UNOP, sqrt, 2)
45 1.1.1.2 mrg BUILTIN_VD_BHSI (BINOP, addp, 0)
46 1.1.1.2 mrg VAR1 (UNOP, addp, 0, di)
47 1.1.1.2 mrg BUILTIN_VDQ_BHSI (UNOP, clrsb, 2)
48 1.1.1.2 mrg BUILTIN_VDQ_BHSI (UNOP, clz, 2)
49 1.1.1.2 mrg BUILTIN_VS (UNOP, ctz, 2)
50 1.1.1.2 mrg BUILTIN_VB (UNOP, popcount, 2)
51 1.1 mrg
52 1.1 mrg /* Implemented by aarch64_<sur>q<r>shl<mode>. */
53 1.1.1.2 mrg BUILTIN_VSDQ_I (BINOP, sqshl, 0)
54 1.1.1.2 mrg BUILTIN_VSDQ_I (BINOP_UUS, uqshl, 0)
55 1.1.1.2 mrg BUILTIN_VSDQ_I (BINOP, sqrshl, 0)
56 1.1.1.2 mrg BUILTIN_VSDQ_I (BINOP_UUS, uqrshl, 0)
57 1.1 mrg /* Implemented by aarch64_<su_optab><optab><mode>. */
58 1.1.1.2 mrg BUILTIN_VSDQ_I (BINOP, sqadd, 0)
59 1.1.1.2 mrg BUILTIN_VSDQ_I (BINOPU, uqadd, 0)
60 1.1.1.2 mrg BUILTIN_VSDQ_I (BINOP, sqsub, 0)
61 1.1.1.2 mrg BUILTIN_VSDQ_I (BINOPU, uqsub, 0)
62 1.1 mrg /* Implemented by aarch64_<sur>qadd<mode>. */
63 1.1.1.2 mrg BUILTIN_VSDQ_I (BINOP_SSU, suqadd, 0)
64 1.1.1.2 mrg BUILTIN_VSDQ_I (BINOP_UUS, usqadd, 0)
65 1.1 mrg
66 1.1 mrg /* Implemented by aarch64_get_dreg<VSTRUCT:mode><VDC:mode>. */
67 1.1.1.2 mrg BUILTIN_VDC (GETREG, get_dregoi, 0)
68 1.1.1.2 mrg BUILTIN_VDC (GETREG, get_dregci, 0)
69 1.1.1.2 mrg BUILTIN_VDC (GETREG, get_dregxi, 0)
70 1.1 mrg /* Implemented by aarch64_get_qreg<VSTRUCT:mode><VQ:mode>. */
71 1.1.1.2 mrg BUILTIN_VQ (GETREG, get_qregoi, 0)
72 1.1.1.2 mrg BUILTIN_VQ (GETREG, get_qregci, 0)
73 1.1.1.2 mrg BUILTIN_VQ (GETREG, get_qregxi, 0)
74 1.1 mrg /* Implemented by aarch64_set_qreg<VSTRUCT:mode><VQ:mode>. */
75 1.1.1.2 mrg BUILTIN_VQ (SETREG, set_qregoi, 0)
76 1.1.1.2 mrg BUILTIN_VQ (SETREG, set_qregci, 0)
77 1.1.1.2 mrg BUILTIN_VQ (SETREG, set_qregxi, 0)
78 1.1 mrg /* Implemented by aarch64_ld<VSTRUCT:nregs><VDC:mode>. */
79 1.1.1.2 mrg BUILTIN_VDC (LOADSTRUCT, ld2, 0)
80 1.1.1.2 mrg BUILTIN_VDC (LOADSTRUCT, ld3, 0)
81 1.1.1.2 mrg BUILTIN_VDC (LOADSTRUCT, ld4, 0)
82 1.1 mrg /* Implemented by aarch64_ld<VSTRUCT:nregs><VQ:mode>. */
83 1.1.1.2 mrg BUILTIN_VQ (LOADSTRUCT, ld2, 0)
84 1.1.1.2 mrg BUILTIN_VQ (LOADSTRUCT, ld3, 0)
85 1.1.1.2 mrg BUILTIN_VQ (LOADSTRUCT, ld4, 0)
86 1.1.1.2 mrg /* Implemented by aarch64_ld<VSTRUCT:nregs>r<VALLDIF:mode>. */
87 1.1.1.2 mrg BUILTIN_VALLDIF (LOADSTRUCT, ld2r, 0)
88 1.1.1.2 mrg BUILTIN_VALLDIF (LOADSTRUCT, ld3r, 0)
89 1.1.1.2 mrg BUILTIN_VALLDIF (LOADSTRUCT, ld4r, 0)
90 1.1.1.2 mrg /* Implemented by aarch64_ld<VSTRUCT:nregs>_lane<VQ:mode>. */
91 1.1.1.2 mrg BUILTIN_VQ (LOADSTRUCT_LANE, ld2_lane, 0)
92 1.1.1.2 mrg BUILTIN_VQ (LOADSTRUCT_LANE, ld3_lane, 0)
93 1.1.1.2 mrg BUILTIN_VQ (LOADSTRUCT_LANE, ld4_lane, 0)
94 1.1 mrg /* Implemented by aarch64_st<VSTRUCT:nregs><VDC:mode>. */
95 1.1.1.2 mrg BUILTIN_VDC (STORESTRUCT, st2, 0)
96 1.1.1.2 mrg BUILTIN_VDC (STORESTRUCT, st3, 0)
97 1.1.1.2 mrg BUILTIN_VDC (STORESTRUCT, st4, 0)
98 1.1 mrg /* Implemented by aarch64_st<VSTRUCT:nregs><VQ:mode>. */
99 1.1.1.2 mrg BUILTIN_VQ (STORESTRUCT, st2, 0)
100 1.1.1.2 mrg BUILTIN_VQ (STORESTRUCT, st3, 0)
101 1.1.1.2 mrg BUILTIN_VQ (STORESTRUCT, st4, 0)
102 1.1.1.2 mrg
103 1.1.1.2 mrg BUILTIN_VQ (STORESTRUCT_LANE, st2_lane, 0)
104 1.1.1.2 mrg BUILTIN_VQ (STORESTRUCT_LANE, st3_lane, 0)
105 1.1.1.2 mrg BUILTIN_VQ (STORESTRUCT_LANE, st4_lane, 0)
106 1.1.1.2 mrg
107 1.1.1.2 mrg BUILTIN_VQW (BINOP, saddl2, 0)
108 1.1.1.2 mrg BUILTIN_VQW (BINOP, uaddl2, 0)
109 1.1.1.2 mrg BUILTIN_VQW (BINOP, ssubl2, 0)
110 1.1.1.2 mrg BUILTIN_VQW (BINOP, usubl2, 0)
111 1.1.1.2 mrg BUILTIN_VQW (BINOP, saddw2, 0)
112 1.1.1.2 mrg BUILTIN_VQW (BINOP, uaddw2, 0)
113 1.1.1.2 mrg BUILTIN_VQW (BINOP, ssubw2, 0)
114 1.1.1.2 mrg BUILTIN_VQW (BINOP, usubw2, 0)
115 1.1 mrg /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>l<mode>. */
116 1.1.1.2 mrg BUILTIN_VD_BHSI (BINOP, saddl, 0)
117 1.1.1.2 mrg BUILTIN_VD_BHSI (BINOP, uaddl, 0)
118 1.1.1.2 mrg BUILTIN_VD_BHSI (BINOP, ssubl, 0)
119 1.1.1.2 mrg BUILTIN_VD_BHSI (BINOP, usubl, 0)
120 1.1 mrg /* Implemented by aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>. */
121 1.1.1.2 mrg BUILTIN_VD_BHSI (BINOP, saddw, 0)
122 1.1.1.2 mrg BUILTIN_VD_BHSI (BINOP, uaddw, 0)
123 1.1.1.2 mrg BUILTIN_VD_BHSI (BINOP, ssubw, 0)
124 1.1.1.2 mrg BUILTIN_VD_BHSI (BINOP, usubw, 0)
125 1.1 mrg /* Implemented by aarch64_<sur>h<addsub><mode>. */
126 1.1.1.2 mrg BUILTIN_VDQ_BHSI (BINOP, shadd, 0)
127 1.1.1.2 mrg BUILTIN_VDQ_BHSI (BINOP, shsub, 0)
128 1.1.1.2 mrg BUILTIN_VDQ_BHSI (BINOP, uhadd, 0)
129 1.1.1.2 mrg BUILTIN_VDQ_BHSI (BINOP, uhsub, 0)
130 1.1.1.2 mrg BUILTIN_VDQ_BHSI (BINOP, srhadd, 0)
131 1.1.1.2 mrg BUILTIN_VDQ_BHSI (BINOP, urhadd, 0)
132 1.1 mrg /* Implemented by aarch64_<sur><addsub>hn<mode>. */
133 1.1.1.2 mrg BUILTIN_VQN (BINOP, addhn, 0)
134 1.1.1.2 mrg BUILTIN_VQN (BINOP, subhn, 0)
135 1.1.1.2 mrg BUILTIN_VQN (BINOP, raddhn, 0)
136 1.1.1.2 mrg BUILTIN_VQN (BINOP, rsubhn, 0)
137 1.1 mrg /* Implemented by aarch64_<sur><addsub>hn2<mode>. */
138 1.1.1.2 mrg BUILTIN_VQN (TERNOP, addhn2, 0)
139 1.1.1.2 mrg BUILTIN_VQN (TERNOP, subhn2, 0)
140 1.1.1.2 mrg BUILTIN_VQN (TERNOP, raddhn2, 0)
141 1.1.1.2 mrg BUILTIN_VQN (TERNOP, rsubhn2, 0)
142 1.1 mrg
143 1.1.1.2 mrg BUILTIN_VSQN_HSDI (UNOP, sqmovun, 0)
144 1.1 mrg /* Implemented by aarch64_<sur>qmovn<mode>. */
145 1.1.1.2 mrg BUILTIN_VSQN_HSDI (UNOP, sqmovn, 0)
146 1.1.1.2 mrg BUILTIN_VSQN_HSDI (UNOP, uqmovn, 0)
147 1.1 mrg /* Implemented by aarch64_s<optab><mode>. */
148 1.1.1.2 mrg BUILTIN_VSDQ_I (UNOP, sqabs, 0)
149 1.1.1.2 mrg BUILTIN_VSDQ_I (UNOP, sqneg, 0)
150 1.1 mrg
151 1.1 mrg /* Implemented by aarch64_sqdml<SBINQOPS:as>l<mode>. */
152 1.1.1.2 mrg BUILTIN_VSD_HSI (TERNOP, sqdmlal, 0)
153 1.1.1.2 mrg BUILTIN_VSD_HSI (TERNOP, sqdmlsl, 0)
154 1.1.1.2 mrg /* Implemented by aarch64_sqdml<SBINQOPS:as>l_lane<mode>. */
155 1.1.1.2 mrg BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlal_lane, 0)
156 1.1.1.2 mrg BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlsl_lane, 0)
157 1.1.1.2 mrg /* Implemented by aarch64_sqdml<SBINQOPS:as>l_laneq<mode>. */
158 1.1.1.2 mrg BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlal_laneq, 0)
159 1.1.1.2 mrg BUILTIN_VSD_HSI (QUADOP_LANE, sqdmlsl_laneq, 0)
160 1.1 mrg /* Implemented by aarch64_sqdml<SBINQOPS:as>l_n<mode>. */
161 1.1.1.2 mrg BUILTIN_VD_HSI (TERNOP, sqdmlal_n, 0)
162 1.1.1.2 mrg BUILTIN_VD_HSI (TERNOP, sqdmlsl_n, 0)
163 1.1 mrg
164 1.1.1.2 mrg BUILTIN_VQ_HSI (TERNOP, sqdmlal2, 0)
165 1.1.1.2 mrg BUILTIN_VQ_HSI (TERNOP, sqdmlsl2, 0)
166 1.1.1.2 mrg BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlal2_lane, 0)
167 1.1.1.2 mrg BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlsl2_lane, 0)
168 1.1.1.2 mrg BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlal2_laneq, 0)
169 1.1.1.2 mrg BUILTIN_VQ_HSI (QUADOP_LANE, sqdmlsl2_laneq, 0)
170 1.1.1.2 mrg BUILTIN_VQ_HSI (TERNOP, sqdmlal2_n, 0)
171 1.1.1.2 mrg BUILTIN_VQ_HSI (TERNOP, sqdmlsl2_n, 0)
172 1.1.1.2 mrg
173 1.1.1.2 mrg BUILTIN_VSD_HSI (BINOP, sqdmull, 0)
174 1.1.1.2 mrg BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_lane, 0)
175 1.1.1.2 mrg BUILTIN_VSD_HSI (TERNOP_LANE, sqdmull_laneq, 0)
176 1.1.1.2 mrg BUILTIN_VD_HSI (BINOP, sqdmull_n, 0)
177 1.1.1.2 mrg BUILTIN_VQ_HSI (BINOP, sqdmull2, 0)
178 1.1.1.2 mrg BUILTIN_VQ_HSI (TERNOP_LANE, sqdmull2_lane, 0)
179 1.1.1.2 mrg BUILTIN_VQ_HSI (TERNOP_LANE, sqdmull2_laneq, 0)
180 1.1.1.2 mrg BUILTIN_VQ_HSI (BINOP, sqdmull2_n, 0)
181 1.1 mrg /* Implemented by aarch64_sq<r>dmulh<mode>. */
182 1.1.1.2 mrg BUILTIN_VSDQ_HSI (BINOP, sqdmulh, 0)
183 1.1.1.2 mrg BUILTIN_VSDQ_HSI (BINOP, sqrdmulh, 0)
184 1.1 mrg /* Implemented by aarch64_sq<r>dmulh_lane<q><mode>. */
185 1.1.1.2 mrg BUILTIN_VSDQ_HSI (TERNOP_LANE, sqdmulh_lane, 0)
186 1.1.1.2 mrg BUILTIN_VSDQ_HSI (TERNOP_LANE, sqdmulh_laneq, 0)
187 1.1.1.2 mrg BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_lane, 0)
188 1.1.1.2 mrg BUILTIN_VSDQ_HSI (TERNOP_LANE, sqrdmulh_laneq, 0)
189 1.1 mrg
190 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (BINOP, ashl, 3)
191 1.1 mrg /* Implemented by aarch64_<sur>shl<mode>. */
192 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (BINOP, sshl, 0)
193 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (BINOP_UUS, ushl, 0)
194 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (BINOP, srshl, 0)
195 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (BINOP_UUS, urshl, 0)
196 1.1.1.2 mrg
197 1.1.1.2 mrg BUILTIN_VDQ_I (SHIFTIMM, ashr, 3)
198 1.1.1.2 mrg VAR1 (SHIFTIMM, ashr_simd, 0, di)
199 1.1.1.2 mrg BUILTIN_VDQ_I (SHIFTIMM, lshr, 3)
200 1.1.1.2 mrg VAR1 (USHIFTIMM, lshr_simd, 0, di)
201 1.1 mrg /* Implemented by aarch64_<sur>shr_n<mode>. */
202 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n, 0)
203 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (USHIFTIMM, urshr_n, 0)
204 1.1 mrg /* Implemented by aarch64_<sur>sra_n<mode>. */
205 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (SHIFTACC, ssra_n, 0)
206 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (USHIFTACC, usra_n, 0)
207 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (SHIFTACC, srsra_n, 0)
208 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (USHIFTACC, ursra_n, 0)
209 1.1 mrg /* Implemented by aarch64_<sur>shll_n<mode>. */
210 1.1.1.2 mrg BUILTIN_VD_BHSI (SHIFTIMM, sshll_n, 0)
211 1.1.1.2 mrg BUILTIN_VD_BHSI (USHIFTIMM, ushll_n, 0)
212 1.1 mrg /* Implemented by aarch64_<sur>shll2_n<mode>. */
213 1.1.1.2 mrg BUILTIN_VQW (SHIFTIMM, sshll2_n, 0)
214 1.1.1.2 mrg BUILTIN_VQW (SHIFTIMM, ushll2_n, 0)
215 1.1 mrg /* Implemented by aarch64_<sur>q<r>shr<u>n_n<mode>. */
216 1.1.1.2 mrg BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrun_n, 0)
217 1.1.1.2 mrg BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrun_n, 0)
218 1.1.1.2 mrg BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrn_n, 0)
219 1.1.1.2 mrg BUILTIN_VSQN_HSDI (USHIFTIMM, uqshrn_n, 0)
220 1.1.1.2 mrg BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrn_n, 0)
221 1.1.1.2 mrg BUILTIN_VSQN_HSDI (USHIFTIMM, uqrshrn_n, 0)
222 1.1 mrg /* Implemented by aarch64_<sur>s<lr>i_n<mode>. */
223 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssri_n, 0)
224 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (USHIFTACC, usri_n, 0)
225 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssli_n, 0)
226 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (USHIFTACC, usli_n, 0)
227 1.1 mrg /* Implemented by aarch64_<sur>qshl<u>_n<mode>. */
228 1.1.1.2 mrg BUILTIN_VSDQ_I (SHIFTIMM_USS, sqshlu_n, 0)
229 1.1.1.2 mrg BUILTIN_VSDQ_I (SHIFTIMM, sqshl_n, 0)
230 1.1.1.2 mrg BUILTIN_VSDQ_I (USHIFTIMM, uqshl_n, 0)
231 1.1.1.2 mrg
232 1.1.1.2 mrg /* Implemented by aarch64_reduc_plus_<mode>. */
233 1.1.1.2 mrg BUILTIN_VALL (UNOP, reduc_plus_scal_, 10)
234 1.1.1.2 mrg
235 1.1.1.2 mrg /* Implemented by reduc_<maxmin_uns>_scal_<mode> (producing scalar). */
236 1.1.1.2 mrg BUILTIN_VDQIF (UNOP, reduc_smax_scal_, 10)
237 1.1.1.2 mrg BUILTIN_VDQIF (UNOP, reduc_smin_scal_, 10)
238 1.1.1.2 mrg BUILTIN_VDQ_BHSI (UNOPU, reduc_umax_scal_, 10)
239 1.1.1.2 mrg BUILTIN_VDQ_BHSI (UNOPU, reduc_umin_scal_, 10)
240 1.1.1.2 mrg BUILTIN_VDQF (UNOP, reduc_smax_nan_scal_, 10)
241 1.1.1.2 mrg BUILTIN_VDQF (UNOP, reduc_smin_nan_scal_, 10)
242 1.1.1.2 mrg
243 1.1.1.2 mrg /* Implemented by <maxmin><mode>3.
244 1.1.1.2 mrg smax variants map to fmaxnm,
245 1.1.1.2 mrg smax_nan variants map to fmax. */
246 1.1.1.2 mrg BUILTIN_VDQIF (BINOP, smax, 3)
247 1.1.1.2 mrg BUILTIN_VDQIF (BINOP, smin, 3)
248 1.1.1.2 mrg BUILTIN_VDQ_BHSI (BINOP, umax, 3)
249 1.1.1.2 mrg BUILTIN_VDQ_BHSI (BINOP, umin, 3)
250 1.1.1.2 mrg BUILTIN_VDQF (BINOP, smax_nan, 3)
251 1.1.1.2 mrg BUILTIN_VDQF (BINOP, smin_nan, 3)
252 1.1.1.2 mrg
253 1.1.1.2 mrg /* Implemented by aarch64_<maxmin_uns>p<mode>. */
254 1.1.1.2 mrg BUILTIN_VDQ_BHSI (BINOP, smaxp, 0)
255 1.1.1.2 mrg BUILTIN_VDQ_BHSI (BINOP, sminp, 0)
256 1.1.1.2 mrg BUILTIN_VDQ_BHSI (BINOP, umaxp, 0)
257 1.1.1.2 mrg BUILTIN_VDQ_BHSI (BINOP, uminp, 0)
258 1.1.1.2 mrg BUILTIN_VDQF (BINOP, smaxp, 0)
259 1.1.1.2 mrg BUILTIN_VDQF (BINOP, sminp, 0)
260 1.1.1.2 mrg BUILTIN_VDQF (BINOP, smax_nanp, 0)
261 1.1.1.2 mrg BUILTIN_VDQF (BINOP, smin_nanp, 0)
262 1.1.1.2 mrg
263 1.1.1.2 mrg /* Implemented by <frint_pattern><mode>2. */
264 1.1.1.2 mrg BUILTIN_VDQF (UNOP, btrunc, 2)
265 1.1.1.2 mrg BUILTIN_VDQF (UNOP, ceil, 2)
266 1.1.1.2 mrg BUILTIN_VDQF (UNOP, floor, 2)
267 1.1.1.2 mrg BUILTIN_VDQF (UNOP, nearbyint, 2)
268 1.1.1.2 mrg BUILTIN_VDQF (UNOP, rint, 2)
269 1.1.1.2 mrg BUILTIN_VDQF (UNOP, round, 2)
270 1.1.1.2 mrg BUILTIN_VDQF_DF (UNOP, frintn, 2)
271 1.1.1.2 mrg
272 1.1.1.2 mrg /* Implemented by l<fcvt_pattern><su_optab><VQDF:mode><vcvt_target>2. */
273 1.1.1.2 mrg VAR1 (UNOP, lbtruncv2sf, 2, v2si)
274 1.1.1.2 mrg VAR1 (UNOP, lbtruncv4sf, 2, v4si)
275 1.1.1.2 mrg VAR1 (UNOP, lbtruncv2df, 2, v2di)
276 1.1.1.2 mrg
277 1.1.1.2 mrg VAR1 (UNOP, lbtruncuv2sf, 2, v2si)
278 1.1.1.2 mrg VAR1 (UNOP, lbtruncuv4sf, 2, v4si)
279 1.1.1.2 mrg VAR1 (UNOP, lbtruncuv2df, 2, v2di)
280 1.1.1.2 mrg
281 1.1.1.2 mrg VAR1 (UNOP, lroundv2sf, 2, v2si)
282 1.1.1.2 mrg VAR1 (UNOP, lroundv4sf, 2, v4si)
283 1.1.1.2 mrg VAR1 (UNOP, lroundv2df, 2, v2di)
284 1.1.1.2 mrg /* Implemented by l<fcvt_pattern><su_optab><GPF:mode><GPI:mode>2. */
285 1.1.1.2 mrg VAR1 (UNOP, lroundsf, 2, si)
286 1.1.1.2 mrg VAR1 (UNOP, lrounddf, 2, di)
287 1.1.1.2 mrg
288 1.1.1.2 mrg VAR1 (UNOP, lrounduv2sf, 2, v2si)
289 1.1.1.2 mrg VAR1 (UNOP, lrounduv4sf, 2, v4si)
290 1.1.1.2 mrg VAR1 (UNOP, lrounduv2df, 2, v2di)
291 1.1.1.2 mrg VAR1 (UNOP, lroundusf, 2, si)
292 1.1.1.2 mrg VAR1 (UNOP, lroundudf, 2, di)
293 1.1.1.2 mrg
294 1.1.1.2 mrg VAR1 (UNOP, lceilv2sf, 2, v2si)
295 1.1.1.2 mrg VAR1 (UNOP, lceilv4sf, 2, v4si)
296 1.1.1.2 mrg VAR1 (UNOP, lceilv2df, 2, v2di)
297 1.1.1.2 mrg
298 1.1.1.2 mrg VAR1 (UNOP, lceiluv2sf, 2, v2si)
299 1.1.1.2 mrg VAR1 (UNOP, lceiluv4sf, 2, v4si)
300 1.1.1.2 mrg VAR1 (UNOP, lceiluv2df, 2, v2di)
301 1.1.1.2 mrg VAR1 (UNOP, lceilusf, 2, si)
302 1.1.1.2 mrg VAR1 (UNOP, lceiludf, 2, di)
303 1.1.1.2 mrg
304 1.1.1.2 mrg VAR1 (UNOP, lfloorv2sf, 2, v2si)
305 1.1.1.2 mrg VAR1 (UNOP, lfloorv4sf, 2, v4si)
306 1.1.1.2 mrg VAR1 (UNOP, lfloorv2df, 2, v2di)
307 1.1.1.2 mrg
308 1.1.1.2 mrg VAR1 (UNOP, lflooruv2sf, 2, v2si)
309 1.1.1.2 mrg VAR1 (UNOP, lflooruv4sf, 2, v4si)
310 1.1.1.2 mrg VAR1 (UNOP, lflooruv2df, 2, v2di)
311 1.1.1.2 mrg VAR1 (UNOP, lfloorusf, 2, si)
312 1.1.1.2 mrg VAR1 (UNOP, lfloorudf, 2, di)
313 1.1.1.2 mrg
314 1.1.1.2 mrg VAR1 (UNOP, lfrintnv2sf, 2, v2si)
315 1.1.1.2 mrg VAR1 (UNOP, lfrintnv4sf, 2, v4si)
316 1.1.1.2 mrg VAR1 (UNOP, lfrintnv2df, 2, v2di)
317 1.1.1.2 mrg VAR1 (UNOP, lfrintnsf, 2, si)
318 1.1.1.2 mrg VAR1 (UNOP, lfrintndf, 2, di)
319 1.1.1.2 mrg
320 1.1.1.2 mrg VAR1 (UNOP, lfrintnuv2sf, 2, v2si)
321 1.1.1.2 mrg VAR1 (UNOP, lfrintnuv4sf, 2, v4si)
322 1.1.1.2 mrg VAR1 (UNOP, lfrintnuv2df, 2, v2di)
323 1.1.1.2 mrg VAR1 (UNOP, lfrintnusf, 2, si)
324 1.1.1.2 mrg VAR1 (UNOP, lfrintnudf, 2, di)
325 1.1.1.2 mrg
326 1.1.1.2 mrg /* Implemented by <optab><fcvt_target><VDQF:mode>2. */
327 1.1.1.2 mrg VAR1 (UNOP, floatv2si, 2, v2sf)
328 1.1.1.2 mrg VAR1 (UNOP, floatv4si, 2, v4sf)
329 1.1.1.2 mrg VAR1 (UNOP, floatv2di, 2, v2df)
330 1.1.1.2 mrg
331 1.1.1.2 mrg VAR1 (UNOP, floatunsv2si, 2, v2sf)
332 1.1.1.2 mrg VAR1 (UNOP, floatunsv4si, 2, v4sf)
333 1.1.1.2 mrg VAR1 (UNOP, floatunsv2di, 2, v2df)
334 1.1.1.2 mrg
335 1.1.1.2 mrg VAR5 (UNOPU, bswap, 2, v4hi, v8hi, v2si, v4si, v2di)
336 1.1.1.2 mrg
337 1.1.1.2 mrg BUILTIN_VB (UNOP, rbit, 0)
338 1.1 mrg
339 1.1 mrg /* Implemented by
340 1.1 mrg aarch64_<PERMUTE:perm_insn><PERMUTE:perm_hilo><mode>. */
341 1.1.1.2 mrg BUILTIN_VALL (BINOP, zip1, 0)
342 1.1.1.2 mrg BUILTIN_VALL (BINOP, zip2, 0)
343 1.1.1.2 mrg BUILTIN_VALL (BINOP, uzp1, 0)
344 1.1.1.2 mrg BUILTIN_VALL (BINOP, uzp2, 0)
345 1.1.1.2 mrg BUILTIN_VALL (BINOP, trn1, 0)
346 1.1.1.2 mrg BUILTIN_VALL (BINOP, trn2, 0)
347 1.1.1.2 mrg
348 1.1.1.2 mrg /* Implemented by
349 1.1.1.2 mrg aarch64_frecp<FRECP:frecp_suffix><mode>. */
350 1.1.1.2 mrg BUILTIN_GPF (UNOP, frecpe, 0)
351 1.1.1.2 mrg BUILTIN_GPF (BINOP, frecps, 0)
352 1.1.1.2 mrg BUILTIN_GPF (UNOP, frecpx, 0)
353 1.1.1.2 mrg
354 1.1.1.2 mrg BUILTIN_VDQ_SI (UNOP, urecpe, 0)
355 1.1.1.2 mrg
356 1.1.1.2 mrg BUILTIN_VDQF (UNOP, frecpe, 0)
357 1.1.1.2 mrg BUILTIN_VDQF (BINOP, frecps, 0)
358 1.1.1.2 mrg
359 1.1.1.2 mrg /* Implemented by a mixture of abs2 patterns. Note the DImode builtin is
360 1.1.1.2 mrg only ever used for the int64x1_t intrinsic, there is no scalar version. */
361 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (UNOP, abs, 0)
362 1.1.1.2 mrg BUILTIN_VDQF (UNOP, abs, 2)
363 1.1.1.2 mrg
364 1.1.1.2 mrg VAR1 (UNOP, vec_unpacks_hi_, 10, v4sf)
365 1.1.1.2 mrg VAR1 (BINOP, float_truncate_hi_, 0, v4sf)
366 1.1.1.2 mrg
367 1.1.1.2 mrg VAR1 (UNOP, float_extend_lo_, 0, v2df)
368 1.1.1.2 mrg VAR1 (UNOP, float_truncate_lo_, 0, v2sf)
369 1.1 mrg
370 1.1 mrg /* Implemented by aarch64_ld1<VALL:mode>. */
371 1.1.1.2 mrg BUILTIN_VALL (LOAD1, ld1, 0)
372 1.1 mrg
373 1.1 mrg /* Implemented by aarch64_st1<VALL:mode>. */
374 1.1.1.2 mrg BUILTIN_VALL (STORE1, st1, 0)
375 1.1.1.2 mrg
376 1.1.1.2 mrg /* Implemented by fma<mode>4. */
377 1.1.1.2 mrg BUILTIN_VDQF (TERNOP, fma, 4)
378 1.1.1.2 mrg
379 1.1.1.2 mrg /* Implemented by aarch64_simd_bsl<mode>. */
380 1.1.1.2 mrg BUILTIN_VDQQH (BSL_P, simd_bsl, 0)
381 1.1.1.2 mrg BUILTIN_VSDQ_I_DI (BSL_U, simd_bsl, 0)
382 1.1.1.2 mrg BUILTIN_VALLDIF (BSL_S, simd_bsl, 0)
383 1.1.1.2 mrg
384 1.1.1.2 mrg /* Implemented by aarch64_crypto_aes<op><mode>. */
385 1.1.1.2 mrg VAR1 (BINOPU, crypto_aese, 0, v16qi)
386 1.1.1.2 mrg VAR1 (BINOPU, crypto_aesd, 0, v16qi)
387 1.1.1.2 mrg VAR1 (UNOPU, crypto_aesmc, 0, v16qi)
388 1.1.1.2 mrg VAR1 (UNOPU, crypto_aesimc, 0, v16qi)
389 1.1.1.2 mrg
390 1.1.1.2 mrg /* Implemented by aarch64_crypto_sha1<op><mode>. */
391 1.1.1.2 mrg VAR1 (UNOPU, crypto_sha1h, 0, si)
392 1.1.1.2 mrg VAR1 (BINOPU, crypto_sha1su1, 0, v4si)
393 1.1.1.2 mrg VAR1 (TERNOPU, crypto_sha1c, 0, v4si)
394 1.1.1.2 mrg VAR1 (TERNOPU, crypto_sha1m, 0, v4si)
395 1.1.1.2 mrg VAR1 (TERNOPU, crypto_sha1p, 0, v4si)
396 1.1.1.2 mrg VAR1 (TERNOPU, crypto_sha1su0, 0, v4si)
397 1.1.1.2 mrg
398 1.1.1.2 mrg /* Implemented by aarch64_crypto_sha256<op><mode>. */
399 1.1.1.2 mrg VAR1 (TERNOPU, crypto_sha256h, 0, v4si)
400 1.1.1.2 mrg VAR1 (TERNOPU, crypto_sha256h2, 0, v4si)
401 1.1.1.2 mrg VAR1 (BINOPU, crypto_sha256su0, 0, v4si)
402 1.1.1.2 mrg VAR1 (TERNOPU, crypto_sha256su1, 0, v4si)
403 1.1.1.2 mrg
404 1.1.1.2 mrg /* Implemented by aarch64_crypto_pmull<mode>. */
405 1.1.1.2 mrg VAR1 (BINOPP, crypto_pmull, 0, di)
406 1.1.1.2 mrg VAR1 (BINOPP, crypto_pmull, 0, v2di)
407 1.1 mrg
408