VirtualBox

source: vbox/trunk/include/VBox/disopcode-armv8.h

Last change on this file was 106806, checked in by vboxsync, 4 weeks ago

Disassembler: Decode RCW compare and swap and RCW compare and swap pair instructions, bugref:10394 [missing file]

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 19.3 KB
Line 
1/** @file
2 * Disassembler - Opcodes
3 */
4
5/*
6 * Copyright (C) 2023-2024 Oracle and/or its affiliates.
7 *
8 * This file is part of VirtualBox base platform packages, as
9 * available from https://www.virtualbox.org.
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation, in version 3 of the
14 * License.
15 *
16 * This program is distributed in the hope that it will be useful, but
17 * WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, see <https://www.gnu.org/licenses>.
23 *
24 * The contents of this file may alternatively be used under the terms
25 * of the Common Development and Distribution License Version 1.0
26 * (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
27 * in the VirtualBox distribution, in which case the provisions of the
28 * CDDL are applicable instead of those of the GPL.
29 *
30 * You may elect to license modified versions of this file under the
31 * terms and conditions of either the GPL or the CDDL or both.
32 *
33 * SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
34 */
35
36#ifndef VBOX_INCLUDED_disopcode_armv8_h
37#define VBOX_INCLUDED_disopcode_armv8_h
38#ifndef RT_WITHOUT_PRAGMA_ONCE
39# pragma once
40#endif
41
42#include <iprt/assert.h>
43
44/** @defgroup grp_dis_opcodes_armv8 Opcodes (DISOPCODE::uOpCode)
45 * @ingroup grp_dis
46 * @{
47 */
48enum OPCODESARMV8
49{
50 /** @name Full ARMv8 AArch64 opcode list.
51 * @{ */
52 OP_ARMV8_INVALID = 0,
53 OP_ARMV8_A64_ABS,
54 OP_ARMV8_A64_ADC,
55 OP_ARMV8_A64_ADCS,
56 OP_ARMV8_A64_ADD,
57 OP_ARMV8_A64_ADDG,
58 OP_ARMV8_A64_ADDS,
59 OP_ARMV8_A64_ADR,
60 OP_ARMV8_A64_ADRP,
61 OP_ARMV8_A64_AND,
62 OP_ARMV8_A64_ANDS,
63 OP_ARMV8_A64_ASR,
64 OP_ARMV8_A64_ASRV,
65 OP_ARMV8_A64_AT,
66 OP_ARMV8_A64_AUTDA,
67 OP_ARMV8_A64_AUTDZA,
68 OP_ARMV8_A64_AUTDB,
69 OP_ARMV8_A64_AUTDZB,
70 OP_ARMV8_A64_AUTIA,
71 OP_ARMV8_A64_AUTIA1716,
72 OP_ARMV8_A64_AUTIASP,
73 OP_ARMV8_A64_AUTIAZ,
74 OP_ARMV8_A64_AUTIZA,
75 OP_ARMV8_A64_AUTIB,
76 OP_ARMV8_A64_AUTIB1716,
77 OP_ARMV8_A64_AUTIBSP,
78 OP_ARMV8_A64_AUTIBZ,
79 OP_ARMV8_A64_AUTIZB,
80 OP_ARMV8_A64_AXFLAG,
81 OP_ARMV8_A64_B,
82 OP_ARMV8_A64_BC,
83 OP_ARMV8_A64_BFC,
84 OP_ARMV8_A64_BFI,
85 OP_ARMV8_A64_BFM,
86 OP_ARMV8_A64_BFXIL,
87 OP_ARMV8_A64_BIC,
88 OP_ARMV8_A64_BICS,
89 OP_ARMV8_A64_BL,
90 OP_ARMV8_A64_BLR,
91 OP_ARMV8_A64_BLRAA,
92 OP_ARMV8_A64_BLRAAZ,
93 OP_ARMV8_A64_BLRAB,
94 OP_ARMV8_A64_BLRABZ,
95 OP_ARMV8_A64_BR,
96 OP_ARMV8_A64_BRAA,
97 OP_ARMV8_A64_BRAAZ,
98 OP_ARMV8_A64_BRAB,
99 OP_ARMV8_A64_BRABZ,
100 OP_ARMV8_A64_BRB,
101 OP_ARMV8_A64_BRK,
102 OP_ARMV8_A64_BTI,
103 OP_ARMV8_A64_BTI_C,
104 OP_ARMV8_A64_BTI_J,
105 OP_ARMV8_A64_BTI_JC,
106 OP_ARMV8_A64_CASB,
107 OP_ARMV8_A64_CASAB,
108 OP_ARMV8_A64_CASALB,
109 OP_ARMV8_A64_CASLB,
110 OP_ARMV8_A64_CASH,
111 OP_ARMV8_A64_CASAH,
112 OP_ARMV8_A64_CASALH,
113 OP_ARMV8_A64_CASLH,
114 OP_ARMV8_A64_CASP,
115 OP_ARMV8_A64_CASPA,
116 OP_ARMV8_A64_CASPAL,
117 OP_ARMV8_A64_CASPL,
118 OP_ARMV8_A64_CAS,
119 OP_ARMV8_A64_CASA,
120 OP_ARMV8_A64_CASAL,
121 OP_ARMV8_A64_CASL,
122 OP_ARMV8_A64_CBNZ,
123 OP_ARMV8_A64_CBZ,
124 OP_ARMV8_A64_CCMN,
125 OP_ARMV8_A64_CCMP,
126 OP_ARMV8_A64_CFINV,
127 OP_ARMV8_A64_CFP,
128 OP_ARMV8_A64_CHKFEAT,
129 OP_ARMV8_A64_CINC,
130 OP_ARMV8_A64_CINV,
131 OP_ARMV8_A64_CLRBHB,
132 OP_ARMV8_A64_CLREX,
133 OP_ARMV8_A64_CLS,
134 OP_ARMV8_A64_CLZ,
135 OP_ARMV8_A64_CMN,
136 OP_ARMV8_A64_CMP,
137 OP_ARMV8_A64_CMPP,
138 OP_ARMV8_A64_CNEG,
139 OP_ARMV8_A64_CNT,
140 OP_ARMV8_A64_CPP,
141 /** @todo FEAT_MOPS instructions (CPYFP and friends). */
142 OP_ARMV8_A64_CRC32B,
143 OP_ARMV8_A64_CRC32H,
144 OP_ARMV8_A64_CRC32W,
145 OP_ARMV8_A64_CRC32X,
146 OP_ARMV8_A64_CRC32CB,
147 OP_ARMV8_A64_CRC32CH,
148 OP_ARMV8_A64_CRC32CW,
149 OP_ARMV8_A64_CRC32CX,
150 OP_ARMV8_A64_CSDB,
151 OP_ARMV8_A64_CSEL,
152 OP_ARMV8_A64_CSET,
153 OP_ARMV8_A64_CSETM,
154 OP_ARMV8_A64_CSINC,
155 OP_ARMV8_A64_CSNEG,
156 OP_ARMV8_A64_CTZ,
157 OP_ARMV8_A64_DC,
158 OP_ARMV8_A64_DCPS1,
159 OP_ARMV8_A64_DCPS2,
160 OP_ARMV8_A64_DCPS3,
161 OP_ARMV8_A64_DGH,
162 OP_ARMV8_A64_DMB,
163 OP_ARMV8_A64_DRPS,
164 OP_ARMV8_A64_DSB,
165 OP_ARMV8_A64_DVP,
166 OP_ARMV8_A64_EON,
167 OP_ARMV8_A64_EOR,
168 OP_ARMV8_A64_ERET,
169 OP_ARMV8_A64_ERETAA,
170 OP_ARMV8_A64_ERETAB,
171 OP_ARMV8_A64_ESB,
172 OP_ARMV8_A64_EXTR,
173 OP_ARMV8_A64_FABS,
174 OP_ARMV8_A64_FADD,
175 OP_ARMV8_A64_FCCMP,
176 OP_ARMV8_A64_FCCMPE,
177 OP_ARMV8_A64_FCMP,
178 OP_ARMV8_A64_FCMPE,
179 OP_ARMV8_A64_FCSEL,
180 OP_ARMV8_A64_FCVT,
181 OP_ARMV8_A64_FCVTZS,
182 OP_ARMV8_A64_FCVTZU,
183 OP_ARMV8_A64_FDIV,
184 OP_ARMV8_A64_FMADD,
185 OP_ARMV8_A64_FMAX,
186 OP_ARMV8_A64_FMAXNM,
187 OP_ARMV8_A64_FMIN,
188 OP_ARMV8_A64_FMINNM,
189 OP_ARMV8_A64_FMOV,
190 OP_ARMV8_A64_FMSUB,
191 OP_ARMV8_A64_FMUL,
192 OP_ARMV8_A64_FNEG,
193 OP_ARMV8_A64_FNMADD,
194 OP_ARMV8_A64_FNMSUB,
195 OP_ARMV8_A64_FNMUL,
196 OP_ARMV8_A64_FRINT32X,
197 OP_ARMV8_A64_FRINT32Z,
198 OP_ARMV8_A64_FRINT64X,
199 OP_ARMV8_A64_FRINT64Z,
200 OP_ARMV8_A64_FRINTA,
201 OP_ARMV8_A64_FRINTI,
202 OP_ARMV8_A64_FRINTM,
203 OP_ARMV8_A64_FRINTN,
204 OP_ARMV8_A64_FRINTP,
205 OP_ARMV8_A64_FRINTX,
206 OP_ARMV8_A64_FRINTZ,
207 OP_ARMV8_A64_FSQRT,
208 OP_ARMV8_A64_FSUB,
209 OP_ARMV8_A64_GCSB,
210 OP_ARMV8_A64_GMI,
211 OP_ARMV8_A64_HINT,
212 OP_ARMV8_A64_HLT,
213 OP_ARMV8_A64_HVC,
214 OP_ARMV8_A64_IC,
215 OP_ARMV8_A64_IRG,
216 OP_ARMV8_A64_ISB,
217 OP_ARMV8_A64_LD1,
218 OP_ARMV8_A64_LD2,
219 OP_ARMV8_A64_LD3,
220 OP_ARMV8_A64_LD4,
221 OP_ARMV8_A64_LD64B,
222 OP_ARMV8_A64_LDADDB,
223 OP_ARMV8_A64_LDADDAB,
224 OP_ARMV8_A64_LDADDALB,
225 OP_ARMV8_A64_LDADDLB,
226 OP_ARMV8_A64_LDADDH,
227 OP_ARMV8_A64_LDADDAH,
228 OP_ARMV8_A64_LDADDALH,
229 OP_ARMV8_A64_LDADDLH,
230 OP_ARMV8_A64_LDADD,
231 OP_ARMV8_A64_LDADDA,
232 OP_ARMV8_A64_LDADDAL,
233 OP_ARMV8_A64_LDADDL,
234 OP_ARMV8_A64_LDAPR,
235 OP_ARMV8_A64_LDAPRB,
236 OP_ARMV8_A64_LDAPRH,
237 OP_ARMV8_A64_LDAPUR,
238 OP_ARMV8_A64_LDAPURB,
239 OP_ARMV8_A64_LDAPURH,
240 OP_ARMV8_A64_LDAPURSB,
241 OP_ARMV8_A64_LDAPURSH,
242 OP_ARMV8_A64_LDAPURSW,
243 OP_ARMV8_A64_LDAR,
244 OP_ARMV8_A64_LDARB,
245 OP_ARMV8_A64_LDARH,
246 OP_ARMV8_A64_LDAXP,
247 OP_ARMV8_A64_LDAXR,
248 OP_ARMV8_A64_LDAXRB,
249 OP_ARMV8_A64_LDAXRH,
250 OP_ARMV8_A64_LDCLRB,
251 OP_ARMV8_A64_LDCLRAB,
252 OP_ARMV8_A64_LDCLRALB,
253 OP_ARMV8_A64_LDCLRLB,
254 OP_ARMV8_A64_LDCLRH,
255 OP_ARMV8_A64_LDCLRAH,
256 OP_ARMV8_A64_LDCLRALH,
257 OP_ARMV8_A64_LDCLRLH,
258 OP_ARMV8_A64_LDCLR,
259 OP_ARMV8_A64_LDCLRA,
260 OP_ARMV8_A64_LDCLRAL,
261 OP_ARMV8_A64_LDCLRL,
262 OP_ARMV8_A64_LDEORB,
263 OP_ARMV8_A64_LDEORAB,
264 OP_ARMV8_A64_LDEORALB,
265 OP_ARMV8_A64_LDEORLB,
266 OP_ARMV8_A64_LDEORH,
267 OP_ARMV8_A64_LDEORAH,
268 OP_ARMV8_A64_LDEORALH,
269 OP_ARMV8_A64_LDEORLH,
270 OP_ARMV8_A64_LDEOR,
271 OP_ARMV8_A64_LDEORA,
272 OP_ARMV8_A64_LDEORAL,
273 OP_ARMV8_A64_LDEORL,
274 OP_ARMV8_A64_LDG,
275 OP_ARMV8_A64_LDGM,
276 OP_ARMV8_A64_LDLARB,
277 OP_ARMV8_A64_LDLARH,
278 OP_ARMV8_A64_LDLAR,
279 OP_ARMV8_A64_LDNP,
280 OP_ARMV8_A64_LDP,
281 OP_ARMV8_A64_LDPSW,
282 OP_ARMV8_A64_LDR,
283 OP_ARMV8_A64_LDRAA,
284 OP_ARMV8_A64_LDRAB,
285 OP_ARMV8_A64_LDRB,
286 OP_ARMV8_A64_LDRH,
287 OP_ARMV8_A64_LDRSB,
288 OP_ARMV8_A64_LDRSH,
289 OP_ARMV8_A64_LDRSW,
290 OP_ARMV8_A64_LDSETB,
291 OP_ARMV8_A64_LDSETAB,
292 OP_ARMV8_A64_LDSETALB,
293 OP_ARMV8_A64_LDSETLB,
294 OP_ARMV8_A64_LDSETH,
295 OP_ARMV8_A64_LDSETAH,
296 OP_ARMV8_A64_LDSETALH,
297 OP_ARMV8_A64_LDSETLH,
298 OP_ARMV8_A64_LDSET,
299 OP_ARMV8_A64_LDSETA,
300 OP_ARMV8_A64_LDSETAL,
301 OP_ARMV8_A64_LDSETL,
302 OP_ARMV8_A64_LDSMAB,
303 OP_ARMV8_A64_LDSMAXAB,
304 OP_ARMV8_A64_LDSMAXALB,
305 OP_ARMV8_A64_LDSMAXB,
306 OP_ARMV8_A64_LDSMAXLB,
307 OP_ARMV8_A64_LDSMAXH,
308 OP_ARMV8_A64_LDSMAXAH,
309 OP_ARMV8_A64_LDSMAXALH,
310 OP_ARMV8_A64_LDSMAXLH,
311 OP_ARMV8_A64_LDSMAX,
312 OP_ARMV8_A64_LDSMAXA,
313 OP_ARMV8_A64_LDSMAXAL,
314 OP_ARMV8_A64_LDSMAXL,
315 OP_ARMV8_A64_LDSMINB,
316 OP_ARMV8_A64_LDSMINAB,
317 OP_ARMV8_A64_LDSMINALB,
318 OP_ARMV8_A64_LDSMINLB,
319 OP_ARMV8_A64_LDSMINH,
320 OP_ARMV8_A64_LDSMINAH,
321 OP_ARMV8_A64_LDSMINALH,
322 OP_ARMV8_A64_LDSMINLH,
323 OP_ARMV8_A64_LDSMIN,
324 OP_ARMV8_A64_LDSMINA,
325 OP_ARMV8_A64_LDSMINAL,
326 OP_ARMV8_A64_LDSMINL,
327 OP_ARMV8_A64_LDTR,
328 OP_ARMV8_A64_LDTRB,
329 OP_ARMV8_A64_LDTRH,
330 OP_ARMV8_A64_LDTRSB,
331 OP_ARMV8_A64_LDTRSH,
332 OP_ARMV8_A64_LDTRSW,
333 OP_ARMV8_A64_LDUMAXB,
334 OP_ARMV8_A64_LDUMAXAB,
335 OP_ARMV8_A64_LDUMAXALB,
336 OP_ARMV8_A64_LDUMAXLB,
337 OP_ARMV8_A64_LDUMAXH,
338 OP_ARMV8_A64_LDUMAXAH,
339 OP_ARMV8_A64_LDUMAXALH,
340 OP_ARMV8_A64_LDUMAXLH,
341 OP_ARMV8_A64_LDUMAX,
342 OP_ARMV8_A64_LDUMAXA,
343 OP_ARMV8_A64_LDUMAXAL,
344 OP_ARMV8_A64_LDUMAXL,
345 OP_ARMV8_A64_LDUMINB,
346 OP_ARMV8_A64_LDUMINAB,
347 OP_ARMV8_A64_LDUMINALB,
348 OP_ARMV8_A64_LDUMINLB,
349 OP_ARMV8_A64_LDUMINH,
350 OP_ARMV8_A64_LDUMINAH,
351 OP_ARMV8_A64_LDUMINALH,
352 OP_ARMV8_A64_LDUMINLH,
353 OP_ARMV8_A64_LDUMIN,
354 OP_ARMV8_A64_LDUMINA,
355 OP_ARMV8_A64_LDUMINAL,
356 OP_ARMV8_A64_LDUMINL,
357 OP_ARMV8_A64_LDUR,
358 OP_ARMV8_A64_LDURB,
359 OP_ARMV8_A64_LDURH,
360 OP_ARMV8_A64_LDURSB,
361 OP_ARMV8_A64_LDURSH,
362 OP_ARMV8_A64_LDURSW,
363 OP_ARMV8_A64_LDXP,
364 OP_ARMV8_A64_LDXR,
365 OP_ARMV8_A64_LDXRB,
366 OP_ARMV8_A64_LDXRH,
367 OP_ARMV8_A64_LSL,
368 OP_ARMV8_A64_LSLV,
369 OP_ARMV8_A64_LSR,
370 OP_ARMV8_A64_LSRV,
371 OP_ARMV8_A64_MADD,
372 OP_ARMV8_A64_MNEG,
373 OP_ARMV8_A64_MOV,
374 OP_ARMV8_A64_MOVK,
375 OP_ARMV8_A64_MOVN,
376 OP_ARMV8_A64_MOVZ,
377 OP_ARMV8_A64_MRS,
378 OP_ARMV8_A64_MSR,
379 OP_ARMV8_A64_MSUB,
380 OP_ARMV8_A64_MUL,
381 OP_ARMV8_A64_MVN,
382 OP_ARMV8_A64_NEG,
383 OP_ARMV8_A64_NEGS,
384 OP_ARMV8_A64_NGC,
385 OP_ARMV8_A64_NGCS,
386 OP_ARMV8_A64_NOP,
387 OP_ARMV8_A64_ORR,
388 OP_ARMV8_A64_ORN,
389 OP_ARMV8_A64_PACDA,
390 OP_ARMV8_A64_PACDZA,
391 OP_ARMV8_A64_PACDB,
392 OP_ARMV8_A64_PACDZB,
393 OP_ARMV8_A64_PACGA,
394 OP_ARMV8_A64_PACIA,
395 OP_ARMV8_A64_PACIA1716,
396 OP_ARMV8_A64_PACIASP,
397 OP_ARMV8_A64_PACIAZ,
398 OP_ARMV8_A64_PACIZA,
399 OP_ARMV8_A64_PACIB,
400 OP_ARMV8_A64_PACIB1716,
401 OP_ARMV8_A64_PACIBSP,
402 OP_ARMV8_A64_PACIBZ,
403 OP_ARMV8_A64_PACIBZB,
404 OP_ARMV8_A64_PRFM,
405 OP_ARMV8_A64_PRFUM,
406 OP_ARMV8_A64_PSB,
407 OP_ARMV8_A64_PSBSYNC,
408 OP_ARMV8_A64_PSSBB,
409 OP_ARMV8_A64_RBIT,
410 OP_ARMV8_A64_RCWCAS,
411 OP_ARMV8_A64_RCWCASA,
412 OP_ARMV8_A64_RCWCASAL,
413 OP_ARMV8_A64_RCWCASL,
414 OP_ARMV8_A64_RCWCASP,
415 OP_ARMV8_A64_RCWCASPA,
416 OP_ARMV8_A64_RCWCASPAL,
417 OP_ARMV8_A64_RCWCASPL,
418 OP_ARMV8_A64_RCWCLR,
419 OP_ARMV8_A64_RCWCLRA,
420 OP_ARMV8_A64_RCWCLRAL,
421 OP_ARMV8_A64_RCWCLRL,
422 OP_ARMV8_A64_RCWSCAS,
423 OP_ARMV8_A64_RCWSCASA,
424 OP_ARMV8_A64_RCWSCASAL,
425 OP_ARMV8_A64_RCWSCASL,
426 OP_ARMV8_A64_RCWSCASP,
427 OP_ARMV8_A64_RCWSCASPA,
428 OP_ARMV8_A64_RCWSCASPAL,
429 OP_ARMV8_A64_RCWSCASPL,
430 OP_ARMV8_A64_RCWSCLR,
431 OP_ARMV8_A64_RCWSCLRA,
432 OP_ARMV8_A64_RCWSCLRAL,
433 OP_ARMV8_A64_RCWSCLRL,
434 OP_ARMV8_A64_RCWSET,
435 OP_ARMV8_A64_RCWSETA,
436 OP_ARMV8_A64_RCWSETAL,
437 OP_ARMV8_A64_RCWSETL,
438 OP_ARMV8_A64_RCWSSET,
439 OP_ARMV8_A64_RCWSSETA,
440 OP_ARMV8_A64_RCWSSETAL,
441 OP_ARMV8_A64_RCWSSETL,
442 OP_ARMV8_A64_RCWSSWP,
443 OP_ARMV8_A64_RCWSSWPA,
444 OP_ARMV8_A64_RCWSSWPAL,
445 OP_ARMV8_A64_RCWSSWPL,
446 OP_ARMV8_A64_RCWSWP,
447 OP_ARMV8_A64_RCWSWPA,
448 OP_ARMV8_A64_RCWSWPAL,
449 OP_ARMV8_A64_RCWSWPL,
450 OP_ARMV8_A64_RET,
451 OP_ARMV8_A64_RETAA,
452 OP_ARMV8_A64_RETAB,
453 OP_ARMV8_A64_REV,
454 OP_ARMV8_A64_REV16,
455 OP_ARMV8_A64_REV32,
456 OP_ARMV8_A64_RMIF,
457 OP_ARMV8_A64_ROR,
458 OP_ARMV8_A64_RORV,
459 OP_ARMV8_A64_SB,
460 OP_ARMV8_A64_SBC,
461 OP_ARMV8_A64_SBCS,
462 OP_ARMV8_A64_SBFIZ,
463 OP_ARMV8_A64_SBFM,
464 OP_ARMV8_A64_SBFX,
465 OP_ARMV8_A64_SCVTF,
466 OP_ARMV8_A64_SDIV,
467 OP_ARMV8_A64_SETF8,
468 OP_ARMV8_A64_SETF16,
469 OP_ARMV8_A64_SETGP,
470 OP_ARMV8_A64_SETGM,
471 OP_ARMV8_A64_SETGE,
472 OP_ARMV8_A64_SETGPN,
473 OP_ARMV8_A64_SETGMN,
474 OP_ARMV8_A64_SETGEN,
475 OP_ARMV8_A64_SETGPT,
476 OP_ARMV8_A64_SETGMT,
477 OP_ARMV8_A64_SETGET,
478 OP_ARMV8_A64_SETGPTN,
479 OP_ARMV8_A64_SETGMTN,
480 OP_ARMV8_A64_SETGETN,
481 OP_ARMV8_A64_SETP,
482 OP_ARMV8_A64_SETM,
483 OP_ARMV8_A64_SETE,
484 OP_ARMV8_A64_SETPN,
485 OP_ARMV8_A64_SETMNM,
486 OP_ARMV8_A64_SETEN,
487 OP_ARMV8_A64_SETPT,
488 OP_ARMV8_A64_SETMT,
489 OP_ARMV8_A64_SETET,
490 OP_ARMV8_A64_SETPTN,
491 OP_ARMV8_A64_SETMTN,
492 OP_ARMV8_A64_SETETN,
493 OP_ARMV8_A64_SEV,
494 OP_ARMV8_A64_SEVL,
495 OP_ARMV8_A64_SHL,
496 OP_ARMV8_A64_SMADDL,
497 OP_ARMV8_A64_SMAX,
498 OP_ARMV8_A64_SMC,
499 OP_ARMV8_A64_SMIN,
500 OP_ARMV8_A64_SMNEGL,
501 OP_ARMV8_A64_SMSTART,
502 OP_ARMV8_A64_SMSTOP,
503 OP_ARMV8_A64_SMSUBL,
504 OP_ARMV8_A64_SMULH,
505 OP_ARMV8_A64_SMULL,
506 OP_ARMV8_A64_SQRSHRN,
507 OP_ARMV8_A64_SQSHL,
508 OP_ARMV8_A64_SQSHRN,
509 OP_ARMV8_A64_SRSHR,
510 OP_ARMV8_A64_SRSRA,
511 OP_ARMV8_A64_SSBB,
512 OP_ARMV8_A64_SSHR,
513 OP_ARMV8_A64_SSRA,
514 OP_ARMV8_A64_ST1,
515 OP_ARMV8_A64_ST2,
516 OP_ARMV8_A64_ST2G,
517 OP_ARMV8_A64_ST3,
518 OP_ARMV8_A64_ST4,
519 OP_ARMV8_A64_ST64B,
520 OP_ARMV8_A64_ST64BV0,
521 OP_ARMV8_A64_STADDB,
522 OP_ARMV8_A64_STADDLB,
523 OP_ARMV8_A64_STADDH,
524 OP_ARMV8_A64_STADDLH,
525 OP_ARMV8_A64_STADD,
526 OP_ARMV8_A64_STADDL,
527 OP_ARMV8_A64_STCLRB,
528 OP_ARMV8_A64_STCLRLB,
529 OP_ARMV8_A64_STCLRH,
530 OP_ARMV8_A64_STCLRLH,
531 OP_ARMV8_A64_STCLR,
532 OP_ARMV8_A64_STCLRL,
533 OP_ARMV8_A64_STEORB,
534 OP_ARMV8_A64_STEROLB,
535 OP_ARMV8_A64_STEORH,
536 OP_ARMV8_A64_STEORLH,
537 OP_ARMV8_A64_STEOR,
538 OP_ARMV8_A64_STEORL,
539 OP_ARMV8_A64_STG,
540 OP_ARMV8_A64_STGM,
541 OP_ARMV8_A64_STGP,
542 OP_ARMV8_A64_STLLRB,
543 OP_ARMV8_A64_STLLRH,
544 OP_ARMV8_A64_STLLR,
545 OP_ARMV8_A64_STLR,
546 OP_ARMV8_A64_STLRB,
547 OP_ARMV8_A64_STLRH,
548 OP_ARMV8_A64_STLUR,
549 OP_ARMV8_A64_STLURB,
550 OP_ARMV8_A64_STLURH,
551 OP_ARMV8_A64_STLXP,
552 OP_ARMV8_A64_STLXR,
553 OP_ARMV8_A64_STLXRB,
554 OP_ARMV8_A64_STLXRH,
555 OP_ARMV8_A64_STNP,
556 OP_ARMV8_A64_STP,
557 OP_ARMV8_A64_STR,
558 OP_ARMV8_A64_STRB,
559 OP_ARMV8_A64_STRH,
560 OP_ARMV8_A64_STTR,
561 OP_ARMV8_A64_STTRB,
562 OP_ARMV8_A64_STTRH,
563 OP_ARMV8_A64_STUR,
564 OP_ARMV8_A64_STURB,
565 OP_ARMV8_A64_STURH,
566 OP_ARMV8_A64_STXP,
567 OP_ARMV8_A64_STXR,
568 OP_ARMV8_A64_STXRB,
569 OP_ARMV8_A64_STXRH,
570 OP_ARMV8_A64_STZ2G,
571 OP_ARMV8_A64_STZG,
572 OP_ARMV8_A64_STZGM,
573 OP_ARMV8_A64_SUB,
574 OP_ARMV8_A64_SUBG,
575 OP_ARMV8_A64_SUBPS,
576 OP_ARMV8_A64_SUBS,
577 OP_ARMV8_A64_SUBP,
578 OP_ARMV8_A64_SVC,
579 OP_ARMV8_A64_SWPB,
580 OP_ARMV8_A64_SWPAB,
581 OP_ARMV8_A64_SWPALB,
582 OP_ARMV8_A64_SWPLB,
583 OP_ARMV8_A64_SWPH,
584 OP_ARMV8_A64_SWPAH,
585 OP_ARMV8_A64_SWPALH,
586 OP_ARMV8_A64_SWPLH,
587 OP_ARMV8_A64_SWP,
588 OP_ARMV8_A64_SWPA,
589 OP_ARMV8_A64_SWPAL,
590 OP_ARMV8_A64_SWPL,
591 OP_ARMV8_A64_SXTB,
592 OP_ARMV8_A64_SXTH,
593 OP_ARMV8_A64_SXTW,
594 OP_ARMV8_A64_SYS,
595 OP_ARMV8_A64_SYSL,
596 OP_ARMV8_A64_TBNZ,
597 OP_ARMV8_A64_TBZ,
598 OP_ARMV8_A64_TCANCEL,
599 OP_ARMV8_A64_TCOMMIT,
600 OP_ARMV8_A64_TLBI,
601 OP_ARMV8_A64_TSB,
602 OP_ARMV8_A64_TSBCSYNC,
603 OP_ARMV8_A64_TST,
604 OP_ARMV8_A64_TSTART,
605 OP_ARMV8_A64_TTEST,
606 OP_ARMV8_A64_UBFIZ,
607 OP_ARMV8_A64_UBFM,
608 OP_ARMV8_A64_UBFX,
609 OP_ARMV8_A64_UCVTF,
610 OP_ARMV8_A64_UDF,
611 OP_ARMV8_A64_UDIV,
612 OP_ARMV8_A64_UMADDL,
613 OP_ARMV8_A64_UMAX,
614 OP_ARMV8_A64_UMIN,
615 OP_ARMV8_A64_UMNEGL,
616 OP_ARMV8_A64_UMSUBL,
617 OP_ARMV8_A64_UMULH,
618 OP_ARMV8_A64_UMULL,
619 OP_ARMV8_A64_UXTB,
620 OP_ARMV8_A64_UXTH,
621 OP_ARMV8_A64_WFE,
622 OP_ARMV8_A64_WFET,
623 OP_ARMV8_A64_WFI,
624 OP_ARMV8_A64_WFIT,
625 OP_ARMV8_A64_XAFLAG,
626 OP_ARMV8_A64_XPACD,
627 OP_ARMV8_A64_XPACI,
628 OP_ARMV8_A64_XPACLRI,
629 OP_ARMV8_A64_YIELD,
630 /** @} */
631
632 OP_ARMV8_END_OF_OPCODES
633};
634
635
636/** Armv8 Condition codes. */
637typedef enum DISARMV8INSTRCOND
638{
639 kDisArmv8InstrCond_Eq = 0, /**< 0 - Equal - Zero set. */
640 kDisArmv8InstrCond_Ne, /**< 1 - Not equal - Zero clear. */
641
642 kDisArmv8InstrCond_Cs, /**< 2 - Carry set (also known as 'HS'). */
643 kDisArmv8InstrCond_Hs = kDisArmv8InstrCond_Cs, /**< 2 - Unsigned higher or same. */
644 kDisArmv8InstrCond_Cc, /**< 3 - Carry clear (also known as 'LO'). */
645 kDisArmv8InstrCond_Lo = kDisArmv8InstrCond_Cc, /**< 3 - Unsigned lower. */
646
647 kDisArmv8InstrCond_Mi, /**< 4 - Negative result (minus). */
648 kDisArmv8InstrCond_Pl, /**< 5 - Positive or zero result (plus). */
649
650 kDisArmv8InstrCond_Vs, /**< 6 - Overflow set. */
651 kDisArmv8InstrCond_Vc, /**< 7 - Overflow clear. */
652
653 kDisArmv8InstrCond_Hi, /**< 8 - Unsigned higher. */
654 kDisArmv8InstrCond_Ls, /**< 9 - Unsigned lower or same. */
655
656 kDisArmv8InstrCond_Ge, /**< a - Signed greater or equal. */
657 kDisArmv8InstrCond_Lt, /**< b - Signed less than. */
658
659 kDisArmv8InstrCond_Gt, /**< c - Signed greater than. */
660 kDisArmv8InstrCond_Le, /**< d - Signed less or equal. */
661
662 kDisArmv8InstrCond_Al, /**< e - Condition is always true. */
663 kDisArmv8InstrCond_Al1 /**< f - Condition is always true. */
664} DISARMV8INSTRCOND;
665
666
667/** Armv8 PState fields. */
668typedef enum DISARMV8INSTRPSTATE
669{
670 kDisArmv8InstrPState_SPSel = 0,
671 kDisArmv8InstrPState_DAIFSet,
672 kDisArmv8InstrPState_DAIFClr,
673 kDisArmv8InstrPState_UAO,
674 kDisArmv8InstrPState_PAN,
675 kDisArmv8InstrPState_ALLINT,
676 kDisArmv8InstrPState_PM,
677 kDisArmv8InstrPState_SSBS,
678 kDisArmv8InstrPState_DIT,
679 kDisArmv8InstrPState_SVCRSM,
680 kDisArmv8InstrPState_SVCRZA,
681 kDisArmv8InstrPState_SVCRSMZA,
682 kDisArmv8InstrPState_TCO
683} DISARMV8INSTRPSTATE;
684
685
686/**
687 * Floating point types.
688 */
689typedef enum DISARMV8INSTRFPTYPE
690{
691 kDisArmv8InstrFpType_Invalid = 0,
692 kDisArmv8InstrFpType_Single,
693 kDisArmv8InstrFpType_Double,
694 kDisArmv8InstrFpType_Half
695} DISARMV8INSTRFPTYPE;
696
697
698/** @defgroup grp_dis_opparam_armv8 Opcode parameters (DISOPCODE::fParam1,
699 * DISOPCODE::fParam2, DISOPCODE::fParam3)
700 * @ingroup grp_dis
701 * @{
702 */
703
704/**
705 * Basic parameter type.
706 */
707typedef enum DISARMV8OPPARM
708{
709 /** Parameter is not used. */
710 kDisArmv8OpParmNone = 0,
711 /** Immediate value. */
712 kDisArmv8OpParmImm,
713 /** Relative address immediate. */
714 kDisArmv8OpParmImmRel,
715 /** Register. */
716 kDisArmv8OpParmReg,
717 /** System register. */
718 kDisArmv8OpParmSysReg,
719 /** Accessing memory from address in base register + potential offset. */
720 kDisArmv8OpParmAddrInGpr,
721 /** Conditional as parameter (CCMN/CCMP). */
722 kDisArmv8OpParmCond,
723 /** PSTATE field (specific to MSR). */
724 kDisArmv8OpParmPState
725} DISARMV8OPPARM;
726
727
728/**
729 * Extend types.
730 */
731typedef enum DISARMV8OPPARMEXTEND
732{
733 /** No shift applied. */
734 kDisArmv8OpParmExtendNone = 0,
735 /** Left shift applied. */
736 kDisArmv8OpParmExtendLsl,
737 /** Right shift applied. */
738 kDisArmv8OpParmExtendLsr,
739 /** Arithmetic right shift applied. */
740 kDisArmv8OpParmExtendAsr,
741 /** Rotation applied. */
742 kDisArmv8OpParmExtendRor,
743 /** @todo Document. */
744 kDisArmv8OpParmExtendUxtB,
745 kDisArmv8OpParmExtendUxtH,
746 kDisArmv8OpParmExtendUxtW,
747 kDisArmv8OpParmExtendUxtX,
748 kDisArmv8OpParmExtendSxtB,
749 kDisArmv8OpParmExtendSxtH,
750 kDisArmv8OpParmExtendSxtW,
751 kDisArmv8OpParmExtendSxtX
752} DISARMV8OPPARMEXTEND;
753/** @} */
754
755/** @} */
756
757#endif /* !VBOX_INCLUDED_disopcode_armv8_h */
758
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette