export interface cs_arm64_op {
  vector_index: number; // Vector Index for some vector operands (or -1 if irrelevant)
  vas: ARM64; // Vector Arrangement Specifier
  shift: {
    type: ARM64; // shifter type of this operand
    value: number; // shifter value of this operand
  };
  ext: ARM64; // extender type of this operand
  type: ARM64; // operand type
  svcr?: ARM64; // MSR/MRS SVCR instruction variant.
  reg?: ARM64; // register value for REG operand
  imm?: number; // immediate value, or index for C-IMM or IMM operand
  fp?: number; // floating point value for FP operand
  mem?: {
    // base/index/scale/disp value for MEM operand
    base: ARM64; // base register
    index: ARM64; // index register
    disp: number; // displacement/offset value
  };
  pstate?: ARM64; // PState field of MSR instruction.
  sys?: ARM64; // IC/DC/AT/TLBI operation
  prefetch?: ARM64; // PRFM operation.
  barrier?: ARM64; // Memory barrier operation (ISB/DMB/DSB instructions).
  sme_index?: {
    // base/disp value for matrix tile slice instructions.
    reg: ARM64; // register being indexed
    base: ARM64; // base register
    disp: number; // displacement/offset value
  };
  // How is this operand accessed? (READ, WRITE or READ|WRITE)
  // This field is combined of cs_ac_type.
  access: number;
}

export enum ARM64 {
  // ARM64 shift type
  SFT_INVALID = 0,
  SFT_LSL = 1,
  SFT_MSL = 2,
  SFT_LSR = 3,
  SFT_ASR = 4,
  SFT_ROR = 5,

  // ARM64 extender type
  EXT_INVALID = 0,
  EXT_UXTB = 1,
  EXT_UXTH = 2,
  EXT_UXTW = 3,
  EXT_UXTX = 4,
  EXT_SXTB = 5,
  EXT_SXTH = 6,
  EXT_SXTW = 7,
  EXT_SXTX = 8,

  // ARM64 condition code
  CC_INVALID = 0,
  CC_EQ = 1, // Equal
  CC_NE = 2, // Not equal, or unordered
  CC_HS = 3, // Carry set, >, ==, or unordered
  CC_LO = 4, // Carry clear, Less than
  CC_MI = 5, // Minus, negative, Less than
  CC_PL = 6, // Plus, positive or zero, >, ==, or unordered
  CC_VS = 7, // Overflow, Unordered
  CC_VC = 8, // No overflow, Not unordered
  CC_HI = 9, // Unsigned higher, Greater than, or unordered
  CC_LS = 10, // Unsigned lower or same
  CC_GE = 11, // Greater than or equal
  CC_LT = 12, // Less than, or unordered
  CC_GT = 13, // Greater than
  CC_LE = 14, // Less than or equal, or unordered
  CC_AL = 15, // Always (unconditional)
  CC_NV = 16, //   // Note the NV exists purely to disassemble 0b1111. Execution is "always".

  // System registers for MRS
  SYSREG_INVALID = 0,
  SYSREG_ACCDATA_EL1 = 0xc685,
  SYSREG_ACTLR_EL1 = 0xc081,
  SYSREG_ACTLR_EL2 = 0xe081,
  SYSREG_ACTLR_EL3 = 0xf081,
  SYSREG_AFSR0_EL1 = 0xc288,
  SYSREG_AFSR0_EL12 = 0xea88,
  SYSREG_AFSR0_EL2 = 0xe288,
  SYSREG_AFSR0_EL3 = 0xf288,
  SYSREG_AFSR1_EL1 = 0xc289,
  SYSREG_AFSR1_EL12 = 0xea89,
  SYSREG_AFSR1_EL2 = 0xe289,
  SYSREG_AFSR1_EL3 = 0xf289,
  SYSREG_AIDR_EL1 = 0xc807,
  SYSREG_AMAIR_EL1 = 0xc518,
  SYSREG_AMAIR_EL12 = 0xed18,
  SYSREG_AMAIR_EL2 = 0xe518,
  SYSREG_AMAIR_EL3 = 0xf518,
  SYSREG_AMCFGR_EL0 = 0xde91,
  SYSREG_AMCGCR_EL0 = 0xde92,
  SYSREG_AMCNTENCLR0_EL0 = 0xde94,
  SYSREG_AMCNTENCLR1_EL0 = 0xde98,
  SYSREG_AMCNTENSET0_EL0 = 0xde95,
  SYSREG_AMCNTENSET1_EL0 = 0xde99,
  SYSREG_AMCR_EL0 = 0xde90,
  SYSREG_AMEVCNTR00_EL0 = 0xdea0,
  SYSREG_AMEVCNTR01_EL0 = 0xdea1,
  SYSREG_AMEVCNTR02_EL0 = 0xdea2,
  SYSREG_AMEVCNTR03_EL0 = 0xdea3,
  SYSREG_AMEVCNTR10_EL0 = 0xdee0,
  SYSREG_AMEVCNTR110_EL0 = 0xdeea,
  SYSREG_AMEVCNTR111_EL0 = 0xdeeb,
  SYSREG_AMEVCNTR112_EL0 = 0xdeec,
  SYSREG_AMEVCNTR113_EL0 = 0xdeed,
  SYSREG_AMEVCNTR114_EL0 = 0xdeee,
  SYSREG_AMEVCNTR115_EL0 = 0xdeef,
  SYSREG_AMEVCNTR11_EL0 = 0xdee1,
  SYSREG_AMEVCNTR12_EL0 = 0xdee2,
  SYSREG_AMEVCNTR13_EL0 = 0xdee3,
  SYSREG_AMEVCNTR14_EL0 = 0xdee4,
  SYSREG_AMEVCNTR15_EL0 = 0xdee5,
  SYSREG_AMEVCNTR16_EL0 = 0xdee6,
  SYSREG_AMEVCNTR17_EL0 = 0xdee7,
  SYSREG_AMEVCNTR18_EL0 = 0xdee8,
  SYSREG_AMEVCNTR19_EL0 = 0xdee9,
  SYSREG_AMEVCNTVOFF00_EL2 = 0xe6c0,
  SYSREG_AMEVCNTVOFF010_EL2 = 0xe6ca,
  SYSREG_AMEVCNTVOFF011_EL2 = 0xe6cb,
  SYSREG_AMEVCNTVOFF012_EL2 = 0xe6cc,
  SYSREG_AMEVCNTVOFF013_EL2 = 0xe6cd,
  SYSREG_AMEVCNTVOFF014_EL2 = 0xe6ce,
  SYSREG_AMEVCNTVOFF015_EL2 = 0xe6cf,
  SYSREG_AMEVCNTVOFF01_EL2 = 0xe6c1,
  SYSREG_AMEVCNTVOFF02_EL2 = 0xe6c2,
  SYSREG_AMEVCNTVOFF03_EL2 = 0xe6c3,
  SYSREG_AMEVCNTVOFF04_EL2 = 0xe6c4,
  SYSREG_AMEVCNTVOFF05_EL2 = 0xe6c5,
  SYSREG_AMEVCNTVOFF06_EL2 = 0xe6c6,
  SYSREG_AMEVCNTVOFF07_EL2 = 0xe6c7,
  SYSREG_AMEVCNTVOFF08_EL2 = 0xe6c8,
  SYSREG_AMEVCNTVOFF09_EL2 = 0xe6c9,
  SYSREG_AMEVCNTVOFF10_EL2 = 0xe6d0,
  SYSREG_AMEVCNTVOFF110_EL2 = 0xe6da,
  SYSREG_AMEVCNTVOFF111_EL2 = 0xe6db,
  SYSREG_AMEVCNTVOFF112_EL2 = 0xe6dc,
  SYSREG_AMEVCNTVOFF113_EL2 = 0xe6dd,
  SYSREG_AMEVCNTVOFF114_EL2 = 0xe6de,
  SYSREG_AMEVCNTVOFF115_EL2 = 0xe6df,
  SYSREG_AMEVCNTVOFF11_EL2 = 0xe6d1,
  SYSREG_AMEVCNTVOFF12_EL2 = 0xe6d2,
  SYSREG_AMEVCNTVOFF13_EL2 = 0xe6d3,
  SYSREG_AMEVCNTVOFF14_EL2 = 0xe6d4,
  SYSREG_AMEVCNTVOFF15_EL2 = 0xe6d5,
  SYSREG_AMEVCNTVOFF16_EL2 = 0xe6d6,
  SYSREG_AMEVCNTVOFF17_EL2 = 0xe6d7,
  SYSREG_AMEVCNTVOFF18_EL2 = 0xe6d8,
  SYSREG_AMEVCNTVOFF19_EL2 = 0xe6d9,
  SYSREG_AMEVTYPER00_EL0 = 0xdeb0,
  SYSREG_AMEVTYPER01_EL0 = 0xdeb1,
  SYSREG_AMEVTYPER02_EL0 = 0xdeb2,
  SYSREG_AMEVTYPER03_EL0 = 0xdeb3,
  SYSREG_AMEVTYPER10_EL0 = 0xdef0,
  SYSREG_AMEVTYPER110_EL0 = 0xdefa,
  SYSREG_AMEVTYPER111_EL0 = 0xdefb,
  SYSREG_AMEVTYPER112_EL0 = 0xdefc,
  SYSREG_AMEVTYPER113_EL0 = 0xdefd,
  SYSREG_AMEVTYPER114_EL0 = 0xdefe,
  SYSREG_AMEVTYPER115_EL0 = 0xdeff,
  SYSREG_AMEVTYPER11_EL0 = 0xdef1,
  SYSREG_AMEVTYPER12_EL0 = 0xdef2,
  SYSREG_AMEVTYPER13_EL0 = 0xdef3,
  SYSREG_AMEVTYPER14_EL0 = 0xdef4,
  SYSREG_AMEVTYPER15_EL0 = 0xdef5,
  SYSREG_AMEVTYPER16_EL0 = 0xdef6,
  SYSREG_AMEVTYPER17_EL0 = 0xdef7,
  SYSREG_AMEVTYPER18_EL0 = 0xdef8,
  SYSREG_AMEVTYPER19_EL0 = 0xdef9,
  SYSREG_AMUSERENR_EL0 = 0xde93,
  SYSREG_APDAKEYHI_EL1 = 0xc111,
  SYSREG_APDAKEYLO_EL1 = 0xc110,
  SYSREG_APDBKEYHI_EL1 = 0xc113,
  SYSREG_APDBKEYLO_EL1 = 0xc112,
  SYSREG_APGAKEYHI_EL1 = 0xc119,
  SYSREG_APGAKEYLO_EL1 = 0xc118,
  SYSREG_APIAKEYHI_EL1 = 0xc109,
  SYSREG_APIAKEYLO_EL1 = 0xc108,
  SYSREG_APIBKEYHI_EL1 = 0xc10b,
  SYSREG_APIBKEYLO_EL1 = 0xc10a,
  SYSREG_BRBCR_EL1 = 0x8c80,
  SYSREG_BRBCR_EL12 = 0xac80,
  SYSREG_BRBCR_EL2 = 0xa480,
  SYSREG_BRBFCR_EL1 = 0x8c81,
  SYSREG_BRBIDR0_EL1 = 0x8c90,
  SYSREG_BRBINF0_EL1 = 0x8c00,
  SYSREG_BRBINF10_EL1 = 0x8c50,
  SYSREG_BRBINF11_EL1 = 0x8c58,
  SYSREG_BRBINF12_EL1 = 0x8c60,
  SYSREG_BRBINF13_EL1 = 0x8c68,
  SYSREG_BRBINF14_EL1 = 0x8c70,
  SYSREG_BRBINF15_EL1 = 0x8c78,
  SYSREG_BRBINF16_EL1 = 0x8c04,
  SYSREG_BRBINF17_EL1 = 0x8c0c,
  SYSREG_BRBINF18_EL1 = 0x8c14,
  SYSREG_BRBINF19_EL1 = 0x8c1c,
  SYSREG_BRBINF1_EL1 = 0x8c08,
  SYSREG_BRBINF20_EL1 = 0x8c24,
  SYSREG_BRBINF21_EL1 = 0x8c2c,
  SYSREG_BRBINF22_EL1 = 0x8c34,
  SYSREG_BRBINF23_EL1 = 0x8c3c,
  SYSREG_BRBINF24_EL1 = 0x8c44,
  SYSREG_BRBINF25_EL1 = 0x8c4c,
  SYSREG_BRBINF26_EL1 = 0x8c54,
  SYSREG_BRBINF27_EL1 = 0x8c5c,
  SYSREG_BRBINF28_EL1 = 0x8c64,
  SYSREG_BRBINF29_EL1 = 0x8c6c,
  SYSREG_BRBINF2_EL1 = 0x8c10,
  SYSREG_BRBINF30_EL1 = 0x8c74,
  SYSREG_BRBINF31_EL1 = 0x8c7c,
  SYSREG_BRBINF3_EL1 = 0x8c18,
  SYSREG_BRBINF4_EL1 = 0x8c20,
  SYSREG_BRBINF5_EL1 = 0x8c28,
  SYSREG_BRBINF6_EL1 = 0x8c30,
  SYSREG_BRBINF7_EL1 = 0x8c38,
  SYSREG_BRBINF8_EL1 = 0x8c40,
  SYSREG_BRBINF9_EL1 = 0x8c48,
  SYSREG_BRBINFINJ_EL1 = 0x8c88,
  SYSREG_BRBSRC0_EL1 = 0x8c01,
  SYSREG_BRBSRC10_EL1 = 0x8c51,
  SYSREG_BRBSRC11_EL1 = 0x8c59,
  SYSREG_BRBSRC12_EL1 = 0x8c61,
  SYSREG_BRBSRC13_EL1 = 0x8c69,
  SYSREG_BRBSRC14_EL1 = 0x8c71,
  SYSREG_BRBSRC15_EL1 = 0x8c79,
  SYSREG_BRBSRC16_EL1 = 0x8c05,
  SYSREG_BRBSRC17_EL1 = 0x8c0d,
  SYSREG_BRBSRC18_EL1 = 0x8c15,
  SYSREG_BRBSRC19_EL1 = 0x8c1d,
  SYSREG_BRBSRC1_EL1 = 0x8c09,
  SYSREG_BRBSRC20_EL1 = 0x8c25,
  SYSREG_BRBSRC21_EL1 = 0x8c2d,
  SYSREG_BRBSRC22_EL1 = 0x8c35,
  SYSREG_BRBSRC23_EL1 = 0x8c3d,
  SYSREG_BRBSRC24_EL1 = 0x8c45,
  SYSREG_BRBSRC25_EL1 = 0x8c4d,
  SYSREG_BRBSRC26_EL1 = 0x8c55,
  SYSREG_BRBSRC27_EL1 = 0x8c5d,
  SYSREG_BRBSRC28_EL1 = 0x8c65,
  SYSREG_BRBSRC29_EL1 = 0x8c6d,
  SYSREG_BRBSRC2_EL1 = 0x8c11,
  SYSREG_BRBSRC30_EL1 = 0x8c75,
  SYSREG_BRBSRC31_EL1 = 0x8c7d,
  SYSREG_BRBSRC3_EL1 = 0x8c19,
  SYSREG_BRBSRC4_EL1 = 0x8c21,
  SYSREG_BRBSRC5_EL1 = 0x8c29,
  SYSREG_BRBSRC6_EL1 = 0x8c31,
  SYSREG_BRBSRC7_EL1 = 0x8c39,
  SYSREG_BRBSRC8_EL1 = 0x8c41,
  SYSREG_BRBSRC9_EL1 = 0x8c49,
  SYSREG_BRBSRCINJ_EL1 = 0x8c89,
  SYSREG_BRBTGT0_EL1 = 0x8c02,
  SYSREG_BRBTGT10_EL1 = 0x8c52,
  SYSREG_BRBTGT11_EL1 = 0x8c5a,
  SYSREG_BRBTGT12_EL1 = 0x8c62,
  SYSREG_BRBTGT13_EL1 = 0x8c6a,
  SYSREG_BRBTGT14_EL1 = 0x8c72,
  SYSREG_BRBTGT15_EL1 = 0x8c7a,
  SYSREG_BRBTGT16_EL1 = 0x8c06,
  SYSREG_BRBTGT17_EL1 = 0x8c0e,
  SYSREG_BRBTGT18_EL1 = 0x8c16,
  SYSREG_BRBTGT19_EL1 = 0x8c1e,
  SYSREG_BRBTGT1_EL1 = 0x8c0a,
  SYSREG_BRBTGT20_EL1 = 0x8c26,
  SYSREG_BRBTGT21_EL1 = 0x8c2e,
  SYSREG_BRBTGT22_EL1 = 0x8c36,
  SYSREG_BRBTGT23_EL1 = 0x8c3e,
  SYSREG_BRBTGT24_EL1 = 0x8c46,
  SYSREG_BRBTGT25_EL1 = 0x8c4e,
  SYSREG_BRBTGT26_EL1 = 0x8c56,
  SYSREG_BRBTGT27_EL1 = 0x8c5e,
  SYSREG_BRBTGT28_EL1 = 0x8c66,
  SYSREG_BRBTGT29_EL1 = 0x8c6e,
  SYSREG_BRBTGT2_EL1 = 0x8c12,
  SYSREG_BRBTGT30_EL1 = 0x8c76,
  SYSREG_BRBTGT31_EL1 = 0x8c7e,
  SYSREG_BRBTGT3_EL1 = 0x8c1a,
  SYSREG_BRBTGT4_EL1 = 0x8c22,
  SYSREG_BRBTGT5_EL1 = 0x8c2a,
  SYSREG_BRBTGT6_EL1 = 0x8c32,
  SYSREG_BRBTGT7_EL1 = 0x8c3a,
  SYSREG_BRBTGT8_EL1 = 0x8c42,
  SYSREG_BRBTGT9_EL1 = 0x8c4a,
  SYSREG_BRBTGTINJ_EL1 = 0x8c8a,
  SYSREG_BRBTS_EL1 = 0x8c82,
  SYSREG_CCSIDR2_EL1 = 0xc802,
  SYSREG_CCSIDR_EL1 = 0xc800,
  SYSREG_CLIDR_EL1 = 0xc801,
  SYSREG_CNTFRQ_EL0 = 0xdf00,
  SYSREG_CNTHCTL_EL2 = 0xe708,
  SYSREG_CNTHPS_CTL_EL2 = 0xe729,
  SYSREG_CNTHPS_CVAL_EL2 = 0xe72a,
  SYSREG_CNTHPS_TVAL_EL2 = 0xe728,
  SYSREG_CNTHP_CTL_EL2 = 0xe711,
  SYSREG_CNTHP_CVAL_EL2 = 0xe712,
  SYSREG_CNTHP_TVAL_EL2 = 0xe710,
  SYSREG_CNTHVS_CTL_EL2 = 0xe721,
  SYSREG_CNTHVS_CVAL_EL2 = 0xe722,
  SYSREG_CNTHVS_TVAL_EL2 = 0xe720,
  SYSREG_CNTHV_CTL_EL2 = 0xe719,
  SYSREG_CNTHV_CVAL_EL2 = 0xe71a,
  SYSREG_CNTHV_TVAL_EL2 = 0xe718,
  SYSREG_CNTISCALE_EL2 = 0xe705,
  SYSREG_CNTKCTL_EL1 = 0xc708,
  SYSREG_CNTKCTL_EL12 = 0xef08,
  SYSREG_CNTPCTSS_EL0 = 0xdf05,
  SYSREG_CNTPCT_EL0 = 0xdf01,
  SYSREG_CNTPOFF_EL2 = 0xe706,
  SYSREG_CNTPS_CTL_EL1 = 0xff11,
  SYSREG_CNTPS_CVAL_EL1 = 0xff12,
  SYSREG_CNTPS_TVAL_EL1 = 0xff10,
  SYSREG_CNTP_CTL_EL0 = 0xdf11,
  SYSREG_CNTP_CTL_EL02 = 0xef11,
  SYSREG_CNTP_CVAL_EL0 = 0xdf12,
  SYSREG_CNTP_CVAL_EL02 = 0xef12,
  SYSREG_CNTP_TVAL_EL0 = 0xdf10,
  SYSREG_CNTP_TVAL_EL02 = 0xef10,
  SYSREG_CNTSCALE_EL2 = 0xe704,
  SYSREG_CNTVCTSS_EL0 = 0xdf06,
  SYSREG_CNTVCT_EL0 = 0xdf02,
  SYSREG_CNTVFRQ_EL2 = 0xe707,
  SYSREG_CNTVOFF_EL2 = 0xe703,
  SYSREG_CNTV_CTL_EL0 = 0xdf19,
  SYSREG_CNTV_CTL_EL02 = 0xef19,
  SYSREG_CNTV_CVAL_EL0 = 0xdf1a,
  SYSREG_CNTV_CVAL_EL02 = 0xef1a,
  SYSREG_CNTV_TVAL_EL0 = 0xdf18,
  SYSREG_CNTV_TVAL_EL02 = 0xef18,
  SYSREG_CONTEXTIDR_EL1 = 0xc681,
  SYSREG_CONTEXTIDR_EL12 = 0xee81,
  SYSREG_CONTEXTIDR_EL2 = 0xe681,
  SYSREG_CPACR_EL1 = 0xc082,
  SYSREG_CPACR_EL12 = 0xe882,
  SYSREG_CPM_IOACC_CTL_EL3 = 0xff90,
  SYSREG_CPTR_EL2 = 0xe08a,
  SYSREG_CPTR_EL3 = 0xf08a,
  SYSREG_CSSELR_EL1 = 0xd000,
  SYSREG_CTR_EL0 = 0xd801,
  SYSREG_CURRENTEL = 0xc212,
  SYSREG_DACR32_EL2 = 0xe180,
  SYSREG_DAIF = 0xda11,
  SYSREG_DBGAUTHSTATUS_EL1 = 0x83f6,
  SYSREG_DBGBCR0_EL1 = 0x8005,
  SYSREG_DBGBCR10_EL1 = 0x8055,
  SYSREG_DBGBCR11_EL1 = 0x805d,
  SYSREG_DBGBCR12_EL1 = 0x8065,
  SYSREG_DBGBCR13_EL1 = 0x806d,
  SYSREG_DBGBCR14_EL1 = 0x8075,
  SYSREG_DBGBCR15_EL1 = 0x807d,
  SYSREG_DBGBCR1_EL1 = 0x800d,
  SYSREG_DBGBCR2_EL1 = 0x8015,
  SYSREG_DBGBCR3_EL1 = 0x801d,
  SYSREG_DBGBCR4_EL1 = 0x8025,
  SYSREG_DBGBCR5_EL1 = 0x802d,
  SYSREG_DBGBCR6_EL1 = 0x8035,
  SYSREG_DBGBCR7_EL1 = 0x803d,
  SYSREG_DBGBCR8_EL1 = 0x8045,
  SYSREG_DBGBCR9_EL1 = 0x804d,
  SYSREG_DBGBVR0_EL1 = 0x8004,
  SYSREG_DBGBVR10_EL1 = 0x8054,
  SYSREG_DBGBVR11_EL1 = 0x805c,
  SYSREG_DBGBVR12_EL1 = 0x8064,
  SYSREG_DBGBVR13_EL1 = 0x806c,
  SYSREG_DBGBVR14_EL1 = 0x8074,
  SYSREG_DBGBVR15_EL1 = 0x807c,
  SYSREG_DBGBVR1_EL1 = 0x800c,
  SYSREG_DBGBVR2_EL1 = 0x8014,
  SYSREG_DBGBVR3_EL1 = 0x801c,
  SYSREG_DBGBVR4_EL1 = 0x8024,
  SYSREG_DBGBVR5_EL1 = 0x802c,
  SYSREG_DBGBVR6_EL1 = 0x8034,
  SYSREG_DBGBVR7_EL1 = 0x803c,
  SYSREG_DBGBVR8_EL1 = 0x8044,
  SYSREG_DBGBVR9_EL1 = 0x804c,
  SYSREG_DBGCLAIMCLR_EL1 = 0x83ce,
  SYSREG_DBGCLAIMSET_EL1 = 0x83c6,
  SYSREG_DBGDTRRX_EL0 = 0x9828,
  SYSREG_DBGDTRTX_EL0 = 0x9828,
  SYSREG_DBGDTR_EL0 = 0x9820,
  SYSREG_DBGPRCR_EL1 = 0x80a4,
  SYSREG_DBGVCR32_EL2 = 0xa038,
  SYSREG_DBGWCR0_EL1 = 0x8007,
  SYSREG_DBGWCR10_EL1 = 0x8057,
  SYSREG_DBGWCR11_EL1 = 0x805f,
  SYSREG_DBGWCR12_EL1 = 0x8067,
  SYSREG_DBGWCR13_EL1 = 0x806f,
  SYSREG_DBGWCR14_EL1 = 0x8077,
  SYSREG_DBGWCR15_EL1 = 0x807f,
  SYSREG_DBGWCR1_EL1 = 0x800f,
  SYSREG_DBGWCR2_EL1 = 0x8017,
  SYSREG_DBGWCR3_EL1 = 0x801f,
  SYSREG_DBGWCR4_EL1 = 0x8027,
  SYSREG_DBGWCR5_EL1 = 0x802f,
  SYSREG_DBGWCR6_EL1 = 0x8037,
  SYSREG_DBGWCR7_EL1 = 0x803f,
  SYSREG_DBGWCR8_EL1 = 0x8047,
  SYSREG_DBGWCR9_EL1 = 0x804f,
  SYSREG_DBGWVR0_EL1 = 0x8006,
  SYSREG_DBGWVR10_EL1 = 0x8056,
  SYSREG_DBGWVR11_EL1 = 0x805e,
  SYSREG_DBGWVR12_EL1 = 0x8066,
  SYSREG_DBGWVR13_EL1 = 0x806e,
  SYSREG_DBGWVR14_EL1 = 0x8076,
  SYSREG_DBGWVR15_EL1 = 0x807e,
  SYSREG_DBGWVR1_EL1 = 0x800e,
  SYSREG_DBGWVR2_EL1 = 0x8016,
  SYSREG_DBGWVR3_EL1 = 0x801e,
  SYSREG_DBGWVR4_EL1 = 0x8026,
  SYSREG_DBGWVR5_EL1 = 0x802e,
  SYSREG_DBGWVR6_EL1 = 0x8036,
  SYSREG_DBGWVR7_EL1 = 0x803e,
  SYSREG_DBGWVR8_EL1 = 0x8046,
  SYSREG_DBGWVR9_EL1 = 0x804e,
  SYSREG_DCZID_EL0 = 0xd807,
  SYSREG_DISR_EL1 = 0xc609,
  SYSREG_DIT = 0xda15,
  SYSREG_DLR_EL0 = 0xda29,
  SYSREG_DSPSR_EL0 = 0xda28,
  SYSREG_ELR_EL1 = 0xc201,
  SYSREG_ELR_EL12 = 0xea01,
  SYSREG_ELR_EL2 = 0xe201,
  SYSREG_ELR_EL3 = 0xf201,
  SYSREG_ERRIDR_EL1 = 0xc298,
  SYSREG_ERRSELR_EL1 = 0xc299,
  SYSREG_ERXADDR_EL1 = 0xc2a3,
  SYSREG_ERXCTLR_EL1 = 0xc2a1,
  SYSREG_ERXFR_EL1 = 0xc2a0,
  SYSREG_ERXMISC0_EL1 = 0xc2a8,
  SYSREG_ERXMISC1_EL1 = 0xc2a9,
  SYSREG_ERXMISC2_EL1 = 0xc2aa,
  SYSREG_ERXMISC3_EL1 = 0xc2ab,
  SYSREG_ERXPFGCDN_EL1 = 0xc2a6,
  SYSREG_ERXPFGCTL_EL1 = 0xc2a5,
  SYSREG_ERXPFGF_EL1 = 0xc2a4,
  SYSREG_ERXSTATUS_EL1 = 0xc2a2,
  SYSREG_ESR_EL1 = 0xc290,
  SYSREG_ESR_EL12 = 0xea90,
  SYSREG_ESR_EL2 = 0xe290,
  SYSREG_ESR_EL3 = 0xf290,
  SYSREG_FAR_EL1 = 0xc300,
  SYSREG_FAR_EL12 = 0xeb00,
  SYSREG_FAR_EL2 = 0xe300,
  SYSREG_FAR_EL3 = 0xf300,
  SYSREG_FPCR = 0xda20,
  SYSREG_FPEXC32_EL2 = 0xe298,
  SYSREG_FPSR = 0xda21,
  SYSREG_GCR_EL1 = 0xc086,
  SYSREG_GMID_EL1 = 0xc804,
  SYSREG_GPCCR_EL3 = 0xf10e,
  SYSREG_GPTBR_EL3 = 0xf10c,
  SYSREG_HACR_EL2 = 0xe08f,
  SYSREG_HCRX_EL2 = 0xe092,
  SYSREG_HCR_EL2 = 0xe088,
  SYSREG_HDFGRTR_EL2 = 0xe18c,
  SYSREG_HDFGWTR_EL2 = 0xe18d,
  SYSREG_HFGITR_EL2 = 0xe08e,
  SYSREG_HFGRTR_EL2 = 0xe08c,
  SYSREG_HFGWTR_EL2 = 0xe08d,
  SYSREG_HPFAR_EL2 = 0xe304,
  SYSREG_HSTR_EL2 = 0xe08b,
  SYSREG_ICC_AP0R0_EL1 = 0xc644,
  SYSREG_ICC_AP0R1_EL1 = 0xc645,
  SYSREG_ICC_AP0R2_EL1 = 0xc646,
  SYSREG_ICC_AP0R3_EL1 = 0xc647,
  SYSREG_ICC_AP1R0_EL1 = 0xc648,
  SYSREG_ICC_AP1R1_EL1 = 0xc649,
  SYSREG_ICC_AP1R2_EL1 = 0xc64a,
  SYSREG_ICC_AP1R3_EL1 = 0xc64b,
  SYSREG_ICC_ASGI1R_EL1 = 0xc65e,
  SYSREG_ICC_BPR0_EL1 = 0xc643,
  SYSREG_ICC_BPR1_EL1 = 0xc663,
  SYSREG_ICC_CTLR_EL1 = 0xc664,
  SYSREG_ICC_CTLR_EL3 = 0xf664,
  SYSREG_ICC_DIR_EL1 = 0xc659,
  SYSREG_ICC_EOIR0_EL1 = 0xc641,
  SYSREG_ICC_EOIR1_EL1 = 0xc661,
  SYSREG_ICC_HPPIR0_EL1 = 0xc642,
  SYSREG_ICC_HPPIR1_EL1 = 0xc662,
  SYSREG_ICC_IAR0_EL1 = 0xc640,
  SYSREG_ICC_IAR1_EL1 = 0xc660,
  SYSREG_ICC_IGRPEN0_EL1 = 0xc666,
  SYSREG_ICC_IGRPEN1_EL1 = 0xc667,
  SYSREG_ICC_IGRPEN1_EL3 = 0xf667,
  SYSREG_ICC_PMR_EL1 = 0xc230,
  SYSREG_ICC_RPR_EL1 = 0xc65b,
  SYSREG_ICC_SGI0R_EL1 = 0xc65f,
  SYSREG_ICC_SGI1R_EL1 = 0xc65d,
  SYSREG_ICC_SRE_EL1 = 0xc665,
  SYSREG_ICC_SRE_EL2 = 0xe64d,
  SYSREG_ICC_SRE_EL3 = 0xf665,
  SYSREG_ICH_AP0R0_EL2 = 0xe640,
  SYSREG_ICH_AP0R1_EL2 = 0xe641,
  SYSREG_ICH_AP0R2_EL2 = 0xe642,
  SYSREG_ICH_AP0R3_EL2 = 0xe643,
  SYSREG_ICH_AP1R0_EL2 = 0xe648,
  SYSREG_ICH_AP1R1_EL2 = 0xe649,
  SYSREG_ICH_AP1R2_EL2 = 0xe64a,
  SYSREG_ICH_AP1R3_EL2 = 0xe64b,
  SYSREG_ICH_EISR_EL2 = 0xe65b,
  SYSREG_ICH_ELRSR_EL2 = 0xe65d,
  SYSREG_ICH_HCR_EL2 = 0xe658,
  SYSREG_ICH_LR0_EL2 = 0xe660,
  SYSREG_ICH_LR10_EL2 = 0xe66a,
  SYSREG_ICH_LR11_EL2 = 0xe66b,
  SYSREG_ICH_LR12_EL2 = 0xe66c,
  SYSREG_ICH_LR13_EL2 = 0xe66d,
  SYSREG_ICH_LR14_EL2 = 0xe66e,
  SYSREG_ICH_LR15_EL2 = 0xe66f,
  SYSREG_ICH_LR1_EL2 = 0xe661,
  SYSREG_ICH_LR2_EL2 = 0xe662,
  SYSREG_ICH_LR3_EL2 = 0xe663,
  SYSREG_ICH_LR4_EL2 = 0xe664,
  SYSREG_ICH_LR5_EL2 = 0xe665,
  SYSREG_ICH_LR6_EL2 = 0xe666,
  SYSREG_ICH_LR7_EL2 = 0xe667,
  SYSREG_ICH_LR8_EL2 = 0xe668,
  SYSREG_ICH_LR9_EL2 = 0xe669,
  SYSREG_ICH_MISR_EL2 = 0xe65a,
  SYSREG_ICH_VMCR_EL2 = 0xe65f,
  SYSREG_ICH_VTR_EL2 = 0xe659,
  SYSREG_ID_AA64AFR0_EL1 = 0xc02c,
  SYSREG_ID_AA64AFR1_EL1 = 0xc02d,
  SYSREG_ID_AA64DFR0_EL1 = 0xc028,
  SYSREG_ID_AA64DFR1_EL1 = 0xc029,
  SYSREG_ID_AA64ISAR0_EL1 = 0xc030,
  SYSREG_ID_AA64ISAR1_EL1 = 0xc031,
  SYSREG_ID_AA64ISAR2_EL1 = 0xc032,
  SYSREG_ID_AA64MMFR0_EL1 = 0xc038,
  SYSREG_ID_AA64MMFR1_EL1 = 0xc039,
  SYSREG_ID_AA64MMFR2_EL1 = 0xc03a,
  SYSREG_ID_AA64PFR0_EL1 = 0xc020,
  SYSREG_ID_AA64PFR1_EL1 = 0xc021,
  SYSREG_ID_AA64SMFR0_EL1 = 0xc025,
  SYSREG_ID_AA64ZFR0_EL1 = 0xc024,
  SYSREG_ID_AFR0_EL1 = 0xc00b,
  SYSREG_ID_DFR0_EL1 = 0xc00a,
  SYSREG_ID_ISAR0_EL1 = 0xc010,
  SYSREG_ID_ISAR1_EL1 = 0xc011,
  SYSREG_ID_ISAR2_EL1 = 0xc012,
  SYSREG_ID_ISAR3_EL1 = 0xc013,
  SYSREG_ID_ISAR4_EL1 = 0xc014,
  SYSREG_ID_ISAR5_EL1 = 0xc015,
  SYSREG_ID_ISAR6_EL1 = 0xc017,
  SYSREG_ID_MMFR0_EL1 = 0xc00c,
  SYSREG_ID_MMFR1_EL1 = 0xc00d,
  SYSREG_ID_MMFR2_EL1 = 0xc00e,
  SYSREG_ID_MMFR3_EL1 = 0xc00f,
  SYSREG_ID_MMFR4_EL1 = 0xc016,
  SYSREG_ID_MMFR5_EL1 = 0xc01e,
  SYSREG_ID_PFR0_EL1 = 0xc008,
  SYSREG_ID_PFR1_EL1 = 0xc009,
  SYSREG_ID_PFR2_EL1 = 0xc01c,
  SYSREG_IFSR32_EL2 = 0xe281,
  SYSREG_ISR_EL1 = 0xc608,
  SYSREG_LORC_EL1 = 0xc523,
  SYSREG_LOREA_EL1 = 0xc521,
  SYSREG_LORID_EL1 = 0xc527,
  SYSREG_LORN_EL1 = 0xc522,
  SYSREG_LORSA_EL1 = 0xc520,
  SYSREG_MAIR_EL1 = 0xc510,
  SYSREG_MAIR_EL12 = 0xed10,
  SYSREG_MAIR_EL2 = 0xe510,
  SYSREG_MAIR_EL3 = 0xf510,
  SYSREG_MDCCINT_EL1 = 0x8010,
  SYSREG_MDCCSR_EL0 = 0x9808,
  SYSREG_MDCR_EL2 = 0xe089,
  SYSREG_MDCR_EL3 = 0xf099,
  SYSREG_MDRAR_EL1 = 0x8080,
  SYSREG_MDSCR_EL1 = 0x8012,
  SYSREG_MFAR_EL3 = 0xf305,
  SYSREG_MIDR_EL1 = 0xc000,
  SYSREG_MPAM0_EL1 = 0xc529,
  SYSREG_MPAM1_EL1 = 0xc528,
  SYSREG_MPAM1_EL12 = 0xed28,
  SYSREG_MPAM2_EL2 = 0xe528,
  SYSREG_MPAM3_EL3 = 0xf528,
  SYSREG_MPAMHCR_EL2 = 0xe520,
  SYSREG_MPAMIDR_EL1 = 0xc524,
  SYSREG_MPAMSM_EL1 = 0xc52b,
  SYSREG_MPAMVPM0_EL2 = 0xe530,
  SYSREG_MPAMVPM1_EL2 = 0xe531,
  SYSREG_MPAMVPM2_EL2 = 0xe532,
  SYSREG_MPAMVPM3_EL2 = 0xe533,
  SYSREG_MPAMVPM4_EL2 = 0xe534,
  SYSREG_MPAMVPM5_EL2 = 0xe535,
  SYSREG_MPAMVPM6_EL2 = 0xe536,
  SYSREG_MPAMVPM7_EL2 = 0xe537,
  SYSREG_MPAMVPMV_EL2 = 0xe521,
  SYSREG_MPIDR_EL1 = 0xc005,
  SYSREG_MPUIR_EL1 = 0xc004,
  SYSREG_MPUIR_EL2 = 0xe004,
  SYSREG_MVFR0_EL1 = 0xc018,
  SYSREG_MVFR1_EL1 = 0xc019,
  SYSREG_MVFR2_EL1 = 0xc01a,
  SYSREG_NZCV = 0xda10,
  SYSREG_OSDLR_EL1 = 0x809c,
  SYSREG_OSDTRRX_EL1 = 0x8002,
  SYSREG_OSDTRTX_EL1 = 0x801a,
  SYSREG_OSECCR_EL1 = 0x8032,
  SYSREG_OSLAR_EL1 = 0x8084,
  SYSREG_OSLSR_EL1 = 0x808c,
  SYSREG_PAN = 0xc213,
  SYSREG_PAR_EL1 = 0xc3a0,
  SYSREG_PMBIDR_EL1 = 0xc4d7,
  SYSREG_PMBLIMITR_EL1 = 0xc4d0,
  SYSREG_PMBPTR_EL1 = 0xc4d1,
  SYSREG_PMBSR_EL1 = 0xc4d3,
  SYSREG_PMCCFILTR_EL0 = 0xdf7f,
  SYSREG_PMCCNTR_EL0 = 0xdce8,
  SYSREG_PMCEID0_EL0 = 0xdce6,
  SYSREG_PMCEID1_EL0 = 0xdce7,
  SYSREG_PMCNTENCLR_EL0 = 0xdce2,
  SYSREG_PMCNTENSET_EL0 = 0xdce1,
  SYSREG_PMCR_EL0 = 0xdce0,
  SYSREG_PMEVCNTR0_EL0 = 0xdf40,
  SYSREG_PMEVCNTR10_EL0 = 0xdf4a,
  SYSREG_PMEVCNTR11_EL0 = 0xdf4b,
  SYSREG_PMEVCNTR12_EL0 = 0xdf4c,
  SYSREG_PMEVCNTR13_EL0 = 0xdf4d,
  SYSREG_PMEVCNTR14_EL0 = 0xdf4e,
  SYSREG_PMEVCNTR15_EL0 = 0xdf4f,
  SYSREG_PMEVCNTR16_EL0 = 0xdf50,
  SYSREG_PMEVCNTR17_EL0 = 0xdf51,
  SYSREG_PMEVCNTR18_EL0 = 0xdf52,
  SYSREG_PMEVCNTR19_EL0 = 0xdf53,
  SYSREG_PMEVCNTR1_EL0 = 0xdf41,
  SYSREG_PMEVCNTR20_EL0 = 0xdf54,
  SYSREG_PMEVCNTR21_EL0 = 0xdf55,
  SYSREG_PMEVCNTR22_EL0 = 0xdf56,
  SYSREG_PMEVCNTR23_EL0 = 0xdf57,
  SYSREG_PMEVCNTR24_EL0 = 0xdf58,
  SYSREG_PMEVCNTR25_EL0 = 0xdf59,
  SYSREG_PMEVCNTR26_EL0 = 0xdf5a,
  SYSREG_PMEVCNTR27_EL0 = 0xdf5b,
  SYSREG_PMEVCNTR28_EL0 = 0xdf5c,
  SYSREG_PMEVCNTR29_EL0 = 0xdf5d,
  SYSREG_PMEVCNTR2_EL0 = 0xdf42,
  SYSREG_PMEVCNTR30_EL0 = 0xdf5e,
  SYSREG_PMEVCNTR3_EL0 = 0xdf43,
  SYSREG_PMEVCNTR4_EL0 = 0xdf44,
  SYSREG_PMEVCNTR5_EL0 = 0xdf45,
  SYSREG_PMEVCNTR6_EL0 = 0xdf46,
  SYSREG_PMEVCNTR7_EL0 = 0xdf47,
  SYSREG_PMEVCNTR8_EL0 = 0xdf48,
  SYSREG_PMEVCNTR9_EL0 = 0xdf49,
  SYSREG_PMEVTYPER0_EL0 = 0xdf60,
  SYSREG_PMEVTYPER10_EL0 = 0xdf6a,
  SYSREG_PMEVTYPER11_EL0 = 0xdf6b,
  SYSREG_PMEVTYPER12_EL0 = 0xdf6c,
  SYSREG_PMEVTYPER13_EL0 = 0xdf6d,
  SYSREG_PMEVTYPER14_EL0 = 0xdf6e,
  SYSREG_PMEVTYPER15_EL0 = 0xdf6f,
  SYSREG_PMEVTYPER16_EL0 = 0xdf70,
  SYSREG_PMEVTYPER17_EL0 = 0xdf71,
  SYSREG_PMEVTYPER18_EL0 = 0xdf72,
  SYSREG_PMEVTYPER19_EL0 = 0xdf73,
  SYSREG_PMEVTYPER1_EL0 = 0xdf61,
  SYSREG_PMEVTYPER20_EL0 = 0xdf74,
  SYSREG_PMEVTYPER21_EL0 = 0xdf75,
  SYSREG_PMEVTYPER22_EL0 = 0xdf76,
  SYSREG_PMEVTYPER23_EL0 = 0xdf77,
  SYSREG_PMEVTYPER24_EL0 = 0xdf78,
  SYSREG_PMEVTYPER25_EL0 = 0xdf79,
  SYSREG_PMEVTYPER26_EL0 = 0xdf7a,
  SYSREG_PMEVTYPER27_EL0 = 0xdf7b,
  SYSREG_PMEVTYPER28_EL0 = 0xdf7c,
  SYSREG_PMEVTYPER29_EL0 = 0xdf7d,
  SYSREG_PMEVTYPER2_EL0 = 0xdf62,
  SYSREG_PMEVTYPER30_EL0 = 0xdf7e,
  SYSREG_PMEVTYPER3_EL0 = 0xdf63,
  SYSREG_PMEVTYPER4_EL0 = 0xdf64,
  SYSREG_PMEVTYPER5_EL0 = 0xdf65,
  SYSREG_PMEVTYPER6_EL0 = 0xdf66,
  SYSREG_PMEVTYPER7_EL0 = 0xdf67,
  SYSREG_PMEVTYPER8_EL0 = 0xdf68,
  SYSREG_PMEVTYPER9_EL0 = 0xdf69,
  SYSREG_PMINTENCLR_EL1 = 0xc4f2,
  SYSREG_PMINTENSET_EL1 = 0xc4f1,
  SYSREG_PMMIR_EL1 = 0xc4f6,
  SYSREG_PMOVSCLR_EL0 = 0xdce3,
  SYSREG_PMOVSSET_EL0 = 0xdcf3,
  SYSREG_PMSCR_EL1 = 0xc4c8,
  SYSREG_PMSCR_EL12 = 0xecc8,
  SYSREG_PMSCR_EL2 = 0xe4c8,
  SYSREG_PMSELR_EL0 = 0xdce5,
  SYSREG_PMSEVFR_EL1 = 0xc4cd,
  SYSREG_PMSFCR_EL1 = 0xc4cc,
  SYSREG_PMSICR_EL1 = 0xc4ca,
  SYSREG_PMSIDR_EL1 = 0xc4cf,
  SYSREG_PMSIRR_EL1 = 0xc4cb,
  SYSREG_PMSLATFR_EL1 = 0xc4ce,
  SYSREG_PMSNEVFR_EL1 = 0xc4c9,
  SYSREG_PMSWINC_EL0 = 0xdce4,
  SYSREG_PMUSERENR_EL0 = 0xdcf0,
  SYSREG_PMXEVCNTR_EL0 = 0xdcea,
  SYSREG_PMXEVTYPER_EL0 = 0xdce9,
  SYSREG_PRBAR10_EL1 = 0xc368,
  SYSREG_PRBAR10_EL2 = 0xe368,
  SYSREG_PRBAR11_EL1 = 0xc36c,
  SYSREG_PRBAR11_EL2 = 0xe36c,
  SYSREG_PRBAR12_EL1 = 0xc370,
  SYSREG_PRBAR12_EL2 = 0xe370,
  SYSREG_PRBAR13_EL1 = 0xc374,
  SYSREG_PRBAR13_EL2 = 0xe374,
  SYSREG_PRBAR14_EL1 = 0xc378,
  SYSREG_PRBAR14_EL2 = 0xe378,
  SYSREG_PRBAR15_EL1 = 0xc37c,
  SYSREG_PRBAR15_EL2 = 0xe37c,
  SYSREG_PRBAR1_EL1 = 0xc344,
  SYSREG_PRBAR1_EL2 = 0xe344,
  SYSREG_PRBAR2_EL1 = 0xc348,
  SYSREG_PRBAR2_EL2 = 0xe348,
  SYSREG_PRBAR3_EL1 = 0xc34c,
  SYSREG_PRBAR3_EL2 = 0xe34c,
  SYSREG_PRBAR4_EL1 = 0xc350,
  SYSREG_PRBAR4_EL2 = 0xe350,
  SYSREG_PRBAR5_EL1 = 0xc354,
  SYSREG_PRBAR5_EL2 = 0xe354,
  SYSREG_PRBAR6_EL1 = 0xc358,
  SYSREG_PRBAR6_EL2 = 0xe358,
  SYSREG_PRBAR7_EL1 = 0xc35c,
  SYSREG_PRBAR7_EL2 = 0xe35c,
  SYSREG_PRBAR8_EL1 = 0xc360,
  SYSREG_PRBAR8_EL2 = 0xe360,
  SYSREG_PRBAR9_EL1 = 0xc364,
  SYSREG_PRBAR9_EL2 = 0xe364,
  SYSREG_PRBAR_EL1 = 0xc340,
  SYSREG_PRBAR_EL2 = 0xe340,
  SYSREG_PRENR_EL1 = 0xc309,
  SYSREG_PRENR_EL2 = 0xe309,
  SYSREG_PRLAR10_EL1 = 0xc369,
  SYSREG_PRLAR10_EL2 = 0xe369,
  SYSREG_PRLAR11_EL1 = 0xc36d,
  SYSREG_PRLAR11_EL2 = 0xe36d,
  SYSREG_PRLAR12_EL1 = 0xc371,
  SYSREG_PRLAR12_EL2 = 0xe371,
  SYSREG_PRLAR13_EL1 = 0xc375,
  SYSREG_PRLAR13_EL2 = 0xe375,
  SYSREG_PRLAR14_EL1 = 0xc379,
  SYSREG_PRLAR14_EL2 = 0xe379,
  SYSREG_PRLAR15_EL1 = 0xc37d,
  SYSREG_PRLAR15_EL2 = 0xe37d,
  SYSREG_PRLAR1_EL1 = 0xc345,
  SYSREG_PRLAR1_EL2 = 0xe345,
  SYSREG_PRLAR2_EL1 = 0xc349,
  SYSREG_PRLAR2_EL2 = 0xe349,
  SYSREG_PRLAR3_EL1 = 0xc34d,
  SYSREG_PRLAR3_EL2 = 0xe34d,
  SYSREG_PRLAR4_EL1 = 0xc351,
  SYSREG_PRLAR4_EL2 = 0xe351,
  SYSREG_PRLAR5_EL1 = 0xc355,
  SYSREG_PRLAR5_EL2 = 0xe355,
  SYSREG_PRLAR6_EL1 = 0xc359,
  SYSREG_PRLAR6_EL2 = 0xe359,
  SYSREG_PRLAR7_EL1 = 0xc35d,
  SYSREG_PRLAR7_EL2 = 0xe35d,
  SYSREG_PRLAR8_EL1 = 0xc361,
  SYSREG_PRLAR8_EL2 = 0xe361,
  SYSREG_PRLAR9_EL1 = 0xc365,
  SYSREG_PRLAR9_EL2 = 0xe365,
  SYSREG_PRLAR_EL1 = 0xc341,
  SYSREG_PRLAR_EL2 = 0xe341,
  SYSREG_PRSELR_EL1 = 0xc311,
  SYSREG_PRSELR_EL2 = 0xe311,
  SYSREG_REVIDR_EL1 = 0xc006,
  SYSREG_RGSR_EL1 = 0xc085,
  SYSREG_RMR_EL1 = 0xc602,
  SYSREG_RMR_EL2 = 0xe602,
  SYSREG_RMR_EL3 = 0xf602,
  SYSREG_RNDR = 0xd920,
  SYSREG_RNDRRS = 0xd921,
  SYSREG_RVBAR_EL1 = 0xc601,
  SYSREG_RVBAR_EL2 = 0xe601,
  SYSREG_RVBAR_EL3 = 0xf601,
  SYSREG_SCR_EL3 = 0xf088,
  SYSREG_SCTLR_EL1 = 0xc080,
  SYSREG_SCTLR_EL12 = 0xe880,
  SYSREG_SCTLR_EL2 = 0xe080,
  SYSREG_SCTLR_EL3 = 0xf080,
  SYSREG_SCXTNUM_EL0 = 0xde87,
  SYSREG_SCXTNUM_EL1 = 0xc687,
  SYSREG_SCXTNUM_EL12 = 0xee87,
  SYSREG_SCXTNUM_EL2 = 0xe687,
  SYSREG_SCXTNUM_EL3 = 0xf687,
  SYSREG_SDER32_EL2 = 0xe099,
  SYSREG_SDER32_EL3 = 0xf089,
  SYSREG_SMCR_EL1 = 0xc096,
  SYSREG_SMCR_EL12 = 0xe896,
  SYSREG_SMCR_EL2 = 0xe096,
  SYSREG_SMCR_EL3 = 0xf096,
  SYSREG_SMIDR_EL1 = 0xc806,
  SYSREG_SMPRIMAP_EL2 = 0xe095,
  SYSREG_SMPRI_EL1 = 0xc094,
  SYSREG_SPSEL = 0xc210,
  SYSREG_SPSR_ABT = 0xe219,
  SYSREG_SPSR_EL1 = 0xc200,
  SYSREG_SPSR_EL12 = 0xea00,
  SYSREG_SPSR_EL2 = 0xe200,
  SYSREG_SPSR_EL3 = 0xf200,
  SYSREG_SPSR_FIQ = 0xe21b,
  SYSREG_SPSR_IRQ = 0xe218,
  SYSREG_SPSR_UND = 0xe21a,
  SYSREG_SP_EL0 = 0xc208,
  SYSREG_SP_EL1 = 0xe208,
  SYSREG_SP_EL2 = 0xf208,
  SYSREG_SSBS = 0xda16,
  SYSREG_SVCR = 0xda12,
  SYSREG_TCO = 0xda17,
  SYSREG_TCR_EL1 = 0xc102,
  SYSREG_TCR_EL12 = 0xe902,
  SYSREG_TCR_EL2 = 0xe102,
  SYSREG_TCR_EL3 = 0xf102,
  SYSREG_TEECR32_EL1 = 0x9000,
  SYSREG_TEEHBR32_EL1 = 0x9080,
  SYSREG_TFSRE0_EL1 = 0xc2b1,
  SYSREG_TFSR_EL1 = 0xc2b0,
  SYSREG_TFSR_EL12 = 0xeab0,
  SYSREG_TFSR_EL2 = 0xe2b0,
  SYSREG_TFSR_EL3 = 0xf2b0,
  SYSREG_TPIDR2_EL0 = 0xde85,
  SYSREG_TPIDRRO_EL0 = 0xde83,
  SYSREG_TPIDR_EL0 = 0xde82,
  SYSREG_TPIDR_EL1 = 0xc684,
  SYSREG_TPIDR_EL2 = 0xe682,
  SYSREG_TPIDR_EL3 = 0xf682,
  SYSREG_TRBBASER_EL1 = 0xc4da,
  SYSREG_TRBIDR_EL1 = 0xc4df,
  SYSREG_TRBLIMITR_EL1 = 0xc4d8,
  SYSREG_TRBMAR_EL1 = 0xc4dc,
  SYSREG_TRBPTR_EL1 = 0xc4d9,
  SYSREG_TRBSR_EL1 = 0xc4db,
  SYSREG_TRBTRG_EL1 = 0xc4de,
  SYSREG_TRCACATR0 = 0x8902,
  SYSREG_TRCACATR1 = 0x8912,
  SYSREG_TRCACATR10 = 0x8923,
  SYSREG_TRCACATR11 = 0x8933,
  SYSREG_TRCACATR12 = 0x8943,
  SYSREG_TRCACATR13 = 0x8953,
  SYSREG_TRCACATR14 = 0x8963,
  SYSREG_TRCACATR15 = 0x8973,
  SYSREG_TRCACATR2 = 0x8922,
  SYSREG_TRCACATR3 = 0x8932,
  SYSREG_TRCACATR4 = 0x8942,
  SYSREG_TRCACATR5 = 0x8952,
  SYSREG_TRCACATR6 = 0x8962,
  SYSREG_TRCACATR7 = 0x8972,
  SYSREG_TRCACATR8 = 0x8903,
  SYSREG_TRCACATR9 = 0x8913,
  SYSREG_TRCACVR0 = 0x8900,
  SYSREG_TRCACVR1 = 0x8910,
  SYSREG_TRCACVR10 = 0x8921,
  SYSREG_TRCACVR11 = 0x8931,
  SYSREG_TRCACVR12 = 0x8941,
  SYSREG_TRCACVR13 = 0x8951,
  SYSREG_TRCACVR14 = 0x8961,
  SYSREG_TRCACVR15 = 0x8971,
  SYSREG_TRCACVR2 = 0x8920,
  SYSREG_TRCACVR3 = 0x8930,
  SYSREG_TRCACVR4 = 0x8940,
  SYSREG_TRCACVR5 = 0x8950,
  SYSREG_TRCACVR6 = 0x8960,
  SYSREG_TRCACVR7 = 0x8970,
  SYSREG_TRCACVR8 = 0x8901,
  SYSREG_TRCACVR9 = 0x8911,
  SYSREG_TRCAUTHSTATUS = 0x8bf6,
  SYSREG_TRCAUXCTLR = 0x8830,
  SYSREG_TRCBBCTLR = 0x8878,
  SYSREG_TRCCCCTLR = 0x8870,
  SYSREG_TRCCIDCCTLR0 = 0x8982,
  SYSREG_TRCCIDCCTLR1 = 0x898a,
  SYSREG_TRCCIDCVR0 = 0x8980,
  SYSREG_TRCCIDCVR1 = 0x8990,
  SYSREG_TRCCIDCVR2 = 0x89a0,
  SYSREG_TRCCIDCVR3 = 0x89b0,
  SYSREG_TRCCIDCVR4 = 0x89c0,
  SYSREG_TRCCIDCVR5 = 0x89d0,
  SYSREG_TRCCIDCVR6 = 0x89e0,
  SYSREG_TRCCIDCVR7 = 0x89f0,
  SYSREG_TRCCIDR0 = 0x8be7,
  SYSREG_TRCCIDR1 = 0x8bef,
  SYSREG_TRCCIDR2 = 0x8bf7,
  SYSREG_TRCCIDR3 = 0x8bff,
  SYSREG_TRCCLAIMCLR = 0x8bce,
  SYSREG_TRCCLAIMSET = 0x8bc6,
  SYSREG_TRCCNTCTLR0 = 0x8825,
  SYSREG_TRCCNTCTLR1 = 0x882d,
  SYSREG_TRCCNTCTLR2 = 0x8835,
  SYSREG_TRCCNTCTLR3 = 0x883d,
  SYSREG_TRCCNTRLDVR0 = 0x8805,
  SYSREG_TRCCNTRLDVR1 = 0x880d,
  SYSREG_TRCCNTRLDVR2 = 0x8815,
  SYSREG_TRCCNTRLDVR3 = 0x881d,
  SYSREG_TRCCNTVR0 = 0x8845,
  SYSREG_TRCCNTVR1 = 0x884d,
  SYSREG_TRCCNTVR2 = 0x8855,
  SYSREG_TRCCNTVR3 = 0x885d,
  SYSREG_TRCCONFIGR = 0x8820,
  SYSREG_TRCDEVAFF0 = 0x8bd6,
  SYSREG_TRCDEVAFF1 = 0x8bde,
  SYSREG_TRCDEVARCH = 0x8bfe,
  SYSREG_TRCDEVID = 0x8b97,
  SYSREG_TRCDEVTYPE = 0x8b9f,
  SYSREG_TRCDVCMR0 = 0x8906,
  SYSREG_TRCDVCMR1 = 0x8926,
  SYSREG_TRCDVCMR2 = 0x8946,
  SYSREG_TRCDVCMR3 = 0x8966,
  SYSREG_TRCDVCMR4 = 0x8907,
  SYSREG_TRCDVCMR5 = 0x8927,
  SYSREG_TRCDVCMR6 = 0x8947,
  SYSREG_TRCDVCMR7 = 0x8967,
  SYSREG_TRCDVCVR0 = 0x8904,
  SYSREG_TRCDVCVR1 = 0x8924,
  SYSREG_TRCDVCVR2 = 0x8944,
  SYSREG_TRCDVCVR3 = 0x8964,
  SYSREG_TRCDVCVR4 = 0x8905,
  SYSREG_TRCDVCVR5 = 0x8925,
  SYSREG_TRCDVCVR6 = 0x8945,
  SYSREG_TRCDVCVR7 = 0x8965,
  SYSREG_TRCEVENTCTL0R = 0x8840,
  SYSREG_TRCEVENTCTL1R = 0x8848,
  SYSREG_TRCEXTINSELR = 0x8844,
  SYSREG_TRCEXTINSELR0 = 0x8844,
  SYSREG_TRCEXTINSELR1 = 0x884c,
  SYSREG_TRCEXTINSELR2 = 0x8854,
  SYSREG_TRCEXTINSELR3 = 0x885c,
  SYSREG_TRCIDR0 = 0x8847,
  SYSREG_TRCIDR1 = 0x884f,
  SYSREG_TRCIDR10 = 0x8816,
  SYSREG_TRCIDR11 = 0x881e,
  SYSREG_TRCIDR12 = 0x8826,
  SYSREG_TRCIDR13 = 0x882e,
  SYSREG_TRCIDR2 = 0x8857,
  SYSREG_TRCIDR3 = 0x885f,
  SYSREG_TRCIDR4 = 0x8867,
  SYSREG_TRCIDR5 = 0x886f,
  SYSREG_TRCIDR6 = 0x8877,
  SYSREG_TRCIDR7 = 0x887f,
  SYSREG_TRCIDR8 = 0x8806,
  SYSREG_TRCIDR9 = 0x880e,
  SYSREG_TRCIMSPEC0 = 0x8807,
  SYSREG_TRCIMSPEC1 = 0x880f,
  SYSREG_TRCIMSPEC2 = 0x8817,
  SYSREG_TRCIMSPEC3 = 0x881f,
  SYSREG_TRCIMSPEC4 = 0x8827,
  SYSREG_TRCIMSPEC5 = 0x882f,
  SYSREG_TRCIMSPEC6 = 0x8837,
  SYSREG_TRCIMSPEC7 = 0x883f,
  SYSREG_TRCITCTRL = 0x8b84,
  SYSREG_TRCLAR = 0x8be6,
  SYSREG_TRCLSR = 0x8bee,
  SYSREG_TRCOSLAR = 0x8884,
  SYSREG_TRCOSLSR = 0x888c,
  SYSREG_TRCPDCR = 0x88a4,
  SYSREG_TRCPDSR = 0x88ac,
  SYSREG_TRCPIDR0 = 0x8bc7,
  SYSREG_TRCPIDR1 = 0x8bcf,
  SYSREG_TRCPIDR2 = 0x8bd7,
  SYSREG_TRCPIDR3 = 0x8bdf,
  SYSREG_TRCPIDR4 = 0x8ba7,
  SYSREG_TRCPIDR5 = 0x8baf,
  SYSREG_TRCPIDR6 = 0x8bb7,
  SYSREG_TRCPIDR7 = 0x8bbf,
  SYSREG_TRCPRGCTLR = 0x8808,
  SYSREG_TRCPROCSELR = 0x8810,
  SYSREG_TRCQCTLR = 0x8809,
  SYSREG_TRCRSCTLR10 = 0x88d0,
  SYSREG_TRCRSCTLR11 = 0x88d8,
  SYSREG_TRCRSCTLR12 = 0x88e0,
  SYSREG_TRCRSCTLR13 = 0x88e8,
  SYSREG_TRCRSCTLR14 = 0x88f0,
  SYSREG_TRCRSCTLR15 = 0x88f8,
  SYSREG_TRCRSCTLR16 = 0x8881,
  SYSREG_TRCRSCTLR17 = 0x8889,
  SYSREG_TRCRSCTLR18 = 0x8891,
  SYSREG_TRCRSCTLR19 = 0x8899,
  SYSREG_TRCRSCTLR2 = 0x8890,
  SYSREG_TRCRSCTLR20 = 0x88a1,
  SYSREG_TRCRSCTLR21 = 0x88a9,
  SYSREG_TRCRSCTLR22 = 0x88b1,
  SYSREG_TRCRSCTLR23 = 0x88b9,
  SYSREG_TRCRSCTLR24 = 0x88c1,
  SYSREG_TRCRSCTLR25 = 0x88c9,
  SYSREG_TRCRSCTLR26 = 0x88d1,
  SYSREG_TRCRSCTLR27 = 0x88d9,
  SYSREG_TRCRSCTLR28 = 0x88e1,
  SYSREG_TRCRSCTLR29 = 0x88e9,
  SYSREG_TRCRSCTLR3 = 0x8898,
  SYSREG_TRCRSCTLR30 = 0x88f1,
  SYSREG_TRCRSCTLR31 = 0x88f9,
  SYSREG_TRCRSCTLR4 = 0x88a0,
  SYSREG_TRCRSCTLR5 = 0x88a8,
  SYSREG_TRCRSCTLR6 = 0x88b0,
  SYSREG_TRCRSCTLR7 = 0x88b8,
  SYSREG_TRCRSCTLR8 = 0x88c0,
  SYSREG_TRCRSCTLR9 = 0x88c8,
  SYSREG_TRCRSR = 0x8850,
  SYSREG_TRCSEQEVR0 = 0x8804,
  SYSREG_TRCSEQEVR1 = 0x880c,
  SYSREG_TRCSEQEVR2 = 0x8814,
  SYSREG_TRCSEQRSTEVR = 0x8834,
  SYSREG_TRCSEQSTR = 0x883c,
  SYSREG_TRCSSCCR0 = 0x8882,
  SYSREG_TRCSSCCR1 = 0x888a,
  SYSREG_TRCSSCCR2 = 0x8892,
  SYSREG_TRCSSCCR3 = 0x889a,
  SYSREG_TRCSSCCR4 = 0x88a2,
  SYSREG_TRCSSCCR5 = 0x88aa,
  SYSREG_TRCSSCCR6 = 0x88b2,
  SYSREG_TRCSSCCR7 = 0x88ba,
  SYSREG_TRCSSCSR0 = 0x88c2,
  SYSREG_TRCSSCSR1 = 0x88ca,
  SYSREG_TRCSSCSR2 = 0x88d2,
  SYSREG_TRCSSCSR3 = 0x88da,
  SYSREG_TRCSSCSR4 = 0x88e2,
  SYSREG_TRCSSCSR5 = 0x88ea,
  SYSREG_TRCSSCSR6 = 0x88f2,
  SYSREG_TRCSSCSR7 = 0x88fa,
  SYSREG_TRCSSPCICR0 = 0x8883,
  SYSREG_TRCSSPCICR1 = 0x888b,
  SYSREG_TRCSSPCICR2 = 0x8893,
  SYSREG_TRCSSPCICR3 = 0x889b,
  SYSREG_TRCSSPCICR4 = 0x88a3,
  SYSREG_TRCSSPCICR5 = 0x88ab,
  SYSREG_TRCSSPCICR6 = 0x88b3,
  SYSREG_TRCSSPCICR7 = 0x88bb,
  SYSREG_TRCSTALLCTLR = 0x8858,
  SYSREG_TRCSTATR = 0x8818,
  SYSREG_TRCSYNCPR = 0x8868,
  SYSREG_TRCTRACEIDR = 0x8801,
  SYSREG_TRCTSCTLR = 0x8860,
  SYSREG_TRCVDARCCTLR = 0x8852,
  SYSREG_TRCVDCTLR = 0x8842,
  SYSREG_TRCVDSACCTLR = 0x884a,
  SYSREG_TRCVICTLR = 0x8802,
  SYSREG_TRCVIIECTLR = 0x880a,
  SYSREG_TRCVIPCSSCTLR = 0x881a,
  SYSREG_TRCVISSCTLR = 0x8812,
  SYSREG_TRCVMIDCCTLR0 = 0x8992,
  SYSREG_TRCVMIDCCTLR1 = 0x899a,
  SYSREG_TRCVMIDCVR0 = 0x8981,
  SYSREG_TRCVMIDCVR1 = 0x8991,
  SYSREG_TRCVMIDCVR2 = 0x89a1,
  SYSREG_TRCVMIDCVR3 = 0x89b1,
  SYSREG_TRCVMIDCVR4 = 0x89c1,
  SYSREG_TRCVMIDCVR5 = 0x89d1,
  SYSREG_TRCVMIDCVR6 = 0x89e1,
  SYSREG_TRCVMIDCVR7 = 0x89f1,
  SYSREG_TRFCR_EL1 = 0xc091,
  SYSREG_TRFCR_EL12 = 0xe891,
  SYSREG_TRFCR_EL2 = 0xe091,
  SYSREG_TTBR0_EL1 = 0xc100,
  SYSREG_TTBR0_EL12 = 0xe900,
  SYSREG_TTBR0_EL2 = 0xe100,
  SYSREG_TTBR0_EL3 = 0xf100,
  SYSREG_TTBR1_EL1 = 0xc101,
  SYSREG_TTBR1_EL12 = 0xe901,
  SYSREG_TTBR1_EL2 = 0xe101,
  SYSREG_UAO = 0xc214,
  SYSREG_VBAR_EL1 = 0xc600,
  SYSREG_VBAR_EL12 = 0xee00,
  SYSREG_VBAR_EL2 = 0xe600,
  SYSREG_VBAR_EL3 = 0xf600,
  SYSREG_VDISR_EL2 = 0xe609,
  SYSREG_VMPIDR_EL2 = 0xe005,
  SYSREG_VNCR_EL2 = 0xe110,
  SYSREG_VPIDR_EL2 = 0xe000,
  SYSREG_VSCTLR_EL2 = 0xe100,
  SYSREG_VSESR_EL2 = 0xe293,
  SYSREG_VSTCR_EL2 = 0xe132,
  SYSREG_VSTTBR_EL2 = 0xe130,
  SYSREG_VTCR_EL2 = 0xe10a,
  SYSREG_VTTBR_EL2 = 0xe108,
  SYSREG_ZCR_EL1 = 0xc090,
  SYSREG_ZCR_EL12 = 0xe890,
  SYSREG_ZCR_EL2 = 0xe090,
  SYSREG_ZCR_EL3 = 0xf090,

  // System PState Field (MSR instruction)
  PSTATE_INVALID = 0,
  PSTATE_SPSEL = 0x05,
  PSTATE_DAIFSET = 0x1e,
  PSTATE_DAIFCLR = 0x1f,
  PSTATE_PAN = 0x4,
  PSTATE_UAO = 0x3,
  PSTATE_DIT = 0x1a,

  // Vector arrangement specifier (for FloatingPoint/Advanced SIMD insn)
  VAS_INVALID = 0,
  VAS_16B = 1,
  VAS_8B = 2,
  VAS_4B = 3,
  VAS_1B = 4,
  VAS_8H = 5,
  VAS_4H = 6,
  VAS_2H = 7,
  VAS_1H = 8,
  VAS_4S = 9,
  VAS_2S = 10,
  VAS_1S = 11,
  VAS_2D = 12,
  VAS_1D = 13,
  VAS_1Q = 14,

  // Memory barrier operands
  BARRIER_INVALID = 0,
  BARRIER_OSHLD = 0x1,
  BARRIER_OSHST = 0x2,
  BARRIER_OSH = 0x3,
  BARRIER_NSHLD = 0x5,
  BARRIER_NSHST = 0x6,
  BARRIER_NSH = 0x7,
  BARRIER_ISHLD = 0x9,
  BARRIER_ISHST = 0xa,
  BARRIER_ISH = 0xb,
  BARRIER_LD = 0xd,
  BARRIER_ST = 0xe,
  BARRIER_SY = 0xf,

