[ARM] Remove neon_reinterpret, use casts
[official-gcc.git] / gcc / config / arm / arm_neon_builtins.def
blobd9fac7847704f8558ec11e0438b5d81d16e5833b
1 /* NEON builtin definitions for ARM.
2 Copyright (C) 2013-2016 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 VAR4 (TERNOP, vqrdmlah, v4hi, v2si, v8hi, v4si)
49 VAR4 (TERNOP, vqrdmlsh, v4hi, v2si, v8hi, v4si)
50 VAR3 (BINOP, vmullp, v8qi, v4hi, v2si)
51 VAR3 (BINOP, vmulls, v8qi, v4hi, v2si)
52 VAR3 (BINOP, vmullu, v8qi, v4hi, v2si)
53 VAR2 (BINOP, vmulls_n, v4hi, v2si)
54 VAR2 (BINOP, vmullu_n, v4hi, v2si)
55 VAR2 (SETLANE, vmulls_lane, v4hi, v2si)
56 VAR2 (SETLANE, vmullu_lane, v4hi, v2si)
57 VAR2 (BINOP, vqdmull_n, v4hi, v2si)
58 VAR2 (SETLANE, vqdmull_lane, v4hi, v2si)
59 VAR4 (BINOP, vqdmulh_n, v4hi, v2si, v8hi, v4si)
60 VAR4 (BINOP, vqrdmulh_n, v4hi, v2si, v8hi, v4si)
61 VAR4 (SETLANE, vqdmulh_lane, v4hi, v2si, v8hi, v4si)
62 VAR4 (SETLANE, vqrdmulh_lane, v4hi, v2si, v8hi, v4si)
63 VAR4 (MAC_LANE, vqrdmlah_lane, v4hi, v2si, v8hi, v4si)
64 VAR4 (MAC_LANE, vqrdmlsh_lane, v4hi, v2si, v8hi, v4si)
65 VAR2 (BINOP, vqdmull, v4hi, v2si)
66 VAR8 (BINOP, vshls, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
67 VAR8 (BINOP, vshlu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
68 VAR8 (BINOP, vrshls, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
69 VAR8 (BINOP, vrshlu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
70 VAR8 (BINOP, vqshls, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
71 VAR8 (BINOP, vqshlu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
72 VAR8 (BINOP, vqrshls, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
73 VAR8 (BINOP, vqrshlu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
74 VAR8 (BINOP_IMM, vshrs_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
75 VAR8 (BINOP_IMM, vshru_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
76 VAR8 (BINOP_IMM, vrshrs_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
77 VAR8 (BINOP_IMM, vrshru_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
78 VAR3 (BINOP_IMM, vshrn_n, v8hi, v4si, v2di)
79 VAR3 (BINOP_IMM, vrshrn_n, v8hi, v4si, v2di)
80 VAR3 (BINOP_IMM, vqshrns_n, v8hi, v4si, v2di)
81 VAR3 (BINOP_IMM, vqshrnu_n, v8hi, v4si, v2di)
82 VAR3 (BINOP_IMM, vqrshrns_n, v8hi, v4si, v2di)
83 VAR3 (BINOP_IMM, vqrshrnu_n, v8hi, v4si, v2di)
84 VAR3 (BINOP_IMM, vqshrun_n, v8hi, v4si, v2di)
85 VAR3 (BINOP_IMM, vqrshrun_n, v8hi, v4si, v2di)
86 VAR8 (BINOP_IMM, vshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
87 VAR8 (BINOP_IMM, vqshl_s_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
88 VAR8 (BINOP_IMM, vqshl_u_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
89 VAR8 (BINOP_IMM, vqshlu_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
90 VAR3 (BINOP_IMM, vshlls_n, v8qi, v4hi, v2si)
91 VAR3 (BINOP_IMM, vshllu_n, v8qi, v4hi, v2si)
92 VAR8 (TERNOP_IMM, vsras_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
93 VAR8 (TERNOP_IMM, vsrau_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
94 VAR8 (TERNOP_IMM, vrsras_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
95 VAR8 (TERNOP_IMM, vrsrau_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
96 VAR2 (BINOP, vsub, v2sf, v4sf)
97 VAR3 (BINOP, vsubls, v8qi, v4hi, v2si)
98 VAR3 (BINOP, vsublu, v8qi, v4hi, v2si)
99 VAR3 (BINOP, vsubws, v8qi, v4hi, v2si)
100 VAR3 (BINOP, vsubwu, v8qi, v4hi, v2si)
101 VAR8 (BINOP, vqsubs, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
102 VAR8 (BINOP, vqsubu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
103 VAR6 (BINOP, vhsubs, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
104 VAR6 (BINOP, vhsubu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
105 VAR3 (BINOP, vsubhn, v8hi, v4si, v2di)
106 VAR3 (BINOP, vrsubhn, v8hi, v4si, v2di)
107 VAR8 (BINOP, vceq, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
108 VAR8 (BINOP, vcge, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
109 VAR6 (BINOP, vcgeu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
110 VAR8 (BINOP, vcgt, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
111 VAR6 (BINOP, vcgtu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
112 VAR2 (BINOP, vcage, v2sf, v4sf)
113 VAR2 (BINOP, vcagt, v2sf, v4sf)
114 VAR6 (BINOP, vtst, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
115 VAR6 (BINOP, vabds, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
116 VAR6 (BINOP, vabdu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
117 VAR2 (BINOP, vabdf, v2sf, v4sf)
118 VAR3 (BINOP, vabdls, v8qi, v4hi, v2si)
119 VAR3 (BINOP, vabdlu, v8qi, v4hi, v2si)
121 VAR6 (TERNOP, vabas, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
122 VAR6 (TERNOP, vabau, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
123 VAR3 (TERNOP, vabals, v8qi, v4hi, v2si)
124 VAR3 (TERNOP, vabalu, v8qi, v4hi, v2si)
126 VAR6 (BINOP, vmaxs, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
127 VAR6 (BINOP, vmaxu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
128 VAR2 (BINOP, vmaxf, v2sf, v4sf)
129 VAR6 (BINOP, vmins, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
130 VAR6 (BINOP, vminu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
131 VAR2 (BINOP, vminf, v2sf, v4sf)
133 VAR3 (BINOP, vpmaxs, v8qi, v4hi, v2si)
134 VAR3 (BINOP, vpmaxu, v8qi, v4hi, v2si)
135 VAR1 (BINOP, vpmaxf, v2sf)
136 VAR3 (BINOP, vpmins, v8qi, v4hi, v2si)
137 VAR3 (BINOP, vpminu, v8qi, v4hi, v2si)
138 VAR1 (BINOP, vpminf, v2sf)
140 VAR4 (BINOP, vpadd, v8qi, v4hi, v2si, v2sf)
141 VAR6 (UNOP, vpaddls, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
142 VAR6 (UNOP, vpaddlu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
143 VAR6 (BINOP, vpadals, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
144 VAR6 (BINOP, vpadalu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
145 VAR2 (BINOP, vrecps, v2sf, v4sf)
146 VAR2 (BINOP, vrsqrts, v2sf, v4sf)
147 VAR8 (TERNOP_IMM, vsri_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
148 VAR8 (TERNOP_IMM, vsli_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
149 VAR8 (UNOP, vabs, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
150 VAR6 (UNOP, vqabs, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
151 VAR8 (UNOP, vneg, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
152 VAR6 (UNOP, vqneg, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
153 VAR6 (UNOP, vcls, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
154 VAR6 (UNOP, vclz, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
155 VAR5 (BSWAP, bswap, v4hi, v8hi, v2si, v4si, v2di)
156 VAR2 (UNOP, vcnt, v8qi, v16qi)
157 VAR4 (UNOP, vrecpe, v2si, v2sf, v4si, v4sf)
158 VAR4 (UNOP, vrsqrte, v2si, v2sf, v4si, v4sf)
159 VAR6 (UNOP, vmvn, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
160 /* FIXME: vget_lane supports more variants than this! */
161 VAR10 (GETLANE, vget_lane,
162 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
163 VAR6 (GETLANE, vget_laneu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
164 VAR10 (SETLANE, vset_lane,
165 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
166 VAR5 (UNOP, vcreate, v8qi, v4hi, v2si, v2sf, di)
167 VAR10 (UNOP, vdup_n,
168 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
169 VAR10 (GETLANE, vdup_lane,
170 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
171 VAR6 (COMBINE, vcombine, v8qi, v4hi, v4hf, v2si, v2sf, di)
172 VAR6 (UNOP, vget_high, v16qi, v8hi, v8hf, v4si, v4sf, v2di)
173 VAR6 (UNOP, vget_low, v16qi, v8hi, v8hf, v4si, v4sf, v2di)
174 VAR3 (UNOP, vmovn, v8hi, v4si, v2di)
175 VAR3 (UNOP, vqmovns, v8hi, v4si, v2di)
176 VAR3 (UNOP, vqmovnu, v8hi, v4si, v2di)
177 VAR3 (UNOP, vqmovun, v8hi, v4si, v2di)
178 VAR3 (UNOP, vmovls, v8qi, v4hi, v2si)
179 VAR3 (UNOP, vmovlu, v8qi, v4hi, v2si)
180 VAR6 (SETLANE, vmul_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
181 VAR6 (MAC_LANE, vmla_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
182 VAR2 (MAC_LANE, vmlals_lane, v4hi, v2si)
183 VAR2 (MAC_LANE, vmlalu_lane, v4hi, v2si)
184 VAR2 (MAC_LANE, vqdmlal_lane, v4hi, v2si)
185 VAR6 (MAC_LANE, vmls_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
186 VAR2 (MAC_LANE, vmlsls_lane, v4hi, v2si)
187 VAR2 (MAC_LANE, vmlslu_lane, v4hi, v2si)
188 VAR2 (MAC_LANE, vqdmlsl_lane, v4hi, v2si)
189 VAR6 (BINOP, vmul_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
190 VAR6 (MAC_N, vmla_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
191 VAR2 (MAC_N, vmlals_n, v4hi, v2si)
192 VAR2 (MAC_N, vmlalu_n, v4hi, v2si)
193 VAR2 (MAC_N, vqdmlal_n, v4hi, v2si)
194 VAR6 (MAC_N, vmls_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
195 VAR2 (MAC_N, vmlsls_n, v4hi, v2si)
196 VAR2 (MAC_N, vmlslu_n, v4hi, v2si)
197 VAR2 (MAC_N, vqdmlsl_n, v4hi, v2si)
198 VAR10 (SETLANE, vext,
199 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
200 VAR8 (UNOP, vrev64, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
201 VAR4 (UNOP, vrev32, v8qi, v4hi, v16qi, v8hi)
202 VAR2 (UNOP, vrev16, v8qi, v16qi)
203 VAR4 (UNOP, vcvts, v2si, v2sf, v4si, v4sf)
204 VAR4 (UNOP, vcvtu, v2si, v2sf, v4si, v4sf)
205 VAR4 (BINOP, vcvts_n, v2si, v2sf, v4si, v4sf)
206 VAR4 (BINOP, vcvtu_n, v2si, v2sf, v4si, v4sf)
207 VAR1 (UNOP, vcvtv4sf, v4hf)
208 VAR1 (UNOP, vcvtv4hf, v4sf)
209 VAR10 (TERNOP, vbsl,
210 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
211 VAR2 (UNOP, copysignf, v2sf, v4sf)
212 VAR2 (UNOP, vrintn, v2sf, v4sf)
213 VAR2 (UNOP, vrinta, v2sf, v4sf)
214 VAR2 (UNOP, vrintp, v2sf, v4sf)
215 VAR2 (UNOP, vrintm, v2sf, v4sf)
216 VAR2 (UNOP, vrintz, v2sf, v4sf)
217 VAR2 (UNOP, vrintx, v2sf, v4sf)
218 VAR1 (UNOP, vcvtav2sf, v2si)
219 VAR1 (UNOP, vcvtav4sf, v4si)
220 VAR1 (UNOP, vcvtauv2sf, v2si)
221 VAR1 (UNOP, vcvtauv4sf, v4si)
222 VAR1 (UNOP, vcvtpv2sf, v2si)
223 VAR1 (UNOP, vcvtpv4sf, v4si)
224 VAR1 (UNOP, vcvtpuv2sf, v2si)
225 VAR1 (UNOP, vcvtpuv4sf, v4si)
226 VAR1 (UNOP, vcvtmv2sf, v2si)
227 VAR1 (UNOP, vcvtmv4sf, v4si)
228 VAR1 (UNOP, vcvtmuv2sf, v2si)
229 VAR1 (UNOP, vcvtmuv4sf, v4si)
230 VAR1 (COMBINE, vtbl1, v8qi)
231 VAR1 (COMBINE, vtbl2, v8qi)
232 VAR1 (COMBINE, vtbl3, v8qi)
233 VAR1 (COMBINE, vtbl4, v8qi)
234 VAR1 (TERNOP, vtbx1, v8qi)
235 VAR1 (TERNOP, vtbx2, v8qi)
236 VAR1 (TERNOP, vtbx3, v8qi)
237 VAR1 (TERNOP, vtbx4, v8qi)
238 VAR12 (LOAD1, vld1,
239 v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf, v2di)
240 VAR10 (LOAD1LANE, vld1_lane,
241 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
242 VAR10 (LOAD1, vld1_dup,
243 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
244 VAR12 (STORE1, vst1,
245 v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf, v2di)
246 VAR12 (STORE1LANE, vst1_lane,
247 v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf, v2di)
248 VAR11 (LOAD1, vld2,
249 v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf)
250 VAR9 (LOAD1LANE, vld2_lane,
251 v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf)
252 VAR6 (LOAD1, vld2_dup, v8qi, v4hi, v4hf, v2si, v2sf, di)
253 VAR11 (STORE1, vst2,
254 v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf)
255 VAR9 (STORE1LANE, vst2_lane,
256 v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf)
257 VAR11 (LOAD1, vld3,
258 v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf)
259 VAR9 (LOAD1LANE, vld3_lane,
260 v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf)
261 VAR6 (LOAD1, vld3_dup, v8qi, v4hi, v4hf, v2si, v2sf, di)
262 VAR11 (STORE1, vst3,
263 v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf)
264 VAR9 (STORE1LANE, vst3_lane,
265 v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf)
266 VAR11 (LOAD1, vld4,
267 v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf)
268 VAR9 (LOAD1LANE, vld4_lane,
269 v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf)
270 VAR6 (LOAD1, vld4_dup, v8qi, v4hi, v4hf, v2si, v2sf, di)
271 VAR11 (STORE1, vst4,
272 v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf)
273 VAR9 (STORE1LANE, vst4_lane,
274 v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf)