Merged revisions 196716,196830,198094,198116,198502,198877,199007,199262,199319,19946...
[official-gcc.git] / main / gcc / config / arm / arm_neon_builtins.def
blob92f1d7ad1c437b7c043c6f93c4f3bade8609f8a9
1 /* NEON builtin definitions for ARM.
2 Copyright (C) 2013
3 Free Software Foundation, Inc.
4 Contributed by ARM Ltd.
6 This file is part of GCC.
8 GCC is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published
10 by the Free Software Foundation; either version 3, or (at your
11 option) any later version.
13 GCC is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16 License for more details.
18 You should have received a copy of the GNU General Public License
19 along with GCC; see the file COPYING3. If not see
20 <http://www.gnu.org/licenses/>. */
22 VAR10 (BINOP, vadd,
23 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
24 VAR3 (BINOP, vaddl, v8qi, v4hi, v2si),
25 VAR3 (BINOP, vaddw, v8qi, v4hi, v2si),
26 VAR6 (BINOP, vhadd, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
27 VAR8 (BINOP, vqadd, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
28 VAR3 (BINOP, vaddhn, v8hi, v4si, v2di),
29 VAR8 (BINOP, vmul, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
30 VAR8 (TERNOP, vmla, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
31 VAR3 (TERNOP, vmlal, v8qi, v4hi, v2si),
32 VAR2 (TERNOP, vfma, v2sf, v4sf),
33 VAR2 (TERNOP, vfms, v2sf, v4sf),
34 VAR8 (TERNOP, vmls, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
35 VAR3 (TERNOP, vmlsl, v8qi, v4hi, v2si),
36 VAR4 (BINOP, vqdmulh, v4hi, v2si, v8hi, v4si),
37 VAR2 (TERNOP, vqdmlal, v4hi, v2si),
38 VAR2 (TERNOP, vqdmlsl, v4hi, v2si),
39 VAR3 (BINOP, vmull, v8qi, v4hi, v2si),
40 VAR2 (SCALARMULL, vmull_n, v4hi, v2si),
41 VAR2 (LANEMULL, vmull_lane, v4hi, v2si),
42 VAR2 (SCALARMULL, vqdmull_n, v4hi, v2si),
43 VAR2 (LANEMULL, vqdmull_lane, v4hi, v2si),
44 VAR4 (SCALARMULH, vqdmulh_n, v4hi, v2si, v8hi, v4si),
45 VAR4 (LANEMULH, vqdmulh_lane, v4hi, v2si, v8hi, v4si),
46 VAR2 (BINOP, vqdmull, v4hi, v2si),
47 VAR8 (BINOP, vshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
48 VAR8 (BINOP, vqshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
49 VAR8 (SHIFTIMM, vshr_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
50 VAR3 (SHIFTIMM, vshrn_n, v8hi, v4si, v2di),
51 VAR3 (SHIFTIMM, vqshrn_n, v8hi, v4si, v2di),
52 VAR3 (SHIFTIMM, vqshrun_n, v8hi, v4si, v2di),
53 VAR8 (SHIFTIMM, vshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
54 VAR8 (SHIFTIMM, vqshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
55 VAR8 (SHIFTIMM, vqshlu_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
56 VAR3 (SHIFTIMM, vshll_n, v8qi, v4hi, v2si),
57 VAR8 (SHIFTACC, vsra_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
58 VAR10 (BINOP, vsub, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
59 VAR3 (BINOP, vsubl, v8qi, v4hi, v2si),
60 VAR3 (BINOP, vsubw, v8qi, v4hi, v2si),
61 VAR8 (BINOP, vqsub, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
62 VAR6 (BINOP, vhsub, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
63 VAR3 (BINOP, vsubhn, v8hi, v4si, v2di),
64 VAR8 (BINOP, vceq, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
65 VAR8 (BINOP, vcge, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
66 VAR6 (BINOP, vcgeu, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
67 VAR8 (BINOP, vcgt, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
68 VAR6 (BINOP, vcgtu, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
69 VAR2 (BINOP, vcage, v2sf, v4sf),
70 VAR2 (BINOP, vcagt, v2sf, v4sf),
71 VAR6 (BINOP, vtst, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
72 VAR8 (BINOP, vabd, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
73 VAR3 (BINOP, vabdl, v8qi, v4hi, v2si),
74 VAR6 (TERNOP, vaba, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
75 VAR3 (TERNOP, vabal, v8qi, v4hi, v2si),
76 VAR8 (BINOP, vmax, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
77 VAR8 (BINOP, vmin, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
78 VAR4 (BINOP, vpadd, v8qi, v4hi, v2si, v2sf),
79 VAR6 (UNOP, vpaddl, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
80 VAR6 (BINOP, vpadal, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
81 VAR4 (BINOP, vpmax, v8qi, v4hi, v2si, v2sf),
82 VAR4 (BINOP, vpmin, v8qi, v4hi, v2si, v2sf),
83 VAR2 (BINOP, vrecps, v2sf, v4sf),
84 VAR2 (BINOP, vrsqrts, v2sf, v4sf),
85 VAR8 (SHIFTINSERT, vsri_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
86 VAR8 (SHIFTINSERT, vsli_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
87 VAR8 (UNOP, vabs, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
88 VAR6 (UNOP, vqabs, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
89 VAR8 (UNOP, vneg, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
90 VAR6 (UNOP, vqneg, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
91 VAR6 (UNOP, vcls, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
92 VAR6 (UNOP, vclz, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
93 VAR2 (UNOP, vcnt, v8qi, v16qi),
94 VAR4 (UNOP, vrecpe, v2si, v2sf, v4si, v4sf),
95 VAR4 (UNOP, vrsqrte, v2si, v2sf, v4si, v4sf),
96 VAR6 (UNOP, vmvn, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
97 /* FIXME: vget_lane supports more variants than this! */
98 VAR10 (GETLANE, vget_lane,
99 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
100 VAR10 (SETLANE, vset_lane,
101 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
102 VAR5 (CREATE, vcreate, v8qi, v4hi, v2si, v2sf, di),
103 VAR10 (DUP, vdup_n,
104 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
105 VAR10 (DUPLANE, vdup_lane,
106 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
107 VAR5 (COMBINE, vcombine, v8qi, v4hi, v2si, v2sf, di),
108 VAR5 (SPLIT, vget_high, v16qi, v8hi, v4si, v4sf, v2di),
109 VAR5 (SPLIT, vget_low, v16qi, v8hi, v4si, v4sf, v2di),
110 VAR3 (UNOP, vmovn, v8hi, v4si, v2di),
111 VAR3 (UNOP, vqmovn, v8hi, v4si, v2di),
112 VAR3 (UNOP, vqmovun, v8hi, v4si, v2di),
113 VAR3 (UNOP, vmovl, v8qi, v4hi, v2si),
114 VAR6 (LANEMUL, vmul_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
115 VAR6 (LANEMAC, vmla_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
116 VAR2 (LANEMAC, vmlal_lane, v4hi, v2si),
117 VAR2 (LANEMAC, vqdmlal_lane, v4hi, v2si),
118 VAR6 (LANEMAC, vmls_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
119 VAR2 (LANEMAC, vmlsl_lane, v4hi, v2si),
120 VAR2 (LANEMAC, vqdmlsl_lane, v4hi, v2si),
121 VAR6 (SCALARMUL, vmul_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
122 VAR6 (SCALARMAC, vmla_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
123 VAR2 (SCALARMAC, vmlal_n, v4hi, v2si),
124 VAR2 (SCALARMAC, vqdmlal_n, v4hi, v2si),
125 VAR6 (SCALARMAC, vmls_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
126 VAR2 (SCALARMAC, vmlsl_n, v4hi, v2si),
127 VAR2 (SCALARMAC, vqdmlsl_n, v4hi, v2si),
128 VAR10 (BINOP, vext,
129 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
130 VAR8 (UNOP, vrev64, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
131 VAR4 (UNOP, vrev32, v8qi, v4hi, v16qi, v8hi),
132 VAR2 (UNOP, vrev16, v8qi, v16qi),
133 VAR4 (CONVERT, vcvt, v2si, v2sf, v4si, v4sf),
134 VAR4 (FIXCONV, vcvt_n, v2si, v2sf, v4si, v4sf),
135 VAR1 (FLOAT_WIDEN, vcvtv4sf, v4hf),
136 VAR1 (FLOAT_NARROW, vcvtv4hf, v4sf),
137 VAR10 (SELECT, vbsl,
138 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
139 VAR2 (RINT, vrintn, v2sf, v4sf),
140 VAR2 (RINT, vrinta, v2sf, v4sf),
141 VAR2 (RINT, vrintp, v2sf, v4sf),
142 VAR2 (RINT, vrintm, v2sf, v4sf),
143 VAR2 (RINT, vrintz, v2sf, v4sf),
144 VAR2 (RINT, vrintx, v2sf, v4sf),
145 VAR1 (VTBL, vtbl1, v8qi),
146 VAR1 (VTBL, vtbl2, v8qi),
147 VAR1 (VTBL, vtbl3, v8qi),
148 VAR1 (VTBL, vtbl4, v8qi),
149 VAR1 (VTBX, vtbx1, v8qi),
150 VAR1 (VTBX, vtbx2, v8qi),
151 VAR1 (VTBX, vtbx3, v8qi),
152 VAR1 (VTBX, vtbx4, v8qi),
153 VAR8 (RESULTPAIR, vtrn, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
154 VAR8 (RESULTPAIR, vzip, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
155 VAR8 (RESULTPAIR, vuzp, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
156 VAR5 (REINTERP, vreinterpretv8qi, v8qi, v4hi, v2si, v2sf, di),
157 VAR5 (REINTERP, vreinterpretv4hi, v8qi, v4hi, v2si, v2sf, di),
158 VAR5 (REINTERP, vreinterpretv2si, v8qi, v4hi, v2si, v2sf, di),
159 VAR5 (REINTERP, vreinterpretv2sf, v8qi, v4hi, v2si, v2sf, di),
160 VAR5 (REINTERP, vreinterpretdi, v8qi, v4hi, v2si, v2sf, di),
161 VAR5 (REINTERP, vreinterpretv16qi, v16qi, v8hi, v4si, v4sf, v2di),
162 VAR5 (REINTERP, vreinterpretv8hi, v16qi, v8hi, v4si, v4sf, v2di),
163 VAR5 (REINTERP, vreinterpretv4si, v16qi, v8hi, v4si, v4sf, v2di),
164 VAR5 (REINTERP, vreinterpretv4sf, v16qi, v8hi, v4si, v4sf, v2di),
165 VAR5 (REINTERP, vreinterpretv2di, v16qi, v8hi, v4si, v4sf, v2di),
166 VAR10 (LOAD1, vld1,
167 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
168 VAR10 (LOAD1LANE, vld1_lane,
169 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
170 VAR10 (LOAD1, vld1_dup,
171 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
172 VAR10 (STORE1, vst1,
173 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
174 VAR10 (STORE1LANE, vst1_lane,
175 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
176 VAR9 (LOADSTRUCT,
177 vld2, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf),
178 VAR7 (LOADSTRUCTLANE, vld2_lane,
179 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
180 VAR5 (LOADSTRUCT, vld2_dup, v8qi, v4hi, v2si, v2sf, di),
181 VAR9 (STORESTRUCT, vst2,
182 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf),
183 VAR7 (STORESTRUCTLANE, vst2_lane,
184 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
185 VAR9 (LOADSTRUCT,
186 vld3, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf),
187 VAR7 (LOADSTRUCTLANE, vld3_lane,
188 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
189 VAR5 (LOADSTRUCT, vld3_dup, v8qi, v4hi, v2si, v2sf, di),
190 VAR9 (STORESTRUCT, vst3,
191 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf),
192 VAR7 (STORESTRUCTLANE, vst3_lane,
193 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
194 VAR9 (LOADSTRUCT, vld4,
195 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf),
196 VAR7 (LOADSTRUCTLANE, vld4_lane,
197 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
198 VAR5 (LOADSTRUCT, vld4_dup, v8qi, v4hi, v2si, v2sf, di),
199 VAR9 (STORESTRUCT, vst4,
200 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf),
201 VAR7 (STORESTRUCTLANE, vst4_lane,
202 v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf),
203 VAR10 (LOGICBINOP, vand,
204 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
205 VAR10 (LOGICBINOP, vorr,
206 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
207 VAR10 (BINOP, veor,
208 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
209 VAR10 (LOGICBINOP, vbic,
210 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
211 VAR10 (LOGICBINOP, vorn,
212 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)