  // Operand type for instruction's operands
  OP_INVALID = 0, // cs.OP_INVALID (Uninitialized).
  OP_REG = 1, // cs.OP_REG (Register operand).
  OP_IMM = 2, // cs.OP_IMM (Immediate operand).
  OP_MEM = 3, // cs.OP_MEM (Memory operand).
  OP_FP = 4, // cs.OP_FP (Floating-Point operand).
  OP_CIMM = 64, // C-Immediate (coprocessor registers)
  OP_REG_MRS = 65, // MRS register operand.
  OP_REG_MSR = 66, // MSR register operand.
  OP_PSTATE = 67, // PState operand.
  OP_SYS = 68, // SYS operand for IC/DC/AT/TLBI instructions.
  OP_SVCR = 69, // SVCR operand for MSR SVCR instructions.
  OP_PREFETCH = 70, // Prefetch operand (PRFM).
  OP_BARRIER = 71, // Memory barrier operand (ISB/DMB/DSB instructions).
  OP_SME_INDEX = 72, // SME instruction operand with with index.

  // SYS operands (IC/DC/AC/TLBI)
  SYS_INVALID = 0,

  // TLBI operations
  TLBI_ALLE1 = 1,
  TLBI_ALLE1IS = 2,
  TLBI_ALLE1ISNXS = 3,
  TLBI_ALLE1NXS = 4,
  TLBI_ALLE1OS = 5,
  TLBI_ALLE1OSNXS = 6,
  TLBI_ALLE2 = 7,
  TLBI_ALLE2IS = 8,
  TLBI_ALLE2ISNXS = 9,
  TLBI_ALLE2NXS = 10,
  TLBI_ALLE2OS = 11,
  TLBI_ALLE2OSNXS = 12,
  TLBI_ALLE3 = 13,
  TLBI_ALLE3IS = 14,
  TLBI_ALLE3ISNXS = 15,
  TLBI_ALLE3NXS = 16,
  TLBI_ALLE3OS = 17,
  TLBI_ALLE3OSNXS = 18,
  TLBI_ASIDE1 = 19,
  TLBI_ASIDE1IS = 20,
  TLBI_ASIDE1ISNXS = 21,
  TLBI_ASIDE1NXS = 22,
  TLBI_ASIDE1OS = 23,
  TLBI_ASIDE1OSNXS = 24,
  TLBI_IPAS2E1 = 25,
  TLBI_IPAS2E1IS = 26,
  TLBI_IPAS2E1ISNXS = 27,
  TLBI_IPAS2E1NXS = 28,
  TLBI_IPAS2E1OS = 29,
  TLBI_IPAS2E1OSNXS = 30,
  TLBI_IPAS2LE1 = 31,
  TLBI_IPAS2LE1IS = 32,
  TLBI_IPAS2LE1ISNXS = 33,
  TLBI_IPAS2LE1NXS = 34,
  TLBI_IPAS2LE1OS = 35,
  TLBI_IPAS2LE1OSNXS = 36,
  TLBI_PAALL = 37,
  TLBI_PAALLNXS = 38,
  TLBI_PAALLOS = 39,
  TLBI_PAALLOSNXS = 40,
  TLBI_RIPAS2E1 = 41,
  TLBI_RIPAS2E1IS = 42,
  TLBI_RIPAS2E1ISNXS = 43,
  TLBI_RIPAS2E1NXS = 44,
  TLBI_RIPAS2E1OS = 45,
  TLBI_RIPAS2E1OSNXS = 46,
  TLBI_RIPAS2LE1 = 47,
  TLBI_RIPAS2LE1IS = 48,
  TLBI_RIPAS2LE1ISNXS = 49,
  TLBI_RIPAS2LE1NXS = 50,
  TLBI_RIPAS2LE1OS = 51,
  TLBI_RIPAS2LE1OSNXS = 52,
  TLBI_RPALOS = 53,
  TLBI_RPALOSNXS = 54,
  TLBI_RPAOS = 55,
  TLBI_RPAOSNXS = 56,
  TLBI_RVAAE1 = 57,
  TLBI_RVAAE1IS = 58,
  TLBI_RVAAE1ISNXS = 59,
  TLBI_RVAAE1NXS = 60,
  TLBI_RVAAE1OS = 61,
  TLBI_RVAAE1OSNXS = 62,
  TLBI_RVAALE1 = 63,
  TLBI_RVAALE1IS = 64,
  TLBI_RVAALE1ISNXS = 65,
  TLBI_RVAALE1NXS = 66,
  TLBI_RVAALE1OS = 67,
  TLBI_RVAALE1OSNXS = 68,
  TLBI_RVAE1 = 69,
  TLBI_RVAE1IS = 70,
  TLBI_RVAE1ISNXS = 71,
  TLBI_RVAE1NXS = 72,
  TLBI_RVAE1OS = 73,
  TLBI_RVAE1OSNXS = 74,
  TLBI_RVAE2 = 75,
  TLBI_RVAE2IS = 76,
  TLBI_RVAE2ISNXS = 77,
  TLBI_RVAE2NXS = 78,
  TLBI_RVAE2OS = 79,
  TLBI_RVAE2OSNXS = 80,
  TLBI_RVAE3 = 81,
  TLBI_RVAE3IS = 82,
  TLBI_RVAE3ISNXS = 83,
  TLBI_RVAE3NXS = 84,
  TLBI_RVAE3OS = 85,
  TLBI_RVAE3OSNXS = 86,
  TLBI_RVALE1 = 87,
  TLBI_RVALE1IS = 88,
  TLBI_RVALE1ISNXS = 89,
  TLBI_RVALE1NXS = 90,
  TLBI_RVALE1OS = 91,
  TLBI_RVALE1OSNXS = 92,
  TLBI_RVALE2 = 93,
  TLBI_RVALE2IS = 94,
  TLBI_RVALE2ISNXS = 95,
  TLBI_RVALE2NXS = 96,
  TLBI_RVALE2OS = 97,
  TLBI_RVALE2OSNXS = 98,
  TLBI_RVALE3 = 99,
  TLBI_RVALE3IS = 100,
  TLBI_RVALE3ISNXS = 101,
  TLBI_RVALE3NXS = 102,
  TLBI_RVALE3OS = 103,
  TLBI_RVALE3OSNXS = 104,
  TLBI_VAAE1 = 105,
  TLBI_VAAE1IS = 106,
  TLBI_VAAE1ISNXS = 107,
  TLBI_VAAE1NXS = 108,
  TLBI_VAAE1OS = 109,
  TLBI_VAAE1OSNXS = 110,
  TLBI_VAALE1 = 111,
  TLBI_VAALE1IS = 112,
  TLBI_VAALE1ISNXS = 113,
  TLBI_VAALE1NXS = 114,
  TLBI_VAALE1OS = 115,
  TLBI_VAALE1OSNXS = 116,
  TLBI_VAE1 = 117,
  TLBI_VAE1IS = 118,
  TLBI_VAE1ISNXS = 119,
  TLBI_VAE1NXS = 120,
  TLBI_VAE1OS = 121,
  TLBI_VAE1OSNXS = 122,
  TLBI_VAE2 = 123,
  TLBI_VAE2IS = 124,
  TLBI_VAE2ISNXS = 125,
  TLBI_VAE2NXS = 126,
  TLBI_VAE2OS = 127,
  TLBI_VAE2OSNXS = 128,
  TLBI_VAE3 = 129,
  TLBI_VAE3IS = 130,
  TLBI_VAE3ISNXS = 131,
  TLBI_VAE3NXS = 132,
  TLBI_VAE3OS = 133,
  TLBI_VAE3OSNXS = 134,
  TLBI_VALE1 = 135,
  TLBI_VALE1IS = 136,
  TLBI_VALE1ISNXS = 137,
  TLBI_VALE1NXS = 138,
  TLBI_VALE1OS = 139,
  TLBI_VALE1OSNXS = 140,
  TLBI_VALE2 = 141,
  TLBI_VALE2IS = 142,
  TLBI_VALE2ISNXS = 143,
  TLBI_VALE2NXS = 144,
  TLBI_VALE2OS = 145,
  TLBI_VALE2OSNXS = 146,
  TLBI_VALE3 = 147,
  TLBI_VALE3IS = 148,
  TLBI_VALE3ISNXS = 149,
  TLBI_VALE3NXS = 150,
  TLBI_VALE3OS = 151,
  TLBI_VALE3OSNXS = 152,
  TLBI_VMALLE1 = 153,
  TLBI_VMALLE1IS = 154,
  TLBI_VMALLE1ISNXS = 155,
  TLBI_VMALLE1NXS = 156,
  TLBI_VMALLE1OS = 157,
  TLBI_VMALLE1OSNXS = 158,
  TLBI_VMALLS12E1 = 159,
  TLBI_VMALLS12E1IS = 160,
  TLBI_VMALLS12E1ISNXS = 161,
  TLBI_VMALLS12E1NXS = 162,
  TLBI_VMALLS12E1OS = 163,
  TLBI_VMALLS12E1OSNXS = 164,

