1 /* NEON builtin definitions for ARM.
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
/>.
*/
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
),
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
),
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
),
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
),
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
),
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
),
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
),
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
),
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
)