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