  // AT operations
  AT_S1E1R = 165,
  AT_S1E2R = 166,
  AT_S1E3R = 167,
  AT_S1E1W = 168,
  AT_S1E2W = 169,
  AT_S1E3W = 170,
  AT_S1E0R = 171,
  AT_S1E0W = 172,
  AT_S12E1R = 173,
  AT_S12E1W = 174,
  AT_S12E0R = 175,
  AT_S12E0W = 176,
  AT_S1E1RP = 177,
  AT_S1E1WP = 178,

  // DC operations
  DC_CGDSW = 179,
  DC_CGDVAC = 180,
  DC_CGDVADP = 181,
  DC_CGDVAP = 182,
  DC_CGSW = 183,
  DC_CGVAC = 184,
  DC_CGVADP = 185,
  DC_CGVAP = 186,
  DC_CIGDSW = 187,
  DC_CIGDVAC = 188,
  DC_CIGSW = 189,
  DC_CIGVAC = 190,
  DC_CISW = 191,
  DC_CIVAC = 192,
  DC_CSW = 193,
  DC_CVAC = 194,
  DC_CVADP = 195,
  DC_CVAP = 196,
  DC_CVAU = 197,
  DC_GVA = 198,
  DC_GZVA = 199,
  DC_IGDSW = 200,
  DC_IGDVAC = 201,
  DC_IGSW = 202,
  DC_IGVAC = 203,
  DC_ISW = 204,
  DC_IVAC = 205,
  DC_ZVA = 206,

  // IC operations
  IC_IALLUIS = 207,
  IC_IALLU = 208,
  IC_IVAU = 209,

  // SVCR operands
  SVCR_INVALID = 0,
  SVCR_SVCRSM = 0x1,
  SVCR_SVCRSMZA = 0x3,
  SVCR_SVCRZA = 0x2,

  // Prefetch operations (PRFM)
  PRFM_INVALID = 0,
  PRFM_PLDL1KEEP = 0x00 + 1,
  PRFM_PLDL1STRM = 0x01 + 1,
  PRFM_PLDL2KEEP = 0x02 + 1,
  PRFM_PLDL2STRM = 0x03 + 1,
  PRFM_PLDL3KEEP = 0x04 + 1,
  PRFM_PLDL3STRM = 0x05 + 1,
  PRFM_PLIL1KEEP = 0x08 + 1,
  PRFM_PLIL1STRM = 0x09 + 1,
  PRFM_PLIL2KEEP = 0x0a + 1,
  PRFM_PLIL2STRM = 0x0b + 1,
  PRFM_PLIL3KEEP = 0x0c + 1,
  PRFM_PLIL3STRM = 0x0d + 1,
  PRFM_PSTL1KEEP = 0x10 + 1,
  PRFM_PSTL1STRM = 0x11 + 1,
  PRFM_PSTL2KEEP = 0x12 + 1,
  PRFM_PSTL2STRM = 0x13 + 1,
  PRFM_PSTL3KEEP = 0x14 + 1,
  PRFM_PSTL3STRM = 0x15 + 1,

  // ARM64 registers
  REG_INVALID = 0,
  REG_FFR = 1,
  REG_FP = 2,
  REG_LR = 3,
  REG_NZCV = 4,
  REG_SP = 5,
  REG_VG = 6,
  REG_WSP = 7,
  REG_WZR = 8,
  REG_XZR = 9,
  REG_ZA = 10,
  REG_B0 = 11,
  REG_B1 = 12,
  REG_B2 = 13,
  REG_B3 = 14,
  REG_B4 = 15,
  REG_B5 = 16,
  REG_B6 = 17,
  REG_B7 = 18,
  REG_B8 = 19,
  REG_B9 = 20,
  REG_B10 = 21,
  REG_B11 = 22,
  REG_B12 = 23,
  REG_B13 = 24,
  REG_B14 = 25,
  REG_B15 = 26,
  REG_B16 = 27,
  REG_B17 = 28,
  REG_B18 = 29,
  REG_B19 = 30,
  REG_B20 = 31,
  REG_B21 = 32,
  REG_B22 = 33,
  REG_B23 = 34,
  REG_B24 = 35,
  REG_B25 = 36,
  REG_B26 = 37,
  REG_B27 = 38,
  REG_B28 = 39,
  REG_B29 = 40,
  REG_B30 = 41,
  REG_B31 = 42,
  REG_D0 = 43,
  REG_D1 = 44,
  REG_D2 = 45,
  REG_D3 = 46,
  REG_D4 = 47,
  REG_D5 = 48,
  REG_D6 = 49,
  REG_D7 = 50,
  REG_D8 = 51,
  REG_D9 = 52,
  REG_D10 = 53,
  REG_D11 = 54,
  REG_D12 = 55,
  REG_D13 = 56,
  REG_D14 = 57,
  REG_D15 = 58,
  REG_D16 = 59,
  REG_D17 = 60,
  REG_D18 = 61,
  REG_D19 = 62,
  REG_D20 = 63,
  REG_D21 = 64,
  REG_D22 = 65,
  REG_D23 = 66,
  REG_D24 = 67,
  REG_D25 = 68,
  REG_D26 = 69,
  REG_D27 = 70,
  REG_D28 = 71,
  REG_D29 = 72,
  REG_D30 = 73,
  REG_D31 = 74,
  REG_H0 = 75,
  REG_H1 = 76,
  REG_H2 = 77,
  REG_H3 = 78,
  REG_H4 = 79,
  REG_H5 = 80,
  REG_H6 = 81,
  REG_H7 = 82,
  REG_H8 = 83,
  REG_H9 = 84,
  REG_H10 = 85,
  REG_H11 = 86,
  REG_H12 = 87,
  REG_H13 = 88,
  REG_H14 = 89,
  REG_H15 = 90,
  REG_H16 = 91,
  REG_H17 = 92,
  REG_H18 = 93,
  REG_H19 = 94,
  REG_H20 = 95,
  REG_H21 = 96,
  REG_H22 = 97,
  REG_H23 = 98,
  REG_H24 = 99,
  REG_H25 = 100,
  REG_H26 = 101,
  REG_H27 = 102,
  REG_H28 = 103,
  REG_H29 = 104,
  REG_H30 = 105,
  REG_H31 = 106,
  REG_P0 = 107,
  REG_P1 = 108,
  REG_P2 = 109,
  REG_P3 = 110,
  REG_P4 = 111,
  REG_P5 = 112,
  REG_P6 = 113,
  REG_P7 = 114,
  REG_P8 = 115,
  REG_P9 = 116,
  REG_P10 = 117,
  REG_P11 = 118,
  REG_P12 = 119,
  REG_P13 = 120,
  REG_P14 = 121,
  REG_P15 = 122,
  REG_Q0 = 123,
  REG_Q1 = 124,
  REG_Q2 = 125,
  REG_Q3 = 126,
  REG_Q4 = 127,
  REG_Q5 = 128,
  REG_Q6 = 129,
  REG_Q7 = 130,
  REG_Q8 = 131,
  REG_Q9 = 132,
  REG_Q10 = 133,
  REG_Q11 = 134,
  REG_Q12 = 135,
  REG_Q13 = 136,
  REG_Q14 = 137,
  REG_Q15 = 138,
  REG_Q16 = 139,
  REG_Q17 = 140,
  REG_Q18 = 141,
  REG_Q19 = 142,
  REG_Q20 = 143,
  REG_Q21 = 144,
  REG_Q22 = 145,
  REG_Q23 = 146,
  REG_Q24 = 147,
  REG_Q25 = 148,
  REG_Q26 = 149,
  REG_Q27 = 150,
  REG_Q28 = 151,
  REG_Q29 = 152,
  REG_Q30 = 153,
  REG_Q31 = 154,
  REG_S0 = 155,
  REG_S1 = 156,
  REG_S2 = 157,
  REG_S3 = 158,
  REG_S4 = 159,
  REG_S5 = 160,
  REG_S6 = 161,
  REG_S7 = 162,
  REG_S8 = 163,
  REG_S9 = 164,
  REG_S10 = 165,
  REG_S11 = 166,
  REG_S12 = 167,
  REG_S13 = 168,
  REG_S14 = 169,
  REG_S15 = 170,
  REG_S16 = 171,
  REG_S17 = 172,
  REG_S18 = 173,
  REG_S19 = 174,
  REG_S20 = 175,
  REG_S21 = 176,
  REG_S22 = 177,
  REG_S23 = 178,
  REG_S24 = 179,
  REG_S25 = 180,
  REG_S26 = 181,
  REG_S27 = 182,
  REG_S28 = 183,
  REG_S29 = 184,
  REG_S30 = 185,
  REG_S31 = 186,
  REG_W0 = 187,
  REG_W1 = 188,
  REG_W2 = 189,
  REG_W3 = 190,
  REG_W4 = 191,
  REG_W5 = 192,
  REG_W6 = 193,
  REG_W7 = 194,
  REG_W8 = 195,
  REG_W9 = 196,
  REG_W10 = 197,
  REG_W11 = 198,
  REG_W12 = 199,
  REG_W13 = 200,
  REG_W14 = 201,
  REG_W15 = 202,
  REG_W16 = 203,
  REG_W17 = 204,
  REG_W18 = 205,
  REG_W19 = 206,
  REG_W20 = 207,
  REG_W21 = 208,
  REG_W22 = 209,
  REG_W23 = 210,
  REG_W24 = 211,
  REG_W25 = 212,
  REG_W26 = 213,
  REG_W27 = 214,
  REG_W28 = 215,
  REG_W29 = 216,
  REG_W30 = 217,
  REG_X0 = 218,
  REG_X1 = 219,
  REG_X2 = 220,
  REG_X3 = 221,
  REG_X4 = 222,
  REG_X5 = 223,
  REG_X6 = 224,
  REG_X7 = 225,
  REG_X8 = 226,
  REG_X9 = 227,
  REG_X10 = 228,
  REG_X11 = 229,
  REG_X12 = 230,
  REG_X13 = 231,
  REG_X14 = 232,
  REG_X15 = 233,
  REG_X16 = 234,
  REG_X17 = 235,
  REG_X18 = 236,
  REG_X19 = 237,
  REG_X20 = 238,
  REG_X21 = 239,
  REG_X22 = 240,
  REG_X23 = 241,
  REG_X24 = 242,
  REG_X25 = 243,
  REG_X26 = 244,
  REG_X27 = 245,
  REG_X28 = 246,
  REG_Z0 = 247,
  REG_Z1 = 248,
  REG_Z2 = 249,
  REG_Z3 = 250,
  REG_Z4 = 251,
  REG_Z5 = 252,
  REG_Z6 = 253,
  REG_Z7 = 254,
  REG_Z8 = 255,
  REG_Z9 = 256,
  REG_Z10 = 257,
  REG_Z11 = 258,
  REG_Z12 = 259,
  REG_Z13 = 260,
  REG_Z14 = 261,
  REG_Z15 = 262,
  REG_Z16 = 263,
  REG_Z17 = 264,
  REG_Z18 = 265,
  REG_Z19 = 266,
  REG_Z20 = 267,
  REG_Z21 = 268,
  REG_Z22 = 269,
  REG_Z23 = 270,
  REG_Z24 = 271,
  REG_Z25 = 272,
  REG_Z26 = 273,
  REG_Z27 = 274,
  REG_Z28 = 275,
  REG_Z29 = 276,
  REG_Z30 = 277,
  REG_Z31 = 278,
  REG_ZAB0 = 279,
  REG_ZAD0 = 280,
  REG_ZAD1 = 281,
  REG_ZAD2 = 282,
  REG_ZAD3 = 283,
  REG_ZAD4 = 284,
  REG_ZAD5 = 285,
  REG_ZAD6 = 286,
  REG_ZAD7 = 287,
  REG_ZAH0 = 288,
  REG_ZAH1 = 289,
  REG_ZAQ0 = 290,
  REG_ZAQ1 = 291,
  REG_ZAQ2 = 292,
  REG_ZAQ3 = 293,
  REG_ZAQ4 = 294,
  REG_ZAQ5 = 295,
  REG_ZAQ6 = 296,
  REG_ZAQ7 = 297,
  REG_ZAQ8 = 298,
  REG_ZAQ9 = 299,
  REG_ZAQ10 = 300,
  REG_ZAQ11 = 301,
  REG_ZAQ12 = 302,
  REG_ZAQ13 = 303,
  REG_ZAQ14 = 304,
  REG_ZAQ15 = 305,
  REG_ZAS0 = 306,
  REG_ZAS1 = 307,
  REG_ZAS2 = 308,
  REG_ZAS3 = 309,
  REG_V0 = 310,
  REG_V1 = 311,
  REG_V2 = 312,
  REG_V3 = 313,
  REG_V4 = 314,
  REG_V5 = 315,
  REG_V6 = 316,
  REG_V7 = 317,
  REG_V8 = 318,
  REG_V9 = 319,
  REG_V10 = 320,
  REG_V11 = 321,
  REG_V12 = 322,
  REG_V13 = 323,
  REG_V14 = 324,
  REG_V15 = 325,
  REG_V16 = 326,
  REG_V17 = 327,
  REG_V18 = 328,
  REG_V19 = 329,
  REG_V20 = 330,
  REG_V21 = 331,
  REG_V22 = 332,
  REG_V23 = 333,
  REG_V24 = 334,
  REG_V25 = 335,
  REG_V26 = 336,
  REG_V27 = 337,
  REG_V28 = 338,
  REG_V29 = 339,
  REG_V30 = 340,
  REG_V31 = 341,
  REG_ENDING = 342, // mark the end of the list of registers

  // alias registers
  REG_IP0 = REG_X16,
  REG_IP1 = REG_X17,
  REG_X29 = REG_FP,
  REG_X30 = REG_LR,

  // ARM64 instruction
  INS_INVALID = 0,
  INS_ABS = 1,
  INS_ADC = 2,
  INS_ADCLB = 3,
  INS_ADCLT = 4,
  INS_ADCS = 5,
  INS_ADD = 6,
  INS_ADDG = 7,
  INS_ADDHA = 8,
  INS_ADDHN = 9,
  INS_ADDHN2 = 10,
  INS_ADDHNB = 11,
  INS_ADDHNT = 12,
  INS_ADDP = 13,
  INS_ADDPL = 14,
  INS_ADDS = 15,
  INS_ADDV = 16,
  INS_ADDVA = 17,
  INS_ADDVL = 18,
  INS_ADR = 19,
  INS_ADRP = 20,
  INS_AESD = 21,
  INS_AESE = 22,
  INS_AESIMC = 23,
  INS_AESMC = 24,
  INS_AND = 25,
  INS_ANDS = 26,
  INS_ANDV = 27,
  INS_ASR = 28,
  INS_ASRD = 29,
  INS_ASRR = 30,
  INS_ASRV = 31,
  INS_AUTDA = 32,
  INS_AUTDB = 33,
  INS_AUTDZA = 34,
  INS_AUTDZB = 35,
  INS_AUTIA = 36,
  INS_AUTIA1716 = 37,
  INS_AUTIASP = 38,
  INS_AUTIAZ = 39,
  INS_AUTIB = 40,
  INS_AUTIB1716 = 41,
  INS_AUTIBSP = 42,
  INS_AUTIBZ = 43,
  INS_AUTIZA = 44,
  INS_AUTIZB = 45,
  INS_AXFLAG = 46,
  INS_B = 47,
  INS_BC = 48,
  INS_BCAX = 49,
  INS_BDEP = 50,
  INS_BEXT = 51,
  INS_BFCVT = 52,
  INS_BFCVTN = 53,
  INS_BFCVTN2 = 54,
  INS_BFCVTNT = 55,
  INS_BFDOT = 56,
  INS_BFM = 57,
  INS_BFMLALB = 58,
  INS_BFMLALT = 59,
  INS_BFMMLA = 60,
  INS_BFMOPA = 61,
  INS_BFMOPS = 62,
  INS_BGRP = 63,
  INS_BIC = 64,
  INS_BICS = 65,
  INS_BIF = 66,
  INS_BIT = 67,
  INS_BL = 68,
  INS_BLR = 69,
  INS_BLRAA = 70,
  INS_BLRAAZ = 71,
  INS_BLRAB = 72,
  INS_BLRABZ = 73,
  INS_BR = 74,
  INS_BRAA = 75,
  INS_BRAAZ = 76,
  INS_BRAB = 77,
  INS_BRABZ = 78,
  INS_BRB = 79,
  INS_BRK = 80,
  INS_BRKA = 81,
  INS_BRKAS = 82,
  INS_BRKB = 83,
  INS_BRKBS = 84,
  INS_BRKN = 85,
  INS_BRKNS = 86,
  INS_BRKPA = 87,
  INS_BRKPAS = 88,
  INS_BRKPB = 89,
  INS_BRKPBS = 90,
  INS_BSL = 91,
  INS_BSL1N = 92,
  INS_BSL2N = 93,
  INS_BTI = 94,
  INS_CADD = 95,
  INS_CAS = 96,
  INS_CASA = 97,
  INS_CASAB = 98,
  INS_CASAH = 99,
  INS_CASAL = 100,
  INS_CASALB = 101,
  INS_CASALH = 102,
  INS_CASB = 103,
  INS_CASH = 104,
  INS_CASL = 105,
  INS_CASLB = 106,
  INS_CASLH = 107,
  INS_CASP = 108,
  INS_CASPA = 109,
  INS_CASPAL = 110,
  INS_CASPL = 111,
  INS_CBNZ = 112,
  INS_CBZ = 113,
  INS_CCMN = 114,
  INS_CCMP = 115,
  INS_CDOT = 116,
  INS_CFINV = 117,
  INS_CINC = 118,
  INS_CINV = 119,
  INS_CLASTA = 120,
  INS_CLASTB = 121,
  INS_CLREX = 122,
  INS_CLS = 123,
  INS_CLZ = 124,
  INS_CMEQ = 125,
  INS_CMGE = 126,
  INS_CMGT = 127,
  INS_CMHI = 128,
  INS_CMHS = 129,
  INS_CMLA = 130,
  INS_CMLE = 131,
  INS_CMLO = 132,
  INS_CMLS = 133,
  INS_CMLT = 134,
  INS_CMN = 135,
  INS_CMP = 136,
  INS_CMPEQ = 137,
  INS_CMPGE = 138,
  INS_CMPGT = 139,
  INS_CMPHI = 140,
  INS_CMPHS = 141,
  INS_CMPLE = 142,
  INS_CMPLO = 143,
  INS_CMPLS = 144,
  INS_CMPLT = 145,
  INS_CMPNE = 146,
  INS_CMPP = 147,
  INS_CMTST = 148,
  INS_CNEG = 149,
  INS_CNOT = 150,
  INS_CNT = 151,
  INS_CNTB = 152,
  INS_CNTD = 153,
  INS_CNTH = 154,
  INS_CNTP = 155,
  INS_CNTW = 156,
  INS_COMPACT = 157,
  INS_CPY = 158,
  INS_CPYE = 159,
  INS_CPYEN = 160,
  INS_CPYERN = 161,
  INS_CPYERT = 162,
  INS_CPYERTN = 163,
  INS_CPYERTRN = 164,
  INS_CPYERTWN = 165,
  INS_CPYET = 166,
  INS_CPYETN = 167,
  INS_CPYETRN = 168,
  INS_CPYETWN = 169,
  INS_CPYEWN = 170,
  INS_CPYEWT = 171,
  INS_CPYEWTN = 172,
  INS_CPYEWTRN = 173,
  INS_CPYEWTWN = 174,
  INS_CPYFE = 175,
  INS_CPYFEN = 176,
  INS_CPYFERN = 177,
  INS_CPYFERT = 178,
  INS_CPYFERTN = 179,
  INS_CPYFERTRN = 180,
  INS_CPYFERTWN = 181,
  INS_CPYFET = 182,
  INS_CPYFETN = 183,
  INS_CPYFETRN = 184,
  INS_CPYFETWN = 185,
  INS_CPYFEWN = 186,
  INS_CPYFEWT = 187,
  INS_CPYFEWTN = 188,
  INS_CPYFEWTRN = 189,
  INS_CPYFEWTWN = 190,
  INS_CPYFM = 191,
  INS_CPYFMN = 192,
  INS_CPYFMRN = 193,
  INS_CPYFMRT = 194,
  INS_CPYFMRTN = 195,
  INS_CPYFMRTRN = 196,
  INS_CPYFMRTWN = 197,
  INS_CPYFMT = 198,
  INS_CPYFMTN = 199,
  INS_CPYFMTRN = 200,
  INS_CPYFMTWN = 201,
  INS_CPYFMWN = 202,
  INS_CPYFMWT = 203,
  INS_CPYFMWTN = 204,
  INS_CPYFMWTRN = 205,
  INS_CPYFMWTWN = 206,
  INS_CPYFP = 207,
  INS_CPYFPN = 208,
  INS_CPYFPRN = 209,
  INS_CPYFPRT = 210,
  INS_CPYFPRTN = 211,
  INS_CPYFPRTRN = 212,
  INS_CPYFPRTWN = 213,
  INS_CPYFPT = 214,
  INS_CPYFPTN = 215,
  INS_CPYFPTRN = 216,
  INS_CPYFPTWN = 217,
  INS_CPYFPWN = 218,
  INS_CPYFPWT = 219,
  INS_CPYFPWTN = 220,
  INS_CPYFPWTRN = 221,
  INS_CPYFPWTWN = 222,
  INS_CPYM = 223,
  INS_CPYMN = 224,
  INS_CPYMRN = 225,
  INS_CPYMRT = 226,
  INS_CPYMRTN = 227,
  INS_CPYMRTRN = 228,
  INS_CPYMRTWN = 229,
  INS_CPYMT = 230,
  INS_CPYMTN = 231,
  INS_CPYMTRN = 232,
  INS_CPYMTWN = 233,
  INS_CPYMWN = 234,
  INS_CPYMWT = 235,
  INS_CPYMWTN = 236,
  INS_CPYMWTRN = 237,
  INS_CPYMWTWN = 238,
  INS_CPYP = 239,
  INS_CPYPN = 240,
  INS_CPYPRN = 241,
  INS_CPYPRT = 242,
  INS_CPYPRTN = 243,
  INS_CPYPRTRN = 244,
  INS_CPYPRTWN = 245,
  INS_CPYPT = 246,
  INS_CPYPTN = 247,
  INS_CPYPTRN = 248,
  INS_CPYPTWN = 249,
  INS_CPYPWN = 250,
  INS_CPYPWT = 251,
  INS_CPYPWTN = 252,
  INS_CPYPWTRN = 253,
  INS_CPYPWTWN = 254,
  INS_CRC32B = 255,
  INS_CRC32CB = 256,
  INS_CRC32CH = 257,
  INS_CRC32CW = 258,
  INS_CRC32CX = 259,
  INS_CRC32H = 260,
  INS_CRC32W = 261,
  INS_CRC32X = 262,
  INS_CSDB = 263,
  INS_CSEL = 264,
  INS_CSET = 265,
  INS_CSETM = 266,
  INS_CSINC = 267,
  INS_CSINV = 268,
  INS_CSNEG = 269,
  INS_CTERMEQ = 270,
  INS_CTERMNE = 271,
  INS_DCPS1 = 272,
  INS_DCPS2 = 273,
  INS_DCPS3 = 274,
  INS_DECB = 275,
  INS_DECD = 276,
  INS_DECH = 277,
  INS_DECP = 278,
  INS_DECW = 279,
  INS_DFB = 280,
  INS_DGH = 281,
  INS_DMB = 282,
  INS_DRPS = 283,
  INS_DSB = 284,
  INS_DUP = 285,
  INS_DUPM = 286,
  INS_EON = 287,
  INS_EOR = 288,
  INS_EOR3 = 289,
  INS_EORBT = 290,
  INS_EORS = 291,
  INS_EORTB = 292,
  INS_EORV = 293,
  INS_ERET = 294,
  INS_ERETAA = 295,
  INS_ERETAB = 296,
  INS_ESB = 297,
  INS_EXT = 298,
  INS_EXTR = 299,
  INS_FABD = 300,
  INS_FABS = 301,
  INS_FACGE = 302,
  INS_FACGT = 303,
  INS_FACLE = 304,
  INS_FACLT = 305,
  INS_FADD = 306,
  INS_FADDA = 307,
  INS_FADDP = 308,
  INS_FADDV = 309,
  INS_FCADD = 310,
  INS_FCCMP = 311,
  INS_FCCMPE = 312,
  INS_FCMEQ = 313,
  INS_FCMGE = 314,
  INS_FCMGT = 315,
  INS_FCMLA = 316,
  INS_FCMLE = 317,
  INS_FCMLT = 318,
  INS_FCMNE = 319,
  INS_FCMP = 320,
  INS_FCMPE = 321,
  INS_FCMUO = 322,
  INS_FCPY = 323,
  INS_FCSEL = 324,
  INS_FCVT = 325,
  INS_FCVTAS = 326,
  INS_FCVTAU = 327,
  INS_FCVTL = 328,
  INS_FCVTL2 = 329,
  INS_FCVTLT = 330,
  INS_FCVTMS = 331,
  INS_FCVTMU = 332,
  INS_FCVTN = 333,
  INS_FCVTN2 = 334,
  INS_FCVTNS = 335,
  INS_FCVTNT = 336,
  INS_FCVTNU = 337,
  INS_FCVTPS = 338,
  INS_FCVTPU = 339,
  INS_FCVTX = 340,
  INS_FCVTXN = 341,
  INS_FCVTXN2 = 342,
  INS_FCVTXNT = 343,
  INS_FCVTZS = 344,
  INS_FCVTZU = 345,
  INS_FDIV = 346,
  INS_FDIVR = 347,
  INS_FDUP = 348,
  INS_FEXPA = 349,
  INS_FJCVTZS = 350,
  INS_FLOGB = 351,
  INS_FMAD = 352,
  INS_FMADD = 353,
  INS_FMAX = 354,
  INS_FMAXNM = 355,
  INS_FMAXNMP = 356,
  INS_FMAXNMV = 357,
  INS_FMAXP = 358,
  INS_FMAXV = 359,
  INS_FMIN = 360,
  INS_FMINNM = 361,
  INS_FMINNMP = 362,
  INS_FMINNMV = 363,
  INS_FMINP = 364,
  INS_FMINV = 365,
  INS_FMLA = 366,
  INS_FMLAL = 367,
  INS_FMLAL2 = 368,
  INS_FMLALB = 369,
  INS_FMLALT = 370,
  INS_FMLS = 371,
  INS_FMLSL = 372,
  INS_FMLSL2 = 373,
  INS_FMLSLB = 374,
  INS_FMLSLT = 375,
  INS_FMMLA = 376,
  INS_FMOPA = 377,
  INS_FMOPS = 378,
  INS_FMOV = 379,
  INS_FMSB = 380,
  INS_FMSUB = 381,
  INS_FMUL = 382,
  INS_FMULX = 383,
  INS_FNEG = 384,
  INS_FNMAD = 385,
  INS_FNMADD = 386,
  INS_FNMLA = 387,
  INS_FNMLS = 388,
  INS_FNMSB = 389,
  INS_FNMSUB = 390,
  INS_FNMUL = 391,
  INS_FRECPE = 392,
  INS_FRECPS = 393,
  INS_FRECPX = 394,
  INS_FRINT32X = 395,
  INS_FRINT32Z = 396,
  INS_FRINT64X = 397,
  INS_FRINT64Z = 398,
  INS_FRINTA = 399,
  INS_FRINTI = 400,
  INS_FRINTM = 401,
  INS_FRINTN = 402,
  INS_FRINTP = 403,
  INS_FRINTX = 404,
  INS_FRINTZ = 405,
  INS_FRSQRTE = 406,
  INS_FRSQRTS = 407,
  INS_FSCALE = 408,
  INS_FSQRT = 409,
  INS_FSUB = 410,
  INS_FSUBR = 411,
  INS_FTMAD = 412,
  INS_FTSMUL = 413,
  INS_FTSSEL = 414,
  INS_GMI = 415,
  INS_HINT = 416,
  INS_HISTCNT = 417,
  INS_HISTSEG = 418,
  INS_HLT = 419,
  INS_HVC = 420,
  INS_INCB = 421,
  INS_INCD = 422,
  INS_INCH = 423,
  INS_INCP = 424,
  INS_INCW = 425,
  INS_INDEX = 426,
  INS_INS = 427,
  INS_INSR = 428,
  INS_IRG = 429,
  INS_ISB = 430,
  INS_LASTA = 431,
  INS_LASTB = 432,
  INS_LD1 = 433,
  INS_LD1B = 434,
  INS_LD1D = 435,
  INS_LD1H = 436,
  INS_LD1Q = 437,
  INS_LD1R = 438,
  INS_LD1RB = 439,
  INS_LD1RD = 440,
  INS_LD1RH = 441,
  INS_LD1ROB = 442,
  INS_LD1ROD = 443,
  INS_LD1ROH = 444,
  INS_LD1ROW = 445,
  INS_LD1RQB = 446,
  INS_LD1RQD = 447,
  INS_LD1RQH = 448,
  INS_LD1RQW = 449,
  INS_LD1RSB = 450,
  INS_LD1RSH = 451,
  INS_LD1RSW = 452,
  INS_LD1RW = 453,
  INS_LD1SB = 454,
  INS_LD1SH = 455,
  INS_LD1SW = 456,
  INS_LD1W = 457,
  INS_LD2 = 458,
  INS_LD2B = 459,
  INS_LD2D = 460,
  INS_LD2H = 461,
  INS_LD2R = 462,
  INS_LD2W = 463,
  INS_LD3 = 464,
  INS_LD3B = 465,
  INS_LD3D = 466,
  INS_LD3H = 467,
  INS_LD3R = 468,
  INS_LD3W = 469,
  INS_LD4 = 470,
  INS_LD4B = 471,
  INS_LD4D = 472,
  INS_LD4H = 473,
  INS_LD4R = 474,
  INS_LD4W = 475,
  INS_LD64B = 476,
  INS_LDADD = 477,
  INS_LDADDA = 478,
  INS_LDADDAB = 479,
  INS_LDADDAH = 480,
  INS_LDADDAL = 481,
  INS_LDADDALB = 482,
  INS_LDADDALH = 483,
  INS_LDADDB = 484,
  INS_LDADDH = 485,
  INS_LDADDL = 486,
  INS_LDADDLB = 487,
  INS_LDADDLH = 488,
  INS_LDAPR = 489,
  INS_LDAPRB = 490,
  INS_LDAPRH = 491,
  INS_LDAPUR = 492,
  INS_LDAPURB = 493,
  INS_LDAPURH = 494,
  INS_LDAPURSB = 495,
  INS_LDAPURSH = 496,
  INS_LDAPURSW = 497,
  INS_LDAR = 498,
  INS_LDARB = 499,
  INS_LDARH = 500,
  INS_LDAXP = 501,
  INS_LDAXR = 502,
  INS_LDAXRB = 503,
  INS_LDAXRH = 504,
  INS_LDCLR = 505,
  INS_LDCLRA = 506,
  INS_LDCLRAB = 507,
  INS_LDCLRAH = 508,
  INS_LDCLRAL = 509,
  INS_LDCLRALB = 510,
  INS_LDCLRALH = 511,
  INS_LDCLRB = 512,
  INS_LDCLRH = 513,
  INS_LDCLRL = 514,
  INS_LDCLRLB = 515,
  INS_LDCLRLH = 516,
  INS_LDEOR = 517,
  INS_LDEORA = 518,
  INS_LDEORAB = 519,
  INS_LDEORAH = 520,
  INS_LDEORAL = 521,
  INS_LDEORALB = 522,
  INS_LDEORALH = 523,
  INS_LDEORB = 524,
  INS_LDEORH = 525,
  INS_LDEORL = 526,
  INS_LDEORLB = 527,
  INS_LDEORLH = 528,
  INS_LDFF1B = 529,
  INS_LDFF1D = 530,
  INS_LDFF1H = 531,
  INS_LDFF1SB = 532,
  INS_LDFF1SH = 533,
  INS_LDFF1SW = 534,
  INS_LDFF1W = 535,
  INS_LDG = 536,
  INS_LDGM = 537,
  INS_LDLAR = 538,
  INS_LDLARB = 539,
  INS_LDLARH = 540,
  INS_LDNF1B = 541,
  INS_LDNF1D = 542,
  INS_LDNF1H = 543,
  INS_LDNF1SB = 544,
  INS_LDNF1SH = 545,
  INS_LDNF1SW = 546,
  INS_LDNF1W = 547,
  INS_LDNP = 548,
  INS_LDNT1B = 549,
  INS_LDNT1D = 550,
  INS_LDNT1H = 551,
  INS_LDNT1SB = 552,
  INS_LDNT1SH = 553,
  INS_LDNT1SW = 554,
  INS_LDNT1W = 555,
  INS_LDP = 556,
  INS_LDPSW = 557,
  INS_LDR = 558,
  INS_LDRAA = 559,
  INS_LDRAB = 560,
  INS_LDRB = 561,
  INS_LDRH = 562,
  INS_LDRSB = 563,
  INS_LDRSH = 564,
  INS_LDRSW = 565,
  INS_LDSET = 566,
  INS_LDSETA = 567,
  INS_LDSETAB = 568,
  INS_LDSETAH = 569,
  INS_LDSETAL = 570,
  INS_LDSETALB = 571,
  INS_LDSETALH = 572,
  INS_LDSETB = 573,
  INS_LDSETH = 574,
  INS_LDSETL = 575,
  INS_LDSETLB = 576,
  INS_LDSETLH = 577,
  INS_LDSMAX = 578,
  INS_LDSMAXA = 579,
  INS_LDSMAXAB = 580,
  INS_LDSMAXAH = 581,
  INS_LDSMAXAL = 582,
  INS_LDSMAXALB = 583,
  INS_LDSMAXALH = 584,
  INS_LDSMAXB = 585,
  INS_LDSMAXH = 586,
  INS_LDSMAXL = 587,
  INS_LDSMAXLB = 588,
  INS_LDSMAXLH = 589,
  INS_LDSMIN = 590,
  INS_LDSMINA = 591,
  INS_LDSMINAB = 592,
  INS_LDSMINAH = 593,
  INS_LDSMINAL = 594,
  INS_LDSMINALB = 595,
  INS_LDSMINALH = 596,
  INS_LDSMINB = 597,
  INS_LDSMINH = 598,
  INS_LDSMINL = 599,
  INS_LDSMINLB = 600,
  INS_LDSMINLH = 601,
  INS_LDTR = 602,
  INS_LDTRB = 603,
  INS_LDTRH = 604,
  INS_LDTRSB = 605,
  INS_LDTRSH = 606,
  INS_LDTRSW = 607,
  INS_LDUMAX = 608,
  INS_LDUMAXA = 609,
  INS_LDUMAXAB = 610,
  INS_LDUMAXAH = 611,
  INS_LDUMAXAL = 612,
  INS_LDUMAXALB = 613,
  INS_LDUMAXALH = 614,
  INS_LDUMAXB = 615,
  INS_LDUMAXH = 616,
  INS_LDUMAXL = 617,
  INS_LDUMAXLB = 618,
  INS_LDUMAXLH = 619,
  INS_LDUMIN = 620,
  INS_LDUMINA = 621,
  INS_LDUMINAB = 622,
  INS_LDUMINAH = 623,
  INS_LDUMINAL = 624,
  INS_LDUMINALB = 625,
  INS_LDUMINALH = 626,
  INS_LDUMINB = 627,
  INS_LDUMINH = 628,
  INS_LDUMINL = 629,
  INS_LDUMINLB = 630,
  INS_LDUMINLH = 631,
  INS_LDUR = 632,
  INS_LDURB = 633,
  INS_LDURH = 634,
  INS_LDURSB = 635,
  INS_LDURSH = 636,
  INS_LDURSW = 637,
  INS_LDXP = 638,
  INS_LDXR = 639,
  INS_LDXRB = 640,
  INS_LDXRH = 641,
  INS_LSL = 642,
  INS_LSLR = 643,
  INS_LSLV = 644,
  INS_LSR = 645,
  INS_LSRR = 646,
  INS_LSRV = 647,
  INS_MAD = 648,
  INS_MADD = 649,
  INS_MATCH = 650,
  INS_MLA = 651,
  INS_MLS = 652,
  INS_MNEG = 653,
  INS_MOV = 654,
  INS_MOVA = 655,
  INS_MOVI = 656,
  INS_MOVK = 657,
  INS_MOVN = 658,
  INS_MOVPRFX = 659,
  INS_MOVS = 660,
  INS_MOVZ = 661,
  INS_MRS = 662,
  INS_MSB = 663,
  INS_MSR = 664,
  INS_MSUB = 665,
  INS_MUL = 666,
  INS_MVN = 667,
  INS_MVNI = 668,
  INS_NAND = 669,
  INS_NANDS = 670,
  INS_NBSL = 671,
  INS_NEG = 672,
  INS_NEGS = 673,
  INS_NGC = 674,
  INS_NGCS = 675,
  INS_NMATCH = 676,
  INS_NOP = 677,
  INS_NOR = 678,
  INS_NORS = 679,
  INS_NOT = 680,
  INS_NOTS = 681,
  INS_ORN = 682,
  INS_ORNS = 683,
  INS_ORR = 684,
  INS_ORRS = 685,
  INS_ORV = 686,
  INS_PACDA = 687,
  INS_PACDB = 688,
  INS_PACDZA = 689,
  INS_PACDZB = 690,
  INS_PACGA = 691,
  INS_PACIA = 692,
  INS_PACIA1716 = 693,
  INS_PACIASP = 694,
  INS_PACIAZ = 695,
  INS_PACIB = 696,
  INS_PACIB1716 = 697,
  INS_PACIBSP = 698,
  INS_PACIBZ = 699,
  INS_PACIZA = 700,
  INS_PACIZB = 701,
  INS_PFALSE = 702,
  INS_PFIRST = 703,
  INS_PMUL = 704,
  INS_PMULL = 705,
  INS_PMULL2 = 706,
  INS_PMULLB = 707,
  INS_PMULLT = 708,
  INS_PNEXT = 709,
  INS_PRFB = 710,
  INS_PRFD = 711,
  INS_PRFH = 712,
  INS_PRFM = 713,
  INS_PRFUM = 714,
  INS_PRFW = 715,
  INS_PSB = 716,
  INS_PSEL = 717,
  INS_PSSBB = 718,
  INS_PTEST = 719,
  INS_PTRUE = 720,
  INS_PTRUES = 721,
  INS_PUNPKHI = 722,
  INS_PUNPKLO = 723,
  INS_RADDHN = 724,
  INS_RADDHN2 = 725,
  INS_RADDHNB = 726,
  INS_RADDHNT = 727,
  INS_RAX1 = 728,
  INS_RBIT = 729,
  INS_RDFFR = 730,
  INS_RDFFRS = 731,
  INS_RDVL = 732,
  INS_RET = 733,
  INS_RETAA = 734,
  INS_RETAB = 735,
  INS_REV = 736,
  INS_REV16 = 737,
  INS_REV32 = 738,
  INS_REV64 = 739,
  INS_REVB = 740,
  INS_REVD = 741,
  INS_REVH = 742,
  INS_REVW = 743,
  INS_RMIF = 744,
  INS_ROR = 745,
  INS_RORV = 746,
  INS_RSHRN = 747,
  INS_RSHRN2 = 748,
  INS_RSHRNB = 749,
  INS_RSHRNT = 750,
  INS_RSUBHN = 751,
  INS_RSUBHN2 = 752,
  INS_RSUBHNB = 753,
  INS_RSUBHNT = 754,
  INS_SABA = 755,
  INS_SABAL = 756,
  INS_SABAL2 = 757,
  INS_SABALB = 758,
  INS_SABALT = 759,
  INS_SABD = 760,
  INS_SABDL = 761,
  INS_SABDL2 = 762,
  INS_SABDLB = 763,
  INS_SABDLT = 764,
  INS_SADALP = 765,
  INS_SADDL = 766,
  INS_SADDL2 = 767,
  INS_SADDLB = 768,
  INS_SADDLBT = 769,
  INS_SADDLP = 770,
  INS_SADDLT = 771,
  INS_SADDLV = 772,
  INS_SADDV = 773,
  INS_SADDW = 774,
  INS_SADDW2 = 775,
  INS_SADDWB = 776,
  INS_SADDWT = 777,
  INS_SB = 778,
  INS_SBC = 779,
  INS_SBCLB = 780,
  INS_SBCLT = 781,
  INS_SBCS = 782,
  INS_SBFM = 783,
  INS_SCLAMP = 784,
  INS_SCVTF = 785,
  INS_SDIV = 786,
  INS_SDIVR = 787,
  INS_SDOT = 788,
  INS_SEL = 789,
  INS_SETE = 790,
  INS_SETEN = 791,
  INS_SETET = 792,
  INS_SETETN = 793,
  INS_SETF16 = 794,
  INS_SETF8 = 795,
  INS_SETFFR = 796,
  INS_SETGE = 797,
  INS_SETGEN = 798,
  INS_SETGET = 799,
  INS_SETGETN = 800,
  INS_SETGM = 801,
  INS_SETGMN = 802,
  INS_SETGMT = 803,
  INS_SETGMTN = 804,
  INS_SETGP = 805,
  INS_SETGPN = 806,
  INS_SETGPT = 807,
  INS_SETGPTN = 808,
  INS_SETM = 809,
  INS_SETMN = 810,
  INS_SETMT = 811,
  INS_SETMTN = 812,
  INS_SETP = 813,
  INS_SETPN = 814,
  INS_SETPT = 815,
  INS_SETPTN = 816,
  INS_SEV = 817,
  INS_SEVL = 818,
  INS_SHA1C = 819,
  INS_SHA1H = 820,
  INS_SHA1M = 821,
  INS_SHA1P = 822,
  INS_SHA1SU0 = 823,
  INS_SHA1SU1 = 824,
  INS_SHA256H = 825,
  INS_SHA256H2 = 826,
  INS_SHA256SU0 = 827,
  INS_SHA256SU1 = 828,
  INS_SHA512H = 829,
  INS_SHA512H2 = 830,
  INS_SHA512SU0 = 831,
  INS_SHA512SU1 = 832,
  INS_SHADD = 833,
  INS_SHL = 834,
  INS_SHLL = 835,
  INS_SHLL2 = 836,
  INS_SHRN = 837,
  INS_SHRN2 = 838,
  INS_SHRNB = 839,
  INS_SHRNT = 840,
  INS_SHSUB = 841,
  INS_SHSUBR = 842,
  INS_SLI = 843,
  INS_SM3PARTW1 = 844,
  INS_SM3PARTW2 = 845,
  INS_SM3SS1 = 846,
  INS_SM3TT1A = 847,
  INS_SM3TT1B = 848,
  INS_SM3TT2A = 849,
  INS_SM3TT2B = 850,
  INS_SM4E = 851,
  INS_SM4EKEY = 852,
  INS_SMADDL = 853,
  INS_SMAX = 854,
  INS_SMAXP = 855,
  INS_SMAXV = 856,
  INS_SMC = 857,
  INS_SMIN = 858,
  INS_SMINP = 859,
  INS_SMINV = 860,
  INS_SMLAL = 861,
  INS_SMLAL2 = 862,
  INS_SMLALB = 863,
  INS_SMLALT = 864,
  INS_SMLSL = 865,
  INS_SMLSL2 = 866,
  INS_SMLSLB = 867,
  INS_SMLSLT = 868,
  INS_SMMLA = 869,
  INS_SMNEGL = 870,
  INS_SMOPA = 871,
  INS_SMOPS = 872,
  INS_SMOV = 873,
  INS_SMSTART = 874,
  INS_SMSTOP = 875,
  INS_SMSUBL = 876,
  INS_SMULH = 877,
  INS_SMULL = 878,
  INS_SMULL2 = 879,
  INS_SMULLB = 880,
  INS_SMULLT = 881,
  INS_SPLICE = 882,
  INS_SQABS = 883,
  INS_SQADD = 884,
  INS_SQCADD = 885,
  INS_SQDECB = 886,
  INS_SQDECD = 887,
  INS_SQDECH = 888,
  INS_SQDECP = 889,
  INS_SQDECW = 890,
  INS_SQDMLAL = 891,
  INS_SQDMLAL2 = 892,
  INS_SQDMLALB = 893,
  INS_SQDMLALBT = 894,
  INS_SQDMLALT = 895,
  INS_SQDMLSL = 896,
  INS_SQDMLSL2 = 897,
  INS_SQDMLSLB = 898,
  INS_SQDMLSLBT = 899,
  INS_SQDMLSLT = 900,
  INS_SQDMULH = 901,
  INS_SQDMULL = 902,
  INS_SQDMULL2 = 903,
  INS_SQDMULLB = 904,
  INS_SQDMULLT = 905,
  INS_SQINCB = 906,
  INS_SQINCD = 907,
  INS_SQINCH = 908,
  INS_SQINCP = 909,
  INS_SQINCW = 910,
  INS_SQNEG = 911,
  INS_SQRDCMLAH = 912,
  INS_SQRDMLAH = 913,
  INS_SQRDMLSH = 914,
  INS_SQRDMULH = 915,
  INS_SQRSHL = 916,
  INS_SQRSHLR = 917,
  INS_SQRSHRN = 918,
  INS_SQRSHRN2 = 919,
  INS_SQRSHRNB = 920,
  INS_SQRSHRNT = 921,
  INS_SQRSHRUN = 922,
  INS_SQRSHRUN2 = 923,
  INS_SQRSHRUNB = 924,
  INS_SQRSHRUNT = 925,
  INS_SQSHL = 926,
  INS_SQSHLR = 927,
  INS_SQSHLU = 928,
  INS_SQSHRN = 929,
  INS_SQSHRN2 = 930,
  INS_SQSHRNB = 931,
  INS_SQSHRNT = 932,
  INS_SQSHRUN = 933,
  INS_SQSHRUN2 = 934,
  INS_SQSHRUNB = 935,
  INS_SQSHRUNT = 936,
  INS_SQSUB = 937,
  INS_SQSUBR = 938,
  INS_SQXTN = 939,
  INS_SQXTN2 = 940,
  INS_SQXTNB = 941,
  INS_SQXTNT = 942,
  INS_SQXTUN = 943,
  INS_SQXTUN2 = 944,
  INS_SQXTUNB = 945,
  INS_SQXTUNT = 946,
  INS_SRHADD = 947,
  INS_SRI = 948,
  INS_SRSHL = 949,
  INS_SRSHLR = 950,
  INS_SRSHR = 951,
  INS_SRSRA = 952,
  INS_SSBB = 953,
  INS_SSHL = 954,
  INS_SSHLL = 955,
  INS_SSHLL2 = 956,
  INS_SSHLLB = 957,
  INS_SSHLLT = 958,
  INS_SSHR = 959,
  INS_SSRA = 960,
  INS_SSUBL = 961,
  INS_SSUBL2 = 962,
  INS_SSUBLB = 963,
  INS_SSUBLBT = 964,
  INS_SSUBLT = 965,
  INS_SSUBLTB = 966,
  INS_SSUBW = 967,
  INS_SSUBW2 = 968,
  INS_SSUBWB = 969,
  INS_SSUBWT = 970,
  INS_ST1 = 971,
  INS_ST1B = 972,
  INS_ST1D = 973,
  INS_ST1H = 974,
  INS_ST1Q = 975,
  INS_ST1W = 976,
  INS_ST2 = 977,
  INS_ST2B = 978,
  INS_ST2D = 979,
  INS_ST2G = 980,
  INS_ST2H = 981,
  INS_ST2W = 982,
  INS_ST3 = 983,
  INS_ST3B = 984,
  INS_ST3D = 985,
  INS_ST3H = 986,
  INS_ST3W = 987,
  INS_ST4 = 988,
  INS_ST4B = 989,
  INS_ST4D = 990,
  INS_ST4H = 991,
  INS_ST4W = 992,
  INS_ST64B = 993,
  INS_ST64BV = 994,
  INS_ST64BV0 = 995,
  INS_STADD = 996,
  INS_STADDB = 997,
  INS_STADDH = 998,
  INS_STADDL = 999,
  INS_STADDLB = 1000,
  INS_STADDLH = 1001,
  INS_STCLR = 1002,
  INS_STCLRB = 1003,
  INS_STCLRH = 1004,
  INS_STCLRL = 1005,
  INS_STCLRLB = 1006,
  INS_STCLRLH = 1007,
  INS_STEOR = 1008,
  INS_STEORB = 1009,
  INS_STEORH = 1010,
  INS_STEORL = 1011,
  INS_STEORLB = 1012,
  INS_STEORLH = 1013,
  INS_STG = 1014,
  INS_STGM = 1015,
  INS_STGP = 1016,
  INS_STLLR = 1017,
  INS_STLLRB = 1018,
  INS_STLLRH = 1019,
  INS_STLR = 1020,
  INS_STLRB = 1021,
  INS_STLRH = 1022,
  INS_STLUR = 1023,
  INS_STLURB = 1024,
  INS_STLURH = 1025,
  INS_STLXP = 1026,
  INS_STLXR = 1027,
  INS_STLXRB = 1028,
  INS_STLXRH = 1029,
  INS_STNP = 1030,
  INS_STNT1B = 1031,
  INS_STNT1D = 1032,
  INS_STNT1H = 1033,
  INS_STNT1W = 1034,
  INS_STP = 1035,
  INS_STR = 1036,
  INS_STRB = 1037,
  INS_STRH = 1038,
  INS_STSET = 1039,
  INS_STSETB = 1040,
  INS_STSETH = 1041,
  INS_STSETL = 1042,
  INS_STSETLB = 1043,
  INS_STSETLH = 1044,
  INS_STSMAX = 1045,
  INS_STSMAXB = 1046,
  INS_STSMAXH = 1047,
  INS_STSMAXL = 1048,
  INS_STSMAXLB = 1049,
  INS_STSMAXLH = 1050,
  INS_STSMIN = 1051,
  INS_STSMINB = 1052,
  INS_STSMINH = 1053,
  INS_STSMINL = 1054,
  INS_STSMINLB = 1055,
  INS_STSMINLH = 1056,
  INS_STTR = 1057,
  INS_STTRB = 1058,
  INS_STTRH = 1059,
  INS_STUMAX = 1060,
  INS_STUMAXB = 1061,
  INS_STUMAXH = 1062,
  INS_STUMAXL = 1063,
  INS_STUMAXLB = 1064,
  INS_STUMAXLH = 1065,
  INS_STUMIN = 1066,
  INS_STUMINB = 1067,
  INS_STUMINH = 1068,
  INS_STUMINL = 1069,
  INS_STUMINLB = 1070,
  INS_STUMINLH = 1071,
  INS_STUR = 1072,
  INS_STURB = 1073,
  INS_STURH = 1074,
  INS_STXP = 1075,
  INS_STXR = 1076,
  INS_STXRB = 1077,
  INS_STXRH = 1078,
  INS_STZ2G = 1079,
  INS_STZG = 1080,
  INS_STZGM = 1081,
  INS_SUB = 1082,
  INS_SUBG = 1083,
  INS_SUBHN = 1084,
  INS_SUBHN2 = 1085,
  INS_SUBHNB = 1086,
  INS_SUBHNT = 1087,
  INS_SUBP = 1088,
  INS_SUBPS = 1089,
  INS_SUBR = 1090,
  INS_SUBS = 1091,
  INS_SUDOT = 1092,
  INS_SUMOPA = 1093,
  INS_SUMOPS = 1094,
  INS_SUNPKHI = 1095,
  INS_SUNPKLO = 1096,
  INS_SUQADD = 1097,
  INS_SVC = 1098,
  INS_SWP = 1099,
  INS_SWPA = 1100,
  INS_SWPAB = 1101,
  INS_SWPAH = 1102,
  INS_SWPAL = 1103,
  INS_SWPALB = 1104,
  INS_SWPALH = 1105,
  INS_SWPB = 1106,
  INS_SWPH = 1107,
  INS_SWPL = 1108,
  INS_SWPLB = 1109,
  INS_SWPLH = 1110,
  INS_SXTB = 1111,
  INS_SXTH = 1112,
  INS_SXTL = 1113,
  INS_SXTL2 = 1114,
  INS_SXTW = 1115,
  INS_SYS = 1116,
  INS_SYSL = 1117,
  INS_TBL = 1118,
  INS_TBNZ = 1119,
  INS_TBX = 1120,
  INS_TBZ = 1121,
  INS_TCANCEL = 1122,
  INS_TCOMMIT = 1123,
  INS_TRN1 = 1124,
  INS_TRN2 = 1125,
  INS_TSB = 1126,
  INS_TST = 1127,
  INS_TSTART = 1128,
  INS_TTEST = 1129,
  INS_UABA = 1130,
  INS_UABAL = 1131,
  INS_UABAL2 = 1132,
  INS_UABALB = 1133,
  INS_UABALT = 1134,
  INS_UABD = 1135,
  INS_UABDL = 1136,
  INS_UABDL2 = 1137,
  INS_UABDLB = 1138,
  INS_UABDLT = 1139,
  INS_UADALP = 1140,
  INS_UADDL = 1141,
  INS_UADDL2 = 1142,
  INS_UADDLB = 1143,
  INS_UADDLP = 1144,
  INS_UADDLT = 1145,
  INS_UADDLV = 1146,
  INS_UADDV = 1147,
  INS_UADDW = 1148,
  INS_UADDW2 = 1149,
  INS_UADDWB = 1150,
  INS_UADDWT = 1151,
  INS_UBFM = 1152,
  INS_UCLAMP = 1153,
  INS_UCVTF = 1154,
  INS_UDF = 1155,
  INS_UDIV = 1156,
  INS_UDIVR = 1157,
  INS_UDOT = 1158,
  INS_UHADD = 1159,
  INS_UHSUB = 1160,
  INS_UHSUBR = 1161,
  INS_UMADDL = 1162,
  INS_UMAX = 1163,
  INS_UMAXP = 1164,
  INS_UMAXV = 1165,
  INS_UMIN = 1166,
  INS_UMINP = 1167,
  INS_UMINV = 1168,
  INS_UMLAL = 1169,
  INS_UMLAL2 = 1170,
  INS_UMLALB = 1171,
  INS_UMLALT = 1172,
  INS_UMLSL = 1173,
  INS_UMLSL2 = 1174,
  INS_UMLSLB = 1175,
  INS_UMLSLT = 1176,
  INS_UMMLA = 1177,
  INS_UMNEGL = 1178,
  INS_UMOPA = 1179,
  INS_UMOPS = 1180,
  INS_UMOV = 1181,
  INS_UMSUBL = 1182,
  INS_UMULH = 1183,
  INS_UMULL = 1184,
  INS_UMULL2 = 1185,
  INS_UMULLB = 1186,
  INS_UMULLT = 1187,
  INS_UQADD = 1188,
  INS_UQDECB = 1189,
  INS_UQDECD = 1190,
  INS_UQDECH = 1191,
  INS_UQDECP = 1192,
  INS_UQDECW = 1193,
  INS_UQINCB = 1194,
  INS_UQINCD = 1195,
  INS_UQINCH = 1196,
  INS_UQINCP = 1197,
  INS_UQINCW = 1198,
  INS_UQRSHL = 1199,
  INS_UQRSHLR = 1200,
  INS_UQRSHRN = 1201,
  INS_UQRSHRN2 = 1202,
  INS_UQRSHRNB = 1203,
  INS_UQRSHRNT = 1204,
  INS_UQSHL = 1205,
  INS_UQSHLR = 1206,
  INS_UQSHRN = 1207,
  INS_UQSHRN2 = 1208,
  INS_UQSHRNB = 1209,
  INS_UQSHRNT = 1210,
  INS_UQSUB = 1211,
  INS_UQSUBR = 1212,
  INS_UQXTN = 1213,
  INS_UQXTN2 = 1214,
  INS_UQXTNB = 1215,
  INS_UQXTNT = 1216,
  INS_URECPE = 1217,
  INS_URHADD = 1218,
  INS_URSHL = 1219,
  INS_URSHLR = 1220,
  INS_URSHR = 1221,
  INS_URSQRTE = 1222,
  INS_URSRA = 1223,
  INS_USDOT = 1224,
  INS_USHL = 1225,
  INS_USHLL = 1226,
  INS_USHLL2 = 1227,
  INS_USHLLB = 1228,
  INS_USHLLT = 1229,
  INS_USHR = 1230,
  INS_USMMLA = 1231,
  INS_USMOPA = 1232,
  INS_USMOPS = 1233,
  INS_USQADD = 1234,
  INS_USRA = 1235,
  INS_USUBL = 1236,
  INS_USUBL2 = 1237,
  INS_USUBLB = 1238,
  INS_USUBLT = 1239,
  INS_USUBW = 1240,
  INS_USUBW2 = 1241,
  INS_USUBWB = 1242,
  INS_USUBWT = 1243,
  INS_UUNPKHI = 1244,
  INS_UUNPKLO = 1245,
  INS_UXTB = 1246,
  INS_UXTH = 1247,
  INS_UXTL = 1248,
  INS_UXTL2 = 1249,
  INS_UXTW = 1250,
  INS_UZP1 = 1251,
  INS_UZP2 = 1252,
  INS_WFE = 1253,
  INS_WFET = 1254,
  INS_WFI = 1255,
  INS_WFIT = 1256,
  INS_WHILEGE = 1257,
  INS_WHILEGT = 1258,
  INS_WHILEHI = 1259,
  INS_WHILEHS = 1260,
  INS_WHILELE = 1261,
  INS_WHILELO = 1262,
  INS_WHILELS = 1263,
  INS_WHILELT = 1264,
  INS_WHILERW = 1265,
  INS_WHILEWR = 1266,
  INS_WRFFR = 1267,
  INS_XAFLAG = 1268,
  INS_XAR = 1269,
  INS_XPACD = 1270,
  INS_XPACI = 1271,
  INS_XPACLRI = 1272,
  INS_XTN = 1273,
  INS_XTN2 = 1274,
  INS_YIELD = 1275,
  INS_ZERO = 1276,
  INS_ZIP1 = 1277,
  INS_ZIP2 = 1278,
  INS_SBFIZ = 1279,
  INS_UBFIZ = 1280,
  INS_SBFX = 1281,
  INS_UBFX = 1282,
  INS_BFI = 1283,
  INS_BFXIL = 1284,
  INS_IC = 1285,
  INS_DC = 1286,
  INS_AT = 1287,
  INS_TLBI = 1288,
  INS_ENDING = 1289, // mark the end of the list of insn

