arm64.h revision 6b9b6647c1d506017d4fd1b9bfd44d3f300c0961
1#ifndef __CS_ARM64_H__ 2#define __CS_ARM64_H__ 3 4/* Capstone Disassembler Engine */ 5/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013> */ 6 7#ifdef __cplusplus 8extern "C" { 9#endif 10 11#include <stdint.h> 12#include <stdbool.h> 13 14typedef enum arm64_shifter { 15 ARM64_SFT_INVALID = 0, 16 ARM64_SFT_LSL = 1, 17 ARM64_SFT_MSL = 2, 18 ARM64_SFT_LSR = 3, 19 ARM64_SFT_ASR = 4, 20 ARM64_SFT_ROR = 1, 21} arm64_shifter; 22 23typedef enum arm64_extender { 24 ARM64_EXT_INVALID = 0, 25 ARM64_EXT_UXTB = 1, 26 ARM64_EXT_UXTH = 2, 27 ARM64_EXT_UXTW = 3, 28 ARM64_EXT_UXTX = 4, 29 ARM64_EXT_SXTB = 5, 30 ARM64_EXT_SXTH = 6, 31 ARM64_EXT_SXTW = 7, 32 ARM64_EXT_SXTX = 8, 33} arm64_extender; 34 35// ARM64 condition code 36typedef enum arm64_cc { 37 ARM64_CC_INVALID = 0, 38 ARM64_CC_EQ = 1, // Equal 39 ARM64_CC_NE = 2, // Not equal: Not equal, or unordered 40 ARM64_CC_HS = 3, // Unsigned higher or same: >, ==, or unordered 41 ARM64_CC_LO = 4, // Unsigned lower or same: Less than 42 ARM64_CC_MI = 5, // Minus, negative: Less than 43 ARM64_CC_PL = 6, // Plus, positive or zero: >, ==, or unordered 44 ARM64_CC_VS = 7, // Overflow: Unordered 45 ARM64_CC_VC = 8, // No overflow: Ordered 46 ARM64_CC_HI = 9, // Unsigned higher: Greater than, or unordered 47 ARM64_CC_LS = 10, // Unsigned lower or same: Less than or equal 48 ARM64_CC_GE = 11, // Greater than or equal: Greater than or equal 49 ARM64_CC_LT = 12, // Less than: Less than, or unordered 50 ARM64_CC_GT = 13, // Signed greater than: Greater than 51 ARM64_CC_LE = 14, // Signed less than or equal: <, ==, or unordered 52 ARM64_CC_AL = 15, // Always (unconditional): Always (unconditional) 53 ARM64_CC_NV = 16, // Always (unconditional): Always (unconditional) 54 // Note the NV exists purely to disassemble 0b1111. Execution 55 // is "always". 56} arm64_cc; 57 58// Operand type for instruction's operands 59typedef enum arm64_op_type { 60 ARM64_OP_INVALID = 0, // Uninitialized. 61 ARM64_OP_REG, // Register operand. 62 ARM64_OP_CIMM, // C-Immediate 63 ARM64_OP_IMM, // Immediate operand. 64 ARM64_OP_FP, // Floating-Point immediate operand. 65 ARM64_OP_MEM, // Memory operand 66} arm64_op_type; 67 68// Instruction's operand referring to memory 69// This is associated with ARM64_OP_MEM operand type above 70typedef struct arm64_op_mem { 71 unsigned int base; // base register 72 unsigned int index; // index register 73 int32_t disp; // displacement/offset value 74} arm64_op_mem; 75 76// Instruction operand 77typedef struct cs_arm64_op { 78 struct { 79 arm64_shifter type; // shifter type of this operand 80 unsigned int value; // shifter value of this operand 81 } shift; 82 arm64_extender ext; // extender type of this operand 83 arm64_op_type type; // operand type 84 union { 85 unsigned int reg; // register value for REG operand 86 int32_t imm; // immediate value, or index for C-IMM or IMM operand 87 double fp; // floating point value for FP operand 88 arm64_op_mem mem; // base/index/scale/disp value for MEM operand 89 }; 90} cs_arm64_op; 91 92// Instruction structure 93typedef struct cs_arm64 { 94 arm64_cc cc; // conditional code for this insn 95 bool update_flags; // does this insn update flags? 96 bool writeback; // does this insn request writeback? 'True' means 'yes' 97 98 // Number of operands of this instruction, 99 // or 0 when instruction has no operand. 100 uint8_t op_count; 101 102 cs_arm64_op operands[8]; // operands for this instruction. 103} cs_arm64; 104 105// ARM64 registers 106typedef enum arm64_reg { 107 ARM64_REG_INVALID = 0, 108 ARM64_REG_NZCV = 1, 109 ARM64_REG_WSP = 2, 110 ARM64_REG_WZR = 3, 111 ARM64_REG_SP = 4, 112 ARM64_REG_XZR = 5, 113 ARM64_REG_B0 = 6, 114 ARM64_REG_B1 = 7, 115 ARM64_REG_B2 = 8, 116 ARM64_REG_B3 = 9, 117 ARM64_REG_B4 = 10, 118 ARM64_REG_B5 = 11, 119 ARM64_REG_B6 = 12, 120 ARM64_REG_B7 = 13, 121 ARM64_REG_B8 = 14, 122 ARM64_REG_B9 = 15, 123 ARM64_REG_B10 = 16, 124 ARM64_REG_B11 = 17, 125 ARM64_REG_B12 = 18, 126 ARM64_REG_B13 = 19, 127 ARM64_REG_B14 = 20, 128 ARM64_REG_B15 = 21, 129 ARM64_REG_B16 = 22, 130 ARM64_REG_B17 = 23, 131 ARM64_REG_B18 = 24, 132 ARM64_REG_B19 = 25, 133 ARM64_REG_B20 = 26, 134 ARM64_REG_B21 = 27, 135 ARM64_REG_B22 = 28, 136 ARM64_REG_B23 = 29, 137 ARM64_REG_B24 = 30, 138 ARM64_REG_B25 = 31, 139 ARM64_REG_B26 = 32, 140 ARM64_REG_B27 = 33, 141 ARM64_REG_B28 = 34, 142 ARM64_REG_B29 = 35, 143 ARM64_REG_B30 = 36, 144 ARM64_REG_B31 = 37, 145 ARM64_REG_D0 = 38, 146 ARM64_REG_D1 = 39, 147 ARM64_REG_D2 = 40, 148 ARM64_REG_D3 = 41, 149 ARM64_REG_D4 = 42, 150 ARM64_REG_D5 = 43, 151 ARM64_REG_D6 = 44, 152 ARM64_REG_D7 = 45, 153 ARM64_REG_D8 = 46, 154 ARM64_REG_D9 = 47, 155 ARM64_REG_D10 = 48, 156 ARM64_REG_D11 = 49, 157 ARM64_REG_D12 = 50, 158 ARM64_REG_D13 = 51, 159 ARM64_REG_D14 = 52, 160 ARM64_REG_D15 = 53, 161 ARM64_REG_D16 = 54, 162 ARM64_REG_D17 = 55, 163 ARM64_REG_D18 = 56, 164 ARM64_REG_D19 = 57, 165 ARM64_REG_D20 = 58, 166 ARM64_REG_D21 = 59, 167 ARM64_REG_D22 = 60, 168 ARM64_REG_D23 = 61, 169 ARM64_REG_D24 = 62, 170 ARM64_REG_D25 = 63, 171 ARM64_REG_D26 = 64, 172 ARM64_REG_D27 = 65, 173 ARM64_REG_D28 = 66, 174 ARM64_REG_D29 = 67, 175 ARM64_REG_D30 = 68, 176 ARM64_REG_D31 = 69, 177 ARM64_REG_H0 = 70, 178 ARM64_REG_H1 = 71, 179 ARM64_REG_H2 = 72, 180 ARM64_REG_H3 = 73, 181 ARM64_REG_H4 = 74, 182 ARM64_REG_H5 = 75, 183 ARM64_REG_H6 = 76, 184 ARM64_REG_H7 = 77, 185 ARM64_REG_H8 = 78, 186 ARM64_REG_H9 = 79, 187 ARM64_REG_H10 = 80, 188 ARM64_REG_H11 = 81, 189 ARM64_REG_H12 = 82, 190 ARM64_REG_H13 = 83, 191 ARM64_REG_H14 = 84, 192 ARM64_REG_H15 = 85, 193 ARM64_REG_H16 = 86, 194 ARM64_REG_H17 = 87, 195 ARM64_REG_H18 = 88, 196 ARM64_REG_H19 = 89, 197 ARM64_REG_H20 = 90, 198 ARM64_REG_H21 = 91, 199 ARM64_REG_H22 = 92, 200 ARM64_REG_H23 = 93, 201 ARM64_REG_H24 = 94, 202 ARM64_REG_H25 = 95, 203 ARM64_REG_H26 = 96, 204 ARM64_REG_H27 = 97, 205 ARM64_REG_H28 = 98, 206 ARM64_REG_H29 = 99, 207 ARM64_REG_H30 = 100, 208 ARM64_REG_H31 = 101, 209 ARM64_REG_Q0 = 102, 210 ARM64_REG_Q1 = 103, 211 ARM64_REG_Q2 = 104, 212 ARM64_REG_Q3 = 105, 213 ARM64_REG_Q4 = 106, 214 ARM64_REG_Q5 = 107, 215 ARM64_REG_Q6 = 108, 216 ARM64_REG_Q7 = 109, 217 ARM64_REG_Q8 = 110, 218 ARM64_REG_Q9 = 111, 219 ARM64_REG_Q10 = 112, 220 ARM64_REG_Q11 = 113, 221 ARM64_REG_Q12 = 114, 222 ARM64_REG_Q13 = 115, 223 ARM64_REG_Q14 = 116, 224 ARM64_REG_Q15 = 117, 225 ARM64_REG_Q16 = 118, 226 ARM64_REG_Q17 = 119, 227 ARM64_REG_Q18 = 120, 228 ARM64_REG_Q19 = 121, 229 ARM64_REG_Q20 = 122, 230 ARM64_REG_Q21 = 123, 231 ARM64_REG_Q22 = 124, 232 ARM64_REG_Q23 = 125, 233 ARM64_REG_Q24 = 126, 234 ARM64_REG_Q25 = 127, 235 ARM64_REG_Q26 = 128, 236 ARM64_REG_Q27 = 129, 237 ARM64_REG_Q28 = 130, 238 ARM64_REG_Q29 = 131, 239 ARM64_REG_Q30 = 132, 240 ARM64_REG_Q31 = 133, 241 ARM64_REG_S0 = 134, 242 ARM64_REG_S1 = 135, 243 ARM64_REG_S2 = 136, 244 ARM64_REG_S3 = 137, 245 ARM64_REG_S4 = 138, 246 ARM64_REG_S5 = 139, 247 ARM64_REG_S6 = 140, 248 ARM64_REG_S7 = 141, 249 ARM64_REG_S8 = 142, 250 ARM64_REG_S9 = 143, 251 ARM64_REG_S10 = 144, 252 ARM64_REG_S11 = 145, 253 ARM64_REG_S12 = 146, 254 ARM64_REG_S13 = 147, 255 ARM64_REG_S14 = 148, 256 ARM64_REG_S15 = 149, 257 ARM64_REG_S16 = 150, 258 ARM64_REG_S17 = 151, 259 ARM64_REG_S18 = 152, 260 ARM64_REG_S19 = 153, 261 ARM64_REG_S20 = 154, 262 ARM64_REG_S21 = 155, 263 ARM64_REG_S22 = 156, 264 ARM64_REG_S23 = 157, 265 ARM64_REG_S24 = 158, 266 ARM64_REG_S25 = 159, 267 ARM64_REG_S26 = 160, 268 ARM64_REG_S27 = 161, 269 ARM64_REG_S28 = 162, 270 ARM64_REG_S29 = 163, 271 ARM64_REG_S30 = 164, 272 ARM64_REG_S31 = 165, 273 ARM64_REG_W0 = 166, 274 ARM64_REG_W1 = 167, 275 ARM64_REG_W2 = 168, 276 ARM64_REG_W3 = 169, 277 ARM64_REG_W4 = 170, 278 ARM64_REG_W5 = 171, 279 ARM64_REG_W6 = 172, 280 ARM64_REG_W7 = 173, 281 ARM64_REG_W8 = 174, 282 ARM64_REG_W9 = 175, 283 ARM64_REG_W10 = 176, 284 ARM64_REG_W11 = 177, 285 ARM64_REG_W12 = 178, 286 ARM64_REG_W13 = 179, 287 ARM64_REG_W14 = 180, 288 ARM64_REG_W15 = 181, 289 ARM64_REG_W16 = 182, 290 ARM64_REG_W17 = 183, 291 ARM64_REG_W18 = 184, 292 ARM64_REG_W19 = 185, 293 ARM64_REG_W20 = 186, 294 ARM64_REG_W21 = 187, 295 ARM64_REG_W22 = 188, 296 ARM64_REG_W23 = 189, 297 ARM64_REG_W24 = 190, 298 ARM64_REG_W25 = 191, 299 ARM64_REG_W26 = 192, 300 ARM64_REG_W27 = 193, 301 ARM64_REG_W28 = 194, 302 ARM64_REG_W29 = 195, 303 ARM64_REG_W30 = 196, 304 ARM64_REG_X0 = 197, 305 ARM64_REG_X1 = 198, 306 ARM64_REG_X2 = 199, 307 ARM64_REG_X3 = 200, 308 ARM64_REG_X4 = 201, 309 ARM64_REG_X5 = 202, 310 ARM64_REG_X6 = 203, 311 ARM64_REG_X7 = 204, 312 ARM64_REG_X8 = 205, 313 ARM64_REG_X9 = 206, 314 ARM64_REG_X10 = 207, 315 ARM64_REG_X11 = 208, 316 ARM64_REG_X12 = 209, 317 ARM64_REG_X13 = 210, 318 ARM64_REG_X14 = 211, 319 ARM64_REG_X15 = 212, 320 ARM64_REG_X16 = 213, 321 ARM64_REG_X17 = 214, 322 ARM64_REG_X18 = 215, 323 ARM64_REG_X19 = 216, 324 ARM64_REG_X20 = 217, 325 ARM64_REG_X21 = 218, 326 ARM64_REG_X22 = 219, 327 ARM64_REG_X23 = 220, 328 ARM64_REG_X24 = 221, 329 ARM64_REG_X25 = 222, 330 ARM64_REG_X26 = 223, 331 ARM64_REG_X27 = 224, 332 ARM64_REG_X28 = 225, 333 ARM64_REG_X29 = 226, 334 ARM64_REG_X30 = 227, 335 ARM64_REG_MAX = 228, 336} arm64_reg; 337 338// ARM64 instruction 339typedef enum arm64_insn { 340 ARM64_INS_INVALID = 0, 341 ARM64_INS_ADC, 342 ARM64_INS_ADDHN2, 343 ARM64_INS_ADDHN, 344 ARM64_INS_ADDP, 345 ARM64_INS_ADD, 346 ARM64_INS_CMN, 347 ARM64_INS_ADRP, 348 ARM64_INS_ADR, 349 ARM64_INS_AND, 350 ARM64_INS_ASR, 351 ARM64_INS_AT, 352 ARM64_INS_BFI, 353 ARM64_INS_BFM, 354 ARM64_INS_BFXIL, 355 ARM64_INS_BIC, 356 ARM64_INS_BIF, 357 ARM64_INS_BIT, 358 ARM64_INS_BLR, 359 ARM64_INS_BL, 360 ARM64_INS_BRK, 361 ARM64_INS_BR, 362 ARM64_INS_BSL, 363 ARM64_INS_B, 364 ARM64_INS_CBNZ, 365 ARM64_INS_CBZ, 366 ARM64_INS_CCMN, 367 ARM64_INS_CCMP, 368 ARM64_INS_CLREX, 369 ARM64_INS_CLS, 370 ARM64_INS_CLZ, 371 ARM64_INS_CMEQ, 372 ARM64_INS_CMGE, 373 ARM64_INS_CMGT, 374 ARM64_INS_CMHI, 375 ARM64_INS_CMHS, 376 ARM64_INS_CMLE, 377 ARM64_INS_CMLT, 378 ARM64_INS_CMP, 379 ARM64_INS_CMTST, 380 ARM64_INS_CRC32B, 381 ARM64_INS_CRC32CB, 382 ARM64_INS_CRC32CH, 383 ARM64_INS_CRC32CW, 384 ARM64_INS_CRC32CX, 385 ARM64_INS_CRC32H, 386 ARM64_INS_CRC32W, 387 ARM64_INS_CRC32X, 388 ARM64_INS_CSEL, 389 ARM64_INS_CSINC, 390 ARM64_INS_CSINV, 391 ARM64_INS_CSNEG, 392 ARM64_INS_DCPS1, 393 ARM64_INS_DCPS2, 394 ARM64_INS_DCPS3, 395 ARM64_INS_DC, 396 ARM64_INS_DMB, 397 ARM64_INS_DRPS, 398 ARM64_INS_DSB, 399 ARM64_INS_EON, 400 ARM64_INS_EOR, 401 ARM64_INS_ERET, 402 ARM64_INS_EXTR, 403 ARM64_INS_FABD, 404 ARM64_INS_FABS, 405 ARM64_INS_FACGE, 406 ARM64_INS_FACGT, 407 ARM64_INS_FADDP, 408 ARM64_INS_FADD, 409 ARM64_INS_FCCMPE, 410 ARM64_INS_FCCMP, 411 ARM64_INS_FCMEQ, 412 ARM64_INS_FCMGE, 413 ARM64_INS_FCMGT, 414 ARM64_INS_FCMLE, 415 ARM64_INS_FCMLT, 416 ARM64_INS_FCMP, 417 ARM64_INS_FCMPE, 418 ARM64_INS_FCSEL, 419 ARM64_INS_FCVTAS, 420 ARM64_INS_FCVTAU, 421 ARM64_INS_FCVTMS, 422 ARM64_INS_FCVTMU, 423 ARM64_INS_FCVTNS, 424 ARM64_INS_FCVTNU, 425 ARM64_INS_FCVTPS, 426 ARM64_INS_FCVTPU, 427 ARM64_INS_FCVTZS, 428 ARM64_INS_FCVTZU, 429 ARM64_INS_FCVT, 430 ARM64_INS_FDIV, 431 ARM64_INS_FMADD, 432 ARM64_INS_FMAXNMP, 433 ARM64_INS_FMAXNM, 434 ARM64_INS_FMAXP, 435 ARM64_INS_FMAX, 436 ARM64_INS_FMINNMP, 437 ARM64_INS_FMINNM, 438 ARM64_INS_FMINP, 439 ARM64_INS_FMIN, 440 ARM64_INS_FMLA, 441 ARM64_INS_FMLS, 442 ARM64_INS_FMOV, 443 ARM64_INS_FMSUB, 444 ARM64_INS_FMULX, 445 ARM64_INS_FMUL, 446 ARM64_INS_FNEG, 447 ARM64_INS_FNMADD, 448 ARM64_INS_FNMSUB, 449 ARM64_INS_FNMUL, 450 ARM64_INS_FRECPS, 451 ARM64_INS_FRINTA, 452 ARM64_INS_FRINTI, 453 ARM64_INS_FRINTM, 454 ARM64_INS_FRINTN, 455 ARM64_INS_FRINTP, 456 ARM64_INS_FRINTX, 457 ARM64_INS_FRINTZ, 458 ARM64_INS_FRSQRTS, 459 ARM64_INS_FSQRT, 460 ARM64_INS_FSUB, 461 ARM64_INS_HINT, 462 ARM64_INS_HLT, 463 ARM64_INS_HVC, 464 ARM64_INS_IC, 465 ARM64_INS_INS, 466 ARM64_INS_ISB, 467 ARM64_INS_LDARB, 468 ARM64_INS_LDAR, 469 ARM64_INS_LDARH, 470 ARM64_INS_LDAXP, 471 ARM64_INS_LDAXRB, 472 ARM64_INS_LDAXR, 473 ARM64_INS_LDAXRH, 474 ARM64_INS_LDPSW, 475 ARM64_INS_LDRSB, 476 ARM64_INS_LDURSB, 477 ARM64_INS_LDRSH, 478 ARM64_INS_LDURSH, 479 ARM64_INS_LDRSW, 480 ARM64_INS_LDR, 481 ARM64_INS_LDTRSB, 482 ARM64_INS_LDTRSH, 483 ARM64_INS_LDTRSW, 484 ARM64_INS_LDURSW, 485 ARM64_INS_LDXP, 486 ARM64_INS_LDXRB, 487 ARM64_INS_LDXR, 488 ARM64_INS_LDXRH, 489 ARM64_INS_LDRH, 490 ARM64_INS_LDURH, 491 ARM64_INS_STRH, 492 ARM64_INS_STURH, 493 ARM64_INS_LDTRH, 494 ARM64_INS_STTRH, 495 ARM64_INS_LDUR, 496 ARM64_INS_STR, 497 ARM64_INS_STUR, 498 ARM64_INS_LDTR, 499 ARM64_INS_STTR, 500 ARM64_INS_LDRB, 501 ARM64_INS_LDURB, 502 ARM64_INS_STRB, 503 ARM64_INS_STURB, 504 ARM64_INS_LDTRB, 505 ARM64_INS_STTRB, 506 ARM64_INS_LDP, 507 ARM64_INS_LDNP, 508 ARM64_INS_STNP, 509 ARM64_INS_STP, 510 ARM64_INS_LSL, 511 ARM64_INS_LSR, 512 ARM64_INS_MADD, 513 ARM64_INS_MLA, 514 ARM64_INS_MLS, 515 ARM64_INS_MOVI, 516 ARM64_INS_MOVK, 517 ARM64_INS_MOVN, 518 ARM64_INS_MOVZ, 519 ARM64_INS_MRS, 520 ARM64_INS_MSR, 521 ARM64_INS_MSUB, 522 ARM64_INS_MUL, 523 ARM64_INS_MVNI, 524 ARM64_INS_MVN, 525 ARM64_INS_ORN, 526 ARM64_INS_ORR, 527 ARM64_INS_PMULL2, 528 ARM64_INS_PMULL, 529 ARM64_INS_PMUL, 530 ARM64_INS_PRFM, 531 ARM64_INS_PRFUM, 532 ARM64_INS_SQRSHRUN2, 533 ARM64_INS_SQRSHRUN, 534 ARM64_INS_SQSHRUN2, 535 ARM64_INS_SQSHRUN, 536 ARM64_INS_RADDHN2, 537 ARM64_INS_RADDHN, 538 ARM64_INS_RBIT, 539 ARM64_INS_RET, 540 ARM64_INS_REV16, 541 ARM64_INS_REV32, 542 ARM64_INS_REV, 543 ARM64_INS_ROR, 544 ARM64_INS_RSHRN2, 545 ARM64_INS_RSHRN, 546 ARM64_INS_RSUBHN2, 547 ARM64_INS_RSUBHN, 548 ARM64_INS_SABAL2, 549 ARM64_INS_SABAL, 550 ARM64_INS_SABA, 551 ARM64_INS_SABDL2, 552 ARM64_INS_SABDL, 553 ARM64_INS_SABD, 554 ARM64_INS_SADDL2, 555 ARM64_INS_SADDL, 556 ARM64_INS_SADDW2, 557 ARM64_INS_SADDW, 558 ARM64_INS_SBC, 559 ARM64_INS_SBFIZ, 560 ARM64_INS_SBFM, 561 ARM64_INS_SBFX, 562 ARM64_INS_SCVTF, 563 ARM64_INS_SDIV, 564 ARM64_INS_SHADD, 565 ARM64_INS_SHL, 566 ARM64_INS_SHRN2, 567 ARM64_INS_SHRN, 568 ARM64_INS_SHSUB, 569 ARM64_INS_SLI, 570 ARM64_INS_SMADDL, 571 ARM64_INS_SMAXP, 572 ARM64_INS_SMAX, 573 ARM64_INS_SMC, 574 ARM64_INS_SMINP, 575 ARM64_INS_SMIN, 576 ARM64_INS_SMLAL2, 577 ARM64_INS_SMLAL, 578 ARM64_INS_SMLSL2, 579 ARM64_INS_SMLSL, 580 ARM64_INS_SMOV, 581 ARM64_INS_SMSUBL, 582 ARM64_INS_SMULH, 583 ARM64_INS_SMULL2, 584 ARM64_INS_SMULL, 585 ARM64_INS_SQADD, 586 ARM64_INS_SQDMLAL2, 587 ARM64_INS_SQDMLAL, 588 ARM64_INS_SQDMLSL2, 589 ARM64_INS_SQDMLSL, 590 ARM64_INS_SQDMULH, 591 ARM64_INS_SQDMULL2, 592 ARM64_INS_SQDMULL, 593 ARM64_INS_SQRDMULH, 594 ARM64_INS_SQRSHL, 595 ARM64_INS_SQRSHRN2, 596 ARM64_INS_SQRSHRN, 597 ARM64_INS_SQSHLU, 598 ARM64_INS_SQSHL, 599 ARM64_INS_SQSHRN2, 600 ARM64_INS_SQSHRN, 601 ARM64_INS_SQSUB, 602 ARM64_INS_SRHADD, 603 ARM64_INS_SRI, 604 ARM64_INS_SRSHL, 605 ARM64_INS_SRSHR, 606 ARM64_INS_SRSRA, 607 ARM64_INS_SSHLL2, 608 ARM64_INS_SSHLL, 609 ARM64_INS_SSHL, 610 ARM64_INS_SSHR, 611 ARM64_INS_SSRA, 612 ARM64_INS_SSUBL2, 613 ARM64_INS_SSUBL, 614 ARM64_INS_SSUBW2, 615 ARM64_INS_SSUBW, 616 ARM64_INS_STLRB, 617 ARM64_INS_STLR, 618 ARM64_INS_STLRH, 619 ARM64_INS_STLXP, 620 ARM64_INS_STLXRB, 621 ARM64_INS_STLXR, 622 ARM64_INS_STLXRH, 623 ARM64_INS_STXP, 624 ARM64_INS_STXRB, 625 ARM64_INS_STXR, 626 ARM64_INS_STXRH, 627 ARM64_INS_SUBHN2, 628 ARM64_INS_SUBHN, 629 ARM64_INS_SUB, 630 ARM64_INS_SVC, 631 ARM64_INS_SXTB, 632 ARM64_INS_SXTH, 633 ARM64_INS_SXTW, 634 ARM64_INS_SYSL, 635 ARM64_INS_SYS, 636 ARM64_INS_TBNZ, 637 ARM64_INS_TBZ, 638 ARM64_INS_TLBI, 639 ARM64_INS_TST, 640 ARM64_INS_UABAL2, 641 ARM64_INS_UABAL, 642 ARM64_INS_UABA, 643 ARM64_INS_UABDL2, 644 ARM64_INS_UABDL, 645 ARM64_INS_UABD, 646 ARM64_INS_UADDL2, 647 ARM64_INS_UADDL, 648 ARM64_INS_UADDW2, 649 ARM64_INS_UADDW, 650 ARM64_INS_UBFIZ, 651 ARM64_INS_UBFM, 652 ARM64_INS_UBFX, 653 ARM64_INS_UCVTF, 654 ARM64_INS_UDIV, 655 ARM64_INS_UHADD, 656 ARM64_INS_UHSUB, 657 ARM64_INS_UMADDL, 658 ARM64_INS_UMAXP, 659 ARM64_INS_UMAX, 660 ARM64_INS_UMINP, 661 ARM64_INS_UMIN, 662 ARM64_INS_UMLAL2, 663 ARM64_INS_UMLAL, 664 ARM64_INS_UMLSL2, 665 ARM64_INS_UMLSL, 666 ARM64_INS_UMOV, 667 ARM64_INS_UMSUBL, 668 ARM64_INS_UMULH, 669 ARM64_INS_UMULL2, 670 ARM64_INS_UMULL, 671 ARM64_INS_UQADD, 672 ARM64_INS_UQRSHL, 673 ARM64_INS_UQRSHRN2, 674 ARM64_INS_UQRSHRN, 675 ARM64_INS_UQSHL, 676 ARM64_INS_UQSHRN2, 677 ARM64_INS_UQSHRN, 678 ARM64_INS_UQSUB, 679 ARM64_INS_URHADD, 680 ARM64_INS_URSHL, 681 ARM64_INS_URSHR, 682 ARM64_INS_URSRA, 683 ARM64_INS_USHLL2, 684 ARM64_INS_USHLL, 685 ARM64_INS_USHL, 686 ARM64_INS_USHR, 687 ARM64_INS_USRA, 688 ARM64_INS_USUBL2, 689 ARM64_INS_USUBL, 690 ARM64_INS_USUBW2, 691 ARM64_INS_USUBW, 692 ARM64_INS_UXTB, 693 ARM64_INS_UXTH, 694 695 // alias insn 696 ARM64_INS_MNEG, 697 ARM64_INS_UMNEGL, 698 ARM64_INS_SMNEGL, 699 ARM64_INS_MOV, 700 ARM64_INS_NOP, 701 ARM64_INS_YIELD, 702 ARM64_INS_WFE, 703 ARM64_INS_WFI, 704 ARM64_INS_SEV, 705 ARM64_INS_SEVL, 706 ARM64_INS_NGC, 707 ARM64_INS_NEG, 708 709 ARM64_INS_MAX, 710} arm64_insn; 711 712// group of ARM64 instructions 713typedef enum arm64_insn_group { 714 ARM64_GRP_INVALID = 0, 715 ARM64_GRP_NEON, 716 ARM64_GRP_MAX, 717} arm64_insn_group; 718 719#ifdef __cplusplus 720} 721#endif 722 723#endif 724