aarch64-tbl.h revision 1.6 1 1.1 christos /* aarch64-tbl.h -- AArch64 opcode description table and instruction
2 1.1 christos operand description table.
3 1.6 christos Copyright (C) 2012-2016 Free Software Foundation, Inc.
4 1.1 christos
5 1.1 christos This file is part of the GNU opcodes library.
6 1.1 christos
7 1.1 christos This library is free software; you can redistribute it and/or modify
8 1.1 christos it under the terms of the GNU General Public License as published by
9 1.1 christos the Free Software Foundation; either version 3, or (at your option)
10 1.1 christos any later version.
11 1.1 christos
12 1.1 christos It is distributed in the hope that it will be useful, but WITHOUT
13 1.1 christos ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 1.1 christos or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 1.1 christos License for more details.
16 1.1 christos
17 1.1 christos You should have received a copy of the GNU General Public License
18 1.1 christos along with this file; see the file COPYING. If not, write to the
19 1.1 christos Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
20 1.1 christos MA 02110-1301, USA. */
21 1.1 christos
22 1.1 christos #include "aarch64-opc.h"
23 1.1 christos
24 1.6 christos #ifndef VERIFIER
25 1.6 christos #error VERIFIER must be defined.
26 1.6 christos #endif
27 1.6 christos
28 1.1 christos /* Operand type. */
29 1.1 christos
30 1.1 christos #define OPND(x) AARCH64_OPND_##x
31 1.1 christos #define OP0() {}
32 1.1 christos #define OP1(a) {OPND(a)}
33 1.1 christos #define OP2(a,b) {OPND(a), OPND(b)}
34 1.1 christos #define OP3(a,b,c) {OPND(a), OPND(b), OPND(c)}
35 1.1 christos #define OP4(a,b,c,d) {OPND(a), OPND(b), OPND(c), OPND(d)}
36 1.1 christos #define OP5(a,b,c,d,e) {OPND(a), OPND(b), OPND(c), OPND(d), OPND(e)}
37 1.1 christos
38 1.1 christos #define QLF(x) AARCH64_OPND_QLF_##x
39 1.1 christos #define QLF1(a) {QLF(a)}
40 1.1 christos #define QLF2(a,b) {QLF(a), QLF(b)}
41 1.1 christos #define QLF3(a,b,c) {QLF(a), QLF(b), QLF(c)}
42 1.1 christos #define QLF4(a,b,c,d) {QLF(a), QLF(b), QLF(c), QLF(d)}
43 1.1 christos #define QLF5(a,b,c,d,e) {QLF(a), QLF(b), QLF(c), QLF(d), QLF(e)}
44 1.1 christos
45 1.1 christos /* Qualifiers list. */
46 1.1 christos
47 1.1 christos /* e.g. MSR <systemreg>, <Xt>. */
48 1.1 christos #define QL_SRC_X \
49 1.1 christos { \
50 1.1 christos QLF2(NIL,X), \
51 1.1 christos }
52 1.1 christos
53 1.1 christos /* e.g. MRS <Xt>, <systemreg>. */
54 1.1 christos #define QL_DST_X \
55 1.1 christos { \
56 1.1 christos QLF2(X,NIL), \
57 1.1 christos }
58 1.1 christos
59 1.1 christos /* e.g. SYS #<op1>, <Cn>, <Cm>, #<op2>{, <Xt>}. */
60 1.1 christos #define QL_SYS \
61 1.1 christos { \
62 1.1 christos QLF5(NIL,NIL,NIL,NIL,X), \
63 1.1 christos }
64 1.1 christos
65 1.1 christos /* e.g. SYSL <Xt>, #<op1>, <Cn>, <Cm>, #<op2>. */
66 1.1 christos #define QL_SYSL \
67 1.1 christos { \
68 1.1 christos QLF5(X,NIL,NIL,NIL,NIL), \
69 1.1 christos }
70 1.1 christos
71 1.1 christos /* e.g. ADRP <Xd>, <label>. */
72 1.1 christos #define QL_ADRP \
73 1.1 christos { \
74 1.1 christos QLF2(X,NIL), \
75 1.1 christos }
76 1.1 christos
77 1.1 christos /* e.g. B.<cond> <label>. */
78 1.1 christos #define QL_PCREL_NIL \
79 1.1 christos { \
80 1.1 christos QLF1(NIL), \
81 1.1 christos }
82 1.1 christos
83 1.1 christos /* e.g. TBZ <Xt>, #<imm>, <label>. */
84 1.1 christos #define QL_PCREL_14 \
85 1.1 christos { \
86 1.1 christos QLF3(X,imm_0_63,NIL), \
87 1.1 christos }
88 1.1 christos
89 1.1 christos /* e.g. BL <label>. */
90 1.1 christos #define QL_PCREL_26 \
91 1.1 christos { \
92 1.1 christos QLF1(NIL), \
93 1.1 christos }
94 1.1 christos
95 1.1 christos /* e.g. LDRSW <Xt>, <label>. */
96 1.1 christos #define QL_X_PCREL \
97 1.1 christos { \
98 1.1 christos QLF2(X,NIL), \
99 1.1 christos }
100 1.1 christos
101 1.1 christos /* e.g. LDR <Wt>, <label>. */
102 1.1 christos #define QL_R_PCREL \
103 1.1 christos { \
104 1.1 christos QLF2(W,NIL), \
105 1.1 christos QLF2(X,NIL), \
106 1.1 christos }
107 1.1 christos
108 1.1 christos /* e.g. LDR <Dt>, <label>. */
109 1.1 christos #define QL_FP_PCREL \
110 1.1 christos { \
111 1.1 christos QLF2(S_S,NIL), \
112 1.1 christos QLF2(S_D,NIL), \
113 1.1 christos QLF2(S_Q,NIL), \
114 1.1 christos }
115 1.1 christos
116 1.1 christos /* e.g. PRFM <prfop>, <label>. */
117 1.1 christos #define QL_PRFM_PCREL \
118 1.1 christos { \
119 1.1 christos QLF2(NIL,NIL), \
120 1.1 christos }
121 1.1 christos
122 1.1 christos /* e.g. BR <Xn>. */
123 1.1 christos #define QL_I1X \
124 1.1 christos { \
125 1.1 christos QLF1(X), \
126 1.1 christos }
127 1.1 christos
128 1.1 christos /* e.g. RBIT <Wd>, <Wn>. */
129 1.1 christos #define QL_I2SAME \
130 1.1 christos { \
131 1.1 christos QLF2(W,W), \
132 1.1 christos QLF2(X,X), \
133 1.1 christos }
134 1.1 christos
135 1.1 christos /* e.g. CMN <Wn|WSP>, <Wm>{, <extend> {#<amount>}}. */
136 1.1 christos #define QL_I2_EXT \
137 1.1 christos { \
138 1.1 christos QLF2(W,W), \
139 1.1 christos QLF2(X,W), \
140 1.1 christos QLF2(X,X), \
141 1.1 christos }
142 1.1 christos
143 1.1 christos /* e.g. MOV <Wd|WSP>, <Wn|WSP>, at least one SP. */
144 1.1 christos #define QL_I2SP \
145 1.1 christos { \
146 1.1 christos QLF2(WSP,W), \
147 1.1 christos QLF2(W,WSP), \
148 1.1 christos QLF2(SP,X), \
149 1.1 christos QLF2(X,SP), \
150 1.1 christos }
151 1.1 christos
152 1.1 christos /* e.g. REV <Wd>, <Wn>. */
153 1.1 christos #define QL_I2SAMEW \
154 1.1 christos { \
155 1.1 christos QLF2(W,W), \
156 1.1 christos }
157 1.1 christos
158 1.1 christos /* e.g. REV32 <Xd>, <Xn>. */
159 1.1 christos #define QL_I2SAMEX \
160 1.1 christos { \
161 1.1 christos QLF2(X,X), \
162 1.1 christos }
163 1.1 christos
164 1.1 christos #define QL_I2SAMER \
165 1.1 christos { \
166 1.1 christos QLF2(W,W), \
167 1.1 christos QLF2(X,X), \
168 1.1 christos }
169 1.1 christos
170 1.1 christos /* e.g. CRC32B <Wd>, <Wn>, <Wm>. */
171 1.1 christos #define QL_I3SAMEW \
172 1.1 christos { \
173 1.1 christos QLF3(W,W,W), \
174 1.1 christos }
175 1.1 christos
176 1.1 christos /* e.g. SMULH <Xd>, <Xn>, <Xm>. */
177 1.1 christos #define QL_I3SAMEX \
178 1.1 christos { \
179 1.1 christos QLF3(X,X,X), \
180 1.1 christos }
181 1.1 christos
182 1.1 christos /* e.g. CRC32X <Wd>, <Wn>, <Xm>. */
183 1.1 christos #define QL_I3WWX \
184 1.1 christos { \
185 1.1 christos QLF3(W,W,X), \
186 1.1 christos }
187 1.1 christos
188 1.1 christos /* e.g. UDIV <Xd>, <Xn>, <Xm>. */
189 1.1 christos #define QL_I3SAMER \
190 1.1 christos { \
191 1.1 christos QLF3(W,W,W), \
192 1.1 christos QLF3(X,X,X), \
193 1.1 christos }
194 1.1 christos
195 1.1 christos /* e.g. ADDS <Xd>, <Xn|SP>, <R><m>{, <extend> {#<amount>}}. */
196 1.1 christos #define QL_I3_EXT \
197 1.1 christos { \
198 1.1 christos QLF3(W,W,W), \
199 1.1 christos QLF3(X,X,W), \
200 1.1 christos QLF3(X,X,X), \
201 1.1 christos }
202 1.1 christos
203 1.1 christos /* e.g. MADD <Xd>, <Xn>, <Xm>, <Xa>. */
204 1.1 christos #define QL_I4SAMER \
205 1.1 christos { \
206 1.1 christos QLF4(W,W,W,W), \
207 1.1 christos QLF4(X,X,X,X), \
208 1.1 christos }
209 1.1 christos
210 1.1 christos /* e.g. SMADDL <Xd>, <Wn>, <Wm>, <Xa>. */
211 1.1 christos #define QL_I3SAMEL \
212 1.1 christos { \
213 1.1 christos QLF3(X,W,W), \
214 1.1 christos }
215 1.1 christos
216 1.1 christos /* e.g. SMADDL <Xd>, <Wn>, <Wm>, <Xa>. */
217 1.1 christos #define QL_I4SAMEL \
218 1.1 christos { \
219 1.1 christos QLF4(X,W,W,X), \
220 1.1 christos }
221 1.1 christos
222 1.1 christos /* e.g. CSINC <Xd>, <Xn>, <Xm>, <cond>. */
223 1.1 christos #define QL_CSEL \
224 1.1 christos { \
225 1.1 christos QLF4(W, W, W, NIL), \
226 1.1 christos QLF4(X, X, X, NIL), \
227 1.1 christos }
228 1.1 christos
229 1.1 christos /* e.g. CSET <Wd>, <cond>. */
230 1.1 christos #define QL_DST_R \
231 1.1 christos { \
232 1.1 christos QLF2(W, NIL), \
233 1.1 christos QLF2(X, NIL), \
234 1.1 christos }
235 1.1 christos
236 1.1 christos /* e.g. BFM <Wd>, <Wn>, #<immr>, #<imms>. */
237 1.1 christos #define QL_BF \
238 1.1 christos { \
239 1.1 christos QLF4(W,W,imm_0_31,imm_0_31), \
240 1.1 christos QLF4(X,X,imm_0_63,imm_0_63), \
241 1.1 christos }
242 1.1 christos
243 1.6 christos /* e.g. BFC <Wd>, #<immr>, #<imms>. */
244 1.6 christos #define QL_BF1 \
245 1.6 christos { \
246 1.6 christos QLF3 (W, imm_0_31, imm_1_32), \
247 1.6 christos QLF3 (X, imm_0_63, imm_1_64), \
248 1.6 christos }
249 1.6 christos
250 1.1 christos /* e.g. UBFIZ <Wd>, <Wn>, #<lsb>, #<width>. */
251 1.1 christos #define QL_BF2 \
252 1.1 christos { \
253 1.1 christos QLF4(W,W,imm_0_31,imm_1_32), \
254 1.1 christos QLF4(X,X,imm_0_63,imm_1_64), \
255 1.1 christos }
256 1.1 christos
257 1.1 christos /* e.g. SCVTF <Sd>, <Xn>, #<fbits>. */
258 1.1 christos #define QL_FIX2FP \
259 1.1 christos { \
260 1.1 christos QLF3(S_D,W,imm_1_32), \
261 1.1 christos QLF3(S_S,W,imm_1_32), \
262 1.1 christos QLF3(S_D,X,imm_1_64), \
263 1.1 christos QLF3(S_S,X,imm_1_64), \
264 1.1 christos }
265 1.1 christos
266 1.6 christos /* e.g. SCVTF <Hd>, <Xn>, #<fbits>. */
267 1.6 christos #define QL_FIX2FP_H \
268 1.6 christos { \
269 1.6 christos QLF3 (S_H, W, imm_1_32), \
270 1.6 christos QLF3 (S_H, X, imm_1_64), \
271 1.6 christos }
272 1.6 christos
273 1.1 christos /* e.g. FCVTZS <Wd>, <Dn>, #<fbits>. */
274 1.1 christos #define QL_FP2FIX \
275 1.1 christos { \
276 1.1 christos QLF3(W,S_D,imm_1_32), \
277 1.1 christos QLF3(W,S_S,imm_1_32), \
278 1.1 christos QLF3(X,S_D,imm_1_64), \
279 1.1 christos QLF3(X,S_S,imm_1_64), \
280 1.1 christos }
281 1.1 christos
282 1.6 christos /* e.g. FCVTZS <Wd>, <Hn>, #<fbits>. */
283 1.6 christos #define QL_FP2FIX_H \
284 1.6 christos { \
285 1.6 christos QLF3 (W, S_H, imm_1_32), \
286 1.6 christos QLF3 (X, S_H, imm_1_64), \
287 1.6 christos }
288 1.6 christos
289 1.1 christos /* e.g. SCVTF <Dd>, <Wn>. */
290 1.1 christos #define QL_INT2FP \
291 1.1 christos { \
292 1.1 christos QLF2(S_D,W), \
293 1.1 christos QLF2(S_S,W), \
294 1.1 christos QLF2(S_D,X), \
295 1.1 christos QLF2(S_S,X), \
296 1.1 christos }
297 1.1 christos
298 1.6 christos /* e.g. SCVTF <Hd>, <Wn>. */
299 1.6 christos #define QL_INT2FP_H \
300 1.6 christos { \
301 1.6 christos QLF2 (S_H, W), \
302 1.6 christos QLF2 (S_H, X), \
303 1.6 christos }
304 1.6 christos
305 1.1 christos /* e.g. FCVTNS <Xd>, <Dn>. */
306 1.1 christos #define QL_FP2INT \
307 1.1 christos { \
308 1.1 christos QLF2(W,S_D), \
309 1.1 christos QLF2(W,S_S), \
310 1.1 christos QLF2(X,S_D), \
311 1.1 christos QLF2(X,S_S), \
312 1.1 christos }
313 1.1 christos
314 1.6 christos /* e.g. FCVTNS <Hd>, <Wn>. */
315 1.6 christos #define QL_FP2INT_H \
316 1.6 christos { \
317 1.6 christos QLF2 (W, S_H), \
318 1.6 christos QLF2 (X, S_H), \
319 1.6 christos }
320 1.6 christos
321 1.1 christos /* e.g. FMOV <Xd>, <Vn>.D[1]. */
322 1.1 christos #define QL_XVD1 \
323 1.1 christos { \
324 1.1 christos QLF2(X,S_D), \
325 1.1 christos }
326 1.1 christos
327 1.1 christos /* e.g. FMOV <Vd>.D[1], <Xn>. */
328 1.1 christos #define QL_VD1X \
329 1.1 christos { \
330 1.1 christos QLF2(S_D,X), \
331 1.1 christos }
332 1.1 christos
333 1.1 christos /* e.g. EXTR <Xd>, <Xn>, <Xm>, #<lsb>. */
334 1.1 christos #define QL_EXTR \
335 1.1 christos { \
336 1.1 christos QLF4(W,W,W,imm_0_31), \
337 1.1 christos QLF4(X,X,X,imm_0_63), \
338 1.1 christos }
339 1.1 christos
340 1.1 christos /* e.g. LSL <Wd>, <Wn>, #<uimm>. */
341 1.1 christos #define QL_SHIFT \
342 1.1 christos { \
343 1.1 christos QLF3(W,W,imm_0_31), \
344 1.1 christos QLF3(X,X,imm_0_63), \
345 1.1 christos }
346 1.1 christos
347 1.1 christos /* e.g. UXTH <Xd>, <Wn>. */
348 1.1 christos #define QL_EXT \
349 1.1 christos { \
350 1.1 christos QLF2(W,W), \
351 1.1 christos QLF2(X,W), \
352 1.1 christos }
353 1.1 christos
354 1.1 christos /* e.g. UXTW <Xd>, <Wn>. */
355 1.1 christos #define QL_EXT_W \
356 1.1 christos { \
357 1.1 christos QLF2(X,W), \
358 1.1 christos }
359 1.1 christos
360 1.1 christos /* e.g. SQSHL <V><d>, <V><n>, #<shift>. */
361 1.1 christos #define QL_SSHIFT \
362 1.1 christos { \
363 1.1 christos QLF3(S_B , S_B , S_B ), \
364 1.1 christos QLF3(S_H , S_H , S_H ), \
365 1.1 christos QLF3(S_S , S_S , S_S ), \
366 1.1 christos QLF3(S_D , S_D , S_D ) \
367 1.1 christos }
368 1.1 christos
369 1.1 christos /* e.g. SSHR <V><d>, <V><n>, #<shift>. */
370 1.1 christos #define QL_SSHIFT_D \
371 1.1 christos { \
372 1.1 christos QLF3(S_D , S_D , S_D ) \
373 1.1 christos }
374 1.1 christos
375 1.1 christos /* e.g. UCVTF <Vd>.<T>, <Vn>.<T>, #<fbits>. */
376 1.1 christos #define QL_SSHIFT_SD \
377 1.1 christos { \
378 1.1 christos QLF3(S_S , S_S , S_S ), \
379 1.1 christos QLF3(S_D , S_D , S_D ) \
380 1.1 christos }
381 1.1 christos
382 1.6 christos /* e.g. UCVTF <Vd>.<T>, <Vn>.<T>, #<fbits>. */
383 1.6 christos #define QL_SSHIFT_H \
384 1.6 christos { \
385 1.6 christos QLF3 (S_H, S_H, S_H) \
386 1.6 christos }
387 1.6 christos
388 1.1 christos /* e.g. SQSHRUN <Vb><d>, <Va><n>, #<shift>. */
389 1.1 christos #define QL_SSHIFTN \
390 1.1 christos { \
391 1.1 christos QLF3(S_B , S_H , S_B ), \
392 1.1 christos QLF3(S_H , S_S , S_H ), \
393 1.1 christos QLF3(S_S , S_D , S_S ), \
394 1.1 christos }
395 1.1 christos
396 1.1 christos /* e.g. SSHR <Vd>.<T>, <Vn>.<T>, #<shift>.
397 1.1 christos The register operand variant qualifiers are deliberately used for the
398 1.1 christos immediate operand to ease the operand encoding/decoding and qualifier
399 1.1 christos sequence matching. */
400 1.1 christos #define QL_VSHIFT \
401 1.1 christos { \
402 1.1 christos QLF3(V_8B , V_8B , V_8B ), \
403 1.1 christos QLF3(V_16B, V_16B, V_16B), \
404 1.1 christos QLF3(V_4H , V_4H , V_4H ), \
405 1.1 christos QLF3(V_8H , V_8H , V_8H ), \
406 1.1 christos QLF3(V_2S , V_2S , V_2S ), \
407 1.1 christos QLF3(V_4S , V_4S , V_4S ), \
408 1.1 christos QLF3(V_2D , V_2D , V_2D ) \
409 1.1 christos }
410 1.1 christos
411 1.1 christos /* e.g. SCVTF <Vd>.<T>, <Vn>.<T>, #<fbits>. */
412 1.1 christos #define QL_VSHIFT_SD \
413 1.1 christos { \
414 1.1 christos QLF3(V_2S , V_2S , V_2S ), \
415 1.1 christos QLF3(V_4S , V_4S , V_4S ), \
416 1.1 christos QLF3(V_2D , V_2D , V_2D ) \
417 1.1 christos }
418 1.1 christos
419 1.6 christos /* e.g. SCVTF <Vd>.<T>, <Vn>.<T>, #<fbits>. */
420 1.6 christos #define QL_VSHIFT_H \
421 1.6 christos { \
422 1.6 christos QLF3 (V_4H, V_4H, V_4H), \
423 1.6 christos QLF3 (V_8H, V_8H, V_8H) \
424 1.6 christos }
425 1.6 christos
426 1.1 christos /* e.g. SHRN<Q> <Vd>.<Tb>, <Vn>.<Ta>, #<shift>. */
427 1.1 christos #define QL_VSHIFTN \
428 1.1 christos { \
429 1.1 christos QLF3(V_8B , V_8H , V_8B ), \
430 1.1 christos QLF3(V_4H , V_4S , V_4H ), \
431 1.1 christos QLF3(V_2S , V_2D , V_2S ), \
432 1.1 christos }
433 1.1 christos
434 1.1 christos /* e.g. SHRN<Q> <Vd>.<Tb>, <Vn>.<Ta>, #<shift>. */
435 1.1 christos #define QL_VSHIFTN2 \
436 1.1 christos { \
437 1.1 christos QLF3(V_16B, V_8H, V_16B), \
438 1.1 christos QLF3(V_8H , V_4S , V_8H ), \
439 1.1 christos QLF3(V_4S , V_2D , V_4S ), \
440 1.1 christos }
441 1.1 christos
442 1.1 christos /* e.g. SSHLL<Q> <Vd>.<Ta>, <Vn>.<Tb>, #<shift>.
443 1.1 christos the 3rd qualifier is used to help the encoding. */
444 1.1 christos #define QL_VSHIFTL \
445 1.1 christos { \
446 1.1 christos QLF3(V_8H , V_8B , V_8B ), \
447 1.1 christos QLF3(V_4S , V_4H , V_4H ), \
448 1.1 christos QLF3(V_2D , V_2S , V_2S ), \
449 1.1 christos }
450 1.1 christos
451 1.1 christos /* e.g. SSHLL<Q> <Vd>.<Ta>, <Vn>.<Tb>, #<shift>. */
452 1.1 christos #define QL_VSHIFTL2 \
453 1.1 christos { \
454 1.1 christos QLF3(V_8H , V_16B, V_16B), \
455 1.1 christos QLF3(V_4S , V_8H , V_8H ), \
456 1.1 christos QLF3(V_2D , V_4S , V_4S ), \
457 1.1 christos }
458 1.1 christos
459 1.1 christos /* e.g. TBL. */
460 1.1 christos #define QL_TABLE \
461 1.1 christos { \
462 1.1 christos QLF3(V_8B , V_16B, V_8B ), \
463 1.1 christos QLF3(V_16B, V_16B, V_16B), \
464 1.1 christos }
465 1.1 christos
466 1.1 christos /* e.g. SHA1H. */
467 1.1 christos #define QL_2SAMES \
468 1.1 christos { \
469 1.1 christos QLF2(S_S, S_S), \
470 1.1 christos }
471 1.1 christos
472 1.1 christos /* e.g. ABS <V><d>, <V><n>. */
473 1.1 christos #define QL_2SAMED \
474 1.1 christos { \
475 1.1 christos QLF2(S_D, S_D), \
476 1.1 christos }
477 1.1 christos
478 1.1 christos /* e.g. CMGT <V><d>, <V><n>, #0. */
479 1.1 christos #define QL_SISD_CMP_0 \
480 1.1 christos { \
481 1.1 christos QLF3(S_D, S_D, NIL), \
482 1.1 christos }
483 1.1 christos
484 1.1 christos /* e.g. FCMEQ <V><d>, <V><n>, #0. */
485 1.1 christos #define QL_SISD_FCMP_0 \
486 1.1 christos { \
487 1.1 christos QLF3(S_S, S_S, NIL), \
488 1.1 christos QLF3(S_D, S_D, NIL), \
489 1.1 christos }
490 1.1 christos
491 1.6 christos /* e.g. FCMEQ <V><d>, <V><n>, #0. */
492 1.6 christos #define QL_SISD_FCMP_H_0 \
493 1.6 christos { \
494 1.6 christos QLF3 (S_H, S_H, NIL), \
495 1.6 christos }
496 1.6 christos
497 1.1 christos /* e.g. FMAXNMP <V><d>, <Vn>.<T>. */
498 1.1 christos #define QL_SISD_PAIR \
499 1.1 christos { \
500 1.1 christos QLF2(S_S, V_2S), \
501 1.1 christos QLF2(S_D, V_2D), \
502 1.1 christos }
503 1.1 christos
504 1.6 christos /* e.g. FMAXNMP <V><d>, <Vn>.<T>. */
505 1.6 christos #define QL_SISD_PAIR_H \
506 1.6 christos { \
507 1.6 christos QLF2 (S_H, V_2H), \
508 1.6 christos }
509 1.6 christos
510 1.1 christos /* e.g. ADDP <V><d>, <Vn>.<T>. */
511 1.1 christos #define QL_SISD_PAIR_D \
512 1.1 christos { \
513 1.1 christos QLF2(S_D, V_2D), \
514 1.1 christos }
515 1.1 christos
516 1.1 christos /* e.g. DUP <V><d>, <Vn>.<T>[<index>]. */
517 1.1 christos #define QL_S_2SAME \
518 1.1 christos { \
519 1.1 christos QLF2(S_B, S_B), \
520 1.1 christos QLF2(S_H, S_H), \
521 1.1 christos QLF2(S_S, S_S), \
522 1.1 christos QLF2(S_D, S_D), \
523 1.1 christos }
524 1.1 christos
525 1.1 christos /* e.g. FCVTNS <V><d>, <V><n>. */
526 1.1 christos #define QL_S_2SAMESD \
527 1.1 christos { \
528 1.1 christos QLF2(S_S, S_S), \
529 1.1 christos QLF2(S_D, S_D), \
530 1.1 christos }
531 1.1 christos
532 1.6 christos /* e.g. FCVTNS <V><d>, <V><n>. */
533 1.6 christos #define QL_S_2SAMEH \
534 1.6 christos { \
535 1.6 christos QLF2 (S_H, S_H), \
536 1.6 christos }
537 1.6 christos
538 1.1 christos /* e.g. SQXTN <Vb><d>, <Va><n>. */
539 1.1 christos #define QL_SISD_NARROW \
540 1.1 christos { \
541 1.1 christos QLF2(S_B, S_H), \
542 1.1 christos QLF2(S_H, S_S), \
543 1.1 christos QLF2(S_S, S_D), \
544 1.1 christos }
545 1.1 christos
546 1.1 christos /* e.g. FCVTXN <Vb><d>, <Va><n>. */
547 1.1 christos #define QL_SISD_NARROW_S \
548 1.1 christos { \
549 1.1 christos QLF2(S_S, S_D), \
550 1.1 christos }
551 1.1 christos
552 1.1 christos /* e.g. FCVT. */
553 1.1 christos #define QL_FCVT \
554 1.1 christos { \
555 1.1 christos QLF2(S_S, S_H), \
556 1.1 christos QLF2(S_S, S_D), \
557 1.1 christos QLF2(S_D, S_H), \
558 1.1 christos QLF2(S_D, S_S), \
559 1.1 christos QLF2(S_H, S_S), \
560 1.1 christos QLF2(S_H, S_D), \
561 1.1 christos }
562 1.1 christos
563 1.1 christos /* FMOV <Dd>, <Dn>. */
564 1.1 christos #define QL_FP2 \
565 1.1 christos { \
566 1.1 christos QLF2(S_S, S_S), \
567 1.1 christos QLF2(S_D, S_D), \
568 1.1 christos }
569 1.1 christos
570 1.6 christos /* FMOV <Hd>, <Hn>. */
571 1.6 christos #define QL_FP2_H \
572 1.6 christos { \
573 1.6 christos QLF2 (S_H, S_H), \
574 1.6 christos }
575 1.6 christos
576 1.1 christos /* e.g. SQADD <V><d>, <V><n>, <V><m>. */
577 1.1 christos #define QL_S_3SAME \
578 1.1 christos { \
579 1.1 christos QLF3(S_B, S_B, S_B), \
580 1.1 christos QLF3(S_H, S_H, S_H), \
581 1.1 christos QLF3(S_S, S_S, S_S), \
582 1.1 christos QLF3(S_D, S_D, S_D), \
583 1.1 christos }
584 1.1 christos
585 1.1 christos /* e.g. CMGE <V><d>, <V><n>, <V><m>. */
586 1.1 christos #define QL_S_3SAMED \
587 1.1 christos { \
588 1.1 christos QLF3(S_D, S_D, S_D), \
589 1.1 christos }
590 1.1 christos
591 1.1 christos /* e.g. SQDMULH <V><d>, <V><n>, <V><m>. */
592 1.1 christos #define QL_SISD_HS \
593 1.1 christos { \
594 1.1 christos QLF3(S_H, S_H, S_H), \
595 1.1 christos QLF3(S_S, S_S, S_S), \
596 1.1 christos }
597 1.1 christos
598 1.1 christos /* e.g. SQDMLAL <Va><d>, <Vb><n>, <Vb><m>. */
599 1.1 christos #define QL_SISDL_HS \
600 1.1 christos { \
601 1.1 christos QLF3(S_S, S_H, S_H), \
602 1.1 christos QLF3(S_D, S_S, S_S), \
603 1.1 christos }
604 1.1 christos
605 1.1 christos /* FMUL <Sd>, <Sn>, <Sm>. */
606 1.1 christos #define QL_FP3 \
607 1.1 christos { \
608 1.1 christos QLF3(S_S, S_S, S_S), \
609 1.1 christos QLF3(S_D, S_D, S_D), \
610 1.1 christos }
611 1.1 christos
612 1.6 christos /* FMUL <Hd>, <Hn>, <Hm>. */
613 1.6 christos #define QL_FP3_H \
614 1.6 christos { \
615 1.6 christos QLF3 (S_H, S_H, S_H), \
616 1.6 christos }
617 1.6 christos
618 1.1 christos /* FMADD <Dd>, <Dn>, <Dm>, <Da>. */
619 1.1 christos #define QL_FP4 \
620 1.1 christos { \
621 1.1 christos QLF4(S_S, S_S, S_S, S_S), \
622 1.1 christos QLF4(S_D, S_D, S_D, S_D), \
623 1.1 christos }
624 1.1 christos
625 1.6 christos /* FMADD <Hd>, <Hn>, <Hm>, <Ha>. */
626 1.6 christos #define QL_FP4_H \
627 1.6 christos { \
628 1.6 christos QLF4 (S_H, S_H, S_H, S_H), \
629 1.6 christos }
630 1.6 christos
631 1.1 christos /* e.g. FCMP <Dn>, #0.0. */
632 1.1 christos #define QL_DST_SD \
633 1.1 christos { \
634 1.1 christos QLF2(S_S, NIL), \
635 1.1 christos QLF2(S_D, NIL), \
636 1.1 christos }
637 1.1 christos
638 1.6 christos /* e.g. FCMP <Hn>, #0.0. */
639 1.6 christos #define QL_DST_H \
640 1.6 christos { \
641 1.6 christos QLF2 (S_H, NIL), \
642 1.6 christos }
643 1.6 christos
644 1.1 christos /* FCSEL <Sd>, <Sn>, <Sm>, <cond>. */
645 1.1 christos #define QL_FP_COND \
646 1.1 christos { \
647 1.1 christos QLF4(S_S, S_S, S_S, NIL), \
648 1.1 christos QLF4(S_D, S_D, S_D, NIL), \
649 1.1 christos }
650 1.1 christos
651 1.6 christos /* FCSEL <Hd>, <Hn>, <Hm>, <cond>. */
652 1.6 christos #define QL_FP_COND_H \
653 1.6 christos { \
654 1.6 christos QLF4 (S_H, S_H, S_H, NIL), \
655 1.6 christos }
656 1.6 christos
657 1.1 christos /* e.g. CCMN <Xn>, <Xm>, #<nzcv>, <cond>. */
658 1.1 christos #define QL_CCMP \
659 1.1 christos { \
660 1.1 christos QLF4(W, W, NIL, NIL), \
661 1.1 christos QLF4(X, X, NIL, NIL), \
662 1.1 christos }
663 1.1 christos
664 1.1 christos /* e.g. CCMN <Xn>, #<imm>, #<nzcv>, <cond>, */
665 1.1 christos #define QL_CCMP_IMM \
666 1.1 christos { \
667 1.1 christos QLF4(W, NIL, NIL, NIL), \
668 1.1 christos QLF4(X, NIL, NIL, NIL), \
669 1.1 christos }
670 1.1 christos
671 1.1 christos /* e.g. FCCMP <Sn>, <Sm>, #<nzcv>, <cond>. */
672 1.1 christos #define QL_FCCMP \
673 1.1 christos { \
674 1.1 christos QLF4(S_S, S_S, NIL, NIL), \
675 1.1 christos QLF4(S_D, S_D, NIL, NIL), \
676 1.1 christos }
677 1.1 christos
678 1.6 christos /* e.g. FCCMP <Sn>, <Sm>, #<nzcv>, <cond>. */
679 1.6 christos #define QL_FCCMP_H \
680 1.6 christos { \
681 1.6 christos QLF4 (S_H, S_H, NIL, NIL), \
682 1.6 christos }
683 1.6 christos
684 1.1 christos /* e.g. DUP <Vd>.<T>, <Vn>.<Ts>[<index>]. */
685 1.1 christos #define QL_DUP_VX \
686 1.1 christos { \
687 1.1 christos QLF2(V_8B , S_B ), \
688 1.1 christos QLF2(V_16B, S_B ), \
689 1.1 christos QLF2(V_4H , S_H ), \
690 1.1 christos QLF2(V_8H , S_H ), \
691 1.1 christos QLF2(V_2S , S_S ), \
692 1.1 christos QLF2(V_4S , S_S ), \
693 1.1 christos QLF2(V_2D , S_D ), \
694 1.1 christos }
695 1.1 christos
696 1.1 christos /* e.g. DUP <Vd>.<T>, <Wn>. */
697 1.1 christos #define QL_DUP_VR \
698 1.1 christos { \
699 1.1 christos QLF2(V_8B , W ), \
700 1.1 christos QLF2(V_16B, W ), \
701 1.1 christos QLF2(V_4H , W ), \
702 1.1 christos QLF2(V_8H , W ), \
703 1.1 christos QLF2(V_2S , W ), \
704 1.1 christos QLF2(V_4S , W ), \
705 1.1 christos QLF2(V_2D , X ), \
706 1.1 christos }
707 1.1 christos
708 1.1 christos /* e.g. INS <Vd>.<Ts>[<index>], <Wn>. */
709 1.1 christos #define QL_INS_XR \
710 1.1 christos { \
711 1.1 christos QLF2(S_H , W ), \
712 1.1 christos QLF2(S_S , W ), \
713 1.1 christos QLF2(S_D , X ), \
714 1.1 christos QLF2(S_B , W ), \
715 1.1 christos }
716 1.1 christos
717 1.1 christos /* e.g. SMOV <Wd>, <Vn>.<Ts>[<index>]. */
718 1.1 christos #define QL_SMOV \
719 1.1 christos { \
720 1.1 christos QLF2(W , S_H), \
721 1.1 christos QLF2(X , S_H), \
722 1.1 christos QLF2(X , S_S), \
723 1.1 christos QLF2(W , S_B), \
724 1.1 christos QLF2(X , S_B), \
725 1.1 christos }
726 1.1 christos
727 1.1 christos /* e.g. UMOV <Wd>, <Vn>.<Ts>[<index>]. */
728 1.1 christos #define QL_UMOV \
729 1.1 christos { \
730 1.1 christos QLF2(W , S_H), \
731 1.1 christos QLF2(W , S_S), \
732 1.1 christos QLF2(X , S_D), \
733 1.1 christos QLF2(W , S_B), \
734 1.1 christos }
735 1.1 christos
736 1.1 christos /* e.g. MOV <Wd>, <Vn>.<Ts>[<index>]. */
737 1.1 christos #define QL_MOV \
738 1.1 christos { \
739 1.1 christos QLF2(W , S_S), \
740 1.1 christos QLF2(X , S_D), \
741 1.1 christos }
742 1.1 christos
743 1.1 christos /* e.g. SUQADD <Vd>.<T>, <Vn>.<T>. */
744 1.1 christos #define QL_V2SAME \
745 1.1 christos { \
746 1.1 christos QLF2(V_8B , V_8B ), \
747 1.1 christos QLF2(V_16B, V_16B), \
748 1.1 christos QLF2(V_4H , V_4H ), \
749 1.1 christos QLF2(V_8H , V_8H ), \
750 1.1 christos QLF2(V_2S , V_2S ), \
751 1.1 christos QLF2(V_4S , V_4S ), \
752 1.1 christos QLF2(V_2D , V_2D ), \
753 1.1 christos }
754 1.1 christos
755 1.1 christos /* e.g. URSQRTE <Vd>.<T>, <Vn>.<T>. */
756 1.1 christos #define QL_V2SAMES \
757 1.1 christos { \
758 1.1 christos QLF2(V_2S , V_2S ), \
759 1.1 christos QLF2(V_4S , V_4S ), \
760 1.1 christos }
761 1.1 christos
762 1.1 christos /* e.g. REV32 <Vd>.<T>, <Vn>.<T>. */
763 1.1 christos #define QL_V2SAMEBH \
764 1.1 christos { \
765 1.1 christos QLF2(V_8B , V_8B ), \
766 1.1 christos QLF2(V_16B, V_16B), \
767 1.1 christos QLF2(V_4H , V_4H ), \
768 1.1 christos QLF2(V_8H , V_8H ), \
769 1.1 christos }
770 1.1 christos
771 1.1 christos /* e.g. FRINTN <Vd>.<T>, <Vn>.<T>. */
772 1.1 christos #define QL_V2SAMESD \
773 1.1 christos { \
774 1.1 christos QLF2(V_2S , V_2S ), \
775 1.1 christos QLF2(V_4S , V_4S ), \
776 1.1 christos QLF2(V_2D , V_2D ), \
777 1.1 christos }
778 1.1 christos
779 1.1 christos /* e.g. REV64 <Vd>.<T>, <Vn>.<T>. */
780 1.1 christos #define QL_V2SAMEBHS \
781 1.1 christos { \
782 1.1 christos QLF2(V_8B , V_8B ), \
783 1.1 christos QLF2(V_16B, V_16B), \
784 1.1 christos QLF2(V_4H , V_4H ), \
785 1.1 christos QLF2(V_8H , V_8H ), \
786 1.1 christos QLF2(V_2S , V_2S ), \
787 1.1 christos QLF2(V_4S , V_4S ), \
788 1.1 christos }
789 1.1 christos
790 1.6 christos /* e.g. FCMGT <Vd>.<T>, <Vd>.<T>>, #0.0. */
791 1.6 christos #define QL_V2SAMEH \
792 1.6 christos { \
793 1.6 christos QLF2 (V_4H, V_4H), \
794 1.6 christos QLF2 (V_8H, V_8H), \
795 1.6 christos }
796 1.6 christos
797 1.1 christos /* e.g. REV16 <Vd>.<T>, <Vn>.<T>. */
798 1.1 christos #define QL_V2SAMEB \
799 1.1 christos { \
800 1.1 christos QLF2(V_8B , V_8B ), \
801 1.1 christos QLF2(V_16B, V_16B), \
802 1.1 christos }
803 1.1 christos
804 1.1 christos /* e.g. SADDLP <Vd>.<Ta>, <Vn>.<Tb>. */
805 1.1 christos #define QL_V2PAIRWISELONGBHS \
806 1.1 christos { \
807 1.1 christos QLF2(V_4H , V_8B ), \
808 1.1 christos QLF2(V_8H , V_16B), \
809 1.1 christos QLF2(V_2S , V_4H ), \
810 1.1 christos QLF2(V_4S , V_8H ), \
811 1.1 christos QLF2(V_1D , V_2S ), \
812 1.1 christos QLF2(V_2D , V_4S ), \
813 1.1 christos }
814 1.1 christos
815 1.1 christos /* e.g. SHLL<Q> <Vd>.<Ta>, <Vn>.<Tb>, #<shift>. */
816 1.1 christos #define QL_V2LONGBHS \
817 1.1 christos { \
818 1.1 christos QLF2(V_8H , V_8B ), \
819 1.1 christos QLF2(V_4S , V_4H ), \
820 1.1 christos QLF2(V_2D , V_2S ), \
821 1.1 christos }
822 1.1 christos
823 1.1 christos /* e.g. SHLL<Q> <Vd>.<Ta>, <Vn>.<Tb>, #<shift>. */
824 1.1 christos #define QL_V2LONGBHS2 \
825 1.1 christos { \
826 1.1 christos QLF2(V_8H , V_16B), \
827 1.1 christos QLF2(V_4S , V_8H ), \
828 1.1 christos QLF2(V_2D , V_4S ), \
829 1.1 christos }
830 1.1 christos
831 1.1 christos /* */
832 1.1 christos #define QL_V3SAME \
833 1.1 christos { \
834 1.1 christos QLF3(V_8B , V_8B , V_8B ), \
835 1.1 christos QLF3(V_16B, V_16B, V_16B), \
836 1.1 christos QLF3(V_4H , V_4H , V_4H ), \
837 1.1 christos QLF3(V_8H , V_8H , V_8H ), \
838 1.1 christos QLF3(V_2S , V_2S , V_2S ), \
839 1.1 christos QLF3(V_4S , V_4S , V_4S ), \
840 1.1 christos QLF3(V_2D , V_2D , V_2D ) \
841 1.1 christos }
842 1.1 christos
843 1.1 christos /* e.g. SHADD. */
844 1.1 christos #define QL_V3SAMEBHS \
845 1.1 christos { \
846 1.1 christos QLF3(V_8B , V_8B , V_8B ), \
847 1.1 christos QLF3(V_16B, V_16B, V_16B), \
848 1.1 christos QLF3(V_4H , V_4H , V_4H ), \
849 1.1 christos QLF3(V_8H , V_8H , V_8H ), \
850 1.1 christos QLF3(V_2S , V_2S , V_2S ), \
851 1.1 christos QLF3(V_4S , V_4S , V_4S ), \
852 1.1 christos }
853 1.1 christos
854 1.1 christos /* e.g. FCVTXN<Q> <Vd>.<Tb>, <Vn>.<Ta>. */
855 1.1 christos #define QL_V2NARRS \
856 1.1 christos { \
857 1.1 christos QLF2(V_2S , V_2D ), \
858 1.1 christos }
859 1.1 christos
860 1.1 christos /* e.g. FCVTXN<Q> <Vd>.<Tb>, <Vn>.<Ta>. */
861 1.1 christos #define QL_V2NARRS2 \
862 1.1 christos { \
863 1.1 christos QLF2(V_4S , V_2D ), \
864 1.1 christos }
865 1.1 christos
866 1.1 christos /* e.g. FCVTN<Q> <Vd>.<Tb>, <Vn>.<Ta>. */
867 1.1 christos #define QL_V2NARRHS \
868 1.1 christos { \
869 1.1 christos QLF2(V_4H , V_4S ), \
870 1.1 christos QLF2(V_2S , V_2D ), \
871 1.1 christos }
872 1.1 christos
873 1.1 christos /* e.g. FCVTN<Q> <Vd>.<Tb>, <Vn>.<Ta>. */
874 1.1 christos #define QL_V2NARRHS2 \
875 1.1 christos { \
876 1.1 christos QLF2(V_8H , V_4S ), \
877 1.1 christos QLF2(V_4S , V_2D ), \
878 1.1 christos }
879 1.1 christos
880 1.1 christos /* e.g. FCVTL<Q> <Vd>.<Ta>, <Vn>.<Tb>. */
881 1.1 christos #define QL_V2LONGHS \
882 1.1 christos { \
883 1.1 christos QLF2(V_4S , V_4H ), \
884 1.1 christos QLF2(V_2D , V_2S ), \
885 1.1 christos }
886 1.1 christos
887 1.1 christos /* e.g. FCVTL<Q> <Vd>.<Ta>, <Vn>.<Tb>. */
888 1.1 christos #define QL_V2LONGHS2 \
889 1.1 christos { \
890 1.1 christos QLF2(V_4S , V_8H ), \
891 1.1 christos QLF2(V_2D , V_4S ), \
892 1.1 christos }
893 1.1 christos
894 1.1 christos /* e.g. XTN<Q> <Vd>.<Tb>, <Vn>.<Ta>. */
895 1.1 christos #define QL_V2NARRBHS \
896 1.1 christos { \
897 1.1 christos QLF2(V_8B , V_8H ), \
898 1.1 christos QLF2(V_4H , V_4S ), \
899 1.1 christos QLF2(V_2S , V_2D ), \
900 1.1 christos }
901 1.1 christos
902 1.1 christos /* e.g. XTN<Q> <Vd>.<Tb>, <Vn>.<Ta>. */
903 1.1 christos #define QL_V2NARRBHS2 \
904 1.1 christos { \
905 1.1 christos QLF2(V_16B, V_8H ), \
906 1.1 christos QLF2(V_8H , V_4S ), \
907 1.1 christos QLF2(V_4S , V_2D ), \
908 1.1 christos }
909 1.1 christos
910 1.1 christos /* e.g. ORR. */
911 1.1 christos #define QL_V2SAMEB \
912 1.1 christos { \
913 1.1 christos QLF2(V_8B , V_8B ), \
914 1.1 christos QLF2(V_16B, V_16B), \
915 1.1 christos }
916 1.1 christos
917 1.1 christos /* e.g. AESE. */
918 1.1 christos #define QL_V2SAME16B \
919 1.1 christos { \
920 1.1 christos QLF2(V_16B, V_16B), \
921 1.1 christos }
922 1.1 christos
923 1.1 christos /* e.g. SHA1SU1. */
924 1.1 christos #define QL_V2SAME4S \
925 1.1 christos { \
926 1.1 christos QLF2(V_4S, V_4S), \
927 1.1 christos }
928 1.1 christos
929 1.1 christos /* e.g. SHA1SU0. */
930 1.1 christos #define QL_V3SAME4S \
931 1.1 christos { \
932 1.1 christos QLF3(V_4S, V_4S, V_4S), \
933 1.1 christos }
934 1.1 christos
935 1.1 christos /* e.g. SHADD. */
936 1.1 christos #define QL_V3SAMEB \
937 1.1 christos { \
938 1.1 christos QLF3(V_8B , V_8B , V_8B ), \
939 1.1 christos QLF3(V_16B, V_16B, V_16B), \
940 1.1 christos }
941 1.1 christos
942 1.1 christos /* e.g. EXT <Vd>.<T>, <Vn>.<T>, <Vm>.<T>, #<index>. */
943 1.1 christos #define QL_VEXT \
944 1.1 christos { \
945 1.1 christos QLF4(V_8B , V_8B , V_8B , imm_0_7), \
946 1.1 christos QLF4(V_16B, V_16B, V_16B, imm_0_15), \
947 1.1 christos }
948 1.1 christos
949 1.1 christos /* e.g. . */
950 1.1 christos #define QL_V3SAMEHS \
951 1.1 christos { \
952 1.1 christos QLF3(V_4H , V_4H , V_4H ), \
953 1.1 christos QLF3(V_8H , V_8H , V_8H ), \
954 1.1 christos QLF3(V_2S , V_2S , V_2S ), \
955 1.1 christos QLF3(V_4S , V_4S , V_4S ), \
956 1.1 christos }
957 1.1 christos
958 1.1 christos /* */
959 1.1 christos #define QL_V3SAMESD \
960 1.1 christos { \
961 1.1 christos QLF3(V_2S , V_2S , V_2S ), \
962 1.1 christos QLF3(V_4S , V_4S , V_4S ), \
963 1.1 christos QLF3(V_2D , V_2D , V_2D ) \
964 1.1 christos }
965 1.1 christos
966 1.6 christos /* e.g. FMAXNM <Vd>.<T>, <Vn>.<T>, <Vm>.<T>. */
967 1.6 christos #define QL_V3SAMEH \
968 1.6 christos { \
969 1.6 christos QLF3 (V_4H , V_4H , V_4H ), \
970 1.6 christos QLF3 (V_8H , V_8H , V_8H ), \
971 1.6 christos }
972 1.6 christos
973 1.1 christos /* e.g. SQDMLAL<Q> <Vd>.<Ta>, <Vn>.<Tb>, <Vm>.<Tb>. */
974 1.1 christos #define QL_V3LONGHS \
975 1.1 christos { \
976 1.1 christos QLF3(V_4S , V_4H , V_4H ), \
977 1.1 christos QLF3(V_2D , V_2S , V_2S ), \
978 1.1 christos }
979 1.1 christos
980 1.1 christos /* e.g. SQDMLAL<Q> <Vd>.<Ta>, <Vn>.<Tb>, <Vm>.<Tb>. */
981 1.1 christos #define QL_V3LONGHS2 \
982 1.1 christos { \
983 1.1 christos QLF3(V_4S , V_8H , V_8H ), \
984 1.1 christos QLF3(V_2D , V_4S , V_4S ), \
985 1.1 christos }
986 1.1 christos
987 1.1 christos /* e.g. SADDL<Q> <Vd>.<Ta>, <Vn>.<Tb>, <Vm>.<Tb>. */
988 1.1 christos #define QL_V3LONGBHS \
989 1.1 christos { \
990 1.1 christos QLF3(V_8H , V_8B , V_8B ), \
991 1.1 christos QLF3(V_4S , V_4H , V_4H ), \
992 1.1 christos QLF3(V_2D , V_2S , V_2S ), \
993 1.1 christos }
994 1.1 christos
995 1.1 christos /* e.g. SADDL<Q> <Vd>.<Ta>, <Vn>.<Tb>, <Vm>.<Tb>. */
996 1.1 christos #define QL_V3LONGBHS2 \
997 1.1 christos { \
998 1.1 christos QLF3(V_8H , V_16B , V_16B ), \
999 1.1 christos QLF3(V_4S , V_8H , V_8H ), \
1000 1.1 christos QLF3(V_2D , V_4S , V_4S ), \
1001 1.1 christos }
1002 1.1 christos
1003 1.1 christos /* e.g. SADDW<Q> <Vd>.<Ta>, <Vn>.<Ta>, <Vm>.<Tb>. */
1004 1.1 christos #define QL_V3WIDEBHS \
1005 1.1 christos { \
1006 1.1 christos QLF3(V_8H , V_8H , V_8B ), \
1007 1.1 christos QLF3(V_4S , V_4S , V_4H ), \
1008 1.1 christos QLF3(V_2D , V_2D , V_2S ), \
1009 1.1 christos }
1010 1.1 christos
1011 1.1 christos /* e.g. SADDW<Q> <Vd>.<Ta>, <Vn>.<Ta>, <Vm>.<Tb>. */
1012 1.1 christos #define QL_V3WIDEBHS2 \
1013 1.1 christos { \
1014 1.1 christos QLF3(V_8H , V_8H , V_16B ), \
1015 1.1 christos QLF3(V_4S , V_4S , V_8H ), \
1016 1.1 christos QLF3(V_2D , V_2D , V_4S ), \
1017 1.1 christos }
1018 1.1 christos
1019 1.1 christos /* e.g. ADDHN<Q> <Vd>.<Tb>, <Vn>.<Ta>, <Vm>.<Ta>. */
1020 1.1 christos #define QL_V3NARRBHS \
1021 1.1 christos { \
1022 1.1 christos QLF3(V_8B , V_8H , V_8H ), \
1023 1.1 christos QLF3(V_4H , V_4S , V_4S ), \
1024 1.1 christos QLF3(V_2S , V_2D , V_2D ), \
1025 1.1 christos }
1026 1.1 christos
1027 1.1 christos /* e.g. ADDHN<Q> <Vd>.<Tb>, <Vn>.<Ta>, <Vm>.<Ta>. */
1028 1.1 christos #define QL_V3NARRBHS2 \
1029 1.1 christos { \
1030 1.1 christos QLF3(V_16B , V_8H , V_8H ), \
1031 1.1 christos QLF3(V_8H , V_4S , V_4S ), \
1032 1.1 christos QLF3(V_4S , V_2D , V_2D ), \
1033 1.1 christos }
1034 1.1 christos
1035 1.1 christos /* e.g. PMULL. */
1036 1.1 christos #define QL_V3LONGB \
1037 1.1 christos { \
1038 1.1 christos QLF3(V_8H , V_8B , V_8B ), \
1039 1.1 christos }
1040 1.1 christos
1041 1.1 christos /* e.g. PMULL crypto. */
1042 1.1 christos #define QL_V3LONGD \
1043 1.1 christos { \
1044 1.1 christos QLF3(V_1Q , V_1D , V_1D ), \
1045 1.1 christos }
1046 1.1 christos
1047 1.1 christos /* e.g. PMULL2. */
1048 1.1 christos #define QL_V3LONGB2 \
1049 1.1 christos { \
1050 1.1 christos QLF3(V_8H , V_16B, V_16B), \
1051 1.1 christos }
1052 1.1 christos
1053 1.1 christos /* e.g. PMULL2 crypto. */
1054 1.1 christos #define QL_V3LONGD2 \
1055 1.1 christos { \
1056 1.1 christos QLF3(V_1Q , V_2D , V_2D ), \
1057 1.1 christos }
1058 1.1 christos
1059 1.1 christos /* e.g. SHA1C. */
1060 1.1 christos #define QL_SHAUPT \
1061 1.1 christos { \
1062 1.1 christos QLF3(S_Q, S_S, V_4S), \
1063 1.1 christos }
1064 1.1 christos
1065 1.1 christos /* e.g. SHA256H2. */
1066 1.1 christos #define QL_SHA256UPT \
1067 1.1 christos { \
1068 1.1 christos QLF3(S_Q, S_Q, V_4S), \
1069 1.1 christos }
1070 1.1 christos
1071 1.1 christos /* e.g. LDXRB <Wt>, [<Xn|SP>{,#0}]. */
1072 1.1 christos #define QL_W1_LDST_EXC \
1073 1.1 christos { \
1074 1.1 christos QLF2(W, NIL), \
1075 1.1 christos }
1076 1.1 christos
1077 1.1 christos /* e.g. LDXR <Xt>, [<Xn|SP>{,#0}]. */
1078 1.1 christos #define QL_R1NIL \
1079 1.1 christos { \
1080 1.1 christos QLF2(W, NIL), \
1081 1.1 christos QLF2(X, NIL), \
1082 1.1 christos }
1083 1.1 christos
1084 1.1 christos /* e.g. STXRB <Ws>, <Wt>, [<Xn|SP>{,#0}]. */
1085 1.1 christos #define QL_W2_LDST_EXC \
1086 1.1 christos { \
1087 1.1 christos QLF3(W, W, NIL), \
1088 1.1 christos }
1089 1.1 christos
1090 1.1 christos /* e.g. STXR <Ws>, <Xt>, [<Xn|SP>{,#0}]. */
1091 1.1 christos #define QL_R2_LDST_EXC \
1092 1.1 christos { \
1093 1.1 christos QLF3(W, W, NIL), \
1094 1.1 christos QLF3(W, X, NIL), \
1095 1.1 christos }
1096 1.1 christos
1097 1.1 christos /* e.g. LDXP <Xt1>, <Xt2>, [<Xn|SP>{,#0}]. */
1098 1.1 christos #define QL_R2NIL \
1099 1.1 christos { \
1100 1.1 christos QLF3(W, W, NIL), \
1101 1.1 christos QLF3(X, X, NIL), \
1102 1.1 christos }
1103 1.1 christos
1104 1.3 christos /* e.g. CASP <Xt1>, <Xt1+1>, <Xt2>, <Xt2+1>, [<Xn|SP>{,#0}]. */
1105 1.3 christos #define QL_R4NIL \
1106 1.3 christos { \
1107 1.3 christos QLF5(W, W, W, W, NIL), \
1108 1.3 christos QLF5(X, X, X, X, NIL), \
1109 1.3 christos }
1110 1.3 christos
1111 1.1 christos /* e.g. STXP <Ws>, <Xt1>, <Xt2>, [<Xn|SP>{,#0}]. */
1112 1.1 christos #define QL_R3_LDST_EXC \
1113 1.1 christos { \
1114 1.1 christos QLF4(W, W, W, NIL), \
1115 1.1 christos QLF4(W, X, X, NIL), \
1116 1.1 christos }
1117 1.1 christos
1118 1.1 christos /* e.g. STR <Qt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}]. */
1119 1.1 christos #define QL_LDST_FP \
1120 1.1 christos { \
1121 1.1 christos QLF2(S_B, S_B), \
1122 1.1 christos QLF2(S_H, S_H), \
1123 1.1 christos QLF2(S_S, S_S), \
1124 1.1 christos QLF2(S_D, S_D), \
1125 1.1 christos QLF2(S_Q, S_Q), \
1126 1.1 christos }
1127 1.1 christos
1128 1.1 christos /* e.g. STR <Xt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}]. */
1129 1.1 christos #define QL_LDST_R \
1130 1.1 christos { \
1131 1.1 christos QLF2(W, S_S), \
1132 1.1 christos QLF2(X, S_D), \
1133 1.1 christos }
1134 1.1 christos
1135 1.1 christos /* e.g. STRB <Wt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}]. */
1136 1.1 christos #define QL_LDST_W8 \
1137 1.1 christos { \
1138 1.1 christos QLF2(W, S_B), \
1139 1.1 christos }
1140 1.1 christos
1141 1.1 christos /* e.g. LDRSB <Wt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}]. */
1142 1.1 christos #define QL_LDST_R8 \
1143 1.1 christos { \
1144 1.1 christos QLF2(W, S_B), \
1145 1.1 christos QLF2(X, S_B), \
1146 1.1 christos }
1147 1.1 christos
1148 1.1 christos /* e.g. STRH <Wt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}]. */
1149 1.1 christos #define QL_LDST_W16 \
1150 1.1 christos { \
1151 1.1 christos QLF2(W, S_H), \
1152 1.1 christos }
1153 1.1 christos
1154 1.1 christos /* e.g. LDRSW <Xt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}]. */
1155 1.1 christos #define QL_LDST_X32 \
1156 1.1 christos { \
1157 1.1 christos QLF2(X, S_S), \
1158 1.1 christos }
1159 1.1 christos
1160 1.1 christos /* e.g. LDRSH <Wt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}]. */
1161 1.1 christos #define QL_LDST_R16 \
1162 1.1 christos { \
1163 1.1 christos QLF2(W, S_H), \
1164 1.1 christos QLF2(X, S_H), \
1165 1.1 christos }
1166 1.1 christos
1167 1.1 christos /* e.g. PRFM <prfop>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}]. */
1168 1.1 christos #define QL_LDST_PRFM \
1169 1.1 christos { \
1170 1.1 christos QLF2(NIL, S_D), \
1171 1.1 christos }
1172 1.1 christos
1173 1.1 christos /* e.g. LDPSW <Xt1>, <Xt2>, [<Xn|SP>{, #<imm>}]. */
1174 1.1 christos #define QL_LDST_PAIR_X32 \
1175 1.1 christos { \
1176 1.1 christos QLF3(X, X, S_S), \
1177 1.1 christos }
1178 1.1 christos
1179 1.1 christos /* e.g. STP <Wt1>, <Wt2>, [<Xn|SP>, #<imm>]!. */
1180 1.1 christos #define QL_LDST_PAIR_R \
1181 1.1 christos { \
1182 1.1 christos QLF3(W, W, S_S), \
1183 1.1 christos QLF3(X, X, S_D), \
1184 1.1 christos }
1185 1.1 christos
1186 1.1 christos /* e.g. STNP <Qt1>, <Qt2>, [<Xn|SP>{, #<imm>}]. */
1187 1.1 christos #define QL_LDST_PAIR_FP \
1188 1.1 christos { \
1189 1.1 christos QLF3(S_S, S_S, S_S), \
1190 1.1 christos QLF3(S_D, S_D, S_D), \
1191 1.1 christos QLF3(S_Q, S_Q, S_Q), \
1192 1.1 christos }
1193 1.1 christos
1194 1.1 christos /* e.g. LD3 {<Vt>.<T>, <Vt2>.<T>, <Vt3>.<T>}, [<Xn|SP>]. */
1195 1.1 christos #define QL_SIMD_LDST \
1196 1.1 christos { \
1197 1.1 christos QLF2(V_8B, NIL), \
1198 1.1 christos QLF2(V_16B, NIL), \
1199 1.1 christos QLF2(V_4H, NIL), \
1200 1.1 christos QLF2(V_8H, NIL), \
1201 1.1 christos QLF2(V_2S, NIL), \
1202 1.1 christos QLF2(V_4S, NIL), \
1203 1.1 christos QLF2(V_2D, NIL), \
1204 1.1 christos }
1205 1.1 christos
1206 1.1 christos /* e.g. LD1 {<Vt>.<T>, <Vt2>.<T>, <Vt3>.<T>}, [<Xn|SP>]. */
1207 1.1 christos #define QL_SIMD_LDST_ANY \
1208 1.1 christos { \
1209 1.1 christos QLF2(V_8B, NIL), \
1210 1.1 christos QLF2(V_16B, NIL), \
1211 1.1 christos QLF2(V_4H, NIL), \
1212 1.1 christos QLF2(V_8H, NIL), \
1213 1.1 christos QLF2(V_2S, NIL), \
1214 1.1 christos QLF2(V_4S, NIL), \
1215 1.1 christos QLF2(V_1D, NIL), \
1216 1.1 christos QLF2(V_2D, NIL), \
1217 1.1 christos }
1218 1.1 christos
1219 1.1 christos /* e.g. LD4 {<Vt>.<T>, <Vt2a>.<T>, <Vt3a>.<T>, <Vt4a>.<T>}[<index>], [<Xn|SP>]. */
1220 1.1 christos #define QL_SIMD_LDSTONE \
1221 1.1 christos { \
1222 1.1 christos QLF2(S_B, NIL), \
1223 1.1 christos QLF2(S_H, NIL), \
1224 1.1 christos QLF2(S_S, NIL), \
1225 1.1 christos QLF2(S_D, NIL), \
1226 1.1 christos }
1227 1.1 christos
1228 1.1 christos /* e.g. ADDV <V><d>, <Vn>.<T>. */
1229 1.1 christos #define QL_XLANES \
1230 1.1 christos { \
1231 1.1 christos QLF2(S_B, V_8B), \
1232 1.1 christos QLF2(S_B, V_16B), \
1233 1.1 christos QLF2(S_H, V_4H), \
1234 1.1 christos QLF2(S_H, V_8H), \
1235 1.1 christos QLF2(S_S, V_4S), \
1236 1.1 christos }
1237 1.1 christos
1238 1.1 christos /* e.g. FMINV <V><d>, <Vn>.<T>. */
1239 1.1 christos #define QL_XLANES_FP \
1240 1.1 christos { \
1241 1.1 christos QLF2(S_S, V_4S), \
1242 1.1 christos }
1243 1.1 christos
1244 1.6 christos /* e.g. FMINV <V><d>, <Vn>.<T>. */
1245 1.6 christos #define QL_XLANES_FP_H \
1246 1.6 christos { \
1247 1.6 christos QLF2 (S_H, V_4H), \
1248 1.6 christos QLF2 (S_H, V_8H), \
1249 1.6 christos }
1250 1.6 christos
1251 1.1 christos /* e.g. SADDLV <V><d>, <Vn>.<T>. */
1252 1.1 christos #define QL_XLANES_L \
1253 1.1 christos { \
1254 1.1 christos QLF2(S_H, V_8B), \
1255 1.1 christos QLF2(S_H, V_16B), \
1256 1.1 christos QLF2(S_S, V_4H), \
1257 1.1 christos QLF2(S_S, V_8H), \
1258 1.1 christos QLF2(S_D, V_4S), \
1259 1.1 christos }
1260 1.1 christos
1261 1.1 christos /* e.g. MUL <Vd>.<T>, <Vn>.<T>, <Vm>.<Ts>[<index>]. */
1262 1.1 christos #define QL_ELEMENT \
1263 1.1 christos { \
1264 1.1 christos QLF3(V_4H, V_4H, S_H), \
1265 1.1 christos QLF3(V_8H, V_8H, S_H), \
1266 1.1 christos QLF3(V_2S, V_2S, S_S), \
1267 1.1 christos QLF3(V_4S, V_4S, S_S), \
1268 1.1 christos }
1269 1.1 christos
1270 1.1 christos /* e.g. SMLAL <Vd>.<Ta>, <Vn>.<Tb>, <Vm>.<Ts>[<index>]. */
1271 1.1 christos #define QL_ELEMENT_L \
1272 1.1 christos { \
1273 1.1 christos QLF3(V_4S, V_4H, S_H), \
1274 1.1 christos QLF3(V_2D, V_2S, S_S), \
1275 1.1 christos }
1276 1.1 christos
1277 1.1 christos /* e.g. SMLAL2 <Vd>.<Ta>, <Vn>.<Tb>, <Vm>.<Ts>[<index>]. */
1278 1.1 christos #define QL_ELEMENT_L2 \
1279 1.1 christos { \
1280 1.1 christos QLF3(V_4S, V_8H, S_H), \
1281 1.1 christos QLF3(V_2D, V_4S, S_S), \
1282 1.1 christos }
1283 1.1 christos
1284 1.1 christos /* e.g. FMLA <V><d>, <V><n>, <Vm>.<Ts>[<index>]. */
1285 1.1 christos #define QL_ELEMENT_FP \
1286 1.1 christos { \
1287 1.1 christos QLF3(V_2S, V_2S, S_S), \
1288 1.1 christos QLF3(V_4S, V_4S, S_S), \
1289 1.1 christos QLF3(V_2D, V_2D, S_D), \
1290 1.1 christos }
1291 1.1 christos
1292 1.6 christos /* e.g. FMLA <V><d>, <V><n>, <Vm>.<Ts>[<index>]. */
1293 1.6 christos #define QL_ELEMENT_FP_H \
1294 1.6 christos { \
1295 1.6 christos QLF3 (V_4H, V_4H, S_H), \
1296 1.6 christos QLF3 (V_8H, V_8H, S_H), \
1297 1.6 christos }
1298 1.6 christos
1299 1.1 christos /* e.g. MOVI <Vd>.4S, #<imm8> {, LSL #<amount>}. */
1300 1.1 christos #define QL_SIMD_IMM_S0W \
1301 1.1 christos { \
1302 1.1 christos QLF2(V_2S, LSL), \
1303 1.1 christos QLF2(V_4S, LSL), \
1304 1.1 christos }
1305 1.1 christos
1306 1.1 christos /* e.g. MOVI <Vd>.4S, #<imm8>, MSL #<amount>. */
1307 1.1 christos #define QL_SIMD_IMM_S1W \
1308 1.1 christos { \
1309 1.1 christos QLF2(V_2S, MSL), \
1310 1.1 christos QLF2(V_4S, MSL), \
1311 1.1 christos }
1312 1.1 christos
1313 1.1 christos /* e.g. MOVI <Vd>.4H, #<imm8> {, LSL #<amount>}. */
1314 1.1 christos #define QL_SIMD_IMM_S0H \
1315 1.1 christos { \
1316 1.1 christos QLF2(V_4H, LSL), \
1317 1.1 christos QLF2(V_8H, LSL), \
1318 1.1 christos }
1319 1.1 christos
1320 1.1 christos /* e.g. FMOV <Vd>.<T>, #<imm>. */
1321 1.1 christos #define QL_SIMD_IMM_S \
1322 1.1 christos { \
1323 1.1 christos QLF2(V_2S, NIL), \
1324 1.1 christos QLF2(V_4S, NIL), \
1325 1.1 christos }
1326 1.1 christos
1327 1.1 christos /* e.g. MOVI <Vd>.8B, #<imm8> {, LSL #<amount>}. */
1328 1.1 christos #define QL_SIMD_IMM_B \
1329 1.1 christos { \
1330 1.1 christos QLF2(V_8B, LSL), \
1331 1.1 christos QLF2(V_16B, LSL), \
1332 1.1 christos }
1333 1.1 christos /* e.g. MOVI <Dd>, #<imm>. */
1334 1.1 christos #define QL_SIMD_IMM_D \
1335 1.1 christos { \
1336 1.1 christos QLF2(S_D, NIL), \
1337 1.1 christos }
1338 1.1 christos
1339 1.6 christos /* e.g. FMOV <Vd>.<T>, #<imm>. */
1340 1.6 christos #define QL_SIMD_IMM_H \
1341 1.6 christos { \
1342 1.6 christos QLF2 (V_4H, NIL), \
1343 1.6 christos QLF2 (V_8H, NIL), \
1344 1.6 christos }
1345 1.6 christos
1346 1.1 christos /* e.g. MOVI <Vd>.2D, #<imm>. */
1347 1.1 christos #define QL_SIMD_IMM_V2D \
1348 1.1 christos { \
1349 1.1 christos QLF2(V_2D, NIL), \
1350 1.1 christos }
1351 1.1 christos
1352 1.1 christos /* Opcode table. */
1354 1.1 christos
1355 1.1 christos static const aarch64_feature_set aarch64_feature_v8 =
1356 1.1 christos AARCH64_FEATURE (AARCH64_FEATURE_V8, 0);
1357 1.1 christos static const aarch64_feature_set aarch64_feature_fp =
1358 1.1 christos AARCH64_FEATURE (AARCH64_FEATURE_FP, 0);
1359 1.1 christos static const aarch64_feature_set aarch64_feature_simd =
1360 1.1 christos AARCH64_FEATURE (AARCH64_FEATURE_SIMD, 0);
1361 1.1 christos static const aarch64_feature_set aarch64_feature_crypto =
1362 1.1 christos AARCH64_FEATURE (AARCH64_FEATURE_CRYPTO, 0);
1363 1.1 christos static const aarch64_feature_set aarch64_feature_crc =
1364 1.3 christos AARCH64_FEATURE (AARCH64_FEATURE_CRC, 0);
1365 1.3 christos static const aarch64_feature_set aarch64_feature_lse =
1366 1.5 christos AARCH64_FEATURE (AARCH64_FEATURE_LSE, 0);
1367 1.5 christos static const aarch64_feature_set aarch64_feature_lor =
1368 1.5 christos AARCH64_FEATURE (AARCH64_FEATURE_LOR, 0);
1369 1.5 christos static const aarch64_feature_set aarch64_feature_rdma =
1370 1.6 christos AARCH64_FEATURE (AARCH64_FEATURE_RDMA, 0);
1371 1.6 christos static const aarch64_feature_set aarch64_feature_ras =
1372 1.6 christos AARCH64_FEATURE (AARCH64_FEATURE_RAS, 0);
1373 1.6 christos static const aarch64_feature_set aarch64_feature_v8_2 =
1374 1.6 christos AARCH64_FEATURE (AARCH64_FEATURE_V8_2, 0);
1375 1.6 christos static const aarch64_feature_set aarch64_feature_fp_f16 =
1376 1.6 christos AARCH64_FEATURE (AARCH64_FEATURE_F16 | AARCH64_FEATURE_FP, 0);
1377 1.6 christos static const aarch64_feature_set aarch64_feature_simd_f16 =
1378 1.6 christos AARCH64_FEATURE (AARCH64_FEATURE_F16 | AARCH64_FEATURE_SIMD, 0);
1379 1.6 christos static const aarch64_feature_set aarch64_feature_stat_profile =
1380 1.6 christos AARCH64_FEATURE (AARCH64_FEATURE_PROFILE, 0);
1381 1.6 christos
1382 1.6 christos #define CORE &aarch64_feature_v8
1383 1.6 christos #define FP &aarch64_feature_fp
1384 1.6 christos #define SIMD &aarch64_feature_simd
1385 1.6 christos #define CRYPTO &aarch64_feature_crypto
1386 1.6 christos #define CRC &aarch64_feature_crc
1387 1.6 christos #define LSE &aarch64_feature_lse
1388 1.6 christos #define LOR &aarch64_feature_lor
1389 1.6 christos #define RDMA &aarch64_feature_rdma
1390 1.6 christos #define FP_F16 &aarch64_feature_fp_f16
1391 1.6 christos #define SIMD_F16 &aarch64_feature_simd_f16
1392 1.6 christos #define RAS &aarch64_feature_ras
1393 1.6 christos #define STAT_PROFILE &aarch64_feature_stat_profile
1394 1.6 christos #define ARMV8_2 &aarch64_feature_v8_2
1395 1.6 christos
1396 1.6 christos #define CORE_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
1397 1.6 christos { NAME, OPCODE, MASK, CLASS, 0, CORE, OPS, QUALS, FLAGS, NULL }
1398 1.6 christos #define __FP_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
1399 1.6 christos { NAME, OPCODE, MASK, CLASS, 0, FP, OPS, QUALS, FLAGS, NULL }
1400 1.6 christos #define SIMD_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
1401 1.6 christos { NAME, OPCODE, MASK, CLASS, 0, SIMD, OPS, QUALS, FLAGS, NULL }
1402 1.6 christos #define CRYP_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
1403 1.6 christos { NAME, OPCODE, MASK, CLASS, 0, CRYPTO, OPS, QUALS, FLAGS, NULL }
1404 1.6 christos #define _CRC_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
1405 1.6 christos { NAME, OPCODE, MASK, CLASS, 0, CRC, OPS, QUALS, FLAGS, NULL }
1406 1.6 christos #define _LSE_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
1407 1.6 christos { NAME, OPCODE, MASK, CLASS, 0, LSE, OPS, QUALS, FLAGS, NULL }
1408 1.6 christos #define _LOR_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
1409 1.6 christos { NAME, OPCODE, MASK, CLASS, 0, LOR, OPS, QUALS, FLAGS, NULL }
1410 1.6 christos #define RDMA_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
1411 1.6 christos { NAME, OPCODE, MASK, CLASS, 0, RDMA, OPS, QUALS, FLAGS, NULL }
1412 1.6 christos #define FF16_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
1413 1.6 christos { NAME, OPCODE, MASK, CLASS, 0, FP_F16, OPS, QUALS, FLAGS, NULL }
1414 1.6 christos #define SF16_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
1415 1.1 christos { NAME, OPCODE, MASK, CLASS, 0, SIMD_F16, OPS, QUALS, FLAGS, NULL }
1416 1.1 christos
1417 1.1 christos struct aarch64_opcode aarch64_opcode_table[] =
1418 1.1 christos {
1419 1.6 christos /* Add/subtract (with carry). */
1420 1.6 christos CORE_INSN ("adc", 0x1a000000, 0x7fe0fc00, addsub_carry, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF),
1421 1.6 christos CORE_INSN ("adcs", 0x3a000000, 0x7fe0fc00, addsub_carry, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF),
1422 1.6 christos CORE_INSN ("sbc", 0x5a000000, 0x7fe0fc00, addsub_carry, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_HAS_ALIAS | F_SF),
1423 1.6 christos CORE_INSN ("ngc", 0x5a0003e0, 0x7fe0ffe0, addsub_carry, OP2 (Rd, Rm), QL_I2SAME, F_ALIAS | F_SF),
1424 1.6 christos CORE_INSN ("sbcs", 0x7a000000, 0x7fe0fc00, addsub_carry, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_HAS_ALIAS | F_SF),
1425 1.1 christos CORE_INSN ("ngcs", 0x7a0003e0, 0x7fe0ffe0, addsub_carry, OP2 (Rd, Rm), QL_I2SAME, F_ALIAS | F_SF),
1426 1.6 christos /* Add/subtract (extended register). */
1427 1.6 christos CORE_INSN ("add", 0x0b200000, 0x7fe00000, addsub_ext, OP3 (Rd_SP, Rn_SP, Rm_EXT), QL_I3_EXT, F_SF),
1428 1.6 christos CORE_INSN ("adds", 0x2b200000, 0x7fe00000, addsub_ext, OP3 (Rd, Rn_SP, Rm_EXT), QL_I3_EXT, F_HAS_ALIAS | F_SF),
1429 1.6 christos CORE_INSN ("cmn", 0x2b20001f, 0x7fe0001f, addsub_ext, OP2 (Rn_SP, Rm_EXT), QL_I2_EXT, F_ALIAS | F_SF),
1430 1.6 christos CORE_INSN ("sub", 0x4b200000, 0x7fe00000, addsub_ext, OP3 (Rd_SP, Rn_SP, Rm_EXT), QL_I3_EXT, F_SF),
1431 1.6 christos CORE_INSN ("subs", 0x6b200000, 0x7fe00000, addsub_ext, OP3 (Rd, Rn_SP, Rm_EXT), QL_I3_EXT, F_HAS_ALIAS | F_SF),
1432 1.1 christos CORE_INSN ("cmp", 0x6b20001f, 0x7fe0001f, addsub_ext, OP2 (Rn_SP, Rm_EXT), QL_I2_EXT, F_ALIAS | F_SF),
1433 1.6 christos /* Add/subtract (immediate). */
1434 1.6 christos { "add", 0x11000000, 0x7f000000, addsub_imm, OP_ADD, CORE, OP3 (Rd_SP, Rn_SP, AIMM), QL_R2NIL, F_HAS_ALIAS | F_SF, NULL},
1435 1.6 christos CORE_INSN ("mov", 0x11000000, 0x7ffffc00, addsub_imm, OP2 (Rd_SP, Rn_SP), QL_I2SP, F_ALIAS | F_SF),
1436 1.6 christos CORE_INSN ("adds", 0x31000000, 0x7f000000, addsub_imm, OP3 (Rd, Rn_SP, AIMM), QL_R2NIL, F_HAS_ALIAS | F_SF),
1437 1.6 christos CORE_INSN ("cmn", 0x3100001f, 0x7f00001f, addsub_imm, OP2 (Rn_SP, AIMM), QL_R1NIL, F_ALIAS | F_SF),
1438 1.6 christos CORE_INSN ("sub", 0x51000000, 0x7f000000, addsub_imm, OP3 (Rd_SP, Rn_SP, AIMM), QL_R2NIL, F_SF),
1439 1.6 christos CORE_INSN ("subs", 0x71000000, 0x7f000000, addsub_imm, OP3 (Rd, Rn_SP, AIMM), QL_R2NIL, F_HAS_ALIAS | F_SF),
1440 1.1 christos CORE_INSN ("cmp", 0x7100001f, 0x7f00001f, addsub_imm, OP2 (Rn_SP, AIMM), QL_R1NIL, F_ALIAS | F_SF),
1441 1.6 christos /* Add/subtract (shifted register). */
1442 1.6 christos CORE_INSN ("add", 0x0b000000, 0x7f200000, addsub_shift, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF),
1443 1.6 christos CORE_INSN ("adds", 0x2b000000, 0x7f200000, addsub_shift, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_HAS_ALIAS | F_SF),
1444 1.6 christos CORE_INSN ("cmn", 0x2b00001f, 0x7f20001f, addsub_shift, OP2 (Rn, Rm_SFT), QL_I2SAME, F_ALIAS | F_SF),
1445 1.6 christos CORE_INSN ("sub", 0x4b000000, 0x7f200000, addsub_shift, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_HAS_ALIAS | F_SF),
1446 1.6 christos CORE_INSN ("neg", 0x4b0003e0, 0x7f2003e0, addsub_shift, OP2 (Rd, Rm_SFT), QL_I2SAME, F_ALIAS | F_SF),
1447 1.6 christos CORE_INSN ("subs", 0x6b000000, 0x7f200000, addsub_shift, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_HAS_ALIAS | F_SF),
1448 1.6 christos CORE_INSN ("cmp", 0x6b00001f, 0x7f20001f, addsub_shift, OP2 (Rn, Rm_SFT), QL_I2SAME, F_ALIAS | F_SF),
1449 1.1 christos CORE_INSN ("negs", 0x6b0003e0, 0x7f2003e0, addsub_shift, OP2 (Rd, Rm_SFT), QL_I2SAME, F_ALIAS | F_SF),
1450 1.6 christos /* AdvSIMD across lanes. */
1451 1.6 christos SIMD_INSN ("saddlv", 0x0e303800, 0xbf3ffc00, asimdall, OP2 (Fd, Vn), QL_XLANES_L, F_SIZEQ),
1452 1.6 christos SIMD_INSN ("smaxv", 0x0e30a800, 0xbf3ffc00, asimdall, OP2 (Fd, Vn), QL_XLANES, F_SIZEQ),
1453 1.6 christos SIMD_INSN ("sminv", 0x0e31a800, 0xbf3ffc00, asimdall, OP2 (Fd, Vn), QL_XLANES, F_SIZEQ),
1454 1.6 christos SIMD_INSN ("addv", 0x0e31b800, 0xbf3ffc00, asimdall, OP2 (Fd, Vn), QL_XLANES, F_SIZEQ),
1455 1.6 christos SIMD_INSN ("uaddlv", 0x2e303800, 0xbf3ffc00, asimdall, OP2 (Fd, Vn), QL_XLANES_L, F_SIZEQ),
1456 1.6 christos SIMD_INSN ("umaxv", 0x2e30a800, 0xbf3ffc00, asimdall, OP2 (Fd, Vn), QL_XLANES, F_SIZEQ),
1457 1.6 christos SIMD_INSN ("uminv", 0x2e31a800, 0xbf3ffc00, asimdall, OP2 (Fd, Vn), QL_XLANES, F_SIZEQ),
1458 1.6 christos SIMD_INSN ("fmaxnmv",0x2e30c800, 0xbfbffc00, asimdall, OP2 (Fd, Vn), QL_XLANES_FP, F_SIZEQ),
1459 1.6 christos SF16_INSN ("fmaxnmv",0x0e30c800, 0xbffffc00, asimdall, OP2 (Fd, Vn), QL_XLANES_FP_H, F_SIZEQ),
1460 1.6 christos SIMD_INSN ("fmaxv", 0x2e30f800, 0xbfbffc00, asimdall, OP2 (Fd, Vn), QL_XLANES_FP, F_SIZEQ),
1461 1.6 christos SF16_INSN ("fmaxv", 0x0e30f800, 0xbffffc00, asimdall, OP2 (Fd, Vn), QL_XLANES_FP_H, F_SIZEQ),
1462 1.6 christos SIMD_INSN ("fminnmv",0x2eb0c800, 0xbfbffc00, asimdall, OP2 (Fd, Vn), QL_XLANES_FP, F_SIZEQ),
1463 1.6 christos SF16_INSN ("fminnmv",0x0eb0c800, 0xbffffc00, asimdall, OP2 (Fd, Vn), QL_XLANES_FP_H, F_SIZEQ),
1464 1.6 christos SIMD_INSN ("fminv", 0x2eb0f800, 0xbfbffc00, asimdall, OP2 (Fd, Vn), QL_XLANES_FP, F_SIZEQ),
1465 1.1 christos SF16_INSN ("fminv", 0x0eb0f800, 0xbffffc00, asimdall, OP2 (Fd, Vn), QL_XLANES_FP_H, F_SIZEQ),
1466 1.6 christos /* AdvSIMD three different. */
1467 1.6 christos SIMD_INSN ("saddl", 0x0e200000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1468 1.6 christos SIMD_INSN ("saddl2", 0x4e200000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1469 1.6 christos SIMD_INSN ("saddw", 0x0e201000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS, F_SIZEQ),
1470 1.6 christos SIMD_INSN ("saddw2", 0x4e201000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS2, F_SIZEQ),
1471 1.6 christos SIMD_INSN ("ssubl", 0x0e202000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1472 1.6 christos SIMD_INSN ("ssubl2", 0x4e202000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1473 1.6 christos SIMD_INSN ("ssubw", 0x0e203000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS, F_SIZEQ),
1474 1.6 christos SIMD_INSN ("ssubw2", 0x4e203000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS2, F_SIZEQ),
1475 1.6 christos SIMD_INSN ("addhn", 0x0e204000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3NARRBHS, F_SIZEQ),
1476 1.6 christos SIMD_INSN ("addhn2", 0x4e204000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3NARRBHS2, F_SIZEQ),
1477 1.6 christos SIMD_INSN ("sabal", 0x0e205000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1478 1.6 christos SIMD_INSN ("sabal2", 0x4e205000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1479 1.6 christos SIMD_INSN ("subhn", 0x0e206000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3NARRBHS, F_SIZEQ),
1480 1.6 christos SIMD_INSN ("subhn2", 0x4e206000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3NARRBHS2, F_SIZEQ),
1481 1.6 christos SIMD_INSN ("sabdl", 0x0e207000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1482 1.6 christos SIMD_INSN ("sabdl2", 0x4e207000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1483 1.6 christos SIMD_INSN ("smlal", 0x0e208000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1484 1.6 christos SIMD_INSN ("smlal2", 0x4e208000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1485 1.6 christos SIMD_INSN ("sqdmlal", 0x0e209000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGHS, F_SIZEQ),
1486 1.6 christos SIMD_INSN ("sqdmlal2",0x4e209000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGHS2, F_SIZEQ),
1487 1.6 christos SIMD_INSN ("smlsl", 0x0e20a000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1488 1.6 christos SIMD_INSN ("smlsl2", 0x4e20a000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1489 1.6 christos SIMD_INSN ("sqdmlsl", 0x0e20b000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGHS, F_SIZEQ),
1490 1.6 christos SIMD_INSN ("sqdmlsl2",0x4e20b000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGHS2, F_SIZEQ),
1491 1.6 christos SIMD_INSN ("smull", 0x0e20c000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1492 1.6 christos SIMD_INSN ("smull2", 0x4e20c000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1493 1.6 christos SIMD_INSN ("sqdmull", 0x0e20d000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGHS, F_SIZEQ),
1494 1.6 christos SIMD_INSN ("sqdmull2",0x4e20d000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGHS2, F_SIZEQ),
1495 1.6 christos SIMD_INSN ("pmull", 0x0e20e000, 0xffe0fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGB, 0),
1496 1.6 christos CRYP_INSN ("pmull", 0x0ee0e000, 0xffe0fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGD, 0),
1497 1.6 christos SIMD_INSN ("pmull2", 0x4e20e000, 0xffe0fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGB2, 0),
1498 1.6 christos CRYP_INSN ("pmull2", 0x4ee0e000, 0xffe0fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGD2, 0),
1499 1.6 christos SIMD_INSN ("uaddl", 0x2e200000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1500 1.6 christos SIMD_INSN ("uaddl2", 0x6e200000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1501 1.6 christos SIMD_INSN ("uaddw", 0x2e201000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS, F_SIZEQ),
1502 1.6 christos SIMD_INSN ("uaddw2", 0x6e201000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS2, F_SIZEQ),
1503 1.6 christos SIMD_INSN ("usubl", 0x2e202000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1504 1.6 christos SIMD_INSN ("usubl2", 0x6e202000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1505 1.6 christos SIMD_INSN ("usubw", 0x2e203000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS, F_SIZEQ),
1506 1.6 christos SIMD_INSN ("usubw2", 0x6e203000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS2, F_SIZEQ),
1507 1.6 christos SIMD_INSN ("raddhn", 0x2e204000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3NARRBHS, F_SIZEQ),
1508 1.6 christos SIMD_INSN ("raddhn2", 0x6e204000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3NARRBHS2, F_SIZEQ),
1509 1.6 christos SIMD_INSN ("uabal", 0x2e205000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1510 1.6 christos SIMD_INSN ("uabal2", 0x6e205000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1511 1.6 christos SIMD_INSN ("rsubhn", 0x2e206000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3NARRBHS, F_SIZEQ),
1512 1.6 christos SIMD_INSN ("rsubhn2", 0x6e206000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3NARRBHS2, F_SIZEQ),
1513 1.6 christos SIMD_INSN ("uabdl", 0x2e207000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1514 1.6 christos SIMD_INSN ("uabdl2", 0x6e207000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1515 1.6 christos SIMD_INSN ("umlal", 0x2e208000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1516 1.6 christos SIMD_INSN ("umlal2", 0x6e208000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1517 1.6 christos SIMD_INSN ("umlsl", 0x2e20a000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1518 1.6 christos SIMD_INSN ("umlsl2", 0x6e20a000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1519 1.6 christos SIMD_INSN ("umull", 0x2e20c000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ),
1520 1.1 christos SIMD_INSN ("umull2", 0x6e20c000, 0xff20fc00, asimddiff, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ),
1521 1.6 christos /* AdvSIMD vector x indexed element. */
1522 1.6 christos SIMD_INSN ("smlal", 0x0f002000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ),
1523 1.6 christos SIMD_INSN ("smlal2", 0x4f002000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ),
1524 1.6 christos SIMD_INSN ("sqdmlal", 0x0f003000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ),
1525 1.6 christos SIMD_INSN ("sqdmlal2",0x4f003000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ),
1526 1.6 christos SIMD_INSN ("smlsl", 0x0f006000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ),
1527 1.6 christos SIMD_INSN ("smlsl2", 0x4f006000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ),
1528 1.6 christos SIMD_INSN ("sqdmlsl", 0x0f007000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ),
1529 1.6 christos SIMD_INSN ("sqdmlsl2",0x4f007000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ),
1530 1.6 christos SIMD_INSN ("mul", 0x0f008000, 0xbf00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT, F_SIZEQ),
1531 1.6 christos SIMD_INSN ("smull", 0x0f00a000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ),
1532 1.6 christos SIMD_INSN ("smull2", 0x4f00a000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ),
1533 1.6 christos SIMD_INSN ("sqdmull", 0x0f00b000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ),
1534 1.6 christos SIMD_INSN ("sqdmull2",0x4f00b000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ),
1535 1.6 christos SIMD_INSN ("sqdmulh", 0x0f00c000, 0xbf00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT, F_SIZEQ),
1536 1.6 christos SIMD_INSN ("sqrdmulh",0x0f00d000, 0xbf00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT, F_SIZEQ),
1537 1.6 christos SIMD_INSN ("fmla", 0x0f801000, 0xbf80f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_FP, F_SIZEQ),
1538 1.6 christos SF16_INSN ("fmla", 0x0f001000, 0xbfe0fc00, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_FP_H, F_SIZEQ),
1539 1.6 christos SIMD_INSN ("fmls", 0x0f805000, 0xbf80f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_FP, F_SIZEQ),
1540 1.6 christos SF16_INSN ("fmls", 0x0f005000, 0xbfe0fc00, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_FP_H, F_SIZEQ),
1541 1.6 christos SIMD_INSN ("fmul", 0x0f809000, 0xbf80f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_FP, F_SIZEQ),
1542 1.6 christos SF16_INSN ("fmul", 0x0f009000, 0xbfe0fc00, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_FP_H, F_SIZEQ),
1543 1.6 christos SIMD_INSN ("mla", 0x2f000000, 0xbf00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT, F_SIZEQ),
1544 1.6 christos SIMD_INSN ("umlal", 0x2f002000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ),
1545 1.6 christos SIMD_INSN ("umlal2", 0x6f002000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ),
1546 1.6 christos SIMD_INSN ("mls", 0x2f004000, 0xbf00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT, F_SIZEQ),
1547 1.6 christos SIMD_INSN ("umlsl", 0x2f006000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ),
1548 1.6 christos SIMD_INSN ("umlsl2", 0x6f006000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ),
1549 1.6 christos SIMD_INSN ("umull", 0x2f00a000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ),
1550 1.6 christos SIMD_INSN ("umull2", 0x6f00a000, 0xff00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ),
1551 1.6 christos SIMD_INSN ("fmulx", 0x2f809000, 0xbf80f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_FP, F_SIZEQ),
1552 1.6 christos SF16_INSN ("fmulx", 0x2f009000, 0xbfe0fc00, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT_FP_H, F_SIZEQ),
1553 1.6 christos RDMA_INSN ("sqrdmlah",0x2f00d000, 0xbf00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT, F_SIZEQ),
1554 1.1 christos RDMA_INSN ("sqrdmlsh",0x2f00f000, 0xbf00f400, asimdelem, OP3 (Vd, Vn, Em), QL_ELEMENT, F_SIZEQ),
1555 1.6 christos /* AdvSIMD EXT. */
1556 1.1 christos SIMD_INSN ("ext", 0x2e000000, 0xbfe08400, asimdext, OP4 (Vd, Vn, Vm, IDX), QL_VEXT, F_SIZEQ),
1557 1.6 christos /* AdvSIMD modified immediate. */
1558 1.6 christos SIMD_INSN ("movi", 0x0f000400, 0xbff89c00, asimdimm, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0W, F_SIZEQ),
1559 1.6 christos SIMD_INSN ("orr", 0x0f001400, 0xbff89c00, asimdimm, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0W, F_SIZEQ),
1560 1.6 christos SIMD_INSN ("movi", 0x0f008400, 0xbff8dc00, asimdimm, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0H, F_SIZEQ),
1561 1.6 christos SIMD_INSN ("orr", 0x0f009400, 0xbff8dc00, asimdimm, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0H, F_SIZEQ),
1562 1.6 christos SIMD_INSN ("movi", 0x0f00c400, 0xbff8ec00, asimdimm, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S1W, F_SIZEQ),
1563 1.6 christos SIMD_INSN ("movi", 0x0f00e400, 0xbff8fc00, asimdimm, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_B, F_SIZEQ),
1564 1.6 christos SIMD_INSN ("fmov", 0x0f00f400, 0xbff8fc00, asimdimm, OP2 (Vd, SIMD_FPIMM), QL_SIMD_IMM_S, F_SIZEQ),
1565 1.6 christos SF16_INSN ("fmov", 0x0f00fc00, 0xbff8fc00, asimdimm, OP2 (Vd, SIMD_FPIMM), QL_SIMD_IMM_H, F_SIZEQ),
1566 1.6 christos SIMD_INSN ("mvni", 0x2f000400, 0xbff89c00, asimdimm, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0W, F_SIZEQ),
1567 1.6 christos SIMD_INSN ("bic", 0x2f001400, 0xbff89c00, asimdimm, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0W, F_SIZEQ),
1568 1.6 christos SIMD_INSN ("mvni", 0x2f008400, 0xbff8dc00, asimdimm, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0H, F_SIZEQ),
1569 1.6 christos SIMD_INSN ("bic", 0x2f009400, 0xbff8dc00, asimdimm, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0H, F_SIZEQ),
1570 1.6 christos SIMD_INSN ("mvni", 0x2f00c400, 0xbff8ec00, asimdimm, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S1W, F_SIZEQ),
1571 1.6 christos SIMD_INSN ("movi", 0x2f00e400, 0xfff8fc00, asimdimm, OP2 (Sd, SIMD_IMM), QL_SIMD_IMM_D, F_SIZEQ),
1572 1.6 christos SIMD_INSN ("movi", 0x6f00e400, 0xfff8fc00, asimdimm, OP2 (Vd, SIMD_IMM), QL_SIMD_IMM_V2D, F_SIZEQ),
1573 1.1 christos SIMD_INSN ("fmov", 0x6f00f400, 0xfff8fc00, asimdimm, OP2 (Vd, SIMD_FPIMM), QL_SIMD_IMM_V2D, F_SIZEQ),
1574 1.6 christos /* AdvSIMD copy. */
1575 1.6 christos SIMD_INSN ("dup", 0x0e000400, 0xbfe0fc00, asimdins, OP2 (Vd, En), QL_DUP_VX, F_T),
1576 1.6 christos SIMD_INSN ("dup", 0x0e000c00, 0xbfe0fc00, asimdins, OP2 (Vd, Rn), QL_DUP_VR, F_T),
1577 1.6 christos SIMD_INSN ("smov",0x0e002c00, 0xbfe0fc00, asimdins, OP2 (Rd, En), QL_SMOV, F_GPRSIZE_IN_Q),
1578 1.6 christos SIMD_INSN ("umov",0x0e003c00, 0xbfe0fc00, asimdins, OP2 (Rd, En), QL_UMOV, F_HAS_ALIAS | F_GPRSIZE_IN_Q),
1579 1.6 christos SIMD_INSN ("mov", 0x0e003c00, 0xbfe0fc00, asimdins, OP2 (Rd, En), QL_MOV, F_ALIAS | F_GPRSIZE_IN_Q),
1580 1.6 christos SIMD_INSN ("ins", 0x4e001c00, 0xffe0fc00, asimdins, OP2 (Ed, Rn), QL_INS_XR, F_HAS_ALIAS),
1581 1.6 christos SIMD_INSN ("mov", 0x4e001c00, 0xffe0fc00, asimdins, OP2 (Ed, Rn), QL_INS_XR, F_ALIAS),
1582 1.6 christos SIMD_INSN ("ins", 0x6e000400, 0xffe08400, asimdins, OP2 (Ed, En), QL_S_2SAME, F_HAS_ALIAS),
1583 1.1 christos SIMD_INSN ("mov", 0x6e000400, 0xffe08400, asimdins, OP2 (Ed, En), QL_S_2SAME, F_ALIAS),
1584 1.6 christos /* AdvSIMD two-reg misc. */
1585 1.6 christos SIMD_INSN ("rev64", 0x0e200800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEBHS, F_SIZEQ),
1586 1.6 christos SIMD_INSN ("rev16", 0x0e201800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ),
1587 1.6 christos SIMD_INSN ("saddlp",0x0e202800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2PAIRWISELONGBHS, F_SIZEQ),
1588 1.6 christos SIMD_INSN ("suqadd",0x0e203800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAME, F_SIZEQ),
1589 1.6 christos SIMD_INSN ("cls", 0x0e204800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEBHS, F_SIZEQ),
1590 1.6 christos SIMD_INSN ("cnt", 0x0e205800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ),
1591 1.6 christos SIMD_INSN ("sadalp",0x0e206800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2PAIRWISELONGBHS, F_SIZEQ),
1592 1.6 christos SIMD_INSN ("sqabs", 0x0e207800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAME, F_SIZEQ),
1593 1.6 christos SIMD_INSN ("cmgt", 0x0e208800, 0xbf3ffc00, asimdmisc, OP3 (Vd, Vn, IMM0), QL_V2SAME, F_SIZEQ),
1594 1.6 christos SIMD_INSN ("cmeq", 0x0e209800, 0xbf3ffc00, asimdmisc, OP3 (Vd, Vn, IMM0), QL_V2SAME, F_SIZEQ),
1595 1.6 christos SIMD_INSN ("cmlt", 0x0e20a800, 0xbf3ffc00, asimdmisc, OP3 (Vd, Vn, IMM0), QL_V2SAME, F_SIZEQ),
1596 1.6 christos SIMD_INSN ("abs", 0x0e20b800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAME, F_SIZEQ),
1597 1.6 christos SIMD_INSN ("xtn", 0x0e212800, 0xff3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2NARRBHS, F_SIZEQ),
1598 1.6 christos SIMD_INSN ("xtn2", 0x4e212800, 0xff3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2NARRBHS2, F_SIZEQ),
1599 1.6 christos SIMD_INSN ("sqxtn", 0xe214800, 0xff3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2NARRBHS, F_SIZEQ),
1600 1.6 christos SIMD_INSN ("sqxtn2",0x4e214800, 0xff3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2NARRBHS2, F_SIZEQ),
1601 1.6 christos {"fcvtn", 0x0e216800, 0xffbffc00, asimdmisc, OP_FCVTN, SIMD, OP2 (Vd, Vn), QL_V2NARRHS, F_MISC, NULL},
1602 1.6 christos {"fcvtn2", 0x4e216800, 0xffbffc00, asimdmisc, OP_FCVTN2, SIMD, OP2 (Vd, Vn), QL_V2NARRHS2, F_MISC, NULL},
1603 1.6 christos {"fcvtl", 0x0e217800, 0xffbffc00, asimdmisc, OP_FCVTL, SIMD, OP2 (Vd, Vn), QL_V2LONGHS, F_MISC, NULL},
1604 1.6 christos {"fcvtl2", 0x4e217800, 0xffbffc00, asimdmisc, OP_FCVTL2, SIMD, OP2 (Vd, Vn), QL_V2LONGHS2, F_MISC, NULL},
1605 1.6 christos SIMD_INSN ("frintn", 0x0e218800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1606 1.6 christos SF16_INSN ("frintn", 0x0e798800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1607 1.6 christos SIMD_INSN ("frintm", 0x0e219800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1608 1.6 christos SF16_INSN ("frintm", 0x0e799800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1609 1.6 christos SIMD_INSN ("fcvtns", 0x0e21a800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1610 1.6 christos SF16_INSN ("fcvtns", 0x0e79a800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1611 1.6 christos SIMD_INSN ("fcvtms", 0x0e21b800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1612 1.6 christos SF16_INSN ("fcvtms", 0x0e79b800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1613 1.6 christos SIMD_INSN ("fcvtas", 0x0e21c800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1614 1.6 christos SF16_INSN ("fcvtas", 0x0e79c800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1615 1.6 christos SIMD_INSN ("scvtf", 0x0e21d800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1616 1.6 christos SF16_INSN ("scvtf", 0x0e79d800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1617 1.6 christos SIMD_INSN ("fcmgt", 0x0ea0c800, 0xbfbffc00, asimdmisc, OP3 (Vd, Vn, FPIMM0), QL_V2SAMESD, F_SIZEQ),
1618 1.6 christos SF16_INSN ("fcmgt", 0x0ef8c800, 0xbffffc00, asimdmisc, OP3 (Vd, Vn, FPIMM0), QL_V2SAMEH, F_SIZEQ),
1619 1.6 christos SIMD_INSN ("fcmeq", 0x0ea0d800, 0xbfbffc00, asimdmisc, OP3 (Vd, Vn, FPIMM0), QL_V2SAMESD, F_SIZEQ),
1620 1.6 christos SF16_INSN ("fcmeq", 0x0ef8d800, 0xbffffc00, asimdmisc, OP3 (Vd, Vn, FPIMM0), QL_V2SAMEH, F_SIZEQ),
1621 1.6 christos SIMD_INSN ("fcmlt", 0x0ea0e800, 0xbfbffc00, asimdmisc, OP3 (Vd, Vn, FPIMM0), QL_V2SAMESD, F_SIZEQ),
1622 1.6 christos SF16_INSN ("fcmlt", 0x0ef8e800, 0xbffffc00, asimdmisc, OP3 (Vd, Vn, FPIMM0), QL_V2SAMEH, F_SIZEQ),
1623 1.6 christos SIMD_INSN ("fabs", 0x0ea0f800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1624 1.6 christos SF16_INSN ("fabs", 0x0ef8f800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1625 1.6 christos SIMD_INSN ("frintp", 0x0ea18800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1626 1.6 christos SF16_INSN ("frintp", 0x0ef98800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1627 1.6 christos SIMD_INSN ("frintz", 0x0ea19800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1628 1.6 christos SF16_INSN ("frintz", 0x0ef99800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1629 1.6 christos SIMD_INSN ("fcvtps", 0x0ea1a800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1630 1.6 christos SF16_INSN ("fcvtps", 0x0ef9a800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1631 1.6 christos SIMD_INSN ("fcvtzs", 0x0ea1b800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1632 1.6 christos SF16_INSN ("fcvtzs", 0x0ef9b800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1633 1.6 christos SIMD_INSN ("urecpe", 0x0ea1c800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMES, F_SIZEQ),
1634 1.6 christos SIMD_INSN ("frecpe", 0x0ea1d800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1635 1.6 christos SF16_INSN ("frecpe", 0x0ef9d800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1636 1.6 christos SIMD_INSN ("rev32", 0x2e200800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEBH, F_SIZEQ),
1637 1.6 christos SIMD_INSN ("uaddlp", 0x2e202800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2PAIRWISELONGBHS, F_SIZEQ),
1638 1.6 christos SIMD_INSN ("usqadd", 0x2e203800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAME, F_SIZEQ),
1639 1.6 christos SIMD_INSN ("clz", 0x2e204800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEBHS, F_SIZEQ),
1640 1.6 christos SIMD_INSN ("uadalp", 0x2e206800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2PAIRWISELONGBHS, F_SIZEQ),
1641 1.6 christos SIMD_INSN ("sqneg", 0x2e207800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAME, F_SIZEQ),
1642 1.6 christos SIMD_INSN ("cmge", 0x2e208800, 0xbf3ffc00, asimdmisc, OP3 (Vd, Vn, IMM0), QL_V2SAME, F_SIZEQ),
1643 1.6 christos SIMD_INSN ("cmle", 0x2e209800, 0xbf3ffc00, asimdmisc, OP3 (Vd, Vn, IMM0), QL_V2SAME, F_SIZEQ),
1644 1.6 christos SIMD_INSN ("neg", 0x2e20b800, 0xbf3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAME, F_SIZEQ),
1645 1.6 christos SIMD_INSN ("sqxtun", 0x2e212800, 0xff3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2NARRBHS, F_SIZEQ),
1646 1.6 christos SIMD_INSN ("sqxtun2",0x6e212800, 0xff3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2NARRBHS2, F_SIZEQ),
1647 1.6 christos SIMD_INSN ("shll", 0x2e213800, 0xff3ffc00, asimdmisc, OP3 (Vd, Vn, SHLL_IMM), QL_V2LONGBHS, F_SIZEQ),
1648 1.6 christos SIMD_INSN ("shll2", 0x6e213800, 0xff3ffc00, asimdmisc, OP3 (Vd, Vn, SHLL_IMM), QL_V2LONGBHS2, F_SIZEQ),
1649 1.6 christos SIMD_INSN ("uqxtn", 0x2e214800, 0xff3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2NARRBHS, F_SIZEQ),
1650 1.6 christos SIMD_INSN ("uqxtn2", 0x6e214800, 0xff3ffc00, asimdmisc, OP2 (Vd, Vn), QL_V2NARRBHS2, F_SIZEQ),
1651 1.6 christos SIMD_INSN ("fcvtxn", 0x2e616800, 0xfffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2NARRS, 0),
1652 1.6 christos SIMD_INSN ("fcvtxn2",0x6e616800, 0xfffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2NARRS2, 0),
1653 1.6 christos SIMD_INSN ("frinta", 0x2e218800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1654 1.6 christos SF16_INSN ("frinta", 0x2e798800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1655 1.6 christos SIMD_INSN ("frintx", 0x2e219800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1656 1.6 christos SF16_INSN ("frintx", 0x2e799800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1657 1.6 christos SIMD_INSN ("fcvtnu", 0x2e21a800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1658 1.6 christos SF16_INSN ("fcvtnu", 0x2e79a800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1659 1.6 christos SIMD_INSN ("fcvtmu", 0x2e21b800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1660 1.6 christos SF16_INSN ("fcvtmu", 0x2e79b800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1661 1.6 christos SIMD_INSN ("fcvtau", 0x2e21c800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1662 1.6 christos SF16_INSN ("fcvtau", 0x2e79c800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1663 1.6 christos SIMD_INSN ("ucvtf", 0x2e21d800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1664 1.6 christos SF16_INSN ("ucvtf", 0x2e79d800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1665 1.6 christos SIMD_INSN ("not", 0x2e205800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ | F_HAS_ALIAS),
1666 1.6 christos SIMD_INSN ("mvn", 0x2e205800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ | F_ALIAS),
1667 1.6 christos SIMD_INSN ("rbit", 0x2e605800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ),
1668 1.6 christos SIMD_INSN ("fcmge", 0x2ea0c800, 0xbfbffc00, asimdmisc, OP3 (Vd, Vn, FPIMM0), QL_V2SAMESD, F_SIZEQ),
1669 1.6 christos SF16_INSN ("fcmge", 0x2ef8c800, 0xbffffc00, asimdmisc, OP3 (Vd, Vn, FPIMM0), QL_V2SAMEH, F_SIZEQ),
1670 1.6 christos SIMD_INSN ("fcmle", 0x2ea0d800, 0xbfbffc00, asimdmisc, OP3 (Vd, Vn, FPIMM0), QL_V2SAMESD, F_SIZEQ),
1671 1.6 christos SF16_INSN ("fcmle", 0x2ef8d800, 0xbffffc00, asimdmisc, OP3 (Vd, Vn, FPIMM0), QL_V2SAMEH, F_SIZEQ),
1672 1.6 christos SIMD_INSN ("fneg", 0x2ea0f800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1673 1.6 christos SF16_INSN ("fneg", 0x2ef8f800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1674 1.6 christos SIMD_INSN ("frinti", 0x2ea19800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1675 1.6 christos SF16_INSN ("frinti", 0x2ef99800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1676 1.6 christos SIMD_INSN ("fcvtpu", 0x2ea1a800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1677 1.6 christos SF16_INSN ("fcvtpu", 0x2ef9a800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1678 1.6 christos SIMD_INSN ("fcvtzu", 0x2ea1b800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1679 1.6 christos SF16_INSN ("fcvtzu", 0x2ef9b800, 0xbffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1680 1.6 christos SIMD_INSN ("ursqrte",0x2ea1c800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMES, F_SIZEQ),
1681 1.6 christos SIMD_INSN ("frsqrte",0x2ea1d800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1682 1.6 christos SF16_INSN ("frsqrte",0x2ef9d800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1683 1.6 christos SIMD_INSN ("fsqrt", 0x2ea1f800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ),
1684 1.1 christos SF16_INSN ("fsqrt", 0x2ef9f800, 0xbfbffc00, asimdmisc, OP2 (Vd, Vn), QL_V2SAMEH, F_SIZEQ),
1685 1.6 christos /* AdvSIMD ZIP/UZP/TRN. */
1686 1.6 christos SIMD_INSN ("uzp1", 0xe001800, 0xbf20fc00, asimdperm, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1687 1.6 christos SIMD_INSN ("trn1", 0xe002800, 0xbf20fc00, asimdperm, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1688 1.6 christos SIMD_INSN ("zip1", 0xe003800, 0xbf20fc00, asimdperm, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1689 1.6 christos SIMD_INSN ("uzp2", 0xe005800, 0xbf20fc00, asimdperm, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1690 1.6 christos SIMD_INSN ("trn2", 0xe006800, 0xbf20fc00, asimdperm, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1691 1.1 christos SIMD_INSN ("zip2", 0xe007800, 0xbf20fc00, asimdperm, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1692 1.6 christos /* AdvSIMD three same. */
1693 1.6 christos SIMD_INSN ("shadd", 0xe200400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1694 1.6 christos SIMD_INSN ("sqadd", 0xe200c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1695 1.6 christos SIMD_INSN ("srhadd", 0xe201400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1696 1.6 christos SIMD_INSN ("shsub", 0xe202400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1697 1.6 christos SIMD_INSN ("sqsub", 0xe202c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1698 1.6 christos SIMD_INSN ("cmgt", 0xe203400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1699 1.6 christos SIMD_INSN ("cmge", 0xe203c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1700 1.6 christos SIMD_INSN ("sshl", 0xe204400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1701 1.6 christos SIMD_INSN ("sqshl", 0xe204c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1702 1.6 christos SIMD_INSN ("srshl", 0xe205400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1703 1.6 christos SIMD_INSN ("sqrshl", 0xe205c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1704 1.6 christos SIMD_INSN ("smax", 0xe206400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1705 1.6 christos SIMD_INSN ("smin", 0xe206c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1706 1.6 christos SIMD_INSN ("sabd", 0xe207400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1707 1.6 christos SIMD_INSN ("saba", 0xe207c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1708 1.6 christos SIMD_INSN ("add", 0xe208400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1709 1.6 christos SIMD_INSN ("cmtst", 0xe208c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1710 1.6 christos SIMD_INSN ("mla", 0xe209400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1711 1.6 christos SIMD_INSN ("mul", 0xe209c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1712 1.6 christos SIMD_INSN ("smaxp", 0xe20a400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1713 1.6 christos SIMD_INSN ("sminp", 0xe20ac00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1714 1.6 christos SIMD_INSN ("sqdmulh", 0xe20b400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEHS, F_SIZEQ),
1715 1.6 christos SIMD_INSN ("addp", 0xe20bc00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1716 1.6 christos SIMD_INSN ("fmaxnm", 0xe20c400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1717 1.6 christos SF16_INSN ("fmaxnm", 0xe400400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1718 1.6 christos SIMD_INSN ("fmla", 0xe20cc00, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1719 1.6 christos SF16_INSN ("fmla", 0xe400c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1720 1.6 christos SIMD_INSN ("fadd", 0xe20d400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1721 1.6 christos SF16_INSN ("fadd", 0xe401400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1722 1.6 christos SIMD_INSN ("fmulx", 0xe20dc00, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1723 1.6 christos SF16_INSN ("fmulx", 0xe401c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1724 1.6 christos SIMD_INSN ("fcmeq", 0xe20e400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1725 1.6 christos SF16_INSN ("fcmeq", 0xe402400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1726 1.6 christos SIMD_INSN ("fmax", 0xe20f400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1727 1.6 christos SF16_INSN ("fmax", 0xe403400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1728 1.6 christos SIMD_INSN ("frecps", 0xe20fc00, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1729 1.6 christos SF16_INSN ("frecps", 0xe403c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1730 1.6 christos SIMD_INSN ("and", 0xe201c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ),
1731 1.6 christos SIMD_INSN ("bic", 0xe601c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ),
1732 1.6 christos SIMD_INSN ("fminnm", 0xea0c400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1733 1.6 christos SF16_INSN ("fminnm", 0xec00400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1734 1.6 christos SIMD_INSN ("fmls", 0xea0cc00, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1735 1.6 christos SF16_INSN ("fmls", 0xec00c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1736 1.6 christos SIMD_INSN ("fsub", 0xea0d400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1737 1.6 christos SF16_INSN ("fsub", 0xec01400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1738 1.6 christos SIMD_INSN ("fmin", 0xea0f400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1739 1.6 christos SF16_INSN ("fmin", 0xec03400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1740 1.6 christos SIMD_INSN ("frsqrts", 0xea0fc00, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1741 1.6 christos SF16_INSN ("frsqrts", 0xec03c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1742 1.6 christos SIMD_INSN ("orr", 0xea01c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_HAS_ALIAS | F_SIZEQ),
1743 1.6 christos {"mov", 0xea01c00, 0xbfe0fc00, asimdsame, OP_MOV_V, SIMD, OP2 (Vd, Vn), QL_V2SAMEB, F_ALIAS | F_CONV, NULL},
1744 1.6 christos SIMD_INSN ("orn", 0xee01c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ),
1745 1.6 christos SIMD_INSN ("uhadd", 0x2e200400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1746 1.6 christos SIMD_INSN ("uqadd", 0x2e200c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1747 1.6 christos SIMD_INSN ("urhadd", 0x2e201400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1748 1.6 christos SIMD_INSN ("uhsub", 0x2e202400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1749 1.6 christos SIMD_INSN ("uqsub", 0x2e202c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1750 1.6 christos SIMD_INSN ("cmhi", 0x2e203400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1751 1.6 christos SIMD_INSN ("cmhs", 0x2e203c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1752 1.6 christos SIMD_INSN ("ushl", 0x2e204400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1753 1.6 christos SIMD_INSN ("uqshl", 0x2e204c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1754 1.6 christos SIMD_INSN ("urshl", 0x2e205400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1755 1.6 christos SIMD_INSN ("uqrshl", 0x2e205c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1756 1.6 christos SIMD_INSN ("umax", 0x2e206400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1757 1.6 christos SIMD_INSN ("umin", 0x2e206c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1758 1.6 christos SIMD_INSN ("uabd", 0x2e207400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1759 1.6 christos SIMD_INSN ("uaba", 0x2e207c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1760 1.6 christos SIMD_INSN ("sub", 0x2e208400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1761 1.6 christos SIMD_INSN ("cmeq", 0x2e208c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ),
1762 1.6 christos SIMD_INSN ("mls", 0x2e209400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1763 1.6 christos SIMD_INSN ("pmul", 0x2e209c00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ),
1764 1.6 christos SIMD_INSN ("umaxp", 0x2e20a400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1765 1.6 christos SIMD_INSN ("uminp", 0x2e20ac00, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ),
1766 1.6 christos SIMD_INSN ("sqrdmulh", 0x2e20b400, 0xbf20fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEHS, F_SIZEQ),
1767 1.6 christos SIMD_INSN ("fmaxnmp", 0x2e20c400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1768 1.6 christos SF16_INSN ("fmaxnmp", 0x2e400400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1769 1.6 christos SIMD_INSN ("faddp", 0x2e20d400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1770 1.6 christos SF16_INSN ("faddp", 0x2e401400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1771 1.6 christos SIMD_INSN ("fmul", 0x2e20dc00, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1772 1.6 christos SF16_INSN ("fmul", 0x2e401c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1773 1.6 christos SIMD_INSN ("fcmge", 0x2e20e400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1774 1.6 christos SF16_INSN ("fcmge", 0x2e402400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1775 1.6 christos SIMD_INSN ("facge", 0x2e20ec00, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1776 1.6 christos SF16_INSN ("facge", 0x2e402c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1777 1.6 christos SIMD_INSN ("fmaxp", 0x2e20f400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1778 1.6 christos SF16_INSN ("fmaxp", 0x2e403400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1779 1.6 christos SIMD_INSN ("fdiv", 0x2e20fc00, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1780 1.6 christos SF16_INSN ("fdiv", 0x2e403c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1781 1.6 christos SIMD_INSN ("eor", 0x2e201c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ),
1782 1.6 christos SIMD_INSN ("bsl", 0x2e601c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ),
1783 1.6 christos SIMD_INSN ("fminnmp", 0x2ea0c400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1784 1.6 christos SF16_INSN ("fminnmp", 0x2ec00400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1785 1.6 christos SIMD_INSN ("fabd", 0x2ea0d400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1786 1.6 christos SF16_INSN ("fabd", 0x2ec01400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1787 1.6 christos SIMD_INSN ("fcmgt", 0x2ea0e400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1788 1.6 christos SF16_INSN ("fcmgt", 0x2ec02400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1789 1.6 christos SIMD_INSN ("facgt", 0x2ea0ec00, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1790 1.6 christos SF16_INSN ("facgt", 0x2ec02c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1791 1.6 christos SIMD_INSN ("fminp", 0x2ea0f400, 0xbfa0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ),
1792 1.6 christos SF16_INSN ("fminp", 0x2ec03400, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEH, F_SIZEQ),
1793 1.6 christos SIMD_INSN ("bit", 0x2ea01c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ),
1794 1.5 christos SIMD_INSN ("bif", 0x2ee01c00, 0xbfe0fc00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ),
1795 1.6 christos /* AdvSIMD three same extension. */
1796 1.6 christos RDMA_INSN ("sqrdmlah",0x2e008400, 0xbf20fe00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEHS, F_SIZEQ),
1797 1.1 christos RDMA_INSN ("sqrdmlsh",0x2e008c00, 0xbf20fe00, asimdsame, OP3 (Vd, Vn, Vm), QL_V3SAMEHS, F_SIZEQ),
1798 1.6 christos /* AdvSIMD shift by immediate. */
1799 1.6 christos SIMD_INSN ("sshr", 0xf000400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0),
1800 1.6 christos SIMD_INSN ("ssra", 0xf001400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0),
1801 1.6 christos SIMD_INSN ("srshr", 0xf002400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0),
1802 1.6 christos SIMD_INSN ("srsra", 0xf003400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0),
1803 1.6 christos SIMD_INSN ("shl", 0xf005400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFT, 0),
1804 1.6 christos SIMD_INSN ("sqshl", 0xf007400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFT, 0),
1805 1.6 christos SIMD_INSN ("shrn", 0xf008400, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0),
1806 1.6 christos SIMD_INSN ("shrn2", 0x4f008400, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0),
1807 1.6 christos SIMD_INSN ("rshrn", 0xf008c00, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0),
1808 1.6 christos SIMD_INSN ("rshrn2", 0x4f008c00, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0),
1809 1.6 christos SIMD_INSN ("sqshrn", 0xf009400, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0),
1810 1.6 christos SIMD_INSN ("sqshrn2", 0x4f009400, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0),
1811 1.6 christos SIMD_INSN ("sqrshrn", 0xf009c00, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0),
1812 1.6 christos SIMD_INSN ("sqrshrn2", 0x4f009c00, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0),
1813 1.6 christos SIMD_INSN ("sshll", 0xf00a400, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL, F_HAS_ALIAS),
1814 1.6 christos {"sxtl", 0xf00a400, 0xff87fc00, asimdshf, OP_SXTL, SIMD, OP2 (Vd, Vn), QL_V2LONGBHS, F_ALIAS | F_CONV, NULL},
1815 1.6 christos SIMD_INSN ("sshll2", 0x4f00a400, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL2, F_HAS_ALIAS),
1816 1.6 christos {"sxtl2", 0x4f00a400, 0xff87fc00, asimdshf, OP_SXTL2, SIMD, OP2 (Vd, Vn), QL_V2LONGBHS2, F_ALIAS | F_CONV, NULL},
1817 1.6 christos SIMD_INSN ("scvtf", 0xf00e400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_SD, 0),
1818 1.6 christos SF16_INSN ("scvtf", 0xf10e400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_H, 0),
1819 1.6 christos SIMD_INSN ("fcvtzs", 0xf00fc00, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_SD, 0),
1820 1.6 christos SF16_INSN ("fcvtzs", 0xf10fc00, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_H, 0),
1821 1.6 christos SIMD_INSN ("ushr", 0x2f000400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0),
1822 1.6 christos SIMD_INSN ("usra", 0x2f001400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0),
1823 1.6 christos SIMD_INSN ("urshr", 0x2f002400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0),
1824 1.6 christos SIMD_INSN ("ursra", 0x2f003400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0),
1825 1.6 christos SIMD_INSN ("sri", 0x2f004400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0),
1826 1.6 christos SIMD_INSN ("sli", 0x2f005400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFT, 0),
1827 1.6 christos SIMD_INSN ("sqshlu", 0x2f006400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFT, 0),
1828 1.6 christos SIMD_INSN ("uqshl", 0x2f007400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFT, 0),
1829 1.6 christos SIMD_INSN ("sqshrun", 0x2f008400, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0),
1830 1.6 christos SIMD_INSN ("sqshrun2", 0x6f008400, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0),
1831 1.6 christos SIMD_INSN ("sqrshrun", 0x2f008c00, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0),
1832 1.6 christos SIMD_INSN ("sqrshrun2", 0x6f008c00, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0),
1833 1.6 christos SIMD_INSN ("uqshrn", 0x2f009400, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0),
1834 1.6 christos SIMD_INSN ("uqshrn2", 0x6f009400, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0),
1835 1.6 christos SIMD_INSN ("uqrshrn", 0x2f009c00, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0),
1836 1.6 christos SIMD_INSN ("uqrshrn2", 0x6f009c00, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0),
1837 1.6 christos SIMD_INSN ("ushll", 0x2f00a400, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL, F_HAS_ALIAS),
1838 1.6 christos {"uxtl", 0x2f00a400, 0xff87fc00, asimdshf, OP_UXTL, SIMD, OP2 (Vd, Vn), QL_V2LONGBHS, F_ALIAS | F_CONV, NULL},
1839 1.6 christos SIMD_INSN ("ushll2", 0x6f00a400, 0xff80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL2, F_HAS_ALIAS),
1840 1.6 christos {"uxtl2", 0x6f00a400, 0xff87fc00, asimdshf, OP_UXTL2, SIMD, OP2 (Vd, Vn), QL_V2LONGBHS2, F_ALIAS | F_CONV, NULL},
1841 1.6 christos SIMD_INSN ("ucvtf", 0x2f00e400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_SD, 0),
1842 1.6 christos SF16_INSN ("ucvtf", 0x2f10e400, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_H, 0),
1843 1.6 christos SIMD_INSN ("fcvtzu", 0x2f00fc00, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_SD, 0),
1844 1.1 christos SF16_INSN ("fcvtzu", 0x2f10fc00, 0xbf80fc00, asimdshf, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_H, 0),
1845 1.6 christos /* AdvSIMD TBL/TBX. */
1846 1.6 christos SIMD_INSN ("tbl", 0xe000000, 0xbfe09c00, asimdtbl, OP3 (Vd, LVn, Vm), QL_TABLE, F_SIZEQ),
1847 1.1 christos SIMD_INSN ("tbx", 0xe001000, 0xbfe09c00, asimdtbl, OP3 (Vd, LVn, Vm), QL_TABLE, F_SIZEQ),
1848 1.6 christos /* AdvSIMD scalar three different. */
1849 1.6 christos SIMD_INSN ("sqdmlal", 0x5e209000, 0xff20fc00, asisddiff, OP3 (Sd, Sn, Sm), QL_SISDL_HS, F_SSIZE),
1850 1.6 christos SIMD_INSN ("sqdmlsl", 0x5e20b000, 0xff20fc00, asisddiff, OP3 (Sd, Sn, Sm), QL_SISDL_HS, F_SSIZE),
1851 1.1 christos SIMD_INSN ("sqdmull", 0x5e20d000, 0xff20fc00, asisddiff, OP3 (Sd, Sn, Sm), QL_SISDL_HS, F_SSIZE),
1852 1.6 christos /* AdvSIMD scalar x indexed element. */
1853 1.6 christos SIMD_INSN ("sqdmlal", 0x5f003000, 0xff00f400, asisdelem, OP3 (Sd, Sn, Em), QL_SISDL_HS, F_SSIZE),
1854 1.6 christos SIMD_INSN ("sqdmlsl", 0x5f007000, 0xff00f400, asisdelem, OP3 (Sd, Sn, Em), QL_SISDL_HS, F_SSIZE),
1855 1.6 christos SIMD_INSN ("sqdmull", 0x5f00b000, 0xff00f400, asisdelem, OP3 (Sd, Sn, Em), QL_SISDL_HS, F_SSIZE),
1856 1.6 christos SIMD_INSN ("sqdmulh", 0x5f00c000, 0xff00f400, asisdelem, OP3 (Sd, Sn, Em), QL_SISD_HS, F_SSIZE),
1857 1.6 christos SIMD_INSN ("sqrdmulh", 0x5f00d000, 0xff00f400, asisdelem, OP3 (Sd, Sn, Em), QL_SISD_HS, F_SSIZE),
1858 1.6 christos SIMD_INSN ("fmla", 0x5f801000, 0xff80f400, asisdelem, OP3 (Sd, Sn, Em), QL_FP3, F_SSIZE),
1859 1.6 christos SF16_INSN ("fmla", 0x5f001000, 0xffc0f400, asisdelem, OP3 (Sd, Sn, Em), QL_FP3_H, F_SSIZE),
1860 1.6 christos SIMD_INSN ("fmls", 0x5f805000, 0xff80f400, asisdelem, OP3 (Sd, Sn, Em), QL_FP3, F_SSIZE),
1861 1.6 christos SF16_INSN ("fmls", 0x5f005000, 0xffc0f400, asisdelem, OP3 (Sd, Sn, Em), QL_FP3_H, F_SSIZE),
1862 1.6 christos SIMD_INSN ("fmul", 0x5f809000, 0xff80f400, asisdelem, OP3 (Sd, Sn, Em), QL_FP3, F_SSIZE),
1863 1.6 christos SF16_INSN ("fmul", 0x5f009000, 0xffc0f400, asisdelem, OP3 (Sd, Sn, Em), QL_FP3_H, F_SSIZE),
1864 1.6 christos SIMD_INSN ("fmulx", 0x7f809000, 0xff80f400, asisdelem, OP3 (Sd, Sn, Em), QL_FP3, F_SSIZE),
1865 1.6 christos SF16_INSN ("fmulx", 0x7f009000, 0xffc0f400, asisdelem, OP3 (Sd, Sn, Em), QL_FP3_H, F_SSIZE),
1866 1.6 christos RDMA_INSN ("sqrdmlah", 0x7f00d000, 0xff00f400, asisdelem, OP3 (Sd, Sn, Em), QL_SISD_HS, F_SSIZE),
1867 1.1 christos RDMA_INSN ("sqrdmlsh", 0x7f00f000, 0xff00f400, asisdelem, OP3 (Sd, Sn, Em), QL_SISD_HS, F_SSIZE),
1868 1.6 christos /* AdvSIMD load/store multiple structures. */
1869 1.6 christos SIMD_INSN ("st4", 0xc000000, 0xbfff0000, asisdlse, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST, F_SIZEQ | F_OD(4)),
1870 1.6 christos SIMD_INSN ("st1", 0xc000000, 0xbfff0000, asisdlse, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(1)),
1871 1.6 christos SIMD_INSN ("st2", 0xc000000, 0xbfff0000, asisdlse, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST, F_SIZEQ | F_OD(2)),
1872 1.6 christos SIMD_INSN ("st3", 0xc000000, 0xbfff0000, asisdlse, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST, F_SIZEQ | F_OD(3)),
1873 1.6 christos SIMD_INSN ("ld4", 0xc400000, 0xbfff0000, asisdlse, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST, F_SIZEQ | F_OD(4)),
1874 1.6 christos SIMD_INSN ("ld1", 0xc400000, 0xbfff0000, asisdlse, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(1)),
1875 1.6 christos SIMD_INSN ("ld2", 0xc400000, 0xbfff0000, asisdlse, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST, F_SIZEQ | F_OD(2)),
1876 1.1 christos SIMD_INSN ("ld3", 0xc400000, 0xbfff0000, asisdlse, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST, F_SIZEQ | F_OD(3)),
1877 1.6 christos /* AdvSIMD load/store multiple structures (post-indexed). */
1878 1.6 christos SIMD_INSN ("st4", 0xc800000, 0xbfe00000, asisdlsep, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST, F_SIZEQ | F_OD(4)),
1879 1.6 christos SIMD_INSN ("st1", 0xc800000, 0xbfe00000, asisdlsep, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(1)),
1880 1.6 christos SIMD_INSN ("st2", 0xc800000, 0xbfe00000, asisdlsep, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST, F_SIZEQ | F_OD(2)),
1881 1.6 christos SIMD_INSN ("st3", 0xc800000, 0xbfe00000, asisdlsep, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST, F_SIZEQ | F_OD(3)),
1882 1.6 christos SIMD_INSN ("ld4", 0xcc00000, 0xbfe00000, asisdlsep, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST, F_SIZEQ | F_OD(4)),
1883 1.6 christos SIMD_INSN ("ld1", 0xcc00000, 0xbfe00000, asisdlsep, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(1)),
1884 1.6 christos SIMD_INSN ("ld2", 0xcc00000, 0xbfe00000, asisdlsep, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST, F_SIZEQ | F_OD(2)),
1885 1.1 christos SIMD_INSN ("ld3", 0xcc00000, 0xbfe00000, asisdlsep, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST, F_SIZEQ | F_OD(3)),
1886 1.6 christos /* AdvSIMD load/store single structure. */
1887 1.6 christos SIMD_INSN ("st1", 0xd000000, 0xbfff2000, asisdlso, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(1)),
1888 1.6 christos SIMD_INSN ("st3", 0xd002000, 0xbfff2000, asisdlso, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(3)),
1889 1.6 christos SIMD_INSN ("st2", 0xd200000, 0xbfff2000, asisdlso, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(2)),
1890 1.6 christos SIMD_INSN ("st4", 0xd202000, 0xbfff2000, asisdlso, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(4)),
1891 1.6 christos SIMD_INSN ("ld1", 0xd400000, 0xbfff2000, asisdlso, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(1)),
1892 1.6 christos SIMD_INSN ("ld3", 0xd402000, 0xbfff2000, asisdlso, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(3)),
1893 1.6 christos SIMD_INSN ("ld1r", 0xd40c000, 0xbfffe000, asisdlso, OP2 (LVt_AL, SIMD_ADDR_SIMPLE), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(1)),
1894 1.6 christos SIMD_INSN ("ld3r", 0xd40e000, 0xbfffe000, asisdlso, OP2 (LVt_AL, SIMD_ADDR_SIMPLE), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(3)),
1895 1.6 christos SIMD_INSN ("ld2", 0xd600000, 0xbfff2000, asisdlso, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(2)),
1896 1.6 christos SIMD_INSN ("ld4", 0xd602000, 0xbfff2000, asisdlso, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(4)),
1897 1.6 christos SIMD_INSN ("ld2r", 0xd60c000, 0xbfffe000, asisdlso, OP2 (LVt_AL, SIMD_ADDR_SIMPLE), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(2)),
1898 1.1 christos SIMD_INSN ("ld4r", 0xd60e000, 0xbfffe000, asisdlso, OP2 (LVt_AL, SIMD_ADDR_SIMPLE), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(4)),
1899 1.6 christos /* AdvSIMD load/store single structure (post-indexed). */
1900 1.6 christos SIMD_INSN ("st1", 0xd800000, 0xbfe02000, asisdlsop, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(1)),
1901 1.6 christos SIMD_INSN ("st3", 0xd802000, 0xbfe02000, asisdlsop, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(3)),
1902 1.6 christos SIMD_INSN ("st2", 0xda00000, 0xbfe02000, asisdlsop, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(2)),
1903 1.6 christos SIMD_INSN ("st4", 0xda02000, 0xbfe02000, asisdlsop, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(4)),
1904 1.6 christos SIMD_INSN ("ld1", 0xdc00000, 0xbfe02000, asisdlsop, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(1)),
1905 1.6 christos SIMD_INSN ("ld3", 0xdc02000, 0xbfe02000, asisdlsop, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(3)),
1906 1.6 christos SIMD_INSN ("ld1r", 0xdc0c000, 0xbfe0e000, asisdlsop, OP2 (LVt_AL, SIMD_ADDR_POST), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(1)),
1907 1.6 christos SIMD_INSN ("ld3r", 0xdc0e000, 0xbfe0e000, asisdlsop, OP2 (LVt_AL, SIMD_ADDR_POST), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(3)),
1908 1.6 christos SIMD_INSN ("ld2", 0xde00000, 0xbfe02000, asisdlsop, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(2)),
1909 1.6 christos SIMD_INSN ("ld4", 0xde02000, 0xbfe02000, asisdlsop, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(4)),
1910 1.6 christos SIMD_INSN ("ld2r", 0xde0c000, 0xbfe0e000, asisdlsop, OP2 (LVt_AL, SIMD_ADDR_POST), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(2)),
1911 1.1 christos SIMD_INSN ("ld4r", 0xde0e000, 0xbfe0e000, asisdlsop, OP2 (LVt_AL, SIMD_ADDR_POST), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(4)),
1912 1.6 christos /* AdvSIMD scalar two-reg misc. */
1913 1.6 christos SIMD_INSN ("suqadd", 0x5e203800, 0xff3ffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAME, F_SSIZE),
1914 1.6 christos SIMD_INSN ("sqabs", 0x5e207800, 0xff3ffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAME, F_SSIZE),
1915 1.6 christos SIMD_INSN ("cmgt", 0x5e208800, 0xff3ffc00, asisdmisc, OP3 (Sd, Sn, IMM0), QL_SISD_CMP_0, F_SSIZE),
1916 1.6 christos SIMD_INSN ("cmeq", 0x5e209800, 0xff3ffc00, asisdmisc, OP3 (Sd, Sn, IMM0), QL_SISD_CMP_0, F_SSIZE),
1917 1.6 christos SIMD_INSN ("cmlt", 0x5e20a800, 0xff3ffc00, asisdmisc, OP3 (Sd, Sn, IMM0), QL_SISD_CMP_0, F_SSIZE),
1918 1.6 christos SIMD_INSN ("abs", 0x5e20b800, 0xff3ffc00, asisdmisc, OP2 (Sd, Sn), QL_2SAMED, F_SSIZE),
1919 1.6 christos SIMD_INSN ("sqxtn", 0x5e214800, 0xff3ffc00, asisdmisc, OP2 (Sd, Sn), QL_SISD_NARROW, F_SSIZE),
1920 1.6 christos SIMD_INSN ("fcvtns", 0x5e21a800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1921 1.6 christos SF16_INSN ("fcvtns", 0x5e79a800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1922 1.6 christos SIMD_INSN ("fcvtms", 0x5e21b800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1923 1.6 christos SF16_INSN ("fcvtms", 0x5e79b800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1924 1.6 christos SIMD_INSN ("fcvtas", 0x5e21c800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1925 1.6 christos SF16_INSN ("fcvtas", 0x5e79c800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1926 1.6 christos SIMD_INSN ("scvtf", 0x5e21d800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1927 1.6 christos SF16_INSN ("scvtf", 0x5e79d800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1928 1.6 christos SIMD_INSN ("fcmgt", 0x5ea0c800, 0xffbffc00, asisdmisc, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_0, F_SSIZE),
1929 1.6 christos SF16_INSN ("fcmgt", 0x5ef8c800, 0xfffffc00, asisdmisc, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_H_0, F_SSIZE),
1930 1.6 christos SIMD_INSN ("fcmeq", 0x5ea0d800, 0xffbffc00, asisdmisc, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_0, F_SSIZE),
1931 1.6 christos SF16_INSN ("fcmeq", 0x5ef8d800, 0xfffffc00, asisdmisc, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_H_0, F_SSIZE),
1932 1.6 christos SIMD_INSN ("fcmlt", 0x5ea0e800, 0xffbffc00, asisdmisc, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_0, F_SSIZE),
1933 1.6 christos SF16_INSN ("fcmlt", 0x5ef8e800, 0xfffffc00, asisdmisc, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_H_0, F_SSIZE),
1934 1.6 christos SIMD_INSN ("fcvtps", 0x5ea1a800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1935 1.6 christos SF16_INSN ("fcvtps", 0x5ef9a800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1936 1.6 christos SIMD_INSN ("fcvtzs", 0x5ea1b800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1937 1.6 christos SF16_INSN ("fcvtzs", 0x5ef9b800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1938 1.6 christos SIMD_INSN ("frecpe", 0x5ea1d800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1939 1.6 christos SF16_INSN ("frecpe", 0x5ef9d800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1940 1.6 christos SIMD_INSN ("frecpx", 0x5ea1f800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1941 1.6 christos SF16_INSN ("frecpx", 0x5ef9f800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1942 1.6 christos SIMD_INSN ("usqadd", 0x7e203800, 0xff3ffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAME, F_SSIZE),
1943 1.6 christos SIMD_INSN ("sqneg", 0x7e207800, 0xff3ffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAME, F_SSIZE),
1944 1.6 christos SIMD_INSN ("cmge", 0x7e208800, 0xff3ffc00, asisdmisc, OP3 (Sd, Sn, IMM0), QL_SISD_CMP_0, F_SSIZE),
1945 1.6 christos SIMD_INSN ("cmle", 0x7e209800, 0xff3ffc00, asisdmisc, OP3 (Sd, Sn, IMM0), QL_SISD_CMP_0, F_SSIZE),
1946 1.6 christos SIMD_INSN ("neg", 0x7e20b800, 0xff3ffc00, asisdmisc, OP2 (Sd, Sn), QL_2SAMED, F_SSIZE),
1947 1.6 christos SIMD_INSN ("sqxtun", 0x7e212800, 0xff3ffc00, asisdmisc, OP2 (Sd, Sn), QL_SISD_NARROW, F_SSIZE),
1948 1.6 christos SIMD_INSN ("uqxtn", 0x7e214800, 0xff3ffc00, asisdmisc, OP2 (Sd, Sn), QL_SISD_NARROW, F_SSIZE),
1949 1.6 christos {"fcvtxn", 0x7e216800, 0xffbffc00, asisdmisc, OP_FCVTXN_S, SIMD, OP2 (Sd, Sn), QL_SISD_NARROW_S, F_MISC, NULL},
1950 1.6 christos SIMD_INSN ("fcvtnu", 0x7e21a800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1951 1.6 christos SF16_INSN ("fcvtnu", 0x7e79a800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1952 1.6 christos SIMD_INSN ("fcvtmu", 0x7e21b800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1953 1.6 christos SF16_INSN ("fcvtmu", 0x7e79b800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1954 1.6 christos SIMD_INSN ("fcvtau", 0x7e21c800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1955 1.6 christos SF16_INSN ("fcvtau", 0x7e79c800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1956 1.6 christos SIMD_INSN ("ucvtf", 0x7e21d800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1957 1.6 christos SF16_INSN ("ucvtf", 0x7e79d800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1958 1.6 christos SIMD_INSN ("fcmge", 0x7ea0c800, 0xffbffc00, asisdmisc, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_0, F_SSIZE),
1959 1.6 christos SF16_INSN ("fcmge", 0x7ef8c800, 0xfffffc00, asisdmisc, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_H_0, F_SSIZE),
1960 1.6 christos SIMD_INSN ("fcmle", 0x7ea0d800, 0xffbffc00, asisdmisc, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_0, F_SSIZE),
1961 1.6 christos SF16_INSN ("fcmle", 0x7ef8d800, 0xfffffc00, asisdmisc, OP3 (Sd, Sn, FPIMM0), QL_SISD_FCMP_H_0, F_SSIZE),
1962 1.6 christos SIMD_INSN ("fcvtpu", 0x7ea1a800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1963 1.6 christos SF16_INSN ("fcvtpu", 0x7ef9a800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_SISD_FCMP_H_0, F_SSIZE),
1964 1.6 christos SIMD_INSN ("fcvtzu", 0x7ea1b800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1965 1.6 christos SF16_INSN ("fcvtzu", 0x7ef9b800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1966 1.6 christos SIMD_INSN ("frsqrte", 0x7ea1d800, 0xffbffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE),
1967 1.1 christos SF16_INSN ("frsqrte", 0x7ef9d800, 0xfffffc00, asisdmisc, OP2 (Sd, Sn), QL_S_2SAMEH, F_SSIZE),
1968 1.6 christos /* AdvSIMD scalar copy. */
1969 1.6 christos SIMD_INSN ("dup", 0x5e000400, 0xffe0fc00, asisdone, OP2 (Sd, En), QL_S_2SAME, F_HAS_ALIAS),
1970 1.1 christos SIMD_INSN ("mov", 0x5e000400, 0xffe0fc00, asisdone, OP2 (Sd, En), QL_S_2SAME, F_ALIAS),
1971 1.6 christos /* AdvSIMD scalar pairwise. */
1972 1.6 christos SIMD_INSN ("addp", 0x5e31b800, 0xff3ffc00, asisdpair, OP2 (Sd, Vn), QL_SISD_PAIR_D, F_SIZEQ),
1973 1.6 christos SIMD_INSN ("fmaxnmp", 0x7e30c800, 0xffbffc00, asisdpair, OP2 (Sd, Vn), QL_SISD_PAIR, F_SIZEQ),
1974 1.6 christos SF16_INSN ("fmaxnmp", 0x5e30c800, 0xfffffc00, asisdpair, OP2 (Sd, Vn), QL_SISD_PAIR_H, F_SIZEQ),
1975 1.6 christos SIMD_INSN ("faddp", 0x7e30d800, 0xffbffc00, asisdpair, OP2 (Sd, Vn), QL_SISD_PAIR, F_SIZEQ),
1976 1.6 christos SF16_INSN ("faddp", 0x5e30d800, 0xfffffc00, asisdpair, OP2 (Sd, Vn), QL_SISD_PAIR_H, F_SIZEQ),
1977 1.6 christos SIMD_INSN ("fmaxp", 0x7e30f800, 0xffbffc00, asisdpair, OP2 (Sd, Vn), QL_SISD_PAIR, F_SIZEQ),
1978 1.6 christos SF16_INSN ("fmaxp", 0x5e30f800, 0xfffffc00, asisdpair, OP2 (Sd, Vn), QL_SISD_PAIR_H, F_SIZEQ),
1979 1.6 christos SIMD_INSN ("fminnmp", 0x7eb0c800, 0xffbffc00, asisdpair, OP2 (Sd, Vn), QL_SISD_PAIR, F_SIZEQ),
1980 1.6 christos SF16_INSN ("fminnmp", 0x5eb0c800, 0xfffffc00, asisdpair, OP2 (Sd, Vn), QL_SISD_PAIR_H, F_SIZEQ),
1981 1.6 christos SIMD_INSN ("fminp", 0x7eb0f800, 0xffbffc00, asisdpair, OP2 (Sd, Vn), QL_SISD_PAIR, F_SIZEQ),
1982 1.1 christos SF16_INSN ("fminp", 0x5eb0f800, 0xfffffc00, asisdpair, OP2 (Sd, Vn), QL_SISD_PAIR_H, F_SIZEQ),
1983 1.6 christos /* AdvSIMD scalar three same. */
1984 1.6 christos SIMD_INSN ("sqadd", 0x5e200c00, 0xff20fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE),
1985 1.6 christos SIMD_INSN ("sqsub", 0x5e202c00, 0xff20fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE),
1986 1.6 christos SIMD_INSN ("sqshl", 0x5e204c00, 0xff20fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE),
1987 1.6 christos SIMD_INSN ("sqrshl", 0x5e205c00, 0xff20fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE),
1988 1.6 christos SIMD_INSN ("sqdmulh", 0x5e20b400, 0xff20fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_SISD_HS, F_SSIZE),
1989 1.6 christos SIMD_INSN ("fmulx", 0x5e20dc00, 0xffa0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE),
1990 1.6 christos SF16_INSN ("fmulx", 0x5e401c00, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE),
1991 1.6 christos SIMD_INSN ("fcmeq", 0x5e20e400, 0xffa0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE),
1992 1.6 christos SF16_INSN ("fcmeq", 0x5e402400, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE),
1993 1.6 christos SIMD_INSN ("frecps", 0x5e20fc00, 0xffa0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE),
1994 1.6 christos SF16_INSN ("frecps", 0x5e403c00, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE),
1995 1.6 christos SIMD_INSN ("frsqrts", 0x5ea0fc00, 0xffa0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE),
1996 1.6 christos SF16_INSN ("frsqrts", 0x5ec03c00, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE),
1997 1.6 christos SIMD_INSN ("cmgt", 0x5ee03400, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE),
1998 1.6 christos SIMD_INSN ("cmge", 0x5ee03c00, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE),
1999 1.6 christos SIMD_INSN ("sshl", 0x5ee04400, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE),
2000 1.6 christos SIMD_INSN ("srshl", 0x5ee05400, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE),
2001 1.6 christos SIMD_INSN ("add", 0x5ee08400, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE),
2002 1.6 christos SIMD_INSN ("cmtst", 0x5ee08c00, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE),
2003 1.6 christos SIMD_INSN ("uqadd", 0x7e200c00, 0xff20fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE),
2004 1.6 christos SIMD_INSN ("uqsub", 0x7e202c00, 0xff20fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE),
2005 1.6 christos SIMD_INSN ("uqshl", 0x7e204c00, 0xff20fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE),
2006 1.6 christos SIMD_INSN ("uqrshl", 0x7e205c00, 0xff20fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE),
2007 1.6 christos SIMD_INSN ("sqrdmulh", 0x7e20b400, 0xff20fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_SISD_HS, F_SSIZE),
2008 1.6 christos SIMD_INSN ("fcmge", 0x7e20e400, 0xffa0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE),
2009 1.6 christos SF16_INSN ("fcmge", 0x7e402400, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE),
2010 1.6 christos SIMD_INSN ("facge", 0x7e20ec00, 0xffa0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE),
2011 1.6 christos SF16_INSN ("facge", 0x7e402c00, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE),
2012 1.6 christos SIMD_INSN ("fabd", 0x7ea0d400, 0xffa0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE),
2013 1.6 christos SF16_INSN ("fabd", 0x7ec01400, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE),
2014 1.6 christos SIMD_INSN ("fcmgt", 0x7ea0e400, 0xffa0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE),
2015 1.6 christos SF16_INSN ("fcmgt", 0x7ec02400, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE),
2016 1.6 christos SIMD_INSN ("facgt", 0x7ea0ec00, 0xffa0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE),
2017 1.6 christos SF16_INSN ("facgt", 0x7ec02c00, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE),
2018 1.6 christos SIMD_INSN ("cmhi", 0x7ee03400, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE),
2019 1.6 christos SIMD_INSN ("cmhs", 0x7ee03c00, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE),
2020 1.6 christos SIMD_INSN ("ushl", 0x7ee04400, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE),
2021 1.6 christos SIMD_INSN ("urshl", 0x7ee05400, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE),
2022 1.6 christos SIMD_INSN ("sub", 0x7ee08400, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE),
2023 1.5 christos SIMD_INSN ("cmeq", 0x7ee08c00, 0xffe0fc00, asisdsame, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE),
2024 1.6 christos /* AdvSIMDs scalar three same extension. */
2025 1.6 christos RDMA_INSN ("sqrdmlah", 0x7e008400, 0xff20fc00, asimdsame, OP3 (Sd, Sn, Sm), QL_SISD_HS, F_SSIZE),
2026 1.1 christos RDMA_INSN ("sqrdmlsh", 0x7e008c00, 0xff20fc00, asimdsame, OP3 (Sd, Sn, Sm), QL_SISD_HS, F_SSIZE),
2027 1.6 christos /* AdvSIMD scalar shift by immediate. */
2028 1.6 christos SIMD_INSN ("sshr", 0x5f000400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0),
2029 1.6 christos SIMD_INSN ("ssra", 0x5f001400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0),
2030 1.6 christos SIMD_INSN ("srshr", 0x5f002400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0),
2031 1.6 christos SIMD_INSN ("srsra", 0x5f003400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0),
2032 1.6 christos SIMD_INSN ("shl", 0x5f005400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSL), QL_SSHIFT_D, 0),
2033 1.6 christos SIMD_INSN ("sqshl", 0x5f007400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSL), QL_SSHIFT, 0),
2034 1.6 christos SIMD_INSN ("sqshrn", 0x5f009400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFTN, 0),
2035 1.6 christos SIMD_INSN ("sqrshrn", 0x5f009c00, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFTN, 0),
2036 1.6 christos SIMD_INSN ("scvtf", 0x5f00e400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_SD, 0),
2037 1.6 christos SF16_INSN ("scvtf", 0x5f10e400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_H, 0),
2038 1.6 christos SIMD_INSN ("fcvtzs", 0x5f00fc00, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_SD, 0),
2039 1.6 christos SF16_INSN ("fcvtzs", 0x5f10fc00, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_H, 0),
2040 1.6 christos SIMD_INSN ("ushr", 0x7f000400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0),
2041 1.6 christos SIMD_INSN ("usra", 0x7f001400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0),
2042 1.6 christos SIMD_INSN ("urshr", 0x7f002400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0),
2043 1.6 christos SIMD_INSN ("ursra", 0x7f003400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0),
2044 1.6 christos SIMD_INSN ("sri", 0x7f004400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0),
2045 1.6 christos SIMD_INSN ("sli", 0x7f005400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSL), QL_SSHIFT_D, 0),
2046 1.6 christos SIMD_INSN ("sqshlu", 0x7f006400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSL), QL_SSHIFT, 0),
2047 1.6 christos SIMD_INSN ("uqshl", 0x7f007400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSL), QL_SSHIFT, 0),
2048 1.6 christos SIMD_INSN ("sqshrun", 0x7f008400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFTN, 0),
2049 1.6 christos SIMD_INSN ("sqrshrun", 0x7f008c00, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFTN, 0),
2050 1.6 christos SIMD_INSN ("uqshrn", 0x7f009400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFTN, 0),
2051 1.6 christos SIMD_INSN ("uqrshrn", 0x7f009c00, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFTN, 0),
2052 1.6 christos SIMD_INSN ("ucvtf", 0x7f00e400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_SD, 0),
2053 1.6 christos SF16_INSN ("ucvtf", 0x7f10e400, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_H, 0),
2054 1.6 christos SIMD_INSN ("fcvtzu", 0x7f00fc00, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_SD, 0),
2055 1.1 christos SF16_INSN ("fcvtzu", 0x7f10fc00, 0xff80fc00, asisdshf, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_H, 0),
2056 1.6 christos /* Bitfield. */
2057 1.6 christos CORE_INSN ("sbfm", 0x13000000, 0x7f800000, bitfield, OP4 (Rd, Rn, IMMR, IMMS), QL_BF, F_HAS_ALIAS | F_SF | F_N),
2058 1.6 christos {"sbfiz", 0x13000000, 0x7f800000, bitfield, OP_SBFIZ, CORE, OP4 (Rd, Rn, IMM, WIDTH), QL_BF2, F_ALIAS | F_P1 | F_CONV, NULL},
2059 1.6 christos {"sbfx", 0x13000000, 0x7f800000, bitfield, OP_SBFX, CORE, OP4 (Rd, Rn, IMM, WIDTH), QL_BF2, F_ALIAS | F_P1 | F_CONV, NULL},
2060 1.6 christos CORE_INSN ("sxtb", 0x13001c00, 0x7fbffc00, bitfield, OP2 (Rd, Rn), QL_EXT, F_ALIAS | F_P3 | F_SF | F_N),
2061 1.6 christos CORE_INSN ("sxth", 0x13003c00, 0x7fbffc00, bitfield, OP2 (Rd, Rn), QL_EXT, F_ALIAS | F_P3 | F_SF | F_N),
2062 1.6 christos CORE_INSN ("sxtw", 0x93407c00, 0xfffffc00, bitfield, OP2 (Rd, Rn), QL_EXT_W, F_ALIAS | F_P3),
2063 1.6 christos {"asr", 0x13000000, 0x7f800000, bitfield, OP_ASR_IMM, CORE, OP3 (Rd, Rn, IMM), QL_SHIFT, F_ALIAS | F_P2 | F_CONV, NULL},
2064 1.6 christos CORE_INSN ("bfm", 0x33000000, 0x7f800000, bitfield, OP4 (Rd, Rn, IMMR, IMMS), QL_BF, F_HAS_ALIAS | F_SF | F_N),
2065 1.6 christos {"bfi", 0x33000000, 0x7f800000, bitfield, OP_BFI, CORE, OP4 (Rd, Rn, IMM, WIDTH), QL_BF2, F_ALIAS | F_P1 | F_CONV, NULL},
2066 1.6 christos {"bfc", 0x330003e0, 0x7f8003e0, bitfield, OP_BFC, ARMV8_2, OP3 (Rd, IMM, WIDTH), QL_BF1, F_ALIAS | F_P2 | F_CONV, NULL},
2067 1.6 christos {"bfxil", 0x33000000, 0x7f800000, bitfield, OP_BFXIL, CORE, OP4 (Rd, Rn, IMM, WIDTH), QL_BF2, F_ALIAS | F_P1 | F_CONV, NULL},
2068 1.6 christos CORE_INSN ("ubfm", 0x53000000, 0x7f800000, bitfield, OP4 (Rd, Rn, IMMR, IMMS), QL_BF, F_HAS_ALIAS | F_SF | F_N),
2069 1.6 christos {"ubfiz", 0x53000000, 0x7f800000, bitfield, OP_UBFIZ, CORE, OP4 (Rd, Rn, IMM, WIDTH), QL_BF2, F_ALIAS | F_P1 | F_CONV, NULL},
2070 1.6 christos {"ubfx", 0x53000000, 0x7f800000, bitfield, OP_UBFX, CORE, OP4 (Rd, Rn, IMM, WIDTH), QL_BF2, F_ALIAS | F_P1 | F_CONV, NULL},
2071 1.6 christos {"uxtb", 0x53001c00, 0xfffffc00, bitfield, OP_UXTB, CORE, OP2 (Rd, Rn), QL_I2SAMEW, F_ALIAS | F_P3, NULL},
2072 1.6 christos {"uxth", 0x53003c00, 0xfffffc00, bitfield, OP_UXTH, CORE, OP2 (Rd, Rn), QL_I2SAMEW, F_ALIAS | F_P3, NULL},
2073 1.6 christos {"lsl", 0x53000000, 0x7f800000, bitfield, OP_LSL_IMM, CORE, OP3 (Rd, Rn, IMM), QL_SHIFT, F_ALIAS | F_P2 | F_CONV, NULL},
2074 1.1 christos {"lsr", 0x53000000, 0x7f800000, bitfield, OP_LSR_IMM, CORE, OP3 (Rd, Rn, IMM), QL_SHIFT, F_ALIAS | F_P2 | F_CONV, NULL},
2075 1.6 christos /* Unconditional branch (immediate). */
2076 1.6 christos {"b", 0x14000000, 0xfc000000, branch_imm, OP_B, CORE, OP1 (ADDR_PCREL26), QL_PCREL_26, 0, NULL},
2077 1.1 christos {"bl", 0x94000000, 0xfc000000, branch_imm, OP_BL, CORE, OP1 (ADDR_PCREL26), QL_PCREL_26, 0, NULL},
2078 1.6 christos /* Unconditional branch (register). */
2079 1.6 christos CORE_INSN ("br", 0xd61f0000, 0xfffffc1f, branch_reg, OP1 (Rn), QL_I1X, 0),
2080 1.6 christos CORE_INSN ("blr", 0xd63f0000, 0xfffffc1f, branch_reg, OP1 (Rn), QL_I1X, 0),
2081 1.6 christos CORE_INSN ("ret", 0xd65f0000, 0xfffffc1f, branch_reg, OP1 (Rn), QL_I1X, F_OPD0_OPT | F_DEFAULT (30)),
2082 1.6 christos CORE_INSN ("eret", 0xd69f03e0, 0xffffffff, branch_reg, OP0 (), {}, 0),
2083 1.1 christos CORE_INSN ("drps", 0xd6bf03e0, 0xffffffff, branch_reg, OP0 (), {}, 0),
2084 1.6 christos /* Compare & branch (immediate). */
2085 1.6 christos CORE_INSN ("cbz", 0x34000000, 0x7f000000, compbranch, OP2 (Rt, ADDR_PCREL19), QL_R_PCREL, F_SF),
2086 1.1 christos CORE_INSN ("cbnz", 0x35000000, 0x7f000000, compbranch, OP2 (Rt, ADDR_PCREL19), QL_R_PCREL, F_SF),
2087 1.6 christos /* Conditional branch (immediate). */
2088 1.1 christos CORE_INSN ("b.c", 0x54000000, 0xff000010, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_COND),
2089 1.6 christos /* Conditional compare (immediate). */
2090 1.6 christos CORE_INSN ("ccmn", 0x3a400800, 0x7fe00c10, condcmp_imm, OP4 (Rn, CCMP_IMM, NZCV, COND), QL_CCMP_IMM, F_SF),
2091 1.1 christos CORE_INSN ("ccmp", 0x7a400800, 0x7fe00c10, condcmp_imm, OP4 (Rn, CCMP_IMM, NZCV, COND), QL_CCMP_IMM, F_SF),
2092 1.6 christos /* Conditional compare (register). */
2093 1.6 christos CORE_INSN ("ccmn", 0x3a400000, 0x7fe00c10, condcmp_reg, OP4 (Rn, Rm, NZCV, COND), QL_CCMP, F_SF),
2094 1.1 christos CORE_INSN ("ccmp", 0x7a400000, 0x7fe00c10, condcmp_reg, OP4 (Rn, Rm, NZCV, COND), QL_CCMP, F_SF),
2095 1.6 christos /* Conditional select. */
2096 1.6 christos CORE_INSN ("csel", 0x1a800000, 0x7fe00c00, condsel, OP4 (Rd, Rn, Rm, COND), QL_CSEL, F_SF),
2097 1.6 christos CORE_INSN ("csinc", 0x1a800400, 0x7fe00c00, condsel, OP4 (Rd, Rn, Rm, COND), QL_CSEL, F_HAS_ALIAS | F_SF),
2098 1.6 christos {"cinc", 0x1a800400, 0x7fe00c00, condsel, OP_CINC, CORE, OP3 (Rd, Rn, COND1), QL_CSEL, F_ALIAS | F_SF | F_CONV, NULL},
2099 1.6 christos {"cset", 0x1a9f07e0, 0x7fff0fe0, condsel, OP_CSET, CORE, OP2 (Rd, COND1), QL_DST_R, F_ALIAS | F_P1 | F_SF | F_CONV, NULL},
2100 1.6 christos CORE_INSN ("csinv", 0x5a800000, 0x7fe00c00, condsel, OP4 (Rd, Rn, Rm, COND), QL_CSEL, F_HAS_ALIAS | F_SF),
2101 1.6 christos {"cinv", 0x5a800000, 0x7fe00c00, condsel, OP_CINV, CORE, OP3 (Rd, Rn, COND1), QL_CSEL, F_ALIAS | F_SF | F_CONV, NULL},
2102 1.6 christos {"csetm", 0x5a9f03e0, 0x7fff0fe0, condsel, OP_CSETM, CORE, OP2 (Rd, COND1), QL_DST_R, F_ALIAS | F_P1 | F_SF | F_CONV, NULL},
2103 1.6 christos CORE_INSN ("csneg", 0x5a800400, 0x7fe00c00, condsel, OP4 (Rd, Rn, Rm, COND), QL_CSEL, F_HAS_ALIAS | F_SF),
2104 1.1 christos {"cneg", 0x5a800400, 0x7fe00c00, condsel, OP_CNEG, CORE, OP3 (Rd, Rn, COND1), QL_CSEL, F_ALIAS | F_SF | F_CONV, NULL},
2105 1.6 christos /* Crypto AES. */
2106 1.6 christos CRYP_INSN ("aese", 0x4e284800, 0xfffffc00, cryptoaes, OP2 (Vd, Vn), QL_V2SAME16B, 0),
2107 1.6 christos CRYP_INSN ("aesd", 0x4e285800, 0xfffffc00, cryptoaes, OP2 (Vd, Vn), QL_V2SAME16B, 0),
2108 1.6 christos CRYP_INSN ("aesmc", 0x4e286800, 0xfffffc00, cryptoaes, OP2 (Vd, Vn), QL_V2SAME16B, 0),
2109 1.1 christos CRYP_INSN ("aesimc", 0x4e287800, 0xfffffc00, cryptoaes, OP2 (Vd, Vn), QL_V2SAME16B, 0),
2110 1.6 christos /* Crypto two-reg SHA. */
2111 1.6 christos CRYP_INSN ("sha1h", 0x5e280800, 0xfffffc00, cryptosha2, OP2 (Fd, Fn), QL_2SAMES, 0),
2112 1.6 christos CRYP_INSN ("sha1su1", 0x5e281800, 0xfffffc00, cryptosha2, OP2 (Vd, Vn), QL_V2SAME4S, 0),
2113 1.1 christos CRYP_INSN ("sha256su0",0x5e282800, 0xfffffc00, cryptosha2, OP2 (Vd, Vn), QL_V2SAME4S, 0),
2114 1.6 christos /* Crypto three-reg SHA. */
2115 1.6 christos CRYP_INSN ("sha1c", 0x5e000000, 0xffe0fc00, cryptosha3, OP3 (Fd, Fn, Vm), QL_SHAUPT, 0),
2116 1.6 christos CRYP_INSN ("sha1p", 0x5e001000, 0xffe0fc00, cryptosha3, OP3 (Fd, Fn, Vm), QL_SHAUPT, 0),
2117 1.6 christos CRYP_INSN ("sha1m", 0x5e002000, 0xffe0fc00, cryptosha3, OP3 (Fd, Fn, Vm), QL_SHAUPT, 0),
2118 1.6 christos CRYP_INSN ("sha1su0", 0x5e003000, 0xffe0fc00, cryptosha3, OP3 (Vd, Vn, Vm), QL_V3SAME4S, 0),
2119 1.6 christos CRYP_INSN ("sha256h", 0x5e004000, 0xffe0fc00, cryptosha3, OP3 (Fd, Fn, Vm), QL_SHA256UPT, 0),
2120 1.6 christos CRYP_INSN ("sha256h2", 0x5e005000, 0xffe0fc00, cryptosha3, OP3 (Fd, Fn, Vm), QL_SHA256UPT, 0),
2121 1.1 christos CRYP_INSN ("sha256su1",0x5e006000, 0xffe0fc00, cryptosha3, OP3 (Vd, Vn, Vm), QL_V3SAME4S, 0),
2122 1.6 christos /* Data-processing (1 source). */
2123 1.6 christos CORE_INSN ("rbit", 0x5ac00000, 0x7ffffc00, dp_1src, OP2 (Rd, Rn), QL_I2SAME, F_SF),
2124 1.6 christos CORE_INSN ("rev16", 0x5ac00400, 0x7ffffc00, dp_1src, OP2 (Rd, Rn), QL_I2SAME, F_SF),
2125 1.6 christos CORE_INSN ("rev", 0x5ac00800, 0xfffffc00, dp_1src, OP2 (Rd, Rn), QL_I2SAMEW, 0),
2126 1.6 christos CORE_INSN ("rev", 0xdac00c00, 0xfffffc00, dp_1src, OP2 (Rd, Rn), QL_I2SAMEX, F_SF | F_HAS_ALIAS | F_P1),
2127 1.6 christos {"rev64", 0xdac00c00, 0xfffffc00, dp_1src, 0, ARMV8_2, OP2 (Rd, Rn), QL_I2SAMEX, F_SF | F_ALIAS, NULL},
2128 1.6 christos CORE_INSN ("clz", 0x5ac01000, 0x7ffffc00, dp_1src, OP2 (Rd, Rn), QL_I2SAME, F_SF),
2129 1.6 christos CORE_INSN ("cls", 0x5ac01400, 0x7ffffc00, dp_1src, OP2 (Rd, Rn), QL_I2SAME, F_SF),
2130 1.1 christos CORE_INSN ("rev32", 0xdac00800, 0xfffffc00, dp_1src, OP2 (Rd, Rn), QL_I2SAMEX, 0),
2131 1.6 christos /* Data-processing (2 source). */
2132 1.6 christos CORE_INSN ("udiv", 0x1ac00800, 0x7fe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF),
2133 1.6 christos CORE_INSN ("sdiv", 0x1ac00c00, 0x7fe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF),
2134 1.6 christos CORE_INSN ("lslv", 0x1ac02000, 0x7fe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_HAS_ALIAS),
2135 1.6 christos CORE_INSN ("lsl", 0x1ac02000, 0x7fe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_ALIAS),
2136 1.6 christos CORE_INSN ("lsrv", 0x1ac02400, 0x7fe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_HAS_ALIAS),
2137 1.6 christos CORE_INSN ("lsr", 0x1ac02400, 0x7fe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_ALIAS),
2138 1.6 christos CORE_INSN ("asrv", 0x1ac02800, 0x7fe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_HAS_ALIAS),
2139 1.6 christos CORE_INSN ("asr", 0x1ac02800, 0x7fe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_ALIAS),
2140 1.6 christos CORE_INSN ("rorv", 0x1ac02c00, 0x7fe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_HAS_ALIAS),
2141 1.1 christos CORE_INSN ("ror", 0x1ac02c00, 0x7fe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_ALIAS),
2142 1.6 christos /* CRC instructions. */
2143 1.6 christos _CRC_INSN ("crc32b", 0x1ac04000, 0xffe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMEW, 0),
2144 1.6 christos _CRC_INSN ("crc32h", 0x1ac04400, 0xffe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMEW, 0),
2145 1.6 christos _CRC_INSN ("crc32w", 0x1ac04800, 0xffe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMEW, 0),
2146 1.6 christos _CRC_INSN ("crc32x", 0x9ac04c00, 0xffe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3WWX, 0),
2147 1.6 christos _CRC_INSN ("crc32cb",0x1ac05000, 0xffe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMEW, 0),
2148 1.6 christos _CRC_INSN ("crc32ch",0x1ac05400, 0xffe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMEW, 0),
2149 1.6 christos _CRC_INSN ("crc32cw",0x1ac05800, 0xffe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3SAMEW, 0),
2150 1.1 christos _CRC_INSN ("crc32cx",0x9ac05c00, 0xffe0fc00, dp_2src, OP3 (Rd, Rn, Rm), QL_I3WWX, 0),
2151 1.6 christos /* Data-processing (3 source). */
2152 1.6 christos CORE_INSN ("madd", 0x1b000000, 0x7fe08000, dp_3src, OP4 (Rd, Rn, Rm, Ra), QL_I4SAMER, F_HAS_ALIAS | F_SF),
2153 1.6 christos CORE_INSN ("mul", 0x1b007c00, 0x7fe0fc00, dp_3src, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_ALIAS | F_SF),
2154 1.6 christos CORE_INSN ("msub", 0x1b008000, 0x7fe08000, dp_3src, OP4 (Rd, Rn, Rm, Ra), QL_I4SAMER, F_HAS_ALIAS | F_SF),
2155 1.6 christos CORE_INSN ("mneg", 0x1b00fc00, 0x7fe0fc00, dp_3src, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_ALIAS | F_SF),
2156 1.6 christos CORE_INSN ("smaddl",0x9b200000, 0xffe08000, dp_3src, OP4 (Rd, Rn, Rm, Ra), QL_I4SAMEL, F_HAS_ALIAS),
2157 1.6 christos CORE_INSN ("smull", 0x9b207c00, 0xffe0fc00, dp_3src, OP3 (Rd, Rn, Rm), QL_I3SAMEL, F_ALIAS),
2158 1.6 christos CORE_INSN ("smsubl",0x9b208000, 0xffe08000, dp_3src, OP4 (Rd, Rn, Rm, Ra), QL_I4SAMEL, F_HAS_ALIAS),
2159 1.6 christos CORE_INSN ("smnegl",0x9b20fc00, 0xffe0fc00, dp_3src, OP3 (Rd, Rn, Rm), QL_I3SAMEL, F_ALIAS),
2160 1.6 christos CORE_INSN ("smulh", 0x9b407c00, 0xffe08000, dp_3src, OP3 (Rd, Rn, Rm), QL_I3SAMEX, 0),
2161 1.6 christos CORE_INSN ("umaddl",0x9ba00000, 0xffe08000, dp_3src, OP4 (Rd, Rn, Rm, Ra), QL_I4SAMEL, F_HAS_ALIAS),
2162 1.6 christos CORE_INSN ("umull", 0x9ba07c00, 0xffe0fc00, dp_3src, OP3 (Rd, Rn, Rm), QL_I3SAMEL, F_ALIAS),
2163 1.6 christos CORE_INSN ("umsubl",0x9ba08000, 0xffe08000, dp_3src, OP4 (Rd, Rn, Rm, Ra), QL_I4SAMEL, F_HAS_ALIAS),
2164 1.6 christos CORE_INSN ("umnegl",0x9ba0fc00, 0xffe0fc00, dp_3src, OP3 (Rd, Rn, Rm), QL_I3SAMEL, F_ALIAS),
2165 1.1 christos CORE_INSN ("umulh", 0x9bc07c00, 0xffe08000, dp_3src, OP3 (Rd, Rn, Rm), QL_I3SAMEX, 0),
2166 1.6 christos /* Excep'n generation. */
2167 1.6 christos CORE_INSN ("svc", 0xd4000001, 0xffe0001f, exception, OP1 (EXCEPTION), {}, 0),
2168 1.6 christos CORE_INSN ("hvc", 0xd4000002, 0xffe0001f, exception, OP1 (EXCEPTION), {}, 0),
2169 1.6 christos CORE_INSN ("smc", 0xd4000003, 0xffe0001f, exception, OP1 (EXCEPTION), {}, 0),
2170 1.6 christos CORE_INSN ("brk", 0xd4200000, 0xffe0001f, exception, OP1 (EXCEPTION), {}, 0),
2171 1.6 christos CORE_INSN ("hlt", 0xd4400000, 0xffe0001f, exception, OP1 (EXCEPTION), {}, 0),
2172 1.6 christos CORE_INSN ("dcps1", 0xd4a00001, 0xffe0001f, exception, OP1 (EXCEPTION), {}, F_OPD0_OPT | F_DEFAULT (0)),
2173 1.6 christos CORE_INSN ("dcps2", 0xd4a00002, 0xffe0001f, exception, OP1 (EXCEPTION), {}, F_OPD0_OPT | F_DEFAULT (0)),
2174 1.1 christos CORE_INSN ("dcps3", 0xd4a00003, 0xffe0001f, exception, OP1 (EXCEPTION), {}, F_OPD0_OPT | F_DEFAULT (0)),
2175 1.6 christos /* Extract. */
2176 1.6 christos CORE_INSN ("extr", 0x13800000, 0x7fa00000, extract, OP4 (Rd, Rn, Rm, IMMS), QL_EXTR, F_HAS_ALIAS | F_SF | F_N),
2177 1.1 christos {"ror", 0x13800000, 0x7fa00000, extract, OP_ROR_IMM, CORE, OP3 (Rd, Rm, IMMS), QL_SHIFT, F_ALIAS | F_CONV, NULL},
2178 1.6 christos /* Floating-point<->fixed-point conversions. */
2179 1.6 christos __FP_INSN ("scvtf", 0x1e020000, 0x7f3f0000, float2fix, OP3 (Fd, Rn, FBITS), QL_FIX2FP, F_FPTYPE | F_SF),
2180 1.6 christos FF16_INSN ("scvtf", 0x1ec20000, 0x7f3f0000, float2fix, OP3 (Fd, Rn, FBITS), QL_FIX2FP_H, F_FPTYPE | F_SF),
2181 1.6 christos __FP_INSN ("ucvtf", 0x1e030000, 0x7f3f0000, float2fix, OP3 (Fd, Rn, FBITS), QL_FIX2FP, F_FPTYPE | F_SF),
2182 1.6 christos FF16_INSN ("ucvtf", 0x1ec30000, 0x7f3f0000, float2fix, OP3 (Fd, Rn, FBITS), QL_FIX2FP_H, F_FPTYPE | F_SF),
2183 1.6 christos __FP_INSN ("fcvtzs",0x1e180000, 0x7f3f0000, float2fix, OP3 (Rd, Fn, FBITS), QL_FP2FIX, F_FPTYPE | F_SF),
2184 1.6 christos FF16_INSN ("fcvtzs",0x1ed80000, 0x7f3f0000, float2fix, OP3 (Rd, Fn, FBITS), QL_FP2FIX_H, F_FPTYPE | F_SF),
2185 1.6 christos __FP_INSN ("fcvtzu",0x1e190000, 0x7f3f0000, float2fix, OP3 (Rd, Fn, FBITS), QL_FP2FIX, F_FPTYPE | F_SF),
2186 1.1 christos FF16_INSN ("fcvtzu",0x1ed90000, 0x7f3f0000, float2fix, OP3 (Rd, Fn, FBITS), QL_FP2FIX_H, F_FPTYPE | F_SF),
2187 1.6 christos /* Floating-point<->integer conversions. */
2188 1.6 christos __FP_INSN ("fcvtns",0x1e200000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF),
2189 1.6 christos FF16_INSN ("fcvtns",0x1ee00000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT_H, F_FPTYPE | F_SF),
2190 1.6 christos __FP_INSN ("fcvtnu",0x1e210000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF),
2191 1.6 christos FF16_INSN ("fcvtnu",0x1ee10000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT_H, F_FPTYPE | F_SF),
2192 1.6 christos __FP_INSN ("scvtf", 0x1e220000, 0x7f3ffc00, float2int, OP2 (Fd, Rn), QL_INT2FP, F_FPTYPE | F_SF),
2193 1.6 christos FF16_INSN ("scvtf", 0x1ee20000, 0x7f3ffc00, float2int, OP2 (Fd, Rn), QL_INT2FP_H, F_FPTYPE | F_SF),
2194 1.6 christos __FP_INSN ("ucvtf", 0x1e230000, 0x7f3ffc00, float2int, OP2 (Fd, Rn), QL_INT2FP, F_FPTYPE | F_SF),
2195 1.6 christos FF16_INSN ("ucvtf", 0x1ee30000, 0x7f3ffc00, float2int, OP2 (Fd, Rn), QL_INT2FP_H, F_FPTYPE | F_SF),
2196 1.6 christos __FP_INSN ("fcvtas",0x1e240000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF),
2197 1.6 christos FF16_INSN ("fcvtas",0x1ee40000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT_H, F_FPTYPE | F_SF),
2198 1.6 christos __FP_INSN ("fcvtau",0x1e250000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF),
2199 1.6 christos FF16_INSN ("fcvtau",0x1ee50000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT_H, F_FPTYPE | F_SF),
2200 1.6 christos __FP_INSN ("fmov", 0x1e260000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF),
2201 1.6 christos FF16_INSN ("fmov", 0x1ee60000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT_H, F_FPTYPE | F_SF),
2202 1.6 christos __FP_INSN ("fmov", 0x1e270000, 0x7f3ffc00, float2int, OP2 (Fd, Rn), QL_INT2FP, F_FPTYPE | F_SF),
2203 1.6 christos FF16_INSN ("fmov", 0x1ee70000, 0x7f3ffc00, float2int, OP2 (Fd, Rn), QL_INT2FP_H, F_FPTYPE | F_SF),
2204 1.6 christos __FP_INSN ("fcvtps",0x1e280000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF),
2205 1.6 christos FF16_INSN ("fcvtps",0x1ee80000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT_H, F_FPTYPE | F_SF),
2206 1.6 christos __FP_INSN ("fcvtpu",0x1e290000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF),
2207 1.6 christos FF16_INSN ("fcvtpu",0x1ee90000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT_H, F_FPTYPE | F_SF),
2208 1.6 christos __FP_INSN ("fcvtms",0x1e300000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF),
2209 1.6 christos FF16_INSN ("fcvtms",0x1ef00000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT_H, F_FPTYPE | F_SF),
2210 1.6 christos __FP_INSN ("fcvtmu",0x1e310000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF),
2211 1.6 christos FF16_INSN ("fcvtmu",0x1ef10000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT_H, F_FPTYPE | F_SF),
2212 1.6 christos __FP_INSN ("fcvtzs",0x1e380000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF),
2213 1.6 christos FF16_INSN ("fcvtzs",0x1ef80000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT_H, F_FPTYPE | F_SF),
2214 1.6 christos __FP_INSN ("fcvtzu",0x1e390000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF),
2215 1.6 christos FF16_INSN ("fcvtzu",0x1ef90000, 0x7f3ffc00, float2int, OP2 (Rd, Fn), QL_FP2INT_H, F_FPTYPE | F_SF),
2216 1.6 christos __FP_INSN ("fmov", 0x9eae0000, 0xfffffc00, float2int, OP2 (Rd, VnD1), QL_XVD1, 0),
2217 1.1 christos __FP_INSN ("fmov", 0x9eaf0000, 0xfffffc00, float2int, OP2 (VdD1, Rn), QL_VD1X, 0),
2218 1.6 christos /* Floating-point conditional compare. */
2219 1.6 christos __FP_INSN ("fccmp", 0x1e200400, 0xff200c10, floatccmp, OP4 (Fn, Fm, NZCV, COND), QL_FCCMP, F_FPTYPE),
2220 1.6 christos FF16_INSN ("fccmp", 0x1ee00400, 0xff200c10, floatccmp, OP4 (Fn, Fm, NZCV, COND), QL_FCCMP_H, F_FPTYPE),
2221 1.6 christos __FP_INSN ("fccmpe",0x1e200410, 0xff200c10, floatccmp, OP4 (Fn, Fm, NZCV, COND), QL_FCCMP, F_FPTYPE),
2222 1.1 christos FF16_INSN ("fccmpe",0x1ee00410, 0xff200c10, floatccmp, OP4 (Fn, Fm, NZCV, COND), QL_FCCMP_H, F_FPTYPE),
2223 1.6 christos /* Floating-point compare. */
2224 1.6 christos __FP_INSN ("fcmp", 0x1e202000, 0xff20fc1f, floatcmp, OP2 (Fn, Fm), QL_FP2, F_FPTYPE),
2225 1.6 christos FF16_INSN ("fcmp", 0x1ee02000, 0xff20fc1f, floatcmp, OP2 (Fn, Fm), QL_FP2_H, F_FPTYPE),
2226 1.6 christos __FP_INSN ("fcmpe", 0x1e202010, 0xff20fc1f, floatcmp, OP2 (Fn, Fm), QL_FP2, F_FPTYPE),
2227 1.6 christos FF16_INSN ("fcmpe", 0x1ee02010, 0xff20fc1f, floatcmp, OP2 (Fn, Fm), QL_FP2_H, F_FPTYPE),
2228 1.6 christos __FP_INSN ("fcmp", 0x1e202008, 0xff20fc1f, floatcmp, OP2 (Fn, FPIMM0), QL_DST_SD,F_FPTYPE),
2229 1.6 christos FF16_INSN ("fcmp", 0x1ee02008, 0xff20fc1f, floatcmp, OP2 (Fn, FPIMM0), QL_FP2_H, F_FPTYPE),
2230 1.6 christos __FP_INSN ("fcmpe", 0x1e202018, 0xff20fc1f, floatcmp, OP2 (Fn, FPIMM0), QL_DST_SD,F_FPTYPE),
2231 1.1 christos FF16_INSN ("fcmpe", 0x1ee02018, 0xff20fc1f, floatcmp, OP2 (Fn, FPIMM0), QL_FP2_H, F_FPTYPE),
2232 1.6 christos /* Floating-point data-processing (1 source). */
2233 1.6 christos __FP_INSN ("fmov", 0x1e204000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2, F_FPTYPE),
2234 1.6 christos FF16_INSN ("fmov", 0x1ee04000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2_H, F_FPTYPE),
2235 1.6 christos __FP_INSN ("fabs", 0x1e20c000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2, F_FPTYPE),
2236 1.6 christos FF16_INSN ("fabs", 0x1ee0c000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2_H, F_FPTYPE),
2237 1.6 christos __FP_INSN ("fneg", 0x1e214000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2, F_FPTYPE),
2238 1.6 christos FF16_INSN ("fneg", 0x1ee14000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2_H, F_FPTYPE),
2239 1.6 christos __FP_INSN ("fsqrt", 0x1e21c000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2, F_FPTYPE),
2240 1.6 christos FF16_INSN ("fsqrt", 0x1ee1c000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2_H, F_FPTYPE),
2241 1.6 christos {"fcvt", 0x1e224000, 0xff3e7c00, floatdp1, OP_FCVT, FP, OP2 (Fd, Fn), QL_FCVT, F_FPTYPE | F_MISC, NULL },
2242 1.6 christos __FP_INSN ("frintn",0x1e244000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2, F_FPTYPE),
2243 1.6 christos FF16_INSN ("frintn",0x1ee44000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2_H, F_FPTYPE),
2244 1.6 christos __FP_INSN ("frintp",0x1e24c000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2, F_FPTYPE),
2245 1.6 christos FF16_INSN ("frintp",0x1ee4c000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2_H, F_FPTYPE),
2246 1.6 christos __FP_INSN ("frintm",0x1e254000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2, F_FPTYPE),
2247 1.6 christos FF16_INSN ("frintm",0x1ee54000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2_H, F_FPTYPE),
2248 1.6 christos __FP_INSN ("frintz",0x1e25c000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2, F_FPTYPE),
2249 1.6 christos FF16_INSN ("frintz",0x1ee5c000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2_H, F_FPTYPE),
2250 1.6 christos __FP_INSN ("frinta",0x1e264000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2, F_FPTYPE),
2251 1.6 christos FF16_INSN ("frinta",0x1ee64000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2_H, F_FPTYPE),
2252 1.6 christos __FP_INSN ("frintx",0x1e274000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2, F_FPTYPE),
2253 1.6 christos FF16_INSN ("frintx",0x1ee74000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2_H, F_FPTYPE),
2254 1.6 christos __FP_INSN ("frinti",0x1e27c000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2, F_FPTYPE),
2255 1.1 christos FF16_INSN ("frinti",0x1ee7c000, 0xff3ffc00, floatdp1, OP2 (Fd, Fn), QL_FP2_H, F_FPTYPE),
2256 1.6 christos /* Floating-point data-processing (2 source). */
2257 1.6 christos __FP_INSN ("fmul", 0x1e200800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE),
2258 1.6 christos FF16_INSN ("fmul", 0x1ee00800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3_H, F_FPTYPE),
2259 1.6 christos __FP_INSN ("fdiv", 0x1e201800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE),
2260 1.6 christos FF16_INSN ("fdiv", 0x1ee01800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3_H, F_FPTYPE),
2261 1.6 christos __FP_INSN ("fadd", 0x1e202800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE),
2262 1.6 christos FF16_INSN ("fadd", 0x1ee02800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3_H, F_FPTYPE),
2263 1.6 christos __FP_INSN ("fsub", 0x1e203800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE),
2264 1.6 christos FF16_INSN ("fsub", 0x1ee03800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3_H, F_FPTYPE),
2265 1.6 christos __FP_INSN ("fmax", 0x1e204800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE),
2266 1.6 christos FF16_INSN ("fmax", 0x1ee04800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3_H, F_FPTYPE),
2267 1.6 christos __FP_INSN ("fmin", 0x1e205800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE),
2268 1.6 christos FF16_INSN ("fmin", 0x1ee05800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3_H, F_FPTYPE),
2269 1.6 christos __FP_INSN ("fmaxnm",0x1e206800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE),
2270 1.6 christos FF16_INSN ("fmaxnm",0x1ee06800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3_H, F_FPTYPE),
2271 1.6 christos __FP_INSN ("fminnm",0x1e207800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE),
2272 1.6 christos FF16_INSN ("fminnm",0x1ee07800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3_H, F_FPTYPE),
2273 1.6 christos __FP_INSN ("fnmul", 0x1e208800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE),
2274 1.1 christos FF16_INSN ("fnmul", 0x1ee08800, 0xff20fc00, floatdp2, OP3 (Fd, Fn, Fm), QL_FP3_H, F_FPTYPE),
2275 1.6 christos /* Floating-point data-processing (3 source). */
2276 1.6 christos __FP_INSN ("fmadd", 0x1f000000, 0xff208000, floatdp3, OP4 (Fd, Fn, Fm, Fa), QL_FP4, F_FPTYPE),
2277 1.6 christos FF16_INSN ("fmadd", 0x1fc00000, 0xff208000, floatdp3, OP4 (Fd, Fn, Fm, Fa), QL_FP4_H, F_FPTYPE),
2278 1.6 christos __FP_INSN ("fmsub", 0x1f008000, 0xff208000, floatdp3, OP4 (Fd, Fn, Fm, Fa), QL_FP4, F_FPTYPE),
2279 1.6 christos FF16_INSN ("fmsub", 0x1fc08000, 0xff208000, floatdp3, OP4 (Fd, Fn, Fm, Fa), QL_FP4_H, F_FPTYPE),
2280 1.6 christos __FP_INSN ("fnmadd",0x1f200000, 0xff208000, floatdp3, OP4 (Fd, Fn, Fm, Fa), QL_FP4, F_FPTYPE),
2281 1.6 christos FF16_INSN ("fnmadd",0x1fe00000, 0xff208000, floatdp3, OP4 (Fd, Fn, Fm, Fa), QL_FP4_H, F_FPTYPE),
2282 1.6 christos __FP_INSN ("fnmsub",0x1f208000, 0xff208000, floatdp3, OP4 (Fd, Fn, Fm, Fa), QL_FP4, F_FPTYPE),
2283 1.1 christos FF16_INSN ("fnmsub",0x1fe08000, 0xff208000, floatdp3, OP4 (Fd, Fn, Fm, Fa), QL_FP4_H, F_FPTYPE),
2284 1.6 christos /* Floating-point immediate. */
2285 1.6 christos __FP_INSN ("fmov", 0x1e201000, 0xff201fe0, floatimm, OP2 (Fd, FPIMM), QL_DST_SD, F_FPTYPE),
2286 1.1 christos FF16_INSN ("fmov", 0x1ee01000, 0xff201fe0, floatimm, OP2 (Fd, FPIMM), QL_DST_H, F_FPTYPE),
2287 1.6 christos /* Floating-point conditional select. */
2288 1.6 christos __FP_INSN ("fcsel", 0x1e200c00, 0xff200c00, floatsel, OP4 (Fd, Fn, Fm, COND), QL_FP_COND, F_FPTYPE),
2289 1.1 christos FF16_INSN ("fcsel", 0x1ee00c00, 0xff200c00, floatsel, OP4 (Fd, Fn, Fm, COND), QL_FP_COND_H, F_FPTYPE),
2290 1.6 christos /* Load/store register (immediate indexed). */
2291 1.6 christos CORE_INSN ("strb", 0x38000400, 0xffe00400, ldst_imm9, OP2 (Rt, ADDR_SIMM9), QL_LDST_W8, 0),
2292 1.6 christos CORE_INSN ("ldrb", 0x38400400, 0xffe00400, ldst_imm9, OP2 (Rt, ADDR_SIMM9), QL_LDST_W8, 0),
2293 1.6 christos CORE_INSN ("ldrsb", 0x38800400, 0xffa00400, ldst_imm9, OP2 (Rt, ADDR_SIMM9), QL_LDST_R8, F_LDS_SIZE),
2294 1.6 christos CORE_INSN ("str", 0x3c000400, 0x3f600400, ldst_imm9, OP2 (Ft, ADDR_SIMM9), QL_LDST_FP, 0),
2295 1.6 christos CORE_INSN ("ldr", 0x3c400400, 0x3f600400, ldst_imm9, OP2 (Ft, ADDR_SIMM9), QL_LDST_FP, 0),
2296 1.6 christos CORE_INSN ("strh", 0x78000400, 0xffe00400, ldst_imm9, OP2 (Rt, ADDR_SIMM9), QL_LDST_W16, 0),
2297 1.6 christos CORE_INSN ("ldrh", 0x78400400, 0xffe00400, ldst_imm9, OP2 (Rt, ADDR_SIMM9), QL_LDST_W16, 0),
2298 1.6 christos CORE_INSN ("ldrsh", 0x78800400, 0xffa00400, ldst_imm9, OP2 (Rt, ADDR_SIMM9), QL_LDST_R16, F_LDS_SIZE),
2299 1.6 christos CORE_INSN ("str", 0xb8000400, 0xbfe00400, ldst_imm9, OP2 (Rt, ADDR_SIMM9), QL_LDST_R, F_GPRSIZE_IN_Q),
2300 1.6 christos CORE_INSN ("ldr", 0xb8400400, 0xbfe00400, ldst_imm9, OP2 (Rt, ADDR_SIMM9), QL_LDST_R, F_GPRSIZE_IN_Q),
2301 1.1 christos CORE_INSN ("ldrsw", 0xb8800400, 0xffe00400, ldst_imm9, OP2 (Rt, ADDR_SIMM9), QL_LDST_X32, 0),
2302 1.6 christos /* Load/store register (unsigned immediate). */
2303 1.6 christos {"strb", 0x39000000, 0xffc00000, ldst_pos, OP_STRB_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_W8, 0, NULL},
2304 1.6 christos {"ldrb", 0x39400000, 0xffc00000, ldst_pos, OP_LDRB_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_W8, 0, NULL},
2305 1.6 christos {"ldrsb", 0x39800000, 0xff800000, ldst_pos, OP_LDRSB_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_R8, F_LDS_SIZE, NULL},
2306 1.6 christos {"str", 0x3d000000, 0x3f400000, ldst_pos, OP_STRF_POS, CORE, OP2 (Ft, ADDR_UIMM12), QL_LDST_FP, 0, NULL},
2307 1.6 christos {"ldr", 0x3d400000, 0x3f400000, ldst_pos, OP_LDRF_POS, CORE, OP2 (Ft, ADDR_UIMM12), QL_LDST_FP, 0, NULL},
2308 1.6 christos {"strh", 0x79000000, 0xffc00000, ldst_pos, OP_STRH_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_W16, 0, NULL},
2309 1.6 christos {"ldrh", 0x79400000, 0xffc00000, ldst_pos, OP_LDRH_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_W16, 0, NULL},
2310 1.6 christos {"ldrsh", 0x79800000, 0xff800000, ldst_pos, OP_LDRSH_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_R16, F_LDS_SIZE, NULL},
2311 1.6 christos {"str", 0xb9000000, 0xbfc00000, ldst_pos, OP_STR_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_R, F_GPRSIZE_IN_Q, NULL},
2312 1.6 christos {"ldr", 0xb9400000, 0xbfc00000, ldst_pos, OP_LDR_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_R, F_GPRSIZE_IN_Q, NULL},
2313 1.6 christos {"ldrsw", 0xb9800000, 0xffc00000, ldst_pos, OP_LDRSW_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_X32, 0, NULL},
2314 1.1 christos {"prfm", 0xf9800000, 0xffc00000, ldst_pos, OP_PRFM_POS, CORE, OP2 (PRFOP, ADDR_UIMM12), QL_LDST_PRFM, 0, NULL},
2315 1.6 christos /* Load/store register (register offset). */
2316 1.6 christos CORE_INSN ("strb", 0x38200800, 0xffe00c00, ldst_regoff, OP2 (Rt, ADDR_REGOFF), QL_LDST_W8, 0),
2317 1.6 christos CORE_INSN ("ldrb", 0x38600800, 0xffe00c00, ldst_regoff, OP2 (Rt, ADDR_REGOFF), QL_LDST_W8, 0),
2318 1.6 christos CORE_INSN ("ldrsb", 0x38a00800, 0xffa00c00, ldst_regoff, OP2 (Rt, ADDR_REGOFF), QL_LDST_R8, F_LDS_SIZE),
2319 1.6 christos CORE_INSN ("str", 0x3c200800, 0x3f600c00, ldst_regoff, OP2 (Ft, ADDR_REGOFF), QL_LDST_FP, 0),
2320 1.6 christos CORE_INSN ("ldr", 0x3c600800, 0x3f600c00, ldst_regoff, OP2 (Ft, ADDR_REGOFF), QL_LDST_FP, 0),
2321 1.6 christos CORE_INSN ("strh", 0x78200800, 0xffe00c00, ldst_regoff, OP2 (Rt, ADDR_REGOFF), QL_LDST_W16, 0),
2322 1.6 christos CORE_INSN ("ldrh", 0x78600800, 0xffe00c00, ldst_regoff, OP2 (Rt, ADDR_REGOFF), QL_LDST_W16, 0),
2323 1.6 christos CORE_INSN ("ldrsh", 0x78a00800, 0xffa00c00, ldst_regoff, OP2 (Rt, ADDR_REGOFF), QL_LDST_R16, F_LDS_SIZE),
2324 1.6 christos CORE_INSN ("str", 0xb8200800, 0xbfe00c00, ldst_regoff, OP2 (Rt, ADDR_REGOFF), QL_LDST_R, F_GPRSIZE_IN_Q),
2325 1.6 christos CORE_INSN ("ldr", 0xb8600800, 0xbfe00c00, ldst_regoff, OP2 (Rt, ADDR_REGOFF), QL_LDST_R, F_GPRSIZE_IN_Q),
2326 1.6 christos CORE_INSN ("ldrsw", 0xb8a00800, 0xffe00c00, ldst_regoff, OP2 (Rt, ADDR_REGOFF), QL_LDST_X32, 0),
2327 1.1 christos CORE_INSN ("prfm", 0xf8a00800, 0xffe00c00, ldst_regoff, OP2 (PRFOP, ADDR_REGOFF), QL_LDST_PRFM, 0),
2328 1.6 christos /* Load/store register (unprivileged). */
2329 1.6 christos CORE_INSN ("sttrb", 0x38000800, 0xffe00c00, ldst_unpriv, OP2 (Rt, ADDR_SIMM9), QL_LDST_W8, 0),
2330 1.6 christos CORE_INSN ("ldtrb", 0x38400800, 0xffe00c00, ldst_unpriv, OP2 (Rt, ADDR_SIMM9), QL_LDST_W8, 0),
2331 1.6 christos CORE_INSN ("ldtrsb", 0x38800800, 0xffa00c00, ldst_unpriv, OP2 (Rt, ADDR_SIMM9), QL_LDST_R8, F_LDS_SIZE),
2332 1.6 christos CORE_INSN ("sttrh", 0x78000800, 0xffe00c00, ldst_unpriv, OP2 (Rt, ADDR_SIMM9), QL_LDST_W16, 0),
2333 1.6 christos CORE_INSN ("ldtrh", 0x78400800, 0xffe00c00, ldst_unpriv, OP2 (Rt, ADDR_SIMM9), QL_LDST_W16, 0),
2334 1.6 christos CORE_INSN ("ldtrsh", 0x78800800, 0xffa00c00, ldst_unpriv, OP2 (Rt, ADDR_SIMM9), QL_LDST_R16, F_LDS_SIZE),
2335 1.6 christos CORE_INSN ("sttr", 0xb8000800, 0xbfe00c00, ldst_unpriv, OP2 (Rt, ADDR_SIMM9), QL_LDST_R, F_GPRSIZE_IN_Q),
2336 1.6 christos CORE_INSN ("ldtr", 0xb8400800, 0xbfe00c00, ldst_unpriv, OP2 (Rt, ADDR_SIMM9), QL_LDST_R, F_GPRSIZE_IN_Q),
2337 1.1 christos CORE_INSN ("ldtrsw", 0xb8800800, 0xffe00c00, ldst_unpriv, OP2 (Rt, ADDR_SIMM9), QL_LDST_X32, 0),
2338 1.6 christos /* Load/store register (unscaled immediate). */
2339 1.6 christos {"sturb", 0x38000000, 0xffe00c00, ldst_unscaled, OP_STURB, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W8, 0, NULL},
2340 1.6 christos {"ldurb", 0x38400000, 0xffe00c00, ldst_unscaled, OP_LDURB, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W8, 0, NULL},
2341 1.6 christos {"ldursb", 0x38800000, 0xffa00c00, ldst_unscaled, OP_LDURSB, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R8, F_LDS_SIZE, NULL},
2342 1.6 christos {"stur", 0x3c000000, 0x3f600c00, ldst_unscaled, OP_STURV, CORE, OP2 (Ft, ADDR_SIMM9), QL_LDST_FP, 0, NULL},
2343 1.6 christos {"ldur", 0x3c400000, 0x3f600c00, ldst_unscaled, OP_LDURV, CORE, OP2 (Ft, ADDR_SIMM9), QL_LDST_FP, 0, NULL},
2344 1.6 christos {"sturh", 0x78000000, 0xffe00c00, ldst_unscaled, OP_STURH, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W16, 0, NULL},
2345 1.6 christos {"ldurh", 0x78400000, 0xffe00c00, ldst_unscaled, OP_LDURH, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W16, 0, NULL},
2346 1.6 christos {"ldursh", 0x78800000, 0xffa00c00, ldst_unscaled, OP_LDURSH, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R16, F_LDS_SIZE, NULL},
2347 1.6 christos {"stur", 0xb8000000, 0xbfe00c00, ldst_unscaled, OP_STUR, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R, F_GPRSIZE_IN_Q, NULL},
2348 1.6 christos {"ldur", 0xb8400000, 0xbfe00c00, ldst_unscaled, OP_LDUR, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R, F_GPRSIZE_IN_Q, NULL},
2349 1.6 christos {"ldursw", 0xb8800000, 0xffe00c00, ldst_unscaled, OP_LDURSW, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_X32, 0, NULL},
2350 1.1 christos {"prfum", 0xf8800000, 0xffe00c00, ldst_unscaled, OP_PRFUM, CORE, OP2 (PRFOP, ADDR_SIMM9), QL_LDST_PRFM, 0, NULL},
2351 1.6 christos /* Load/store exclusive. */
2352 1.6 christos CORE_INSN ("stxrb", 0x8007c00, 0xffe08000, ldstexcl, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2353 1.6 christos CORE_INSN ("stlxrb", 0x800fc00, 0xffe08000, ldstexcl, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2354 1.6 christos CORE_INSN ("ldxrb", 0x85f7c00, 0xffe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),
2355 1.6 christos CORE_INSN ("ldaxrb", 0x85ffc00, 0xffe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),
2356 1.6 christos CORE_INSN ("stlrb", 0x89ffc00, 0xffe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),
2357 1.6 christos CORE_INSN ("ldarb", 0x8dffc00, 0xffeffc00, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),
2358 1.6 christos CORE_INSN ("stxrh", 0x48007c00, 0xffe08000, ldstexcl, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2359 1.6 christos CORE_INSN ("stlxrh", 0x4800fc00, 0xffe08000, ldstexcl, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2360 1.6 christos CORE_INSN ("ldxrh", 0x485f7c00, 0xffe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),
2361 1.6 christos CORE_INSN ("ldaxrh", 0x485ffc00, 0xffe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),
2362 1.6 christos CORE_INSN ("stlrh", 0x489ffc00, 0xffe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),
2363 1.6 christos CORE_INSN ("ldarh", 0x48dffc00, 0xffeffc00, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),
2364 1.6 christos CORE_INSN ("stxr", 0x88007c00, 0xbfe08000, ldstexcl, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2_LDST_EXC, F_GPRSIZE_IN_Q),
2365 1.6 christos CORE_INSN ("stlxr", 0x8800fc00, 0xbfe08000, ldstexcl, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2_LDST_EXC, F_GPRSIZE_IN_Q),
2366 1.6 christos CORE_INSN ("stxp", 0x88200000, 0xbfe08000, ldstexcl, OP4 (Rs, Rt, Rt2, ADDR_SIMPLE), QL_R3_LDST_EXC, F_GPRSIZE_IN_Q),
2367 1.6 christos CORE_INSN ("stlxp", 0x88208000, 0xbfe08000, ldstexcl, OP4 (Rs, Rt, Rt2, ADDR_SIMPLE), QL_R3_LDST_EXC, F_GPRSIZE_IN_Q),
2368 1.6 christos CORE_INSN ("ldxr", 0x885f7c00, 0xbfe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q),
2369 1.6 christos CORE_INSN ("ldaxr", 0x885ffc00, 0xbfe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q),
2370 1.6 christos CORE_INSN ("ldxp", 0x887f0000, 0xbfe08000, ldstexcl, OP3 (Rt, Rt2, ADDR_SIMPLE), QL_R2NIL, F_GPRSIZE_IN_Q),
2371 1.6 christos CORE_INSN ("ldaxp", 0x887f8000, 0xbfe08000, ldstexcl, OP3 (Rt, Rt2, ADDR_SIMPLE), QL_R2NIL, F_GPRSIZE_IN_Q),
2372 1.6 christos CORE_INSN ("stlr", 0x889ffc00, 0xbfe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q),
2373 1.5 christos CORE_INSN ("ldar", 0x88dffc00, 0xbfeffc00, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q),
2374 1.6 christos /* Limited Ordering Regions load/store instructions. */
2375 1.6 christos _LOR_INSN ("ldlar", 0x88df7c00, 0xbfe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q),
2376 1.6 christos _LOR_INSN ("ldlarb", 0x08df7c00, 0xffe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),
2377 1.6 christos _LOR_INSN ("ldlarh", 0x48df7c00, 0xffe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),
2378 1.6 christos _LOR_INSN ("stllr", 0x889f7c00, 0xbfe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q),
2379 1.6 christos _LOR_INSN ("stllrb", 0x089f7c00, 0xffe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),
2380 1.1 christos _LOR_INSN ("stllrh", 0x489f7c00, 0xbfe08000, ldstexcl, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0),
2381 1.6 christos /* Load/store no-allocate pair (offset). */
2382 1.6 christos CORE_INSN ("stnp", 0x28000000, 0x7fc00000, ldstnapair_offs, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF),
2383 1.6 christos CORE_INSN ("ldnp", 0x28400000, 0x7fc00000, ldstnapair_offs, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF),
2384 1.6 christos CORE_INSN ("stnp", 0x2c000000, 0x3fc00000, ldstnapair_offs, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0),
2385 1.1 christos CORE_INSN ("ldnp", 0x2c400000, 0x3fc00000, ldstnapair_offs, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0),
2386 1.6 christos /* Load/store register pair (offset). */
2387 1.6 christos CORE_INSN ("stp", 0x29000000, 0x7ec00000, ldstpair_off, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF),
2388 1.6 christos CORE_INSN ("ldp", 0x29400000, 0x7ec00000, ldstpair_off, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF),
2389 1.6 christos CORE_INSN ("stp", 0x2d000000, 0x3fc00000, ldstpair_off, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0),
2390 1.6 christos CORE_INSN ("ldp", 0x2d400000, 0x3fc00000, ldstpair_off, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0),
2391 1.1 christos {"ldpsw", 0x69400000, 0xffc00000, ldstpair_off, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_X32, 0, VERIFIER (ldpsw)},
2392 1.6 christos /* Load/store register pair (indexed). */
2393 1.6 christos CORE_INSN ("stp", 0x28800000, 0x7ec00000, ldstpair_indexed, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF),
2394 1.6 christos CORE_INSN ("ldp", 0x28c00000, 0x7ec00000, ldstpair_indexed, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF),
2395 1.6 christos CORE_INSN ("stp", 0x2c800000, 0x3ec00000, ldstpair_indexed, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0),
2396 1.6 christos CORE_INSN ("ldp", 0x2cc00000, 0x3ec00000, ldstpair_indexed, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0),
2397 1.1 christos {"ldpsw", 0x68c00000, 0xfec00000, ldstpair_indexed, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_X32, 0, VERIFIER (ldpsw)},
2398 1.6 christos /* Load register (literal). */
2399 1.6 christos {"ldr", 0x18000000, 0xbf000000, loadlit, OP_LDR_LIT, CORE, OP2 (Rt, ADDR_PCREL19), QL_R_PCREL, F_GPRSIZE_IN_Q, NULL},
2400 1.6 christos {"ldr", 0x1c000000, 0x3f000000, loadlit, OP_LDRV_LIT, CORE, OP2 (Ft, ADDR_PCREL19), QL_FP_PCREL, 0, NULL},
2401 1.6 christos {"ldrsw", 0x98000000, 0xff000000, loadlit, OP_LDRSW_LIT, CORE, OP2 (Rt, ADDR_PCREL19), QL_X_PCREL, 0, NULL},
2402 1.1 christos {"prfm", 0xd8000000, 0xff000000, loadlit, OP_PRFM_LIT, CORE, OP2 (PRFOP, ADDR_PCREL19), QL_PRFM_PCREL, 0, NULL},
2403 1.6 christos /* Logical (immediate). */
2404 1.6 christos CORE_INSN ("and", 0x12000000, 0x7f800000, log_imm, OP3 (Rd_SP, Rn, LIMM), QL_R2NIL, F_HAS_ALIAS | F_SF),
2405 1.6 christos {"bic", 0x12000000, 0x7f800000, log_imm, OP_BIC, CORE, OP3 (Rd_SP, Rn, LIMM), QL_R2NIL, F_ALIAS | F_PSEUDO | F_SF, NULL},
2406 1.6 christos CORE_INSN ("orr", 0x32000000, 0x7f800000, log_imm, OP3 (Rd_SP, Rn, LIMM), QL_R2NIL, F_HAS_ALIAS | F_SF),
2407 1.6 christos {"mov", 0x320003e0, 0x7f8003e0, log_imm, OP_MOV_IMM_LOG, CORE, OP2 (Rd_SP, IMM_MOV), QL_R1NIL, F_ALIAS | F_P1 | F_SF | F_CONV, NULL},
2408 1.6 christos CORE_INSN ("eor", 0x52000000, 0x7f800000, log_imm, OP3 (Rd_SP, Rn, LIMM), QL_R2NIL, F_SF),
2409 1.6 christos CORE_INSN ("ands", 0x72000000, 0x7f800000, log_imm, OP3 (Rd, Rn, LIMM), QL_R2NIL, F_HAS_ALIAS | F_SF),
2410 1.1 christos CORE_INSN ("tst", 0x7200001f, 0x7f80001f, log_imm, OP2 (Rn, LIMM), QL_R1NIL, F_ALIAS | F_SF),
2411 1.6 christos /* Logical (shifted register). */
2412 1.6 christos CORE_INSN ("and", 0xa000000, 0x7f200000, log_shift, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF),
2413 1.6 christos CORE_INSN ("bic", 0xa200000, 0x7f200000, log_shift, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF),
2414 1.6 christos CORE_INSN ("orr", 0x2a000000, 0x7f200000, log_shift, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_HAS_ALIAS | F_SF),
2415 1.6 christos CORE_INSN ("mov", 0x2a0003e0, 0x7f2003e0, log_shift, OP2 (Rd, Rm_SFT), QL_I2SAMER, F_ALIAS | F_SF),
2416 1.6 christos {"uxtw", 0x2a0003e0, 0x7f2003e0, log_shift, OP_UXTW, CORE, OP2 (Rd, Rm), QL_I2SAMEW, F_ALIAS | F_PSEUDO, NULL},
2417 1.6 christos CORE_INSN ("orn", 0x2a200000, 0x7f200000, log_shift, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_HAS_ALIAS | F_SF),
2418 1.6 christos CORE_INSN ("mvn", 0x2a2003e0, 0x7f2003e0, log_shift, OP2 (Rd, Rm_SFT), QL_I2SAMER, F_ALIAS | F_SF),
2419 1.6 christos CORE_INSN ("eor", 0x4a000000, 0x7f200000, log_shift, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF),
2420 1.6 christos CORE_INSN ("eon", 0x4a200000, 0x7f200000, log_shift, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF),
2421 1.6 christos CORE_INSN ("ands", 0x6a000000, 0x7f200000, log_shift, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_HAS_ALIAS | F_SF),
2422 1.6 christos CORE_INSN ("tst", 0x6a00001f, 0x7f20001f, log_shift, OP2 (Rn, Rm_SFT), QL_I2SAMER, F_ALIAS | F_SF),
2423 1.3 christos CORE_INSN ("bics", 0x6a200000, 0x7f200000, log_shift, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF),
2424 1.6 christos /* LSE extension (atomic). */
2425 1.6 christos _LSE_INSN ("casb", 0x8a07c00, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2426 1.6 christos _LSE_INSN ("cash", 0x48a07c00, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2427 1.6 christos _LSE_INSN ("cas", 0x88a07c00, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2428 1.6 christos _LSE_INSN ("casab", 0x8e07c00, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2429 1.6 christos _LSE_INSN ("caslb", 0x8a0fc00, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2430 1.6 christos _LSE_INSN ("casalb", 0x8e0fc00, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2431 1.6 christos _LSE_INSN ("casah", 0x48e07c00, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2432 1.6 christos _LSE_INSN ("caslh", 0x48a0fc00, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2433 1.6 christos _LSE_INSN ("casalh", 0x48e0fc00, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2434 1.6 christos _LSE_INSN ("casa", 0x88e07c00, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2435 1.6 christos _LSE_INSN ("casl", 0x88a0fc00, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2436 1.6 christos _LSE_INSN ("casal", 0x88e0fc00, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2437 1.6 christos _LSE_INSN ("casp", 0x8207c00, 0xbfe0fc00, lse_atomic, OP5 (Rs, PAIRREG, Rt, PAIRREG, ADDR_SIMPLE), QL_R4NIL, F_LSE_SZ),
2438 1.6 christos _LSE_INSN ("caspa", 0x8607c00, 0xbfe0fc00, lse_atomic, OP5 (Rs, PAIRREG, Rt, PAIRREG, ADDR_SIMPLE), QL_R4NIL, F_LSE_SZ),
2439 1.6 christos _LSE_INSN ("caspl", 0x820fc00, 0xbfe0fc00, lse_atomic, OP5 (Rs, PAIRREG, Rt, PAIRREG, ADDR_SIMPLE), QL_R4NIL, F_LSE_SZ),
2440 1.6 christos _LSE_INSN ("caspal", 0x860fc00, 0xbfe0fc00, lse_atomic, OP5 (Rs, PAIRREG, Rt, PAIRREG, ADDR_SIMPLE), QL_R4NIL, F_LSE_SZ),
2441 1.6 christos _LSE_INSN ("swpb", 0x38208000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2442 1.6 christos _LSE_INSN ("swph", 0x78208000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2443 1.6 christos _LSE_INSN ("swp", 0xb8208000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2444 1.6 christos _LSE_INSN ("swpab", 0x38a08000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2445 1.6 christos _LSE_INSN ("swplb", 0x38608000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2446 1.6 christos _LSE_INSN ("swpalb", 0x38e08000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2447 1.6 christos _LSE_INSN ("swpah", 0x78a08000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2448 1.6 christos _LSE_INSN ("swplh", 0x78608000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2449 1.6 christos _LSE_INSN ("swpalh", 0x78e08000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2450 1.6 christos _LSE_INSN ("swpa", 0xb8a08000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2451 1.6 christos _LSE_INSN ("swpl", 0xb8608000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2452 1.6 christos _LSE_INSN ("swpal", 0xb8e08000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2453 1.6 christos _LSE_INSN ("ldaddb", 0x38200000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2454 1.6 christos _LSE_INSN ("ldaddh", 0x78200000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2455 1.6 christos _LSE_INSN ("ldadd", 0xb8200000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2456 1.6 christos _LSE_INSN ("ldaddab", 0x38a00000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2457 1.6 christos _LSE_INSN ("ldaddlb", 0x38600000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2458 1.6 christos _LSE_INSN ("ldaddalb", 0x38e00000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2459 1.6 christos _LSE_INSN ("ldaddah", 0x78a00000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2460 1.6 christos _LSE_INSN ("ldaddlh", 0x78600000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2461 1.6 christos _LSE_INSN ("ldaddalh", 0x78e00000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2462 1.6 christos _LSE_INSN ("ldadda", 0xb8a00000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2463 1.6 christos _LSE_INSN ("ldaddl", 0xb8600000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2464 1.6 christos _LSE_INSN ("ldaddal", 0xb8e00000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2465 1.6 christos _LSE_INSN ("ldclrb", 0x38201000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2466 1.6 christos _LSE_INSN ("ldclrh", 0x78201000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2467 1.6 christos _LSE_INSN ("ldclr", 0xb8201000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2468 1.6 christos _LSE_INSN ("ldclrab", 0x38a01000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2469 1.6 christos _LSE_INSN ("ldclrlb", 0x38601000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2470 1.6 christos _LSE_INSN ("ldclralb", 0x38e01000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2471 1.6 christos _LSE_INSN ("ldclrah", 0x78a01000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2472 1.6 christos _LSE_INSN ("ldclrlh", 0x78601000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2473 1.6 christos _LSE_INSN ("ldclralh", 0x78e01000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2474 1.6 christos _LSE_INSN ("ldclra", 0xb8a01000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2475 1.6 christos _LSE_INSN ("ldclrl", 0xb8601000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2476 1.6 christos _LSE_INSN ("ldclral", 0xb8e01000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2477 1.6 christos _LSE_INSN ("ldeorb", 0x38202000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2478 1.6 christos _LSE_INSN ("ldeorh", 0x78202000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2479 1.6 christos _LSE_INSN ("ldeor", 0xb8202000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2480 1.6 christos _LSE_INSN ("ldeorab", 0x38a02000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2481 1.6 christos _LSE_INSN ("ldeorlb", 0x38602000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2482 1.6 christos _LSE_INSN ("ldeoralb", 0x38e02000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2483 1.6 christos _LSE_INSN ("ldeorah", 0x78a02000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2484 1.6 christos _LSE_INSN ("ldeorlh", 0x78602000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2485 1.6 christos _LSE_INSN ("ldeoralh", 0x78e02000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2486 1.6 christos _LSE_INSN ("ldeora", 0xb8a02000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2487 1.6 christos _LSE_INSN ("ldeorl", 0xb8602000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2488 1.6 christos _LSE_INSN ("ldeoral", 0xb8e02000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2489 1.6 christos _LSE_INSN ("ldsetb", 0x38203000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2490 1.6 christos _LSE_INSN ("ldseth", 0x78203000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2491 1.6 christos _LSE_INSN ("ldset", 0xb8203000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2492 1.6 christos _LSE_INSN ("ldsetab", 0x38a03000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2493 1.6 christos _LSE_INSN ("ldsetlb", 0x38603000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2494 1.6 christos _LSE_INSN ("ldsetalb", 0x38e03000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2495 1.6 christos _LSE_INSN ("ldsetah", 0x78a03000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2496 1.6 christos _LSE_INSN ("ldsetlh", 0x78603000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2497 1.6 christos _LSE_INSN ("ldsetalh", 0x78e03000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2498 1.6 christos _LSE_INSN ("ldseta", 0xb8a03000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2499 1.6 christos _LSE_INSN ("ldsetl", 0xb8603000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2500 1.6 christos _LSE_INSN ("ldsetal", 0xb8e03000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2501 1.6 christos _LSE_INSN ("ldsmaxb", 0x38204000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2502 1.6 christos _LSE_INSN ("ldsmaxh", 0x78204000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2503 1.6 christos _LSE_INSN ("ldsmax", 0xb8204000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2504 1.6 christos _LSE_INSN ("ldsmaxab", 0x38a04000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2505 1.6 christos _LSE_INSN ("ldsmaxlb", 0x38604000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2506 1.6 christos _LSE_INSN ("ldsmaxalb", 0x38e04000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2507 1.6 christos _LSE_INSN ("ldsmaxah", 0x78a04000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2508 1.6 christos _LSE_INSN ("ldsmaxlh", 0x78604000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2509 1.6 christos _LSE_INSN ("ldsmaxalh", 0x78e04000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2510 1.6 christos _LSE_INSN ("ldsmaxa", 0xb8a04000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2511 1.6 christos _LSE_INSN ("ldsmaxl", 0xb8604000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2512 1.6 christos _LSE_INSN ("ldsmaxal", 0xb8e04000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2513 1.6 christos _LSE_INSN ("ldsminb", 0x38205000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2514 1.6 christos _LSE_INSN ("ldsminh", 0x78205000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2515 1.6 christos _LSE_INSN ("ldsmin", 0xb8205000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2516 1.6 christos _LSE_INSN ("ldsminab", 0x38a05000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2517 1.6 christos _LSE_INSN ("ldsminlb", 0x38605000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2518 1.6 christos _LSE_INSN ("ldsminalb", 0x38e05000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2519 1.6 christos _LSE_INSN ("ldsminah", 0x78a05000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2520 1.6 christos _LSE_INSN ("ldsminlh", 0x78605000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2521 1.6 christos _LSE_INSN ("ldsminalh", 0x78e05000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2522 1.6 christos _LSE_INSN ("ldsmina", 0xb8a05000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2523 1.6 christos _LSE_INSN ("ldsminl", 0xb8605000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2524 1.6 christos _LSE_INSN ("ldsminal", 0xb8e05000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2525 1.6 christos _LSE_INSN ("ldumaxb", 0x38206000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2526 1.6 christos _LSE_INSN ("ldumaxh", 0x78206000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2527 1.6 christos _LSE_INSN ("ldumax", 0xb8206000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2528 1.6 christos _LSE_INSN ("ldumaxab", 0x38a06000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2529 1.6 christos _LSE_INSN ("ldumaxlb", 0x38606000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2530 1.6 christos _LSE_INSN ("ldumaxalb", 0x38e06000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2531 1.6 christos _LSE_INSN ("ldumaxah", 0x78a06000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2532 1.6 christos _LSE_INSN ("ldumaxlh", 0x78606000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2533 1.6 christos _LSE_INSN ("ldumaxalh", 0x78e06000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2534 1.6 christos _LSE_INSN ("ldumaxa", 0xb8a06000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2535 1.6 christos _LSE_INSN ("ldumaxl", 0xb8606000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2536 1.6 christos _LSE_INSN ("ldumaxal", 0xb8e06000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2537 1.6 christos _LSE_INSN ("lduminb", 0x38207000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2538 1.6 christos _LSE_INSN ("lduminh", 0x78207000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2539 1.6 christos _LSE_INSN ("ldumin", 0xb8207000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2540 1.6 christos _LSE_INSN ("lduminab", 0x38a07000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2541 1.6 christos _LSE_INSN ("lduminlb", 0x38607000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2542 1.6 christos _LSE_INSN ("lduminalb", 0x38e07000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2543 1.6 christos _LSE_INSN ("lduminah", 0x78a07000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2544 1.6 christos _LSE_INSN ("lduminlh", 0x78607000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, F_HAS_ALIAS),
2545 1.6 christos _LSE_INSN ("lduminalh", 0x78e07000, 0xffe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0),
2546 1.6 christos _LSE_INSN ("ldumina", 0xb8a07000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2547 1.6 christos _LSE_INSN ("lduminl", 0xb8607000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ | F_HAS_ALIAS),
2548 1.6 christos _LSE_INSN ("lduminal", 0xb8e07000, 0xbfe0fc00, lse_atomic, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2NIL, F_LSE_SZ),
2549 1.6 christos _LSE_INSN ("staddb", 0x3820001f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2550 1.6 christos _LSE_INSN ("staddh", 0x7820001f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2551 1.6 christos _LSE_INSN ("stadd", 0xb820001f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2552 1.6 christos _LSE_INSN ("staddlb", 0x3860001f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2553 1.6 christos _LSE_INSN ("staddlh", 0x7860001f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2554 1.6 christos _LSE_INSN ("staddl", 0xb860001f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2555 1.6 christos _LSE_INSN ("stclrb", 0x3820101f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2556 1.6 christos _LSE_INSN ("stclrh", 0x7820101f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2557 1.6 christos _LSE_INSN ("stclr", 0xb820101f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2558 1.6 christos _LSE_INSN ("stclrlb", 0x3860101f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2559 1.6 christos _LSE_INSN ("stclrlh", 0x7860101f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2560 1.6 christos _LSE_INSN ("stclrl", 0xb860101f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2561 1.6 christos _LSE_INSN ("steorb", 0x3820201f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2562 1.6 christos _LSE_INSN ("steorh", 0x7820201f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2563 1.6 christos _LSE_INSN ("steor", 0xb820201f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2564 1.6 christos _LSE_INSN ("steorlb", 0x3860201f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2565 1.6 christos _LSE_INSN ("steorlh", 0x7860201f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2566 1.6 christos _LSE_INSN ("steorl", 0xb860201f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2567 1.6 christos _LSE_INSN ("stsetb", 0x3820301f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2568 1.6 christos _LSE_INSN ("stseth", 0x7820301f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2569 1.6 christos _LSE_INSN ("stset", 0xb820301f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2570 1.6 christos _LSE_INSN ("stsetlb", 0x3860301f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2571 1.6 christos _LSE_INSN ("stsetlh", 0x7860301f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2572 1.6 christos _LSE_INSN ("stsetl", 0xb860301f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2573 1.6 christos _LSE_INSN ("stsmaxb", 0x3820401f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2574 1.6 christos _LSE_INSN ("stsmaxh", 0x7820401f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2575 1.6 christos _LSE_INSN ("stsmax", 0xb820401f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2576 1.6 christos _LSE_INSN ("stsmaxlb", 0x3860401f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2577 1.6 christos _LSE_INSN ("stsmaxlh", 0x7860401f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2578 1.6 christos _LSE_INSN ("stsmaxl", 0xb860401f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2579 1.6 christos _LSE_INSN ("stsminb", 0x3820501f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2580 1.6 christos _LSE_INSN ("stsminh", 0x7820501f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2581 1.6 christos _LSE_INSN ("stsmin", 0xb820501f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2582 1.6 christos _LSE_INSN ("stsminlb", 0x3860501f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2583 1.6 christos _LSE_INSN ("stsminlh", 0x7860501f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2584 1.6 christos _LSE_INSN ("stsminl", 0xb860501f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2585 1.6 christos _LSE_INSN ("stumaxb", 0x3820601f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2586 1.6 christos _LSE_INSN ("stumaxh", 0x7820601f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2587 1.6 christos _LSE_INSN ("stumax", 0xb820601f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2588 1.6 christos _LSE_INSN ("stumaxlb", 0x3860601f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2589 1.6 christos _LSE_INSN ("stumaxlh", 0x7860601f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2590 1.6 christos _LSE_INSN ("stumaxl", 0xb860601f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2591 1.6 christos _LSE_INSN ("stuminb", 0x3820701f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2592 1.6 christos _LSE_INSN ("stuminh", 0x7820701f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2593 1.6 christos _LSE_INSN ("stumin", 0xb820701f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2594 1.6 christos _LSE_INSN ("stuminlb", 0x3860701f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2595 1.6 christos _LSE_INSN ("stuminlh", 0x7860701f, 0xffe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_W1_LDST_EXC, F_ALIAS),
2596 1.1 christos _LSE_INSN ("stuminl", 0xb860701f, 0xbfe0fc1f, lse_atomic, OP2 (Rs, ADDR_SIMPLE), QL_R1NIL, F_LSE_SZ | F_ALIAS),
2597 1.6 christos /* Move wide (immediate). */
2598 1.6 christos {"movn", 0x12800000, 0x7f800000, movewide, OP_MOVN, CORE, OP2 (Rd, HALF), QL_DST_R, F_SF | F_HAS_ALIAS, NULL},
2599 1.6 christos {"mov", 0x12800000, 0x7f800000, movewide, OP_MOV_IMM_WIDEN, CORE, OP2 (Rd, IMM_MOV), QL_DST_R, F_SF | F_ALIAS | F_CONV, NULL},
2600 1.6 christos {"movz", 0x52800000, 0x7f800000, movewide, OP_MOVZ, CORE, OP2 (Rd, HALF), QL_DST_R, F_SF | F_HAS_ALIAS, NULL},
2601 1.6 christos {"mov", 0x52800000, 0x7f800000, movewide, OP_MOV_IMM_WIDE, CORE, OP2 (Rd, IMM_MOV), QL_DST_R, F_SF | F_ALIAS | F_CONV, NULL},
2602 1.1 christos {"movk", 0x72800000, 0x7f800000, movewide, OP_MOVK, CORE, OP2 (Rd, HALF), QL_DST_R, F_SF, NULL},
2603 1.6 christos /* PC-rel. addressing. */
2604 1.6 christos CORE_INSN ("adr", 0x10000000, 0x9f000000, pcreladdr, OP2 (Rd, ADDR_PCREL21), QL_ADRP, 0),
2605 1.1 christos CORE_INSN ("adrp", 0x90000000, 0x9f000000, pcreladdr, OP2 (Rd, ADDR_ADRP), QL_ADRP, 0),
2606 1.6 christos /* System. */
2607 1.6 christos CORE_INSN ("msr", 0xd500401f, 0xfff8f01f, ic_system, OP2 (PSTATEFIELD, UIMM4), {}, 0),
2608 1.6 christos CORE_INSN ("hint",0xd503201f, 0xfffff01f, ic_system, OP1 (UIMM7), {}, F_HAS_ALIAS),
2609 1.6 christos CORE_INSN ("nop", 0xd503201f, 0xffffffff, ic_system, OP0 (), {}, F_ALIAS),
2610 1.6 christos CORE_INSN ("yield", 0xd503203f, 0xffffffff, ic_system, OP0 (), {}, F_ALIAS),
2611 1.6 christos CORE_INSN ("wfe", 0xd503205f, 0xffffffff, ic_system, OP0 (), {}, F_ALIAS),
2612 1.6 christos CORE_INSN ("wfi", 0xd503207f, 0xffffffff, ic_system, OP0 (), {}, F_ALIAS),
2613 1.6 christos CORE_INSN ("sev", 0xd503209f, 0xffffffff, ic_system, OP0 (), {}, F_ALIAS),
2614 1.6 christos CORE_INSN ("sevl",0xd50320bf, 0xffffffff, ic_system, OP0 (), {}, F_ALIAS),
2615 1.6 christos {"esb", 0xd503221f, 0xffffffff, ic_system, 0, RAS, OP0 (), {}, F_ALIAS, NULL},
2616 1.6 christos {"psb", 0xd503223f, 0xffffffff, ic_system, 0, STAT_PROFILE, OP1 (BARRIER_PSB), {}, F_ALIAS, NULL},
2617 1.6 christos CORE_INSN ("clrex", 0xd503305f, 0xfffff0ff, ic_system, OP1 (UIMM4), {}, F_OPD0_OPT | F_DEFAULT (0xF)),
2618 1.6 christos CORE_INSN ("dsb", 0xd503309f, 0xfffff0ff, ic_system, OP1 (BARRIER), {}, 0),
2619 1.6 christos CORE_INSN ("dmb", 0xd50330bf, 0xfffff0ff, ic_system, OP1 (BARRIER), {}, 0),
2620 1.6 christos CORE_INSN ("isb", 0xd50330df, 0xfffff0ff, ic_system, OP1 (BARRIER_ISB), {}, F_OPD0_OPT | F_DEFAULT (0xF)),
2621 1.6 christos CORE_INSN ("sys", 0xd5080000, 0xfff80000, ic_system, OP5 (UIMM3_OP1, Cn, Cm, UIMM3_OP2, Rt), QL_SYS, F_HAS_ALIAS | F_OPD4_OPT | F_DEFAULT (0x1F)),
2622 1.6 christos CORE_INSN ("at", 0xd5080000, 0xfff80000, ic_system, OP2 (SYSREG_AT, Rt), QL_SRC_X, F_ALIAS),
2623 1.6 christos CORE_INSN ("dc", 0xd5080000, 0xfff80000, ic_system, OP2 (SYSREG_DC, Rt), QL_SRC_X, F_ALIAS),
2624 1.6 christos CORE_INSN ("ic", 0xd5080000, 0xfff80000, ic_system, OP2 (SYSREG_IC, Rt_SYS), QL_SRC_X, F_ALIAS | F_OPD1_OPT | F_DEFAULT (0x1F)),
2625 1.6 christos CORE_INSN ("tlbi",0xd5080000, 0xfff80000, ic_system, OP2 (SYSREG_TLBI, Rt_SYS), QL_SRC_X, F_ALIAS | F_OPD1_OPT | F_DEFAULT (0x1F)),
2626 1.6 christos CORE_INSN ("msr", 0xd5000000, 0xffe00000, ic_system, OP2 (SYSREG, Rt), QL_SRC_X, 0),
2627 1.6 christos CORE_INSN ("sysl",0xd5280000, 0xfff80000, ic_system, OP5 (Rt, UIMM3_OP1, Cn, Cm, UIMM3_OP2), QL_SYSL, 0),
2628 1.1 christos CORE_INSN ("mrs", 0xd5200000, 0xffe00000, ic_system, OP2 (Rt, SYSREG), QL_DST_X, 0),
2629 1.6 christos /* Test & branch (immediate). */
2630 1.6 christos CORE_INSN ("tbz", 0x36000000, 0x7f000000, testbranch, OP3 (Rt, BIT_NUM, ADDR_PCREL14), QL_PCREL_14, 0),
2631 1.1 christos CORE_INSN ("tbnz",0x37000000, 0x7f000000, testbranch, OP3 (Rt, BIT_NUM, ADDR_PCREL14), QL_PCREL_14, 0),
2632 1.6 christos /* The old UAL conditional branch mnemonics (to aid portability). */
2633 1.6 christos CORE_INSN ("beq", 0x54000000, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2634 1.6 christos CORE_INSN ("bne", 0x54000001, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2635 1.6 christos CORE_INSN ("bcs", 0x54000002, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2636 1.6 christos CORE_INSN ("bhs", 0x54000002, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2637 1.6 christos CORE_INSN ("bcc", 0x54000003, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2638 1.6 christos CORE_INSN ("blo", 0x54000003, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2639 1.6 christos CORE_INSN ("bmi", 0x54000004, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2640 1.6 christos CORE_INSN ("bpl", 0x54000005, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2641 1.6 christos CORE_INSN ("bvs", 0x54000006, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2642 1.6 christos CORE_INSN ("bvc", 0x54000007, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2643 1.6 christos CORE_INSN ("bhi", 0x54000008, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2644 1.6 christos CORE_INSN ("bls", 0x54000009, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2645 1.6 christos CORE_INSN ("bge", 0x5400000a, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2646 1.6 christos CORE_INSN ("blt", 0x5400000b, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2647 1.6 christos CORE_INSN ("bgt", 0x5400000c, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2648 1.1 christos CORE_INSN ("ble", 0x5400000d, 0xff00001f, condbranch, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO),
2649 1.6 christos
2650 1.1 christos {0, 0, 0, 0, 0, 0, {}, {}, 0, NULL},
2651 1.1 christos };
2652 1.1 christos
2653 1.1 christos #ifdef AARCH64_OPERANDS
2654 1.1 christos #undef AARCH64_OPERANDS
2655 1.1 christos #endif
2656 1.1 christos
2657 1.1 christos /* Macro-based operand decription; this will be fed into aarch64-gen for it
2658 1.1 christos to generate the structure aarch64_operands and the function
2659 1.1 christos aarch64_insert_operand and aarch64_extract_operand.
2660 1.1 christos
2661 1.1 christos These inserters and extracters in the description execute the conversion
2662 1.1 christos between the aarch64_opnd_info and value in the operand-related instruction
2663 1.1 christos field(s). */
2664 1.1 christos
2665 1.1 christos /* Y expects arguments (left to right) to be operand class, inserter/extractor
2666 1.1 christos name suffix, operand name, flags, related bitfield(s) and description.
2667 1.1 christos X only differs from Y by having the operand inserter and extractor names
2668 1.1 christos listed separately. */
2669 1.1 christos
2670 1.1 christos #define AARCH64_OPERANDS \
2671 1.1 christos Y(INT_REG, regno, "Rd", 0, F(FLD_Rd), "an integer register") \
2672 1.1 christos Y(INT_REG, regno, "Rn", 0, F(FLD_Rn), "an integer register") \
2673 1.1 christos Y(INT_REG, regno, "Rm", 0, F(FLD_Rm), "an integer register") \
2674 1.1 christos Y(INT_REG, regno, "Rt", 0, F(FLD_Rt), "an integer register") \
2675 1.1 christos Y(INT_REG, regno, "Rt2", 0, F(FLD_Rt2), "an integer register") \
2676 1.1 christos Y(INT_REG, regno, "Rs", 0, F(FLD_Rs), "an integer register") \
2677 1.1 christos Y(INT_REG, regno, "Ra", 0, F(FLD_Ra), "an integer register") \
2678 1.1 christos X(INT_REG, ins_regno, ext_regrt_sysins, "Rt_SYS", 0, F(FLD_Rt), \
2679 1.1 christos "an integer register") \
2680 1.1 christos Y(INT_REG, regno, "Rd_SP", OPD_F_MAYBE_SP, F(FLD_Rd), \
2681 1.1 christos "an integer or stack pointer register") \
2682 1.1 christos Y(INT_REG, regno, "Rn_SP", OPD_F_MAYBE_SP, F(FLD_Rn), \
2683 1.3 christos "an integer or stack pointer register") \
2684 1.3 christos X(INT_REG, 0, ext_regno_pair, "PAIRREG", 0, F(), \
2685 1.1 christos "the second reg of a pair") \
2686 1.1 christos Y(MODIFIED_REG, reg_extended, "Rm_EXT", 0, F(), \
2687 1.1 christos "an integer register with optional extension") \
2688 1.1 christos Y(MODIFIED_REG, reg_shifted, "Rm_SFT", 0, F(), \
2689 1.1 christos "an integer register with optional shift") \
2690 1.1 christos Y(FP_REG, regno, "Fd", 0, F(FLD_Rd), "a floating-point register") \
2691 1.1 christos Y(FP_REG, regno, "Fn", 0, F(FLD_Rn), "a floating-point register") \
2692 1.1 christos Y(FP_REG, regno, "Fm", 0, F(FLD_Rm), "a floating-point register") \
2693 1.1 christos Y(FP_REG, regno, "Fa", 0, F(FLD_Ra), "a floating-point register") \
2694 1.1 christos Y(FP_REG, ft, "Ft", 0, F(FLD_Rt), "a floating-point register") \
2695 1.1 christos Y(FP_REG, regno, "Ft2", 0, F(FLD_Rt2), "a floating-point register") \
2696 1.1 christos Y(SISD_REG, regno, "Sd", 0, F(FLD_Rd), "a SIMD scalar register") \
2697 1.1 christos Y(SISD_REG, regno, "Sn", 0, F(FLD_Rn), "a SIMD scalar register") \
2698 1.1 christos Y(SISD_REG, regno, "Sm", 0, F(FLD_Rm), "a SIMD scalar register") \
2699 1.1 christos Y(SIMD_REG, regno, "Vd", 0, F(FLD_Rd), "a SIMD vector register") \
2700 1.1 christos Y(SIMD_REG, regno, "Vn", 0, F(FLD_Rn), "a SIMD vector register") \
2701 1.1 christos Y(SIMD_REG, regno, "Vm", 0, F(FLD_Rm), "a SIMD vector register") \
2702 1.1 christos Y(FP_REG, regno, "VdD1", 0, F(FLD_Rd), \
2703 1.1 christos "the top half of a 128-bit FP/SIMD register") \
2704 1.1 christos Y(FP_REG, regno, "VnD1", 0, F(FLD_Rn), \
2705 1.1 christos "the top half of a 128-bit FP/SIMD register") \
2706 1.1 christos Y(SIMD_ELEMENT, reglane, "Ed", 0, F(FLD_Rd), \
2707 1.1 christos "a SIMD vector element") \
2708 1.1 christos Y(SIMD_ELEMENT, reglane, "En", 0, F(FLD_Rn), \
2709 1.1 christos "a SIMD vector element") \
2710 1.1 christos Y(SIMD_ELEMENT, reglane, "Em", 0, F(FLD_Rm), \
2711 1.1 christos "a SIMD vector element") \
2712 1.1 christos Y(SIMD_REGLIST, reglist, "LVn", 0, F(FLD_Rn), \
2713 1.1 christos "a SIMD vector register list") \
2714 1.1 christos Y(SIMD_REGLIST, ldst_reglist, "LVt", 0, F(), \
2715 1.1 christos "a SIMD vector register list") \
2716 1.1 christos Y(SIMD_REGLIST, ldst_reglist_r, "LVt_AL", 0, F(), \
2717 1.1 christos "a SIMD vector register list") \
2718 1.1 christos Y(SIMD_REGLIST, ldst_elemlist, "LEt", 0, F(), \
2719 1.1 christos "a SIMD vector element list") \
2720 1.1 christos Y(CP_REG, regno, "Cn", 0, F(FLD_CRn), \
2721 1.1 christos "a 4-bit opcode field named for historical reasons C0 - C15") \
2722 1.1 christos Y(CP_REG, regno, "Cm", 0, F(FLD_CRm), \
2723 1.1 christos "a 4-bit opcode field named for historical reasons C0 - C15") \
2724 1.1 christos Y(IMMEDIATE, imm, "IDX", 0, F(FLD_imm4), \
2725 1.1 christos "an immediate as the index of the least significant byte") \
2726 1.1 christos Y(IMMEDIATE, advsimd_imm_shift, "IMM_VLSL", 0, F(), \
2727 1.1 christos "a left shift amount for an AdvSIMD register") \
2728 1.1 christos Y(IMMEDIATE, advsimd_imm_shift, "IMM_VLSR", 0, F(), \
2729 1.1 christos "a right shift amount for an AdvSIMD register") \
2730 1.1 christos Y(IMMEDIATE, advsimd_imm_modified, "SIMD_IMM", 0, F(), \
2731 1.1 christos "an immediate") \
2732 1.1 christos Y(IMMEDIATE, advsimd_imm_modified, "SIMD_IMM_SFT", 0, F(), \
2733 1.1 christos "an 8-bit unsigned immediate with optional shift") \
2734 1.1 christos Y(IMMEDIATE, advsimd_imm_modified, "SIMD_FPIMM", 0, F(), \
2735 1.1 christos "an 8-bit floating-point constant") \
2736 1.1 christos X(IMMEDIATE, 0, ext_shll_imm, "SHLL_IMM", 0, F(), \
2737 1.1 christos "an immediate shift amount of 8, 16 or 32") \
2738 1.1 christos X(IMMEDIATE, 0, 0, "IMM0", 0, F(), "0") \
2739 1.1 christos X(IMMEDIATE, 0, 0, "FPIMM0", 0, F(), "0.0") \
2740 1.1 christos Y(IMMEDIATE, imm, "FPIMM", 0, F(FLD_imm8), \
2741 1.1 christos "an 8-bit floating-point constant") \
2742 1.1 christos Y(IMMEDIATE, imm, "IMMR", 0, F(FLD_immr), \
2743 1.1 christos "the right rotate amount") \
2744 1.1 christos Y(IMMEDIATE, imm, "IMMS", 0, F(FLD_imm6), \
2745 1.1 christos "the leftmost bit number to be moved from the source") \
2746 1.1 christos Y(IMMEDIATE, imm, "WIDTH", 0, F(FLD_imm6), \
2747 1.1 christos "the width of the bit-field") \
2748 1.1 christos Y(IMMEDIATE, imm, "IMM", 0, F(FLD_imm6), "an immediate") \
2749 1.1 christos Y(IMMEDIATE, imm, "UIMM3_OP1", 0, F(FLD_op1), \
2750 1.1 christos "a 3-bit unsigned immediate") \
2751 1.1 christos Y(IMMEDIATE, imm, "UIMM3_OP2", 0, F(FLD_op2), \
2752 1.1 christos "a 3-bit unsigned immediate") \
2753 1.1 christos Y(IMMEDIATE, imm, "UIMM4", 0, F(FLD_CRm), \
2754 1.1 christos "a 4-bit unsigned immediate") \
2755 1.1 christos Y(IMMEDIATE, imm, "UIMM7", 0, F(FLD_CRm, FLD_op2), \
2756 1.1 christos "a 7-bit unsigned immediate") \
2757 1.1 christos Y(IMMEDIATE, imm, "BIT_NUM", 0, F(FLD_b5, FLD_b40), \
2758 1.1 christos "the bit number to be tested") \
2759 1.1 christos Y(IMMEDIATE, imm, "EXCEPTION", 0, F(FLD_imm16), \
2760 1.1 christos "a 16-bit unsigned immediate") \
2761 1.1 christos Y(IMMEDIATE, imm, "CCMP_IMM", 0, F(FLD_imm5), \
2762 1.1 christos "a 5-bit unsigned immediate") \
2763 1.1 christos Y(IMMEDIATE, imm, "NZCV", 0, F(FLD_nzcv), \
2764 1.1 christos "a flag bit specifier giving an alternative value for each flag") \
2765 1.1 christos Y(IMMEDIATE, limm, "LIMM", 0, F(FLD_N,FLD_immr,FLD_imms), \
2766 1.1 christos "Logical immediate") \
2767 1.1 christos Y(IMMEDIATE, aimm, "AIMM", 0, F(FLD_shift,FLD_imm12), \
2768 1.1 christos "a 12-bit unsigned immediate with optional left shift of 12 bits")\
2769 1.1 christos Y(IMMEDIATE, imm_half, "HALF", 0, F(FLD_imm16), \
2770 1.1 christos "a 16-bit immediate with optional left shift") \
2771 1.1 christos Y(IMMEDIATE, fbits, "FBITS", 0, F(FLD_scale), \
2772 1.1 christos "the number of bits after the binary point in the fixed-point value")\
2773 1.1 christos X(IMMEDIATE, 0, 0, "IMM_MOV", 0, F(), "an immediate") \
2774 1.1 christos Y(COND, cond, "COND", 0, F(), "a condition") \
2775 1.1 christos Y(COND, cond, "COND1", 0, F(), \
2776 1.1 christos "one of the standard conditions, excluding AL and NV.") \
2777 1.1 christos X(ADDRESS, 0, ext_imm, "ADDR_ADRP", OPD_F_SEXT, F(FLD_immhi, FLD_immlo),\
2778 1.1 christos "21-bit PC-relative address of a 4KB page") \
2779 1.1 christos Y(ADDRESS, imm, "ADDR_PCREL14", OPD_F_SEXT | OPD_F_SHIFT_BY_2, \
2780 1.1 christos F(FLD_imm14), "14-bit PC-relative address") \
2781 1.1 christos Y(ADDRESS, imm, "ADDR_PCREL19", OPD_F_SEXT | OPD_F_SHIFT_BY_2, \
2782 1.1 christos F(FLD_imm19), "19-bit PC-relative address") \
2783 1.1 christos Y(ADDRESS, imm, "ADDR_PCREL21", OPD_F_SEXT, F(FLD_immhi,FLD_immlo), \
2784 1.1 christos "21-bit PC-relative address") \
2785 1.1 christos Y(ADDRESS, imm, "ADDR_PCREL26", OPD_F_SEXT | OPD_F_SHIFT_BY_2, \
2786 1.1 christos F(FLD_imm26), "26-bit PC-relative address") \
2787 1.1 christos Y(ADDRESS, addr_simple, "ADDR_SIMPLE", 0, F(), \
2788 1.1 christos "an address with base register (no offset)") \
2789 1.1 christos Y(ADDRESS, addr_regoff, "ADDR_REGOFF", 0, F(), \
2790 1.1 christos "an address with register offset") \
2791 1.1 christos Y(ADDRESS, addr_simm, "ADDR_SIMM7", 0, F(FLD_imm7,FLD_index2), \
2792 1.1 christos "an address with 7-bit signed immediate offset") \
2793 1.1 christos Y(ADDRESS, addr_simm, "ADDR_SIMM9", 0, F(FLD_imm9,FLD_index), \
2794 1.1 christos "an address with 9-bit signed immediate offset") \
2795 1.1 christos Y(ADDRESS, addr_simm, "ADDR_SIMM9_2", 0, F(FLD_imm9,FLD_index), \
2796 1.1 christos "an address with 9-bit negative or unaligned immediate offset") \
2797 1.1 christos Y(ADDRESS, addr_uimm12, "ADDR_UIMM12", 0, F(FLD_Rn,FLD_imm12), \
2798 1.1 christos "an address with scaled, unsigned immediate offset") \
2799 1.1 christos Y(ADDRESS, addr_simple, "SIMD_ADDR_SIMPLE", 0, F(), \
2800 1.1 christos "an address with base register (no offset)") \
2801 1.1 christos Y(ADDRESS, simd_addr_post, "SIMD_ADDR_POST", 0, F(), \
2802 1.1 christos "a post-indexed address with immediate or register increment") \
2803 1.1 christos Y(SYSTEM, sysreg, "SYSREG", 0, F(), "a system register") \
2804 1.1 christos Y(SYSTEM, pstatefield, "PSTATEFIELD", 0, F(), \
2805 1.1 christos "a PSTATE field name") \
2806 1.1 christos Y(SYSTEM, sysins_op, "SYSREG_AT", 0, F(), \
2807 1.1 christos "an address translation operation specifier") \
2808 1.1 christos Y(SYSTEM, sysins_op, "SYSREG_DC", 0, F(), \
2809 1.1 christos "a data cache maintenance operation specifier") \
2810 1.6 christos Y(SYSTEM, sysins_op, "SYSREG_IC", 0, F(), \
2811 1.1 christos "an instruction cache maintenance operation specifier") \
2812 1.1 christos Y(SYSTEM, sysins_op, "SYSREG_TLBI", 0, F(), \
2813 1.1 christos "a TBL invalidation operation specifier") \
2814 1.1 christos Y(SYSTEM, barrier, "BARRIER", 0, F(), \
2815 1.1 christos "a barrier option name") \
2816 1.1 christos Y(SYSTEM, barrier, "BARRIER_ISB", 0, F(), \
2817 1.1 christos "the ISB option name SY or an optional 4-bit unsigned immediate") \
2818 1.6 christos Y(SYSTEM, prfop, "PRFOP", 0, F(), \
2819 1.6 christos "a prefetch operation specifier") \
2820 1.6 christos Y (SYSTEM, hint, "BARRIER_PSB", 0, F (), \
2821 "the PSB option name CSYNC")
2822