  // Group of ARM64 instructions
  GRP_INVALID = 0, // cs.GRP_INVALID

  // Generic groups
  // all jump instructions (conditional+direct+indirect jumps)
  GRP_JUMP = 1, // cs.GRP_JUMP
  GRP_CALL = 2,
  GRP_RET = 3,
  GRP_INT = 4,
  GRP_PRIVILEGE = 6, // cs.GRP_PRIVILEGE
  GRP_BRANCH_RELATIVE = 7, // cs.GRP_BRANCH_RELATIVE
  GRP_PAC = 8,

  // Architecture-specific groups
  GRP_CRYPTO = 128,
  GRP_FPARMV8 = 129,
  GRP_NEON = 130,
  GRP_CRC = 131,
  GRP_AES = 132,
  GRP_DOTPROD = 133,
  GRP_FULLFP16 = 134,
  GRP_LSE = 135,
  GRP_RCPC = 136,
  GRP_RDM = 137,
  GRP_SHA2 = 138,
  GRP_SHA3 = 139,
  GRP_SM4 = 140,
  GRP_SVE = 141,
  GRP_SVE2 = 142,
  GRP_SVE2AES = 143,
  GRP_SVE2BitPerm = 144,
  GRP_SVE2SHA3 = 145,
  GRP_SVE2SM4 = 146,
  GRP_SME = 147,
  GRP_SMEF64 = 148,
  GRP_SMEI64 = 149,
  GRP_MatMulFP32 = 150,
  GRP_MatMulFP64 = 151,
  GRP_MatMulInt8 = 152,
  GRP_V8_1A = 153,
  GRP_V8_3A = 154,
  GRP_V8_4A = 155,
  GRP_ENDING = 156, // mark the end of the list of groups
}

export class cs_arm64 {
  public cc: ARM64; // conditional code for this insn
  public update_flags: boolean; // does this insn update flags?
  public writeback: boolean; // does this insn request writeback? 'True' means 'yes'
  public post_index: boolean; // only set if writeback is 'True', if 'False' pre-index, otherwise post.
  public op_count: number; // Number of operands of this instruction, or 0 when instruction has no operand.
  public operands: cs_arm64_op[]; // operands for this instruction.

  constructor(arch_info_ptr: number, Memory: any) {
    this.operands = [];
    this.cc = Memory.read(arch_info_ptr, 'i32');
    this.update_flags = Memory.read(arch_info_ptr + 4, 'bool');
    this.writeback = Memory.read(arch_info_ptr + 5, 'bool');
    this.post_index = Memory.read(arch_info_ptr + 6, 'bool');
    this.op_count = Memory.read(arch_info_ptr + 7, 'i8');
    for (let i = 0; i < this.op_count; i++) {
      const op: cs_arm64_op = {} as cs_arm64_op;
      const op_ptr: number = arch_info_ptr + 8 + i * 56;
      op.vector_index = Memory.read(op_ptr + 0, 'i32');
      op.vas = Memory.read(op_ptr + 4, 'i32');
      op.shift = {
        type: Memory.read(op_ptr + 8, 'i32'),
        value: Memory.read(op_ptr + 12, 'i32'),
      };
      op.ext = Memory.read(op_ptr + 16, 'i32');
      op.access = Memory.read(op_ptr + 48, 'i32');
      op.type = Memory.read(op_ptr + 20, 'i32');
      switch (op.type) {
        case ARM64.OP_REG:
        case ARM64.OP_REG_MRS:
        case ARM64.OP_REG_MSR:
          op.reg = Memory.read(op_ptr + 32, 'i32');
          break;
        case ARM64.OP_IMM:
        case ARM64.OP_CIMM:
          op.imm = Memory.read(op_ptr + 32, 'i64');
          break;
        case ARM64.OP_FP:
          op.fp = Memory.read(op_ptr + 32, 'double');
          break;
        case ARM64.OP_PSTATE:
          op.pstate = Memory.read(op_ptr + 32, 'i32');
          break;
        case ARM64.OP_SYS:
          op.sys = Memory.read(op_ptr + 32, 'i32');
          break;
        case ARM64.OP_SVCR:
          op.svcr = Memory.read(op_ptr + 24, 'i32');
          break;
        case ARM64.OP_BARRIER:
          op.barrier = Memory.read(op_ptr + 32, 'i32');
          break;
        case ARM64.OP_PREFETCH:
          op.prefetch = Memory.read(op_ptr + 32, 'i32');
          break;
        case ARM64.OP_MEM:
          op.mem = {
            base: Memory.read(op_ptr + 32, 'i32'),
            index: Memory.read(op_ptr + 36, 'i32'),
            disp: Memory.read(op_ptr + 40, 'i32'),
          };
          break;
        case ARM64.OP_SME_INDEX:
          op.sme_index = {
            reg: Memory.read(op_ptr + 32, 'i32'),
            base: Memory.read(op_ptr + 36, 'i32'),
            disp: Memory.read(op_ptr + 40, 'i32'),
          };
          break;
      }
      this.operands[i] = op;
    }
    return this;
  }
}
