* config/h8300/constraints.md ("U" constraint): Use strict
[official-gcc.git] / gcc / config / arm / arm_neon_builtins.def
blobf55591da84505447a11f4c2731b2e14e4fe2ca6d
1 /* NEON builtin definitions for ARM.
2 Copyright (C) 2013-2015 Free Software Foundation, Inc.
3 Contributed by ARM Ltd.
5 This file is part of GCC.
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
9 by the Free Software Foundation; either version 3, or (at your
10 option) any later version.
12 GCC is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 License for more details.
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/>. */
21 VAR2 (BINOP, vadd, v2sf, v4sf)
22 VAR3 (BINOP, vaddls, v8qi, v4hi, v2si)
23 VAR3 (BINOP, vaddlu, v8qi, v4hi, v2si)
24 VAR3 (BINOP, vaddws, v8qi, v4hi, v2si)
25 VAR3 (BINOP, vaddwu, v8qi, v4hi, v2si)
26 VAR6 (BINOP, vhaddu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
27 VAR6 (BINOP, vhadds, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
28 VAR6 (BINOP, vrhaddu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
29 VAR6 (BINOP, vrhadds, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
30 VAR8 (BINOP, vqadds, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
31 VAR8 (BINOP, vqaddu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
32 VAR3 (BINOP, vaddhn, v8hi, v4si, v2di)
33 VAR3 (BINOP, vraddhn, v8hi, v4si, v2di)
34 VAR2 (BINOP, vmulf, v2sf, v4sf)
35 VAR2 (BINOP, vmulp, v8qi, v16qi)
36 VAR8 (TERNOP, vmla, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
37 VAR3 (TERNOP, vmlals, v8qi, v4hi, v2si)
38 VAR3 (TERNOP, vmlalu, v8qi, v4hi, v2si)
39 VAR2 (TERNOP, vfma, v2sf, v4sf)
40 VAR2 (TERNOP, vfms, v2sf, v4sf)
41 VAR8 (TERNOP, vmls, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
42 VAR3 (TERNOP, vmlsls, v8qi, v4hi, v2si)
43 VAR3 (TERNOP, vmlslu, v8qi, v4hi, v2si)
44 VAR4 (BINOP, vqdmulh, v4hi, v2si, v8hi, v4si)
45 VAR4 (BINOP, vqrdmulh, v4hi, v2si, v8hi, v4si)
46 VAR2 (TERNOP, vqdmlal, v4hi, v2si)
47 VAR2 (TERNOP, vqdmlsl, v4hi, v2si)
48 VAR3 (BINOP, vmullp, v8qi, v4hi, v2si)
49 VAR3 (BINOP, vmulls, v8qi, v4hi, v2si)
50 VAR3 (BINOP, vmullu, v8qi, v4hi, v2si)
51 VAR2 (BINOP, vmulls_n, v4hi, v2si)
52 VAR2 (BINOP, vmullu_n, v4hi, v2si)
53 VAR2 (SETLANE, vmulls_lane, v4hi, v2si)
54 VAR2 (SETLANE, vmullu_lane, v4hi, v2si)
55 VAR2 (BINOP, vqdmull_n, v4hi, v2si)
56 VAR2 (SETLANE, vqdmull_lane, v4hi, v2si)
57 VAR4 (BINOP, vqdmulh_n, v4hi, v2si, v8hi, v4si)
58 VAR4 (BINOP, vqrdmulh_n, v4hi, v2si, v8hi, v4si)
59 VAR4 (SETLANE, vqdmulh_lane, v4hi, v2si, v8hi, v4si)
60 VAR4 (SETLANE, vqrdmulh_lane, v4hi, v2si, v8hi, v4si)
61 VAR2 (BINOP, vqdmull, v4hi, v2si)
62 VAR8 (BINOP, vshls, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
63 VAR8 (BINOP, vshlu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
64 VAR8 (BINOP, vrshls, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
65 VAR8 (BINOP, vrshlu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
66 VAR8 (BINOP, vqshls, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
67 VAR8 (BINOP, vqshlu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
68 VAR8 (BINOP, vqrshls, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
69 VAR8 (BINOP, vqrshlu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
70 VAR8 (GETLANE, vshrs_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
71 VAR8 (GETLANE, vshru_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
72 VAR8 (GETLANE, vrshrs_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
73 VAR8 (GETLANE, vrshru_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
74 VAR3 (GETLANE, vshrn_n, v8hi, v4si, v2di)
75 VAR3 (GETLANE, vrshrn_n, v8hi, v4si, v2di)
76 VAR3 (GETLANE, vqshrns_n, v8hi, v4si, v2di)
77 VAR3 (GETLANE, vqshrnu_n, v8hi, v4si, v2di)
78 VAR3 (GETLANE, vqrshrns_n, v8hi, v4si, v2di)
79 VAR3 (GETLANE, vqrshrnu_n, v8hi, v4si, v2di)
80 VAR3 (GETLANE, vqshrun_n, v8hi, v4si, v2di)
81 VAR3 (GETLANE, vqrshrun_n, v8hi, v4si, v2di)
82 VAR8 (GETLANE, vshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
83 VAR8 (GETLANE, vqshl_s_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
84 VAR8 (GETLANE, vqshl_u_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
85 VAR8 (GETLANE, vqshlu_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
86 VAR3 (GETLANE, vshlls_n, v8qi, v4hi, v2si)
87 VAR3 (GETLANE, vshllu_n, v8qi, v4hi, v2si)
88 VAR8 (SETLANE, vsras_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
89 VAR8 (SETLANE, vsrau_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
90 VAR8 (SETLANE, vrsras_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
91 VAR8 (SETLANE, vrsrau_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
92 VAR2 (BINOP, vsub, v2sf, v4sf)
93 VAR3 (BINOP, vsubls, v8qi, v4hi, v2si)
94 VAR3 (BINOP, vsublu, v8qi, v4hi, v2si)
95 VAR3 (BINOP, vsubws, v8qi, v4hi, v2si)
96 VAR3 (BINOP, vsubwu, v8qi, v4hi, v2si)
97 VAR8 (BINOP, vqsubs, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
98 VAR8 (BINOP, vqsubu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
99 VAR6 (BINOP, vhsubs, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
100 VAR6 (BINOP, vhsubu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
101 VAR3 (BINOP, vsubhn, v8hi, v4si, v2di)
102 VAR3 (BINOP, vrsubhn, v8hi, v4si, v2di)
103 VAR8 (BINOP, vceq, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
104 VAR8 (BINOP, vcge, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
105 VAR6 (BINOP, vcgeu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
106 VAR8 (BINOP, vcgt, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
107 VAR6 (BINOP, vcgtu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
108 VAR2 (BINOP, vcage, v2sf, v4sf)
109 VAR2 (BINOP, vcagt, v2sf, v4sf)
110 VAR6 (BINOP, vtst, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
111 VAR6 (BINOP, vabds, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
112 VAR6 (BINOP, vabdu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
113 VAR2 (BINOP, vabdf, v2sf, v4sf)
114 VAR3 (BINOP, vabdls, v8qi, v4hi, v2si)
115 VAR3 (BINOP, vabdlu, v8qi, v4hi, v2si)
117 VAR6 (TERNOP, vabas, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
118 VAR6 (TERNOP, vabau, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
119 VAR3 (TERNOP, vabals, v8qi, v4hi, v2si)
120 VAR3 (TERNOP, vabalu, v8qi, v4hi, v2si)
122 VAR6 (BINOP, vmaxs, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
123 VAR6 (BINOP, vmaxu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
124 VAR2 (BINOP, vmaxf, v2sf, v4sf)
125 VAR6 (BINOP, vmins, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
126 VAR6 (BINOP, vminu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
127 VAR2 (BINOP, vminf, v2sf, v4sf)
129 VAR3 (BINOP, vpmaxs, v8qi, v4hi, v2si)
130 VAR3 (BINOP, vpmaxu, v8qi, v4hi, v2si)
131 VAR1 (BINOP, vpmaxf, v2sf)
132 VAR3 (BINOP, vpmins, v8qi, v4hi, v2si)
133 VAR3 (BINOP, vpminu, v8qi, v4hi, v2si)
134 VAR1 (BINOP, vpminf, v2sf)
136 VAR4 (BINOP, vpadd, v8qi, v4hi, v2si, v2sf)
137 VAR6 (UNOP, vpaddls, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
138 VAR6 (UNOP, vpaddlu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
139 VAR6 (BINOP, vpadals, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
140 VAR6 (BINOP, vpadalu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
141 VAR2 (BINOP, vrecps, v2sf, v4sf)
142 VAR2 (BINOP, vrsqrts, v2sf, v4sf)
143 VAR8 (SETLANE, vsri_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
144 VAR8 (SETLANE, vsli_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
145 VAR8 (UNOP, vabs, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
146 VAR6 (UNOP, vqabs, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
147 VAR8 (UNOP, vneg, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
148 VAR6 (UNOP, vqneg, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
149 VAR6 (UNOP, vcls, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
150 VAR6 (UNOP, vclz, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
151 VAR5 (BSWAP, bswap, v4hi, v8hi, v2si, v4si, v2di)
152 VAR2 (UNOP, vcnt, v8qi, v16qi)
153 VAR4 (UNOP, vrecpe, v2si, v2sf, v4si, v4sf)
154 VAR4 (UNOP, vrsqrte, v2si, v2sf, v4si, v4sf)
155 VAR6 (UNOP, vmvn, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
156 /* FIXME: vget_lane supports more variants than this! */
157 VAR10 (GETLANE, vget_lane,
158 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
159 VAR6 (GETLANE, vget_laneu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
160 VAR10 (SETLANE, vset_lane,
161 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
162 VAR5 (UNOP, vcreate, v8qi, v4hi, v2si, v2sf, di)
163 VAR10 (UNOP, vdup_n,
164 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
165 VAR10 (BINOP, vdup_lane,
166 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
167 VAR5 (COMBINE, vcombine, v8qi, v4hi, v2si, v2sf, di)
168 VAR5 (UNOP, vget_high, v16qi, v8hi, v4si, v4sf, v2di)
169 VAR5 (UNOP, vget_low, v16qi, v8hi, v4si, v4sf, v2di)
170 VAR3 (UNOP, vmovn, v8hi, v4si, v2di)
171 VAR3 (UNOP, vqmovns, v8hi, v4si, v2di)
172 VAR3 (UNOP, vqmovnu, v8hi, v4si, v2di)
173 VAR3 (UNOP, vqmovun, v8hi, v4si, v2di)
174 VAR3 (UNOP, vmovls, v8qi, v4hi, v2si)
175 VAR3 (UNOP, vmovlu, v8qi, v4hi, v2si)
176 VAR6 (SETLANE, vmul_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
177 VAR6 (LANEMAC, vmla_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
178 VAR2 (LANEMAC, vmlals_lane, v4hi, v2si)
179 VAR2 (LANEMAC, vmlalu_lane, v4hi, v2si)
180 VAR2 (LANEMAC, vqdmlal_lane, v4hi, v2si)
181 VAR6 (LANEMAC, vmls_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
182 VAR2 (LANEMAC, vmlsls_lane, v4hi, v2si)
183 VAR2 (LANEMAC, vmlslu_lane, v4hi, v2si)
184 VAR2 (LANEMAC, vqdmlsl_lane, v4hi, v2si)
185 VAR6 (BINOP, vmul_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
186 VAR6 (LANEMAC, vmla_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
187 VAR2 (LANEMAC, vmlals_n, v4hi, v2si)
188 VAR2 (LANEMAC, vmlalu_n, v4hi, v2si)
189 VAR2 (LANEMAC, vqdmlal_n, v4hi, v2si)
190 VAR6 (LANEMAC, vmls_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
191 VAR2 (LANEMAC, vmlsls_n, v4hi, v2si)
192 VAR2 (LANEMAC, vmlslu_n, v4hi, v2si)
193 VAR2 (LANEMAC, vqdmlsl_n, v4hi, v2si)
194 VAR10 (SETLANE, vext,
195 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
196 VAR8 (UNOP, vrev64, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
197 VAR4 (UNOP, vrev32, v8qi, v4hi, v16qi, v8hi)
198 VAR2 (UNOP, vrev16, v8qi, v16qi)
199 VAR4 (UNOP, vcvts, v2si, v2sf, v4si, v4sf)
200 VAR4 (UNOP, vcvtu, v2si, v2sf, v4si, v4sf)
201 VAR4 (BINOP, vcvts_n, v2si, v2sf, v4si, v4sf)
202 VAR4 (BINOP, vcvtu_n, v2si, v2sf, v4si, v4sf)
203 VAR1 (UNOP, vcvtv4sf, v4hf)
204 VAR1 (UNOP, vcvtv4hf, v4sf)
205 VAR10 (TERNOP, vbsl,
206 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
207 VAR2 (UNOP, copysignf, v2sf, v4sf)
208 VAR2 (UNOP, vrintn, v2sf, v4sf)
209 VAR2 (UNOP, vrinta, v2sf, v4sf)
210 VAR2 (UNOP, vrintp, v2sf, v4sf)
211 VAR2 (UNOP, vrintm, v2sf, v4sf)
212 VAR2 (UNOP, vrintz, v2sf, v4sf)
213 VAR2 (UNOP, vrintx, v2sf, v4sf)
214 VAR1 (UNOP, vcvtav2sf, v2si)
215 VAR1 (UNOP, vcvtav4sf, v4si)
216 VAR1 (UNOP, vcvtauv2sf, v2si)
217 VAR1 (UNOP, vcvtauv4sf, v4si)
218 VAR1 (UNOP, vcvtpv2sf, v2si)
219 VAR1 (UNOP, vcvtpv4sf, v4si)
220 VAR1 (UNOP, vcvtpuv2sf, v2si)
221 VAR1 (UNOP, vcvtpuv4sf, v4si)
222 VAR1 (UNOP, vcvtmv2sf, v2si)
223 VAR1 (UNOP, vcvtmv4sf, v4si)
224 VAR1 (UNOP, vcvtmuv2sf, v2si)
225 VAR1 (UNOP, vcvtmuv4sf, v4si)
226 VAR1 (COMBINE, vtbl1, v8qi)
227 VAR1 (COMBINE, vtbl2, v8qi)
228 VAR1 (COMBINE, vtbl3, v8qi)
229 VAR1 (COMBINE, vtbl4, v8qi)
230 VAR1 (TERNOP, vtbx1, v8qi)
231 VAR1 (TERNOP, vtbx2, v8qi)
232 VAR1 (TERNOP, vtbx3, v8qi)
233 VAR1 (TERNOP, vtbx4, v8qi)
234 VAR5 (UNOP, vreinterpretv8qi, v8qi, v4hi, v2si, v2sf, di)
235 VAR5 (UNOP, vreinterpretv4hi, v8qi, v4hi, v2si, v2sf, di)
236 VAR5 (UNOP, vreinterpretv2si, v8qi, v4hi, v2si, v2sf, di)
237 VAR5 (UNOP, vreinterpretv2sf, v8qi, v4hi, v2si, v2sf, di)
238 VAR5 (UNOP, vreinterpretdi, v8qi, v4hi, v2si, v2sf, di)
239 VAR6 (UNOP, vreinterpretv16qi, v16qi, v8hi, v4si, v4sf, v2di, ti)
240 VAR6 (UNOP, vreinterpretv8hi, v16qi, v8hi, v4si, v4sf, v2di, ti)
241 VAR6 (UNOP, vreinterpretv4si, v16qi, v8hi, v4si, v4sf, v2di, ti)
242 VAR6 (UNOP, vreinterpretv4sf, v16qi, v8hi, v4si, v4sf, v2di, ti)
243 VAR6 (UNOP, vreinterpretv2di, v16qi, v8hi, v4si, v4sf, v2di, ti)
244 VAR6 (UNOP, vreinterpretti, v16qi, v8hi, v4si, v4sf, v2di, ti)
245 VAR10 (LOAD1, vld1,
246 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
247 VAR10 (LOAD1LANE, vld1_lane,
248 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
249 VAR10 (LOAD1, vld1_dup,
250 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
251 VAR10 (STORE1, vst1,
252 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
253 VAR10 (STORE1LANE, vst1_lane,
254 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
255 VAR9 (LOAD1, vld2,
256 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf)
257 VAR7 (LOAD1LANE, vld2_lane,
258 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
259 VAR5 (LOAD1, vld2_dup, v8qi, v4hi, v2si, v2sf, di)
260 VAR9 (STORE1, vst2,
261 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf)
262 VAR7 (STORE1LANE, vst2_lane,
263 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
264 VAR9 (LOAD1, vld3,
265 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf)
266 VAR7 (LOAD1LANE, vld3_lane,
267 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
268 VAR5 (LOAD1, vld3_dup, v8qi, v4hi, v2si, v2sf, di)
269 VAR9 (STORE1, vst3,
270 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf)
271 VAR7 (STORE1LANE, vst3_lane,
272 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
273 VAR9 (LOAD1, vld4,
274 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf)
275 VAR7 (LOAD1LANE, vld4_lane,
276 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
277 VAR5 (LOAD1, vld4_dup, v8qi, v4hi, v2si, v2sf, di)
278 VAR9 (STORE1, vst4,
279 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf)
280 VAR7 (STORE1LANE, vst4_lane,
281 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf)