Defcon/hook_lib/asmjit/arm/a64globals.h

1895 lines
125 KiB
C
Raw Normal View History

2023-11-26 08:54:06 -05:00
// This file is part of AsmJit project <https://asmjit.com>
//
// See asmjit.h or LICENSE.md for license and copyright information
// SPDX-License-Identifier: Zlib
#ifndef ASMJIT_ARM_A64GLOBALS_H_INCLUDED
#define ASMJIT_ARM_A64GLOBALS_H_INCLUDED
#include "../arm/armglobals.h"
//! \namespace asmjit::a64
//! \ingroup asmjit_a64
//!
//! AArch64 backend.
ASMJIT_BEGIN_SUB_NAMESPACE(a64)
// a64 uses everything from arm namespace and adds into it.
using namespace arm;
//! \addtogroup asmjit_a64
//! \{
//! AArch64 instruction.
//!
//! \note Only used to hold ARM-specific enumerations and static functions.
struct Inst {
//! Instruction id.
enum Id : uint32_t {
// ${InstId:Begin}
kIdNone = 0, //!< Instruction ''.
kIdAdc, //!< Instruction 'adc'.
kIdAdcs, //!< Instruction 'adcs'.
kIdAdd, //!< Instruction 'add'.
kIdAddg, //!< Instruction 'addg'.
kIdAdds, //!< Instruction 'adds'.
kIdAdr, //!< Instruction 'adr'.
kIdAdrp, //!< Instruction 'adrp'.
kIdAnd, //!< Instruction 'and'.
kIdAnds, //!< Instruction 'ands'.
kIdAsr, //!< Instruction 'asr'.
kIdAsrv, //!< Instruction 'asrv'.
kIdAt, //!< Instruction 'at'.
kIdAutda, //!< Instruction 'autda'.
kIdAutdza, //!< Instruction 'autdza'.
kIdAutdb, //!< Instruction 'autdb'.
kIdAutdzb, //!< Instruction 'autdzb'.
kIdAutia, //!< Instruction 'autia'.
kIdAutia1716, //!< Instruction 'autia1716'.
kIdAutiasp, //!< Instruction 'autiasp'.
kIdAutiaz, //!< Instruction 'autiaz'.
kIdAutib, //!< Instruction 'autib'.
kIdAutib1716, //!< Instruction 'autib1716'.
kIdAutibsp, //!< Instruction 'autibsp'.
kIdAutibz, //!< Instruction 'autibz'.
kIdAutiza, //!< Instruction 'autiza'.
kIdAutizb, //!< Instruction 'autizb'.
kIdAxflag, //!< Instruction 'axflag'.
kIdB, //!< Instruction 'b'.
kIdBfc, //!< Instruction 'bfc'.
kIdBfi, //!< Instruction 'bfi'.
kIdBfm, //!< Instruction 'bfm'.
kIdBfxil, //!< Instruction 'bfxil'.
kIdBic, //!< Instruction 'bic'.
kIdBics, //!< Instruction 'bics'.
kIdBl, //!< Instruction 'bl'.
kIdBlr, //!< Instruction 'blr'.
kIdBr, //!< Instruction 'br'.
kIdBrk, //!< Instruction 'brk'.
kIdCas, //!< Instruction 'cas'.
kIdCasa, //!< Instruction 'casa'.
kIdCasab, //!< Instruction 'casab'.
kIdCasah, //!< Instruction 'casah'.
kIdCasal, //!< Instruction 'casal'.
kIdCasalb, //!< Instruction 'casalb'.
kIdCasalh, //!< Instruction 'casalh'.
kIdCasb, //!< Instruction 'casb'.
kIdCash, //!< Instruction 'cash'.
kIdCasl, //!< Instruction 'casl'.
kIdCaslb, //!< Instruction 'caslb'.
kIdCaslh, //!< Instruction 'caslh'.
kIdCasp, //!< Instruction 'casp'.
kIdCaspa, //!< Instruction 'caspa'.
kIdCaspal, //!< Instruction 'caspal'.
kIdCaspl, //!< Instruction 'caspl'.
kIdCbnz, //!< Instruction 'cbnz'.
kIdCbz, //!< Instruction 'cbz'.
kIdCcmn, //!< Instruction 'ccmn'.
kIdCcmp, //!< Instruction 'ccmp'.
kIdCfinv, //!< Instruction 'cfinv'.
kIdCinc, //!< Instruction 'cinc'.
kIdCinv, //!< Instruction 'cinv'.
kIdClrex, //!< Instruction 'clrex'.
kIdCls, //!< Instruction 'cls'.
kIdClz, //!< Instruction 'clz'.
kIdCmn, //!< Instruction 'cmn'.
kIdCmp, //!< Instruction 'cmp'.
kIdCmpp, //!< Instruction 'cmpp'.
kIdCneg, //!< Instruction 'cneg'.
kIdCrc32b, //!< Instruction 'crc32b'.
kIdCrc32cb, //!< Instruction 'crc32cb'.
kIdCrc32ch, //!< Instruction 'crc32ch'.
kIdCrc32cw, //!< Instruction 'crc32cw'.
kIdCrc32cx, //!< Instruction 'crc32cx'.
kIdCrc32h, //!< Instruction 'crc32h'.
kIdCrc32w, //!< Instruction 'crc32w'.
kIdCrc32x, //!< Instruction 'crc32x'.
kIdCsdb, //!< Instruction 'csdb'.
kIdCsel, //!< Instruction 'csel'.
kIdCset, //!< Instruction 'cset'.
kIdCsetm, //!< Instruction 'csetm'.
kIdCsinc, //!< Instruction 'csinc'.
kIdCsinv, //!< Instruction 'csinv'.
kIdCsneg, //!< Instruction 'csneg'.
kIdDc, //!< Instruction 'dc'.
kIdDcps1, //!< Instruction 'dcps1'.
kIdDcps2, //!< Instruction 'dcps2'.
kIdDcps3, //!< Instruction 'dcps3'.
kIdDgh, //!< Instruction 'dgh'.
kIdDmb, //!< Instruction 'dmb'.
kIdDrps, //!< Instruction 'drps'.
kIdDsb, //!< Instruction 'dsb'.
kIdEon, //!< Instruction 'eon'.
kIdEor, //!< Instruction 'eor'.
kIdEsb, //!< Instruction 'esb'.
kIdExtr, //!< Instruction 'extr'.
kIdEret, //!< Instruction 'eret'.
kIdGmi, //!< Instruction 'gmi'.
kIdHint, //!< Instruction 'hint'.
kIdHlt, //!< Instruction 'hlt'.
kIdHvc, //!< Instruction 'hvc'.
kIdIc, //!< Instruction 'ic'.
kIdIsb, //!< Instruction 'isb'.
kIdLdadd, //!< Instruction 'ldadd'.
kIdLdadda, //!< Instruction 'ldadda'.
kIdLdaddab, //!< Instruction 'ldaddab'.
kIdLdaddah, //!< Instruction 'ldaddah'.
kIdLdaddal, //!< Instruction 'ldaddal'.
kIdLdaddalb, //!< Instruction 'ldaddalb'.
kIdLdaddalh, //!< Instruction 'ldaddalh'.
kIdLdaddb, //!< Instruction 'ldaddb'.
kIdLdaddh, //!< Instruction 'ldaddh'.
kIdLdaddl, //!< Instruction 'ldaddl'.
kIdLdaddlb, //!< Instruction 'ldaddlb'.
kIdLdaddlh, //!< Instruction 'ldaddlh'.
kIdLdar, //!< Instruction 'ldar'.
kIdLdarb, //!< Instruction 'ldarb'.
kIdLdarh, //!< Instruction 'ldarh'.
kIdLdaxp, //!< Instruction 'ldaxp'.
kIdLdaxr, //!< Instruction 'ldaxr'.
kIdLdaxrb, //!< Instruction 'ldaxrb'.
kIdLdaxrh, //!< Instruction 'ldaxrh'.
kIdLdclr, //!< Instruction 'ldclr'.
kIdLdclra, //!< Instruction 'ldclra'.
kIdLdclrab, //!< Instruction 'ldclrab'.
kIdLdclrah, //!< Instruction 'ldclrah'.
kIdLdclral, //!< Instruction 'ldclral'.
kIdLdclralb, //!< Instruction 'ldclralb'.
kIdLdclralh, //!< Instruction 'ldclralh'.
kIdLdclrb, //!< Instruction 'ldclrb'.
kIdLdclrh, //!< Instruction 'ldclrh'.
kIdLdclrl, //!< Instruction 'ldclrl'.
kIdLdclrlb, //!< Instruction 'ldclrlb'.
kIdLdclrlh, //!< Instruction 'ldclrlh'.
kIdLdeor, //!< Instruction 'ldeor'.
kIdLdeora, //!< Instruction 'ldeora'.
kIdLdeorab, //!< Instruction 'ldeorab'.
kIdLdeorah, //!< Instruction 'ldeorah'.
kIdLdeoral, //!< Instruction 'ldeoral'.
kIdLdeoralb, //!< Instruction 'ldeoralb'.
kIdLdeoralh, //!< Instruction 'ldeoralh'.
kIdLdeorb, //!< Instruction 'ldeorb'.
kIdLdeorh, //!< Instruction 'ldeorh'.
kIdLdeorl, //!< Instruction 'ldeorl'.
kIdLdeorlb, //!< Instruction 'ldeorlb'.
kIdLdeorlh, //!< Instruction 'ldeorlh'.
kIdLdg, //!< Instruction 'ldg'.
kIdLdgm, //!< Instruction 'ldgm'.
kIdLdlar, //!< Instruction 'ldlar'.
kIdLdlarb, //!< Instruction 'ldlarb'.
kIdLdlarh, //!< Instruction 'ldlarh'.
kIdLdnp, //!< Instruction 'ldnp'.
kIdLdp, //!< Instruction 'ldp'.
kIdLdpsw, //!< Instruction 'ldpsw'.
kIdLdr, //!< Instruction 'ldr'.
kIdLdraa, //!< Instruction 'ldraa'.
kIdLdrab, //!< Instruction 'ldrab'.
kIdLdrb, //!< Instruction 'ldrb'.
kIdLdrh, //!< Instruction 'ldrh'.
kIdLdrsb, //!< Instruction 'ldrsb'.
kIdLdrsh, //!< Instruction 'ldrsh'.
kIdLdrsw, //!< Instruction 'ldrsw'.
kIdLdset, //!< Instruction 'ldset'.
kIdLdseta, //!< Instruction 'ldseta'.
kIdLdsetab, //!< Instruction 'ldsetab'.
kIdLdsetah, //!< Instruction 'ldsetah'.
kIdLdsetal, //!< Instruction 'ldsetal'.
kIdLdsetalb, //!< Instruction 'ldsetalb'.
kIdLdsetalh, //!< Instruction 'ldsetalh'.
kIdLdsetb, //!< Instruction 'ldsetb'.
kIdLdseth, //!< Instruction 'ldseth'.
kIdLdsetl, //!< Instruction 'ldsetl'.
kIdLdsetlb, //!< Instruction 'ldsetlb'.
kIdLdsetlh, //!< Instruction 'ldsetlh'.
kIdLdsmax, //!< Instruction 'ldsmax'.
kIdLdsmaxa, //!< Instruction 'ldsmaxa'.
kIdLdsmaxab, //!< Instruction 'ldsmaxab'.
kIdLdsmaxah, //!< Instruction 'ldsmaxah'.
kIdLdsmaxal, //!< Instruction 'ldsmaxal'.
kIdLdsmaxalb, //!< Instruction 'ldsmaxalb'.
kIdLdsmaxalh, //!< Instruction 'ldsmaxalh'.
kIdLdsmaxb, //!< Instruction 'ldsmaxb'.
kIdLdsmaxh, //!< Instruction 'ldsmaxh'.
kIdLdsmaxl, //!< Instruction 'ldsmaxl'.
kIdLdsmaxlb, //!< Instruction 'ldsmaxlb'.
kIdLdsmaxlh, //!< Instruction 'ldsmaxlh'.
kIdLdsmin, //!< Instruction 'ldsmin'.
kIdLdsmina, //!< Instruction 'ldsmina'.
kIdLdsminab, //!< Instruction 'ldsminab'.
kIdLdsminah, //!< Instruction 'ldsminah'.
kIdLdsminal, //!< Instruction 'ldsminal'.
kIdLdsminalb, //!< Instruction 'ldsminalb'.
kIdLdsminalh, //!< Instruction 'ldsminalh'.
kIdLdsminb, //!< Instruction 'ldsminb'.
kIdLdsminh, //!< Instruction 'ldsminh'.
kIdLdsminl, //!< Instruction 'ldsminl'.
kIdLdsminlb, //!< Instruction 'ldsminlb'.
kIdLdsminlh, //!< Instruction 'ldsminlh'.
kIdLdtr, //!< Instruction 'ldtr'.
kIdLdtrb, //!< Instruction 'ldtrb'.
kIdLdtrh, //!< Instruction 'ldtrh'.
kIdLdtrsb, //!< Instruction 'ldtrsb'.
kIdLdtrsh, //!< Instruction 'ldtrsh'.
kIdLdtrsw, //!< Instruction 'ldtrsw'.
kIdLdumax, //!< Instruction 'ldumax'.
kIdLdumaxa, //!< Instruction 'ldumaxa'.
kIdLdumaxab, //!< Instruction 'ldumaxab'.
kIdLdumaxah, //!< Instruction 'ldumaxah'.
kIdLdumaxal, //!< Instruction 'ldumaxal'.
kIdLdumaxalb, //!< Instruction 'ldumaxalb'.
kIdLdumaxalh, //!< Instruction 'ldumaxalh'.
kIdLdumaxb, //!< Instruction 'ldumaxb'.
kIdLdumaxh, //!< Instruction 'ldumaxh'.
kIdLdumaxl, //!< Instruction 'ldumaxl'.
kIdLdumaxlb, //!< Instruction 'ldumaxlb'.
kIdLdumaxlh, //!< Instruction 'ldumaxlh'.
kIdLdumin, //!< Instruction 'ldumin'.
kIdLdumina, //!< Instruction 'ldumina'.
kIdLduminab, //!< Instruction 'lduminab'.
kIdLduminah, //!< Instruction 'lduminah'.
kIdLduminal, //!< Instruction 'lduminal'.
kIdLduminalb, //!< Instruction 'lduminalb'.
kIdLduminalh, //!< Instruction 'lduminalh'.
kIdLduminb, //!< Instruction 'lduminb'.
kIdLduminh, //!< Instruction 'lduminh'.
kIdLduminl, //!< Instruction 'lduminl'.
kIdLduminlb, //!< Instruction 'lduminlb'.
kIdLduminlh, //!< Instruction 'lduminlh'.
kIdLdur, //!< Instruction 'ldur'.
kIdLdurb, //!< Instruction 'ldurb'.
kIdLdurh, //!< Instruction 'ldurh'.
kIdLdursb, //!< Instruction 'ldursb'.
kIdLdursh, //!< Instruction 'ldursh'.
kIdLdursw, //!< Instruction 'ldursw'.
kIdLdxp, //!< Instruction 'ldxp'.
kIdLdxr, //!< Instruction 'ldxr'.
kIdLdxrb, //!< Instruction 'ldxrb'.
kIdLdxrh, //!< Instruction 'ldxrh'.
kIdLsl, //!< Instruction 'lsl'.
kIdLslv, //!< Instruction 'lslv'.
kIdLsr, //!< Instruction 'lsr'.
kIdLsrv, //!< Instruction 'lsrv'.
kIdMadd, //!< Instruction 'madd'.
kIdMneg, //!< Instruction 'mneg'.
kIdMov, //!< Instruction 'mov'.
kIdMovk, //!< Instruction 'movk'.
kIdMovn, //!< Instruction 'movn'.
kIdMovz, //!< Instruction 'movz'.
kIdMrs, //!< Instruction 'mrs'.
kIdMsr, //!< Instruction 'msr'.
kIdMsub, //!< Instruction 'msub'.
kIdMul, //!< Instruction 'mul'.
kIdMvn, //!< Instruction 'mvn'.
kIdNeg, //!< Instruction 'neg'.
kIdNegs, //!< Instruction 'negs'.
kIdNgc, //!< Instruction 'ngc'.
kIdNgcs, //!< Instruction 'ngcs'.
kIdNop, //!< Instruction 'nop'.
kIdOrn, //!< Instruction 'orn'.
kIdOrr, //!< Instruction 'orr'.
kIdPacda, //!< Instruction 'pacda'.
kIdPacdb, //!< Instruction 'pacdb'.
kIdPacdza, //!< Instruction 'pacdza'.
kIdPacdzb, //!< Instruction 'pacdzb'.
kIdPacga, //!< Instruction 'pacga'.
kIdPssbb, //!< Instruction 'pssbb'.
kIdRbit, //!< Instruction 'rbit'.
kIdRet, //!< Instruction 'ret'.
kIdRev, //!< Instruction 'rev'.
kIdRev16, //!< Instruction 'rev16'.
kIdRev32, //!< Instruction 'rev32'.
kIdRev64, //!< Instruction 'rev64'.
kIdRor, //!< Instruction 'ror'.
kIdRorv, //!< Instruction 'rorv'.
kIdSbc, //!< Instruction 'sbc'.
kIdSbcs, //!< Instruction 'sbcs'.
kIdSbfiz, //!< Instruction 'sbfiz'.
kIdSbfm, //!< Instruction 'sbfm'.
kIdSbfx, //!< Instruction 'sbfx'.
kIdSdiv, //!< Instruction 'sdiv'.
kIdSetf8, //!< Instruction 'setf8'.
kIdSetf16, //!< Instruction 'setf16'.
kIdSev, //!< Instruction 'sev'.
kIdSevl, //!< Instruction 'sevl'.
kIdSmaddl, //!< Instruction 'smaddl'.
kIdSmc, //!< Instruction 'smc'.
kIdSmnegl, //!< Instruction 'smnegl'.
kIdSmsubl, //!< Instruction 'smsubl'.
kIdSmulh, //!< Instruction 'smulh'.
kIdSmull, //!< Instruction 'smull'.
kIdSsbb, //!< Instruction 'ssbb'.
kIdSt2g, //!< Instruction 'st2g'.
kIdStadd, //!< Instruction 'stadd'.
kIdStaddl, //!< Instruction 'staddl'.
kIdStaddb, //!< Instruction 'staddb'.
kIdStaddlb, //!< Instruction 'staddlb'.
kIdStaddh, //!< Instruction 'staddh'.
kIdStaddlh, //!< Instruction 'staddlh'.
kIdStclr, //!< Instruction 'stclr'.
kIdStclrl, //!< Instruction 'stclrl'.
kIdStclrb, //!< Instruction 'stclrb'.
kIdStclrlb, //!< Instruction 'stclrlb'.
kIdStclrh, //!< Instruction 'stclrh'.
kIdStclrlh, //!< Instruction 'stclrlh'.
kIdSteor, //!< Instruction 'steor'.
kIdSteorl, //!< Instruction 'steorl'.
kIdSteorb, //!< Instruction 'steorb'.
kIdSteorlb, //!< Instruction 'steorlb'.
kIdSteorh, //!< Instruction 'steorh'.
kIdSteorlh, //!< Instruction 'steorlh'.
kIdStg, //!< Instruction 'stg'.
kIdStgm, //!< Instruction 'stgm'.
kIdStgp, //!< Instruction 'stgp'.
kIdStllr, //!< Instruction 'stllr'.
kIdStllrb, //!< Instruction 'stllrb'.
kIdStllrh, //!< Instruction 'stllrh'.
kIdStlr, //!< Instruction 'stlr'.
kIdStlrb, //!< Instruction 'stlrb'.
kIdStlrh, //!< Instruction 'stlrh'.
kIdStlxp, //!< Instruction 'stlxp'.
kIdStlxr, //!< Instruction 'stlxr'.
kIdStlxrb, //!< Instruction 'stlxrb'.
kIdStlxrh, //!< Instruction 'stlxrh'.
kIdStnp, //!< Instruction 'stnp'.
kIdStp, //!< Instruction 'stp'.
kIdStr, //!< Instruction 'str'.
kIdStrb, //!< Instruction 'strb'.
kIdStrh, //!< Instruction 'strh'.
kIdStset, //!< Instruction 'stset'.
kIdStsetl, //!< Instruction 'stsetl'.
kIdStsetb, //!< Instruction 'stsetb'.
kIdStsetlb, //!< Instruction 'stsetlb'.
kIdStseth, //!< Instruction 'stseth'.
kIdStsetlh, //!< Instruction 'stsetlh'.
kIdStsmax, //!< Instruction 'stsmax'.
kIdStsmaxl, //!< Instruction 'stsmaxl'.
kIdStsmaxb, //!< Instruction 'stsmaxb'.
kIdStsmaxlb, //!< Instruction 'stsmaxlb'.
kIdStsmaxh, //!< Instruction 'stsmaxh'.
kIdStsmaxlh, //!< Instruction 'stsmaxlh'.
kIdStsmin, //!< Instruction 'stsmin'.
kIdStsminl, //!< Instruction 'stsminl'.
kIdStsminb, //!< Instruction 'stsminb'.
kIdStsminlb, //!< Instruction 'stsminlb'.
kIdStsminh, //!< Instruction 'stsminh'.
kIdStsminlh, //!< Instruction 'stsminlh'.
kIdSttr, //!< Instruction 'sttr'.
kIdSttrb, //!< Instruction 'sttrb'.
kIdSttrh, //!< Instruction 'sttrh'.
kIdStumax, //!< Instruction 'stumax'.
kIdStumaxl, //!< Instruction 'stumaxl'.
kIdStumaxb, //!< Instruction 'stumaxb'.
kIdStumaxlb, //!< Instruction 'stumaxlb'.
kIdStumaxh, //!< Instruction 'stumaxh'.
kIdStumaxlh, //!< Instruction 'stumaxlh'.
kIdStumin, //!< Instruction 'stumin'.
kIdStuminl, //!< Instruction 'stuminl'.
kIdStuminb, //!< Instruction 'stuminb'.
kIdStuminlb, //!< Instruction 'stuminlb'.
kIdStuminh, //!< Instruction 'stuminh'.
kIdStuminlh, //!< Instruction 'stuminlh'.
kIdStur, //!< Instruction 'stur'.
kIdSturb, //!< Instruction 'sturb'.
kIdSturh, //!< Instruction 'sturh'.
kIdStxp, //!< Instruction 'stxp'.
kIdStxr, //!< Instruction 'stxr'.
kIdStxrb, //!< Instruction 'stxrb'.
kIdStxrh, //!< Instruction 'stxrh'.
kIdStz2g, //!< Instruction 'stz2g'.
kIdStzg, //!< Instruction 'stzg'.
kIdStzgm, //!< Instruction 'stzgm'.
kIdSub, //!< Instruction 'sub'.
kIdSubg, //!< Instruction 'subg'.
kIdSubp, //!< Instruction 'subp'.
kIdSubps, //!< Instruction 'subps'.
kIdSubs, //!< Instruction 'subs'.
kIdSvc, //!< Instruction 'svc'.
kIdSwp, //!< Instruction 'swp'.
kIdSwpa, //!< Instruction 'swpa'.
kIdSwpab, //!< Instruction 'swpab'.
kIdSwpah, //!< Instruction 'swpah'.
kIdSwpal, //!< Instruction 'swpal'.
kIdSwpalb, //!< Instruction 'swpalb'.
kIdSwpalh, //!< Instruction 'swpalh'.
kIdSwpb, //!< Instruction 'swpb'.
kIdSwph, //!< Instruction 'swph'.
kIdSwpl, //!< Instruction 'swpl'.
kIdSwplb, //!< Instruction 'swplb'.
kIdSwplh, //!< Instruction 'swplh'.
kIdSxtb, //!< Instruction 'sxtb'.
kIdSxth, //!< Instruction 'sxth'.
kIdSxtw, //!< Instruction 'sxtw'.
kIdSys, //!< Instruction 'sys'.
kIdTlbi, //!< Instruction 'tlbi'.
kIdTst, //!< Instruction 'tst'.
kIdTbnz, //!< Instruction 'tbnz'.
kIdTbz, //!< Instruction 'tbz'.
kIdUbfiz, //!< Instruction 'ubfiz'.
kIdUbfm, //!< Instruction 'ubfm'.
kIdUbfx, //!< Instruction 'ubfx'.
kIdUdf, //!< Instruction 'udf'.
kIdUdiv, //!< Instruction 'udiv'.
kIdUmaddl, //!< Instruction 'umaddl'.
kIdUmnegl, //!< Instruction 'umnegl'.
kIdUmull, //!< Instruction 'umull'.
kIdUmulh, //!< Instruction 'umulh'.
kIdUmsubl, //!< Instruction 'umsubl'.
kIdUxtb, //!< Instruction 'uxtb'.
kIdUxth, //!< Instruction 'uxth'.
kIdWfe, //!< Instruction 'wfe'.
kIdWfi, //!< Instruction 'wfi'.
kIdXaflag, //!< Instruction 'xaflag'.
kIdXpacd, //!< Instruction 'xpacd'.
kIdXpaci, //!< Instruction 'xpaci'.
kIdXpaclri, //!< Instruction 'xpaclri'.
kIdYield, //!< Instruction 'yield'.
kIdAbs_v, //!< Instruction 'abs' {ASIMD}.
kIdAdd_v, //!< Instruction 'add' {ASIMD}.
kIdAddhn_v, //!< Instruction 'addhn' {ASIMD}.
kIdAddhn2_v, //!< Instruction 'addhn2' {ASIMD}.
kIdAddp_v, //!< Instruction 'addp' {ASIMD}.
kIdAddv_v, //!< Instruction 'addv' {ASIMD}.
kIdAesd_v, //!< Instruction 'aesd' {ASIMD}.
kIdAese_v, //!< Instruction 'aese' {ASIMD}.
kIdAesimc_v, //!< Instruction 'aesimc' {ASIMD}.
kIdAesmc_v, //!< Instruction 'aesmc' {ASIMD}.
kIdAnd_v, //!< Instruction 'and' {ASIMD}.
kIdBcax_v, //!< Instruction 'bcax' {ASIMD}.
kIdBfcvt_v, //!< Instruction 'bfcvt' {ASIMD}.
kIdBfcvtn_v, //!< Instruction 'bfcvtn' {ASIMD}.
kIdBfcvtn2_v, //!< Instruction 'bfcvtn2' {ASIMD}.
kIdBfdot_v, //!< Instruction 'bfdot' {ASIMD}.
kIdBfmlalb_v, //!< Instruction 'bfmlalb' {ASIMD}.
kIdBfmlalt_v, //!< Instruction 'bfmlalt' {ASIMD}.
kIdBfmmla_v, //!< Instruction 'bfmmla' {ASIMD}.
kIdBic_v, //!< Instruction 'bic' {ASIMD}.
kIdBif_v, //!< Instruction 'bif' {ASIMD}.
kIdBit_v, //!< Instruction 'bit' {ASIMD}.
kIdBsl_v, //!< Instruction 'bsl' {ASIMD}.
kIdCls_v, //!< Instruction 'cls' {ASIMD}.
kIdClz_v, //!< Instruction 'clz' {ASIMD}.
kIdCmeq_v, //!< Instruction 'cmeq' {ASIMD}.
kIdCmge_v, //!< Instruction 'cmge' {ASIMD}.
kIdCmgt_v, //!< Instruction 'cmgt' {ASIMD}.
kIdCmhi_v, //!< Instruction 'cmhi' {ASIMD}.
kIdCmhs_v, //!< Instruction 'cmhs' {ASIMD}.
kIdCmle_v, //!< Instruction 'cmle' {ASIMD}.
kIdCmlt_v, //!< Instruction 'cmlt' {ASIMD}.
kIdCmtst_v, //!< Instruction 'cmtst' {ASIMD}.
kIdCnt_v, //!< Instruction 'cnt' {ASIMD}.
kIdDup_v, //!< Instruction 'dup' {ASIMD}.
kIdEor_v, //!< Instruction 'eor' {ASIMD}.
kIdEor3_v, //!< Instruction 'eor3' {ASIMD}.
kIdExt_v, //!< Instruction 'ext' {ASIMD}.
kIdFabd_v, //!< Instruction 'fabd' {ASIMD}.
kIdFabs_v, //!< Instruction 'fabs' {ASIMD}.
kIdFacge_v, //!< Instruction 'facge' {ASIMD}.
kIdFacgt_v, //!< Instruction 'facgt' {ASIMD}.
kIdFadd_v, //!< Instruction 'fadd' {ASIMD}.
kIdFaddp_v, //!< Instruction 'faddp' {ASIMD}.
kIdFcadd_v, //!< Instruction 'fcadd' {ASIMD}.
kIdFccmp_v, //!< Instruction 'fccmp' {ASIMD}.
kIdFccmpe_v, //!< Instruction 'fccmpe' {ASIMD}.
kIdFcmeq_v, //!< Instruction 'fcmeq' {ASIMD}.
kIdFcmge_v, //!< Instruction 'fcmge' {ASIMD}.
kIdFcmgt_v, //!< Instruction 'fcmgt' {ASIMD}.
kIdFcmla_v, //!< Instruction 'fcmla' {ASIMD}.
kIdFcmle_v, //!< Instruction 'fcmle' {ASIMD}.
kIdFcmlt_v, //!< Instruction 'fcmlt' {ASIMD}.
kIdFcmp_v, //!< Instruction 'fcmp' {ASIMD}.
kIdFcmpe_v, //!< Instruction 'fcmpe' {ASIMD}.
kIdFcsel_v, //!< Instruction 'fcsel' {ASIMD}.
kIdFcvt_v, //!< Instruction 'fcvt' {ASIMD}.
kIdFcvtas_v, //!< Instruction 'fcvtas' {ASIMD}.
kIdFcvtau_v, //!< Instruction 'fcvtau' {ASIMD}.
kIdFcvtl_v, //!< Instruction 'fcvtl' {ASIMD}.
kIdFcvtl2_v, //!< Instruction 'fcvtl2' {ASIMD}.
kIdFcvtms_v, //!< Instruction 'fcvtms' {ASIMD}.
kIdFcvtmu_v, //!< Instruction 'fcvtmu' {ASIMD}.
kIdFcvtn_v, //!< Instruction 'fcvtn' {ASIMD}.
kIdFcvtn2_v, //!< Instruction 'fcvtn2' {ASIMD}.
kIdFcvtns_v, //!< Instruction 'fcvtns' {ASIMD}.
kIdFcvtnu_v, //!< Instruction 'fcvtnu' {ASIMD}.
kIdFcvtps_v, //!< Instruction 'fcvtps' {ASIMD}.
kIdFcvtpu_v, //!< Instruction 'fcvtpu' {ASIMD}.
kIdFcvtxn_v, //!< Instruction 'fcvtxn' {ASIMD}.
kIdFcvtxn2_v, //!< Instruction 'fcvtxn2' {ASIMD}.
kIdFcvtzs_v, //!< Instruction 'fcvtzs' {ASIMD}.
kIdFcvtzu_v, //!< Instruction 'fcvtzu' {ASIMD}.
kIdFdiv_v, //!< Instruction 'fdiv' {ASIMD}.
kIdFjcvtzs_v, //!< Instruction 'fjcvtzs' {ASIMD}.
kIdFmadd_v, //!< Instruction 'fmadd' {ASIMD}.
kIdFmax_v, //!< Instruction 'fmax' {ASIMD}.
kIdFmaxnm_v, //!< Instruction 'fmaxnm' {ASIMD}.
kIdFmaxnmp_v, //!< Instruction 'fmaxnmp' {ASIMD}.
kIdFmaxnmv_v, //!< Instruction 'fmaxnmv' {ASIMD}.
kIdFmaxp_v, //!< Instruction 'fmaxp' {ASIMD}.
kIdFmaxv_v, //!< Instruction 'fmaxv' {ASIMD}.
kIdFmin_v, //!< Instruction 'fmin' {ASIMD}.
kIdFminnm_v, //!< Instruction 'fminnm' {ASIMD}.
kIdFminnmp_v, //!< Instruction 'fminnmp' {ASIMD}.
kIdFminnmv_v, //!< Instruction 'fminnmv' {ASIMD}.
kIdFminp_v, //!< Instruction 'fminp' {ASIMD}.
kIdFminv_v, //!< Instruction 'fminv' {ASIMD}.
kIdFmla_v, //!< Instruction 'fmla' {ASIMD}.
kIdFmlal_v, //!< Instruction 'fmlal' {ASIMD}.
kIdFmlal2_v, //!< Instruction 'fmlal2' {ASIMD}.
kIdFmls_v, //!< Instruction 'fmls' {ASIMD}.
kIdFmlsl_v, //!< Instruction 'fmlsl' {ASIMD}.
kIdFmlsl2_v, //!< Instruction 'fmlsl2' {ASIMD}.
kIdFmov_v, //!< Instruction 'fmov' {ASIMD}.
kIdFmsub_v, //!< Instruction 'fmsub' {ASIMD}.
kIdFmul_v, //!< Instruction 'fmul' {ASIMD}.
kIdFmulx_v, //!< Instruction 'fmulx' {ASIMD}.
kIdFneg_v, //!< Instruction 'fneg' {ASIMD}.
kIdFnmadd_v, //!< Instruction 'fnmadd' {ASIMD}.
kIdFnmsub_v, //!< Instruction 'fnmsub' {ASIMD}.
kIdFnmul_v, //!< Instruction 'fnmul' {ASIMD}.
kIdFrecpe_v, //!< Instruction 'frecpe' {ASIMD}.
kIdFrecps_v, //!< Instruction 'frecps' {ASIMD}.
kIdFrecpx_v, //!< Instruction 'frecpx' {ASIMD}.
kIdFrint32x_v, //!< Instruction 'frint32x' {ASIMD}.
kIdFrint32z_v, //!< Instruction 'frint32z' {ASIMD}.
kIdFrint64x_v, //!< Instruction 'frint64x' {ASIMD}.
kIdFrint64z_v, //!< Instruction 'frint64z' {ASIMD}.
kIdFrinta_v, //!< Instruction 'frinta' {ASIMD}.
kIdFrinti_v, //!< Instruction 'frinti' {ASIMD}.
kIdFrintm_v, //!< Instruction 'frintm' {ASIMD}.
kIdFrintn_v, //!< Instruction 'frintn' {ASIMD}.
kIdFrintp_v, //!< Instruction 'frintp' {ASIMD}.
kIdFrintx_v, //!< Instruction 'frintx' {ASIMD}.
kIdFrintz_v, //!< Instruction 'frintz' {ASIMD}.
kIdFrsqrte_v, //!< Instruction 'frsqrte' {ASIMD}.
kIdFrsqrts_v, //!< Instruction 'frsqrts' {ASIMD}.
kIdFsqrt_v, //!< Instruction 'fsqrt' {ASIMD}.
kIdFsub_v, //!< Instruction 'fsub' {ASIMD}.
kIdIns_v, //!< Instruction 'ins' {ASIMD}.
kIdLd1_v, //!< Instruction 'ld1' {ASIMD}.
kIdLd1r_v, //!< Instruction 'ld1r' {ASIMD}.
kIdLd2_v, //!< Instruction 'ld2' {ASIMD}.
kIdLd2r_v, //!< Instruction 'ld2r' {ASIMD}.
kIdLd3_v, //!< Instruction 'ld3' {ASIMD}.
kIdLd3r_v, //!< Instruction 'ld3r' {ASIMD}.
kIdLd4_v, //!< Instruction 'ld4' {ASIMD}.
kIdLd4r_v, //!< Instruction 'ld4r' {ASIMD}.
kIdLdnp_v, //!< Instruction 'ldnp' {ASIMD}.
kIdLdp_v, //!< Instruction 'ldp' {ASIMD}.
kIdLdr_v, //!< Instruction 'ldr' {ASIMD}.
kIdLdur_v, //!< Instruction 'ldur' {ASIMD}.
kIdMla_v, //!< Instruction 'mla' {ASIMD}.
kIdMls_v, //!< Instruction 'mls' {ASIMD}.
kIdMov_v, //!< Instruction 'mov' {ASIMD}.
kIdMovi_v, //!< Instruction 'movi' {ASIMD}.
kIdMul_v, //!< Instruction 'mul' {ASIMD}.
kIdMvn_v, //!< Instruction 'mvn' {ASIMD}.
kIdMvni_v, //!< Instruction 'mvni' {ASIMD}.
kIdNeg_v, //!< Instruction 'neg' {ASIMD}.
kIdNot_v, //!< Instruction 'not' {ASIMD}.
kIdOrn_v, //!< Instruction 'orn' {ASIMD}.
kIdOrr_v, //!< Instruction 'orr' {ASIMD}.
kIdPmul_v, //!< Instruction 'pmul' {ASIMD}.
kIdPmull_v, //!< Instruction 'pmull' {ASIMD}.
kIdPmull2_v, //!< Instruction 'pmull2' {ASIMD}.
kIdRaddhn_v, //!< Instruction 'raddhn' {ASIMD}.
kIdRaddhn2_v, //!< Instruction 'raddhn2' {ASIMD}.
kIdRax1_v, //!< Instruction 'rax1' {ASIMD}.
kIdRbit_v, //!< Instruction 'rbit' {ASIMD}.
kIdRev16_v, //!< Instruction 'rev16' {ASIMD}.
kIdRev32_v, //!< Instruction 'rev32' {ASIMD}.
kIdRev64_v, //!< Instruction 'rev64' {ASIMD}.
kIdRshrn_v, //!< Instruction 'rshrn' {ASIMD}.
kIdRshrn2_v, //!< Instruction 'rshrn2' {ASIMD}.
kIdRsubhn_v, //!< Instruction 'rsubhn' {ASIMD}.
kIdRsubhn2_v, //!< Instruction 'rsubhn2' {ASIMD}.
kIdSaba_v, //!< Instruction 'saba' {ASIMD}.
kIdSabal_v, //!< Instruction 'sabal' {ASIMD}.
kIdSabal2_v, //!< Instruction 'sabal2' {ASIMD}.
kIdSabd_v, //!< Instruction 'sabd' {ASIMD}.
kIdSabdl_v, //!< Instruction 'sabdl' {ASIMD}.
kIdSabdl2_v, //!< Instruction 'sabdl2' {ASIMD}.
kIdSadalp_v, //!< Instruction 'sadalp' {ASIMD}.
kIdSaddl_v, //!< Instruction 'saddl' {ASIMD}.
kIdSaddl2_v, //!< Instruction 'saddl2' {ASIMD}.
kIdSaddlp_v, //!< Instruction 'saddlp' {ASIMD}.
kIdSaddlv_v, //!< Instruction 'saddlv' {ASIMD}.
kIdSaddw_v, //!< Instruction 'saddw' {ASIMD}.
kIdSaddw2_v, //!< Instruction 'saddw2' {ASIMD}.
kIdScvtf_v, //!< Instruction 'scvtf' {ASIMD}.
kIdSdot_v, //!< Instruction 'sdot' {ASIMD}.
kIdSha1c_v, //!< Instruction 'sha1c' {ASIMD}.
kIdSha1h_v, //!< Instruction 'sha1h' {ASIMD}.
kIdSha1m_v, //!< Instruction 'sha1m' {ASIMD}.
kIdSha1p_v, //!< Instruction 'sha1p' {ASIMD}.
kIdSha1su0_v, //!< Instruction 'sha1su0' {ASIMD}.
kIdSha1su1_v, //!< Instruction 'sha1su1' {ASIMD}.
kIdSha256h_v, //!< Instruction 'sha256h' {ASIMD}.
kIdSha256h2_v, //!< Instruction 'sha256h2' {ASIMD}.
kIdSha256su0_v, //!< Instruction 'sha256su0' {ASIMD}.
kIdSha256su1_v, //!< Instruction 'sha256su1' {ASIMD}.
kIdSha512h_v, //!< Instruction 'sha512h' {ASIMD}.
kIdSha512h2_v, //!< Instruction 'sha512h2' {ASIMD}.
kIdSha512su0_v, //!< Instruction 'sha512su0' {ASIMD}.
kIdSha512su1_v, //!< Instruction 'sha512su1' {ASIMD}.
kIdShadd_v, //!< Instruction 'shadd' {ASIMD}.
kIdShl_v, //!< Instruction 'shl' {ASIMD}.
kIdShll_v, //!< Instruction 'shll' {ASIMD}.
kIdShll2_v, //!< Instruction 'shll2' {ASIMD}.
kIdShrn_v, //!< Instruction 'shrn' {ASIMD}.
kIdShrn2_v, //!< Instruction 'shrn2' {ASIMD}.
kIdShsub_v, //!< Instruction 'shsub' {ASIMD}.
kIdSli_v, //!< Instruction 'sli' {ASIMD}.
kIdSm3partw1_v, //!< Instruction 'sm3partw1' {ASIMD}.
kIdSm3partw2_v, //!< Instruction 'sm3partw2' {ASIMD}.
kIdSm3ss1_v, //!< Instruction 'sm3ss1' {ASIMD}.
kIdSm3tt1a_v, //!< Instruction 'sm3tt1a' {ASIMD}.
kIdSm3tt1b_v, //!< Instruction 'sm3tt1b' {ASIMD}.
kIdSm3tt2a_v, //!< Instruction 'sm3tt2a' {ASIMD}.
kIdSm3tt2b_v, //!< Instruction 'sm3tt2b' {ASIMD}.
kIdSm4e_v, //!< Instruction 'sm4e' {ASIMD}.
kIdSm4ekey_v, //!< Instruction 'sm4ekey' {ASIMD}.
kIdSmax_v, //!< Instruction 'smax' {ASIMD}.
kIdSmaxp_v, //!< Instruction 'smaxp' {ASIMD}.
kIdSmaxv_v, //!< Instruction 'smaxv' {ASIMD}.
kIdSmin_v, //!< Instruction 'smin' {ASIMD}.
kIdSminp_v, //!< Instruction 'sminp' {ASIMD}.
kIdSminv_v, //!< Instruction 'sminv' {ASIMD}.
kIdSmlal_v, //!< Instruction 'smlal' {ASIMD}.
kIdSmlal2_v, //!< Instruction 'smlal2' {ASIMD}.
kIdSmlsl_v, //!< Instruction 'smlsl' {ASIMD}.
kIdSmlsl2_v, //!< Instruction 'smlsl2' {ASIMD}.
kIdSmmla_v, //!< Instruction 'smmla' {ASIMD}.
kIdSmov_v, //!< Instruction 'smov' {ASIMD}.
kIdSmull_v, //!< Instruction 'smull' {ASIMD}.
kIdSmull2_v, //!< Instruction 'smull2' {ASIMD}.
kIdSqabs_v, //!< Instruction 'sqabs' {ASIMD}.
kIdSqadd_v, //!< Instruction 'sqadd' {ASIMD}.
kIdSqdmlal_v, //!< Instruction 'sqdmlal' {ASIMD}.
kIdSqdmlal2_v, //!< Instruction 'sqdmlal2' {ASIMD}.
kIdSqdmlsl_v, //!< Instruction 'sqdmlsl' {ASIMD}.
kIdSqdmlsl2_v, //!< Instruction 'sqdmlsl2' {ASIMD}.
kIdSqdmulh_v, //!< Instruction 'sqdmulh' {ASIMD}.
kIdSqdmull_v, //!< Instruction 'sqdmull' {ASIMD}.
kIdSqdmull2_v, //!< Instruction 'sqdmull2' {ASIMD}.
kIdSqneg_v, //!< Instruction 'sqneg' {ASIMD}.
kIdSqrdmlah_v, //!< Instruction 'sqrdmlah' {ASIMD}.
kIdSqrdmlsh_v, //!< Instruction 'sqrdmlsh' {ASIMD}.
kIdSqrdmulh_v, //!< Instruction 'sqrdmulh' {ASIMD}.
kIdSqrshl_v, //!< Instruction 'sqrshl' {ASIMD}.
kIdSqrshrn_v, //!< Instruction 'sqrshrn' {ASIMD}.
kIdSqrshrn2_v, //!< Instruction 'sqrshrn2' {ASIMD}.
kIdSqrshrun_v, //!< Instruction 'sqrshrun' {ASIMD}.
kIdSqrshrun2_v, //!< Instruction 'sqrshrun2' {ASIMD}.
kIdSqshl_v, //!< Instruction 'sqshl' {ASIMD}.
kIdSqshlu_v, //!< Instruction 'sqshlu' {ASIMD}.
kIdSqshrn_v, //!< Instruction 'sqshrn' {ASIMD}.
kIdSqshrn2_v, //!< Instruction 'sqshrn2' {ASIMD}.
kIdSqshrun_v, //!< Instruction 'sqshrun' {ASIMD}.
kIdSqshrun2_v, //!< Instruction 'sqshrun2' {ASIMD}.
kIdSqsub_v, //!< Instruction 'sqsub' {ASIMD}.
kIdSqxtn_v, //!< Instruction 'sqxtn' {ASIMD}.
kIdSqxtn2_v, //!< Instruction 'sqxtn2' {ASIMD}.
kIdSqxtun_v, //!< Instruction 'sqxtun' {ASIMD}.
kIdSqxtun2_v, //!< Instruction 'sqxtun2' {ASIMD}.
kIdSrhadd_v, //!< Instruction 'srhadd' {ASIMD}.
kIdSri_v, //!< Instruction 'sri' {ASIMD}.
kIdSrshl_v, //!< Instruction 'srshl' {ASIMD}.
kIdSrshr_v, //!< Instruction 'srshr' {ASIMD}.
kIdSrsra_v, //!< Instruction 'srsra' {ASIMD}.
kIdSshl_v, //!< Instruction 'sshl' {ASIMD}.
kIdSshll_v, //!< Instruction 'sshll' {ASIMD}.
kIdSshll2_v, //!< Instruction 'sshll2' {ASIMD}.
kIdSshr_v, //!< Instruction 'sshr' {ASIMD}.
kIdSsra_v, //!< Instruction 'ssra' {ASIMD}.
kIdSsubl_v, //!< Instruction 'ssubl' {ASIMD}.
kIdSsubl2_v, //!< Instruction 'ssubl2' {ASIMD}.
kIdSsubw_v, //!< Instruction 'ssubw' {ASIMD}.
kIdSsubw2_v, //!< Instruction 'ssubw2' {ASIMD}.
kIdSt1_v, //!< Instruction 'st1' {ASIMD}.
kIdSt2_v, //!< Instruction 'st2' {ASIMD}.
kIdSt3_v, //!< Instruction 'st3' {ASIMD}.
kIdSt4_v, //!< Instruction 'st4' {ASIMD}.
kIdStnp_v, //!< Instruction 'stnp' {ASIMD}.
kIdStp_v, //!< Instruction 'stp' {ASIMD}.
kIdStr_v, //!< Instruction 'str' {ASIMD}.
kIdStur_v, //!< Instruction 'stur' {ASIMD}.
kIdSub_v, //!< Instruction 'sub' {ASIMD}.
kIdSubhn_v, //!< Instruction 'subhn' {ASIMD}.
kIdSubhn2_v, //!< Instruction 'subhn2' {ASIMD}.
kIdSudot_v, //!< Instruction 'sudot' {ASIMD}.
kIdSuqadd_v, //!< Instruction 'suqadd' {ASIMD}.
kIdSxtl_v, //!< Instruction 'sxtl' {ASIMD}.
kIdSxtl2_v, //!< Instruction 'sxtl2' {ASIMD}.
kIdTbl_v, //!< Instruction 'tbl' {ASIMD}.
kIdTbx_v, //!< Instruction 'tbx' {ASIMD}.
kIdTrn1_v, //!< Instruction 'trn1' {ASIMD}.
kIdTrn2_v, //!< Instruction 'trn2' {ASIMD}.
kIdUaba_v, //!< Instruction 'uaba' {ASIMD}.
kIdUabal_v, //!< Instruction 'uabal' {ASIMD}.
kIdUabal2_v, //!< Instruction 'uabal2' {ASIMD}.
kIdUabd_v, //!< Instruction 'uabd' {ASIMD}.
kIdUabdl_v, //!< Instruction 'uabdl' {ASIMD}.
kIdUabdl2_v, //!< Instruction 'uabdl2' {ASIMD}.
kIdUadalp_v, //!< Instruction 'uadalp' {ASIMD}.
kIdUaddl_v, //!< Instruction 'uaddl' {ASIMD}.
kIdUaddl2_v, //!< Instruction 'uaddl2' {ASIMD}.
kIdUaddlp_v, //!< Instruction 'uaddlp' {ASIMD}.
kIdUaddlv_v, //!< Instruction 'uaddlv' {ASIMD}.
kIdUaddw_v, //!< Instruction 'uaddw' {ASIMD}.
kIdUaddw2_v, //!< Instruction 'uaddw2' {ASIMD}.
kIdUcvtf_v, //!< Instruction 'ucvtf' {ASIMD}.
kIdUdot_v, //!< Instruction 'udot' {ASIMD}.
kIdUhadd_v, //!< Instruction 'uhadd' {ASIMD}.
kIdUhsub_v, //!< Instruction 'uhsub' {ASIMD}.
kIdUmax_v, //!< Instruction 'umax' {ASIMD}.
kIdUmaxp_v, //!< Instruction 'umaxp' {ASIMD}.
kIdUmaxv_v, //!< Instruction 'umaxv' {ASIMD}.
kIdUmin_v, //!< Instruction 'umin' {ASIMD}.
kIdUminp_v, //!< Instruction 'uminp' {ASIMD}.
kIdUminv_v, //!< Instruction 'uminv' {ASIMD}.
kIdUmlal_v, //!< Instruction 'umlal' {ASIMD}.
kIdUmlal2_v, //!< Instruction 'umlal2' {ASIMD}.
kIdUmlsl_v, //!< Instruction 'umlsl' {ASIMD}.
kIdUmlsl2_v, //!< Instruction 'umlsl2' {ASIMD}.
kIdUmmla_v, //!< Instruction 'ummla' {ASIMD}.
kIdUmov_v, //!< Instruction 'umov' {ASIMD}.
kIdUmull_v, //!< Instruction 'umull' {ASIMD}.
kIdUmull2_v, //!< Instruction 'umull2' {ASIMD}.
kIdUqadd_v, //!< Instruction 'uqadd' {ASIMD}.
kIdUqrshl_v, //!< Instruction 'uqrshl' {ASIMD}.
kIdUqrshrn_v, //!< Instruction 'uqrshrn' {ASIMD}.
kIdUqrshrn2_v, //!< Instruction 'uqrshrn2' {ASIMD}.
kIdUqshl_v, //!< Instruction 'uqshl' {ASIMD}.
kIdUqshrn_v, //!< Instruction 'uqshrn' {ASIMD}.
kIdUqshrn2_v, //!< Instruction 'uqshrn2' {ASIMD}.
kIdUqsub_v, //!< Instruction 'uqsub' {ASIMD}.
kIdUqxtn_v, //!< Instruction 'uqxtn' {ASIMD}.
kIdUqxtn2_v, //!< Instruction 'uqxtn2' {ASIMD}.
kIdUrecpe_v, //!< Instruction 'urecpe' {ASIMD}.
kIdUrhadd_v, //!< Instruction 'urhadd' {ASIMD}.
kIdUrshl_v, //!< Instruction 'urshl' {ASIMD}.
kIdUrshr_v, //!< Instruction 'urshr' {ASIMD}.
kIdUrsqrte_v, //!< Instruction 'ursqrte' {ASIMD}.
kIdUrsra_v, //!< Instruction 'ursra' {ASIMD}.
kIdUsdot_v, //!< Instruction 'usdot' {ASIMD}.
kIdUshl_v, //!< Instruction 'ushl' {ASIMD}.
kIdUshll_v, //!< Instruction 'ushll' {ASIMD}.
kIdUshll2_v, //!< Instruction 'ushll2' {ASIMD}.
kIdUshr_v, //!< Instruction 'ushr' {ASIMD}.
kIdUsmmla_v, //!< Instruction 'usmmla' {ASIMD}.
kIdUsqadd_v, //!< Instruction 'usqadd' {ASIMD}.
kIdUsra_v, //!< Instruction 'usra' {ASIMD}.
kIdUsubl_v, //!< Instruction 'usubl' {ASIMD}.
kIdUsubl2_v, //!< Instruction 'usubl2' {ASIMD}.
kIdUsubw_v, //!< Instruction 'usubw' {ASIMD}.
kIdUsubw2_v, //!< Instruction 'usubw2' {ASIMD}.
kIdUxtl_v, //!< Instruction 'uxtl' {ASIMD}.
kIdUxtl2_v, //!< Instruction 'uxtl2' {ASIMD}.
kIdUzp1_v, //!< Instruction 'uzp1' {ASIMD}.
kIdUzp2_v, //!< Instruction 'uzp2' {ASIMD}.
kIdXar_v, //!< Instruction 'xar' {ASIMD}.
kIdXtn_v, //!< Instruction 'xtn' {ASIMD}.
kIdXtn2_v, //!< Instruction 'xtn2' {ASIMD}.
kIdZip1_v, //!< Instruction 'zip1' {ASIMD}.
kIdZip2_v, //!< Instruction 'zip2' {ASIMD}.
_kIdCount
// ${InstId:End}
};
//! Tests whether the `instId` is defined (counts also Inst::kIdNone, which must be zero).
static inline bool isDefinedId(InstId instId) noexcept { return (instId & uint32_t(InstIdParts::kRealId)) < _kIdCount; }
};
namespace Predicate {
//! Address translate options (AT).
namespace AT {
static inline constexpr uint32_t encode(uint32_t op1, uint32_t cRn, uint32_t cRm, uint32_t op2) noexcept {
return (op1 << 11) | (cRn << 7) | (cRm << 3) | (op2 << 0);
}
enum Value : uint32_t {
kS1E1R = encode(0b000, 0b0111, 0b1000, 0b000),
kS1E2R = encode(0b100, 0b0111, 0b1000, 0b000),
kS1E3R = encode(0b110, 0b0111, 0b1000, 0b000),
kS1E1W = encode(0b000, 0b0111, 0b1000, 0b001),
kS1E2W = encode(0b100, 0b0111, 0b1000, 0b001),
kS1E3W = encode(0b110, 0b0111, 0b1000, 0b001),
kS1E0R = encode(0b000, 0b0111, 0b1000, 0b010),
kS1E0W = encode(0b000, 0b0111, 0b1000, 0b011),
kS12E1R = encode(0b100, 0b0111, 0b1000, 0b100),
kS12E1W = encode(0b100, 0b0111, 0b1000, 0b101),
kS12E0R = encode(0b100, 0b0111, 0b1000, 0b110),
kS12E0W = encode(0b100, 0b0111, 0b1000, 0b111),
kS1E1RP = encode(0b000, 0b0111, 0b1001, 0b000),
kS1E1WP = encode(0b000, 0b0111, 0b1001, 0b001)
};
}
//! Data barrier options (DMB/DSB).
namespace DB {
//! Data barrier immediate values.
enum Value : uint32_t {
//! Waits only for loads to complete, and only applies to the outer shareable domain.
kOSHLD = 0x01u,
//! Waits only for stores to complete, and only applies to the outer shareable domain.
kOSHST = 0x02u,
//! Only applies to the outer shareable domain.
kOSH = 0x03u,
//! Waits only for loads to complete and only applies out to the point of unification.
kNSHLD = 0x05u,
//! Waits only for stores to complete and only applies out to the point of unification.
kNSHST = 0x06u,
//! Only applies out to the point of unification.
kNSH = 0x07u,
//! Waits only for loads to complete, and only applies to the inner shareable domain.
kISHLD = 0x09u,
//! Waits only for stores to complete, and only applies to the inner shareable domain.
kISHST = 0x0Au,
//! Only applies to the inner shareable domain.
kISH = 0x0Bu,
//! Waits only for loads to complete.
kLD = 0x0Du,
//! Waits only for stores to complete.
kST = 0x0Eu,
//! Full system memory barrier operation.
kSY = 0x0Fu
};
}
//! Data cache maintenance options.
namespace DC {
static inline constexpr uint32_t encode(uint32_t op1, uint32_t cRn, uint32_t cRm, uint32_t op2) noexcept {
return (op1 << 11) | (cRn << 7) | (cRm << 3) | (op2 << 0);
}
//! Data cache maintenance immediate values.
enum Value : uint32_t {
kZVA = encode(0b011, 0b0111, 0b0100, 0b001),
kIVAC = encode(0b000, 0b0111, 0b0110, 0b001),
kISW = encode(0b000, 0b0111, 0b0110, 0b010),
kCVAC = encode(0b011, 0b0111, 0b1010, 0b001),
kCSW = encode(0b000, 0b0111, 0b1010, 0b010),
kCVAU = encode(0b011, 0b0111, 0b1011, 0b001),
kCIVAC = encode(0b011, 0b0111, 0b1110, 0b001),
kCISW = encode(0b000, 0b0111, 0b1110, 0b010),
kCVAP = encode(0b011, 0b0111, 0b1100, 0b001),
kCVADP = encode(0b011, 0b0111, 0b1101, 0b001),
kIGVAC = encode(0b000, 0b0111, 0b0110, 0b011),
kIGSW = encode(0b000, 0b0111, 0b0110, 0b100),
kCGSW = encode(0b000, 0b0111, 0b1010, 0b100),
kCIGSW = encode(0b000, 0b0111, 0b1110, 0b100),
kCGVAC = encode(0b011, 0b0111, 0b1010, 0b011),
kCGVAP = encode(0b011, 0b0111, 0b1100, 0b011),
kCGVADP = encode(0b011, 0b0111, 0b1101, 0b011),
kCIGVAC = encode(0b011, 0b0111, 0b1110, 0b011),
kGVA = encode(0b011, 0b0111, 0b0100, 0b011),
kIGDVAC = encode(0b000, 0b0111, 0b0110, 0b101),
kIGDSW = encode(0b000, 0b0111, 0b0110, 0b110),
kCGDSW = encode(0b000, 0b0111, 0b1010, 0b110),
kCIGDSW = encode(0b000, 0b0111, 0b1110, 0b110),
kCGDVAC = encode(0b011, 0b0111, 0b1010, 0b101),
kCGDVAP = encode(0b011, 0b0111, 0b1100, 0b101),
kCGDVADP = encode(0b011, 0b0111, 0b1101, 0b101),
kCIGDVAC = encode(0b011, 0b0111, 0b1110, 0b101),
kGZVA = encode(0b011, 0b0111, 0b0100, 0b100)
};
}
//! Instruction cache maintenance options.
namespace IC {
static inline constexpr uint32_t encode(uint32_t op1, uint32_t cRn, uint32_t cRm, uint32_t op2) noexcept {
return (op1 << 11) | (cRn << 7) | (cRm << 3) | (op2 << 0);
}
//! Instruction cache maintenance immediate values.
enum Value : uint32_t {
kIALLUIS = encode(0b000, 0b0111, 0b0001, 0b000),
kIALLU = encode(0b000, 0b0111, 0b0101, 0b000),
kIVAU = encode(0b011, 0b0111, 0b0101, 0b001)
};
}
//! Instruction-fetch barrier options.
namespace ISB {
//! Instruction-fetch barrier immediate values.
enum Value : uint32_t {
kSY = 0xF
};
}
//! Prefetch options.
namespace PRFOp {
//! Prefetch immediate values.
enum Value : uint32_t {
kPLDL1KEEP = 0x00,
kPLDL1STRM = 0x01,
kPLDL2KEEP = 0x02,
kPLDL2STRM = 0x03,
kPLDL3KEEP = 0x04,
kPLDL3STRM = 0x05,
kPLIL1KEEP = 0x08,
kPLIL1STRM = 0x09,
kPLIL2KEEP = 0x0A,
kPLIL2STRM = 0x0B,
kPLIL3KEEP = 0x0C,
kPLIL3STRM = 0x0D,
kPSTL1KEEP = 0x10,
kPSTL1STRM = 0x11,
kPSTL2KEEP = 0x12,
kPSTL2STRM = 0x13,
kPSTL3KEEP = 0x14,
kPSTL3STRM = 0x15
};
}
//! PSB instruction options.
namespace PSB {
//! PSB immediate values.
enum Value : uint32_t {
kCSYNC = 0x11u
};
}
namespace TLBI {
static inline constexpr uint32_t encode(uint32_t op1, uint32_t cRn, uint32_t cRm, uint32_t op2) noexcept {
return (op1 << 11) | (cRn << 7) | (cRm << 3) | (op2 << 0);
}
enum Value : uint32_t {
kIPAS2E1IS = encode(0b100, 0b1000, 0b0000, 0b001),
kIPAS2LE1IS = encode(0b100, 0b1000, 0b0000, 0b101),
kVMALLE1IS = encode(0b000, 0b1000, 0b0011, 0b000),
kALLE2IS = encode(0b100, 0b1000, 0b0011, 0b000),
kALLE3IS = encode(0b110, 0b1000, 0b0011, 0b000),
kVAE1IS = encode(0b000, 0b1000, 0b0011, 0b001),
kVAE2IS = encode(0b100, 0b1000, 0b0011, 0b001),
kVAE3IS = encode(0b110, 0b1000, 0b0011, 0b001),
kASIDE1IS = encode(0b000, 0b1000, 0b0011, 0b010),
kVAAE1IS = encode(0b000, 0b1000, 0b0011, 0b011),
kALLE1IS = encode(0b100, 0b1000, 0b0011, 0b100),
kVALE1IS = encode(0b000, 0b1000, 0b0011, 0b101),
kVALE2IS = encode(0b100, 0b1000, 0b0011, 0b101),
kVALE3IS = encode(0b110, 0b1000, 0b0011, 0b101),
kVMALLS12E1IS = encode(0b100, 0b1000, 0b0011, 0b110),
kVAALE1IS = encode(0b000, 0b1000, 0b0011, 0b111),
kIPAS2E1 = encode(0b100, 0b1000, 0b0100, 0b001),
kIPAS2LE1 = encode(0b100, 0b1000, 0b0100, 0b101),
kVMALLE1 = encode(0b000, 0b1000, 0b0111, 0b000),
kALLE2 = encode(0b100, 0b1000, 0b0111, 0b000),
kALLE3 = encode(0b110, 0b1000, 0b0111, 0b000),
kVAE1 = encode(0b000, 0b1000, 0b0111, 0b001),
kVAE2 = encode(0b100, 0b1000, 0b0111, 0b001),
kVAE3 = encode(0b110, 0b1000, 0b0111, 0b001),
kASIDE1 = encode(0b000, 0b1000, 0b0111, 0b010),
kVAAE1 = encode(0b000, 0b1000, 0b0111, 0b011),
kALLE1 = encode(0b100, 0b1000, 0b0111, 0b100),
kVALE1 = encode(0b000, 0b1000, 0b0111, 0b101),
kVALE2 = encode(0b100, 0b1000, 0b0111, 0b101),
kVALE3 = encode(0b110, 0b1000, 0b0111, 0b101),
kVMALLS12E1 = encode(0b100, 0b1000, 0b0111, 0b110),
kVAALE1 = encode(0b000, 0b1000, 0b0111, 0b111),
kVMALLE1OS = encode(0b000, 0b1000, 0b0001, 0b000),
kVAE1OS = encode(0b000, 0b1000, 0b0001, 0b001),
kASIDE1OS = encode(0b000, 0b1000, 0b0001, 0b010),
kVAAE1OS = encode(0b000, 0b1000, 0b0001, 0b011),
kVALE1OS = encode(0b000, 0b1000, 0b0001, 0b101),
kVAALE1OS = encode(0b000, 0b1000, 0b0001, 0b111),
kIPAS2E1OS = encode(0b100, 0b1000, 0b0100, 0b000),
kIPAS2LE1OS = encode(0b100, 0b1000, 0b0100, 0b100),
kVAE2OS = encode(0b100, 0b1000, 0b0001, 0b001),
kVALE2OS = encode(0b100, 0b1000, 0b0001, 0b101),
kVMALLS12E1OS = encode(0b100, 0b1000, 0b0001, 0b110),
kVAE3OS = encode(0b110, 0b1000, 0b0001, 0b001),
kVALE3OS = encode(0b110, 0b1000, 0b0001, 0b101),
kALLE2OS = encode(0b100, 0b1000, 0b0001, 0b000),
kALLE1OS = encode(0b100, 0b1000, 0b0001, 0b100),
kALLE3OS = encode(0b110, 0b1000, 0b0001, 0b000),
kRVAE1 = encode(0b000, 0b1000, 0b0110, 0b001),
kRVAAE1 = encode(0b000, 0b1000, 0b0110, 0b011),
kRVALE1 = encode(0b000, 0b1000, 0b0110, 0b101),
kRVAALE1 = encode(0b000, 0b1000, 0b0110, 0b111),
kRVAE1IS = encode(0b000, 0b1000, 0b0010, 0b001),
kRVAAE1IS = encode(0b000, 0b1000, 0b0010, 0b011),
kRVALE1IS = encode(0b000, 0b1000, 0b0010, 0b101),
kRVAALE1IS = encode(0b000, 0b1000, 0b0010, 0b111),
kRVAE1OS = encode(0b000, 0b1000, 0b0101, 0b001),
kRVAAE1OS = encode(0b000, 0b1000, 0b0101, 0b011),
kRVALE1OS = encode(0b000, 0b1000, 0b0101, 0b101),
kRVAALE1OS = encode(0b000, 0b1000, 0b0101, 0b111),
kRIPAS2E1IS = encode(0b100, 0b1000, 0b0000, 0b010),
kRIPAS2LE1IS = encode(0b100, 0b1000, 0b0000, 0b110),
kRIPAS2E1 = encode(0b100, 0b1000, 0b0100, 0b010),
kRIPAS2LE1 = encode(0b100, 0b1000, 0b0100, 0b110),
kRIPAS2E1OS = encode(0b100, 0b1000, 0b0100, 0b011),
kRIPAS2LE1OS = encode(0b100, 0b1000, 0b0100, 0b111),
kRVAE2 = encode(0b100, 0b1000, 0b0110, 0b001),
kRVALE2 = encode(0b100, 0b1000, 0b0110, 0b101),
kRVAE2IS = encode(0b100, 0b1000, 0b0010, 0b001),
kRVALE2IS = encode(0b100, 0b1000, 0b0010, 0b101),
kRVAE2OS = encode(0b100, 0b1000, 0b0101, 0b001),
kRVALE2OS = encode(0b100, 0b1000, 0b0101, 0b101),
kRVAE3 = encode(0b110, 0b1000, 0b0110, 0b001),
kRVALE3 = encode(0b110, 0b1000, 0b0110, 0b101),
kRVAE3IS = encode(0b110, 0b1000, 0b0010, 0b001),
kRVALE3IS = encode(0b110, 0b1000, 0b0010, 0b101),
kRVAE3OS = encode(0b110, 0b1000, 0b0101, 0b001),
kRVALE3OS = encode(0b110, 0b1000, 0b0101, 0b101),
};
}
//! Trace synchronization barrier options.
namespace TSB {
//! Trace synchronization immediate values.
enum Value : uint32_t {
kCSYNC = 0
};
}
//! Processor state access through MSR.
namespace PState {
//! Encodes a pstate from `op0` and `op1`.
static inline constexpr uint32_t encode(uint32_t op0, uint32_t op1) noexcept {
return (op0 << 3) | (op1 << 0);
}
//! Processor state access immediates.
enum Value : uint32_t {
kSPSel = encode(0b000, 0b101),
kDAIFSet = encode(0b011, 0b110),
kDAIFClr = encode(0b011, 0b111),
kPAN = encode(0b000, 0b100),
kUAO = encode(0b000, 0b011),
kDIT = encode(0b011, 0b010),
kSSBS = encode(0b011, 0b001),
kTCO = encode(0b011, 0b100)
};
};
//! System register identifiers and utilities (MSR/MRS).
namespace SysReg {
//! System register fields.
struct Fields {
uint8_t op0;
uint8_t op1;
uint8_t cRn;
uint8_t cRm;
uint8_t op2;
};
//! Encodes a system register from `op0`, `op1`, `cRn`, `cRm`, and `op2` fields.
static inline constexpr uint32_t encode(uint32_t op0, uint32_t op1, uint32_t cRn, uint32_t cRm, uint32_t op2) noexcept {
return (op0 << 14) | (op1 << 11) | (cRn << 7) | (cRm << 3) | (op2 << 0);
}
//! Encodes a system register from `fields`.
static inline constexpr uint32_t encode(const Fields& fields) noexcept {
return encode(fields.op0, fields.op1, fields.cRn, fields.cRm, fields.op2);
}
//! Decodes a system register to \ref Fields.
static inline constexpr Fields decode(uint32_t id) noexcept {
return Fields {
uint8_t((id >> 14) & 0x3u),
uint8_t((id >> 11) & 0x7u),
uint8_t((id >> 7) & 0xFu),
uint8_t((id >> 3) & 0xFu),
uint8_t((id >> 0) & 0x7u)
};
}
//! System register identifiers.
enum Id : uint32_t {
kACTLR_EL1 = encode(0b11, 0b000, 0b0001, 0b0000, 0b001), // RW
kACTLR_EL2 = encode(0b11, 0b100, 0b0001, 0b0000, 0b001), // RW
kACTLR_EL3 = encode(0b11, 0b110, 0b0001, 0b0000, 0b001), // RW
kAFSR0_EL1 = encode(0b11, 0b000, 0b0101, 0b0001, 0b000), // RW
kAFSR0_EL12 = encode(0b11, 0b101, 0b0101, 0b0001, 0b000), // RW
kAFSR0_EL2 = encode(0b11, 0b100, 0b0101, 0b0001, 0b000), // RW
kAFSR0_EL3 = encode(0b11, 0b110, 0b0101, 0b0001, 0b000), // RW
kAFSR1_EL1 = encode(0b11, 0b000, 0b0101, 0b0001, 0b001), // RW
kAFSR1_EL12 = encode(0b11, 0b101, 0b0101, 0b0001, 0b001), // RW
kAFSR1_EL2 = encode(0b11, 0b100, 0b0101, 0b0001, 0b001), // RW
kAFSR1_EL3 = encode(0b11, 0b110, 0b0101, 0b0001, 0b001), // RW
kAIDR_EL1 = encode(0b11, 0b001, 0b0000, 0b0000, 0b111), // RO
kAMAIR_EL1 = encode(0b11, 0b000, 0b1010, 0b0011, 0b000), // RW
kAMAIR_EL12 = encode(0b11, 0b101, 0b1010, 0b0011, 0b000), // RW
kAMAIR_EL2 = encode(0b11, 0b100, 0b1010, 0b0011, 0b000), // RW
kAMAIR_EL3 = encode(0b11, 0b110, 0b1010, 0b0011, 0b000), // RW
kAMCFGR_EL0 = encode(0b11, 0b011, 0b1101, 0b0010, 0b001), // RO
kAMCGCR_EL0 = encode(0b11, 0b011, 0b1101, 0b0010, 0b010), // RO
kAMCNTENCLR0_EL0 = encode(0b11, 0b011, 0b1101, 0b0010, 0b100), // RW
kAMCNTENCLR1_EL0 = encode(0b11, 0b011, 0b1101, 0b0011, 0b000), // RW
kAMCNTENSET0_EL0 = encode(0b11, 0b011, 0b1101, 0b0010, 0b101), // RW
kAMCNTENSET1_EL0 = encode(0b11, 0b011, 0b1101, 0b0011, 0b001), // RW
kAMCR_EL0 = encode(0b11, 0b011, 0b1101, 0b0010, 0b000), // RW
kAMEVCNTR00_EL0 = encode(0b11, 0b011, 0b1101, 0b0100, 0b000), // RW
kAMEVCNTR01_EL0 = encode(0b11, 0b011, 0b1101, 0b0100, 0b001), // RW
kAMEVCNTR02_EL0 = encode(0b11, 0b011, 0b1101, 0b0100, 0b010), // RW
kAMEVCNTR03_EL0 = encode(0b11, 0b011, 0b1101, 0b0100, 0b011), // RW
kAMEVCNTR10_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b000), // RW
kAMEVCNTR110_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b010), // RW
kAMEVCNTR111_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b011), // RW
kAMEVCNTR112_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b100), // RW
kAMEVCNTR113_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b101), // RW
kAMEVCNTR114_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b110), // RW
kAMEVCNTR115_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b111), // RW
kAMEVCNTR11_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b001), // RW
kAMEVCNTR12_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b010), // RW
kAMEVCNTR13_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b011), // RW
kAMEVCNTR14_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b100), // RW
kAMEVCNTR15_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b101), // RW
kAMEVCNTR16_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b110), // RW
kAMEVCNTR17_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b111), // RW
kAMEVCNTR18_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b000), // RW
kAMEVCNTR19_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b001), // RW
kAMEVTYPER00_EL0 = encode(0b11, 0b011, 0b1101, 0b0110, 0b000), // RO
kAMEVTYPER01_EL0 = encode(0b11, 0b011, 0b1101, 0b0110, 0b001), // RO
kAMEVTYPER02_EL0 = encode(0b11, 0b011, 0b1101, 0b0110, 0b010), // RO
kAMEVTYPER03_EL0 = encode(0b11, 0b011, 0b1101, 0b0110, 0b011), // RO
kAMEVTYPER10_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b000), // RW
kAMEVTYPER110_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b010), // RW
kAMEVTYPER111_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b011), // RW
kAMEVTYPER112_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b100), // RW
kAMEVTYPER113_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b101), // RW
kAMEVTYPER114_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b110), // RW
kAMEVTYPER115_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b111), // RW
kAMEVTYPER11_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b001), // RW
kAMEVTYPER12_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b010), // RW
kAMEVTYPER13_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b011), // RW
kAMEVTYPER14_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b100), // RW
kAMEVTYPER15_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b101), // RW
kAMEVTYPER16_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b110), // RW
kAMEVTYPER17_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b111), // RW
kAMEVTYPER18_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b000), // RW
kAMEVTYPER19_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b001), // RW
kAMUSERENR_EL0 = encode(0b11, 0b011, 0b1101, 0b0010, 0b011), // RW
kAPDAKeyHi_EL1 = encode(0b11, 0b000, 0b0010, 0b0010, 0b001), // RW
kAPDAKeyLo_EL1 = encode(0b11, 0b000, 0b0010, 0b0010, 0b000), // RW
kAPDBKeyHi_EL1 = encode(0b11, 0b000, 0b0010, 0b0010, 0b011), // RW
kAPDBKeyLo_EL1 = encode(0b11, 0b000, 0b0010, 0b0010, 0b010), // RW
kAPGAKeyHi_EL1 = encode(0b11, 0b000, 0b0010, 0b0011, 0b001), // RW
kAPGAKeyLo_EL1 = encode(0b11, 0b000, 0b0010, 0b0011, 0b000), // RW
kAPIAKeyHi_EL1 = encode(0b11, 0b000, 0b0010, 0b0001, 0b001), // RW
kAPIAKeyLo_EL1 = encode(0b11, 0b000, 0b0010, 0b0001, 0b000), // RW
kAPIBKeyHi_EL1 = encode(0b11, 0b000, 0b0010, 0b0001, 0b011), // RW
kAPIBKeyLo_EL1 = encode(0b11, 0b000, 0b0010, 0b0001, 0b010), // RW
kCCSIDR2_EL1 = encode(0b11, 0b001, 0b0000, 0b0000, 0b010), // RO
kCCSIDR_EL1 = encode(0b11, 0b001, 0b0000, 0b0000, 0b000), // RO
kCLIDR_EL1 = encode(0b11, 0b001, 0b0000, 0b0000, 0b001), // RO
kCNTFRQ_EL0 = encode(0b11, 0b011, 0b1110, 0b0000, 0b000), // RW
kCNTHCTL_EL2 = encode(0b11, 0b100, 0b1110, 0b0001, 0b000), // RW
kCNTHPS_CTL_EL2 = encode(0b11, 0b100, 0b1110, 0b0101, 0b001), // RW
kCNTHPS_CVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0101, 0b010), // RW
kCNTHPS_TVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0101, 0b000), // RW
kCNTHP_CTL_EL2 = encode(0b11, 0b100, 0b1110, 0b0010, 0b001), // RW
kCNTHP_CVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0010, 0b010), // RW
kCNTHP_TVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0010, 0b000), // RW
kCNTHVS_CTL_EL2 = encode(0b11, 0b100, 0b1110, 0b0100, 0b001), // RW
kCNTHVS_CVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0100, 0b010), // RW
kCNTHVS_TVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0100, 0b000), // RW
kCNTHV_CTL_EL2 = encode(0b11, 0b100, 0b1110, 0b0011, 0b001), // RW
kCNTHV_CVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0011, 0b010), // RW
kCNTHV_TVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0011, 0b000), // RW
kCNTISCALE_EL2 = encode(0b11, 0b100, 0b1110, 0b0000, 0b101), // RW
kCNTKCTL_EL1 = encode(0b11, 0b000, 0b1110, 0b0001, 0b000), // RW
kCNTKCTL_EL12 = encode(0b11, 0b101, 0b1110, 0b0001, 0b000), // RW
kCNTPCTSS_EL0 = encode(0b11, 0b011, 0b1110, 0b0000, 0b101), // RW
kCNTPCT_EL0 = encode(0b11, 0b011, 0b1110, 0b0000, 0b001), // RO
kCNTPOFF_EL2 = encode(0b11, 0b100, 0b1110, 0b0000, 0b110), // RW
kCNTPS_CTL_EL1 = encode(0b11, 0b111, 0b1110, 0b0010, 0b001), // RW
kCNTPS_CVAL_EL1 = encode(0b11, 0b111, 0b1110, 0b0010, 0b010), // RW
kCNTPS_TVAL_EL1 = encode(0b11, 0b111, 0b1110, 0b0010, 0b000), // RW
kCNTP_CTL_EL0 = encode(0b11, 0b011, 0b1110, 0b0010, 0b001), // RW
kCNTP_CTL_EL02 = encode(0b11, 0b101, 0b1110, 0b0010, 0b001), // RW
kCNTP_CVAL_EL0 = encode(0b11, 0b011, 0b1110, 0b0010, 0b010), // RW
kCNTP_CVAL_EL02 = encode(0b11, 0b101, 0b1110, 0b0010, 0b010), // RW
kCNTP_TVAL_EL0 = encode(0b11, 0b011, 0b1110, 0b0010, 0b000), // RW
kCNTP_TVAL_EL02 = encode(0b11, 0b101, 0b1110, 0b0010, 0b000), // RW
kCNTSCALE_EL2 = encode(0b11, 0b100, 0b1110, 0b0000, 0b100), // RW
kCNTVCTSS_EL0 = encode(0b11, 0b011, 0b1110, 0b0000, 0b110), // RW
kCNTVCT_EL0 = encode(0b11, 0b011, 0b1110, 0b0000, 0b010), // RO
kCNTVFRQ_EL2 = encode(0b11, 0b100, 0b1110, 0b0000, 0b111), // RW
kCNTVOFF_EL2 = encode(0b11, 0b100, 0b1110, 0b0000, 0b011), // RW
kCNTV_CTL_EL0 = encode(0b11, 0b011, 0b1110, 0b0011, 0b001), // RW
kCNTV_CTL_EL02 = encode(0b11, 0b101, 0b1110, 0b0011, 0b001), // RW
kCNTV_CVAL_EL0 = encode(0b11, 0b011, 0b1110, 0b0011, 0b010), // RW
kCNTV_CVAL_EL02 = encode(0b11, 0b101, 0b1110, 0b0011, 0b010), // RW
kCNTV_TVAL_EL0 = encode(0b11, 0b011, 0b1110, 0b0011, 0b000), // RW
kCNTV_TVAL_EL02 = encode(0b11, 0b101, 0b1110, 0b0011, 0b000), // RW
kCONTEXTIDR_EL1 = encode(0b11, 0b000, 0b1101, 0b0000, 0b001), // RW
kCONTEXTIDR_EL12 = encode(0b11, 0b101, 0b1101, 0b0000, 0b001), // RW
kCONTEXTIDR_EL2 = encode(0b11, 0b100, 0b1101, 0b0000, 0b001), // RW
kCPACR_EL1 = encode(0b11, 0b000, 0b0001, 0b0000, 0b010), // RW
kCPACR_EL12 = encode(0b11, 0b101, 0b0001, 0b0000, 0b010), // RW
kCPM_IOACC_CTL_EL3 = encode(0b11, 0b111, 0b1111, 0b0010, 0b000), // RW
kCPTR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b010), // RW
kCPTR_EL3 = encode(0b11, 0b110, 0b0001, 0b0001, 0b010), // RW
kCSSELR_EL1 = encode(0b11, 0b010, 0b0000, 0b0000, 0b000), // RW
kCTR_EL0 = encode(0b11, 0b011, 0b0000, 0b0000, 0b001), // RO
kCurrentEL = encode(0b11, 0b000, 0b0100, 0b0010, 0b010), // RO
kDACR32_EL2 = encode(0b11, 0b100, 0b0011, 0b0000, 0b000), // RW
kDAIF = encode(0b11, 0b011, 0b0100, 0b0010, 0b001), // RW
kDBGAUTHSTATUS_EL1 = encode(0b10, 0b000, 0b0111, 0b1110, 0b110), // RO
kDBGBCR0_EL1 = encode(0b10, 0b000, 0b0000, 0b0000, 0b101), // RW
kDBGBCR10_EL1 = encode(0b10, 0b000, 0b0000, 0b1010, 0b101), // RW
kDBGBCR11_EL1 = encode(0b10, 0b000, 0b0000, 0b1011, 0b101), // RW
kDBGBCR12_EL1 = encode(0b10, 0b000, 0b0000, 0b1100, 0b101), // RW
kDBGBCR13_EL1 = encode(0b10, 0b000, 0b0000, 0b1101, 0b101), // RW
kDBGBCR14_EL1 = encode(0b10, 0b000, 0b0000, 0b1110, 0b101), // RW
kDBGBCR15_EL1 = encode(0b10, 0b000, 0b0000, 0b1111, 0b101), // RW
kDBGBCR1_EL1 = encode(0b10, 0b000, 0b0000, 0b0001, 0b101), // RW
kDBGBCR2_EL1 = encode(0b10, 0b000, 0b0000, 0b0010, 0b101), // RW
kDBGBCR3_EL1 = encode(0b10, 0b000, 0b0000, 0b0011, 0b101), // RW
kDBGBCR4_EL1 = encode(0b10, 0b000, 0b0000, 0b0100, 0b101), // RW
kDBGBCR5_EL1 = encode(0b10, 0b000, 0b0000, 0b0101, 0b101), // RW
kDBGBCR6_EL1 = encode(0b10, 0b000, 0b0000, 0b0110, 0b101), // RW
kDBGBCR7_EL1 = encode(0b10, 0b000, 0b0000, 0b0111, 0b101), // RW
kDBGBCR8_EL1 = encode(0b10, 0b000, 0b0000, 0b1000, 0b101), // RW
kDBGBCR9_EL1 = encode(0b10, 0b000, 0b0000, 0b1001, 0b101), // RW
kDBGBVR0_EL1 = encode(0b10, 0b000, 0b0000, 0b0000, 0b100), // RW
kDBGBVR10_EL1 = encode(0b10, 0b000, 0b0000, 0b1010, 0b100), // RW
kDBGBVR11_EL1 = encode(0b10, 0b000, 0b0000, 0b1011, 0b100), // RW
kDBGBVR12_EL1 = encode(0b10, 0b000, 0b0000, 0b1100, 0b100), // RW
kDBGBVR13_EL1 = encode(0b10, 0b000, 0b0000, 0b1101, 0b100), // RW
kDBGBVR14_EL1 = encode(0b10, 0b000, 0b0000, 0b1110, 0b100), // RW
kDBGBVR15_EL1 = encode(0b10, 0b000, 0b0000, 0b1111, 0b100), // RW
kDBGBVR1_EL1 = encode(0b10, 0b000, 0b0000, 0b0001, 0b100), // RW
kDBGBVR2_EL1 = encode(0b10, 0b000, 0b0000, 0b0010, 0b100), // RW
kDBGBVR3_EL1 = encode(0b10, 0b000, 0b0000, 0b0011, 0b100), // RW
kDBGBVR4_EL1 = encode(0b10, 0b000, 0b0000, 0b0100, 0b100), // RW
kDBGBVR5_EL1 = encode(0b10, 0b000, 0b0000, 0b0101, 0b100), // RW
kDBGBVR6_EL1 = encode(0b10, 0b000, 0b0000, 0b0110, 0b100), // RW
kDBGBVR7_EL1 = encode(0b10, 0b000, 0b0000, 0b0111, 0b100), // RW
kDBGBVR8_EL1 = encode(0b10, 0b000, 0b0000, 0b1000, 0b100), // RW
kDBGBVR9_EL1 = encode(0b10, 0b000, 0b0000, 0b1001, 0b100), // RW
kDBGCLAIMCLR_EL1 = encode(0b10, 0b000, 0b0111, 0b1001, 0b110), // RW
kDBGCLAIMSET_EL1 = encode(0b10, 0b000, 0b0111, 0b1000, 0b110), // RW
kDBGDTRRX_EL0 = encode(0b10, 0b011, 0b0000, 0b0101, 0b000), // RO
kDBGDTRTX_EL0 = encode(0b10, 0b011, 0b0000, 0b0101, 0b000), // WO
kDBGDTR_EL0 = encode(0b10, 0b011, 0b0000, 0b0100, 0b000), // RW
kDBGPRCR_EL1 = encode(0b10, 0b000, 0b0001, 0b0100, 0b100), // RW
kDBGVCR32_EL2 = encode(0b10, 0b100, 0b0000, 0b0111, 0b000), // RW
kDBGWCR0_EL1 = encode(0b10, 0b000, 0b0000, 0b0000, 0b111), // RW
kDBGWCR10_EL1 = encode(0b10, 0b000, 0b0000, 0b1010, 0b111), // RW
kDBGWCR11_EL1 = encode(0b10, 0b000, 0b0000, 0b1011, 0b111), // RW
kDBGWCR12_EL1 = encode(0b10, 0b000, 0b0000, 0b1100, 0b111), // RW
kDBGWCR13_EL1 = encode(0b10, 0b000, 0b0000, 0b1101, 0b111), // RW
kDBGWCR14_EL1 = encode(0b10, 0b000, 0b0000, 0b1110, 0b111), // RW
kDBGWCR15_EL1 = encode(0b10, 0b000, 0b0000, 0b1111, 0b111), // RW
kDBGWCR1_EL1 = encode(0b10, 0b000, 0b0000, 0b0001, 0b111), // RW
kDBGWCR2_EL1 = encode(0b10, 0b000, 0b0000, 0b0010, 0b111), // RW
kDBGWCR3_EL1 = encode(0b10, 0b000, 0b0000, 0b0011, 0b111), // RW
kDBGWCR4_EL1 = encode(0b10, 0b000, 0b0000, 0b0100, 0b111), // RW
kDBGWCR5_EL1 = encode(0b10, 0b000, 0b0000, 0b0101, 0b111), // RW
kDBGWCR6_EL1 = encode(0b10, 0b000, 0b0000, 0b0110, 0b111), // RW
kDBGWCR7_EL1 = encode(0b10, 0b000, 0b0000, 0b0111, 0b111), // RW
kDBGWCR8_EL1 = encode(0b10, 0b000, 0b0000, 0b1000, 0b111), // RW
kDBGWCR9_EL1 = encode(0b10, 0b000, 0b0000, 0b1001, 0b111), // RW
kDBGWVR0_EL1 = encode(0b10, 0b000, 0b0000, 0b0000, 0b110), // RW
kDBGWVR10_EL1 = encode(0b10, 0b000, 0b0000, 0b1010, 0b110), // RW
kDBGWVR11_EL1 = encode(0b10, 0b000, 0b0000, 0b1011, 0b110), // RW
kDBGWVR12_EL1 = encode(0b10, 0b000, 0b0000, 0b1100, 0b110), // RW
kDBGWVR13_EL1 = encode(0b10, 0b000, 0b0000, 0b1101, 0b110), // RW
kDBGWVR14_EL1 = encode(0b10, 0b000, 0b0000, 0b1110, 0b110), // RW
kDBGWVR15_EL1 = encode(0b10, 0b000, 0b0000, 0b1111, 0b110), // RW
kDBGWVR1_EL1 = encode(0b10, 0b000, 0b0000, 0b0001, 0b110), // RW
kDBGWVR2_EL1 = encode(0b10, 0b000, 0b0000, 0b0010, 0b110), // RW
kDBGWVR3_EL1 = encode(0b10, 0b000, 0b0000, 0b0011, 0b110), // RW
kDBGWVR4_EL1 = encode(0b10, 0b000, 0b0000, 0b0100, 0b110), // RW
kDBGWVR5_EL1 = encode(0b10, 0b000, 0b0000, 0b0101, 0b110), // RW
kDBGWVR6_EL1 = encode(0b10, 0b000, 0b0000, 0b0110, 0b110), // RW
kDBGWVR7_EL1 = encode(0b10, 0b000, 0b0000, 0b0111, 0b110), // RW
kDBGWVR8_EL1 = encode(0b10, 0b000, 0b0000, 0b1000, 0b110), // RW
kDBGWVR9_EL1 = encode(0b10, 0b000, 0b0000, 0b1001, 0b110), // RW
kDCZID_EL0 = encode(0b11, 0b011, 0b0000, 0b0000, 0b111), // RO
kDISR_EL1 = encode(0b11, 0b000, 0b1100, 0b0001, 0b001), // RW
kDIT = encode(0b11, 0b011, 0b0100, 0b0010, 0b101), // RW
kDLR_EL0 = encode(0b11, 0b011, 0b0100, 0b0101, 0b001), // RW
kDSPSR_EL0 = encode(0b11, 0b011, 0b0100, 0b0101, 0b000), // RW
kELR_EL1 = encode(0b11, 0b000, 0b0100, 0b0000, 0b001), // RW
kELR_EL12 = encode(0b11, 0b101, 0b0100, 0b0000, 0b001), // RW
kELR_EL2 = encode(0b11, 0b100, 0b0100, 0b0000, 0b001), // RW
kELR_EL3 = encode(0b11, 0b110, 0b0100, 0b0000, 0b001), // RW
kERRIDR_EL1 = encode(0b11, 0b000, 0b0101, 0b0011, 0b000), // RO
kERRSELR_EL1 = encode(0b11, 0b000, 0b0101, 0b0011, 0b001), // RW
kERXADDR_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b011), // RW
kERXCTLR_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b001), // RW
kERXFR_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b000), // RO
kERXMISC0_EL1 = encode(0b11, 0b000, 0b0101, 0b0101, 0b000), // RW
kERXMISC1_EL1 = encode(0b11, 0b000, 0b0101, 0b0101, 0b001), // RW
kERXMISC2_EL1 = encode(0b11, 0b000, 0b0101, 0b0101, 0b010), // RW
kERXMISC3_EL1 = encode(0b11, 0b000, 0b0101, 0b0101, 0b011), // RW
kERXPFGCDN_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b110), // RW
kERXPFGCTL_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b101), // RW
kERXPFGF_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b100), // RO
kERXSTATUS_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b010), // RW
kESR_EL1 = encode(0b11, 0b000, 0b0101, 0b0010, 0b000), // RW
kESR_EL12 = encode(0b11, 0b101, 0b0101, 0b0010, 0b000), // RW
kESR_EL2 = encode(0b11, 0b100, 0b0101, 0b0010, 0b000), // RW
kESR_EL3 = encode(0b11, 0b110, 0b0101, 0b0010, 0b000), // RW
kFAR_EL1 = encode(0b11, 0b000, 0b0110, 0b0000, 0b000), // RW
kFAR_EL12 = encode(0b11, 0b101, 0b0110, 0b0000, 0b000), // RW
kFAR_EL2 = encode(0b11, 0b100, 0b0110, 0b0000, 0b000), // RW
kFAR_EL3 = encode(0b11, 0b110, 0b0110, 0b0000, 0b000), // RW
kFPCR = encode(0b11, 0b011, 0b0100, 0b0100, 0b000), // RW
kFPEXC32_EL2 = encode(0b11, 0b100, 0b0101, 0b0011, 0b000), // RW
kFPSR = encode(0b11, 0b011, 0b0100, 0b0100, 0b001), // RW
kGCR_EL1 = encode(0b11, 0b000, 0b0001, 0b0000, 0b110), // RW
kGMID_EL1 = encode(0b11, 0b001, 0b0000, 0b0000, 0b100), // RO
kHACR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b111), // RW
kHCR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b000), // RW
kHDFGRTR_EL2 = encode(0b11, 0b100, 0b0011, 0b0001, 0b100), // RW
kHDFGWTR_EL2 = encode(0b11, 0b100, 0b0011, 0b0001, 0b101), // RW
kHFGITR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b110), // RW
kHFGRTR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b100), // RW
kHFGWTR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b101), // RW
kHPFAR_EL2 = encode(0b11, 0b100, 0b0110, 0b0000, 0b100), // RW
kHSTR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b011), // RW
kICC_AP0R0_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b100), // RW
kICC_AP0R1_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b101), // RW
kICC_AP0R2_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b110), // RW
kICC_AP0R3_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b111), // RW
kICC_AP1R0_EL1 = encode(0b11, 0b000, 0b1100, 0b1001, 0b000), // RW
kICC_AP1R1_EL1 = encode(0b11, 0b000, 0b1100, 0b1001, 0b001), // RW
kICC_AP1R2_EL1 = encode(0b11, 0b000, 0b1100, 0b1001, 0b010), // RW
kICC_AP1R3_EL1 = encode(0b11, 0b000, 0b1100, 0b1001, 0b011), // RW
kICC_ASGI1R_EL1 = encode(0b11, 0b000, 0b1100, 0b1011, 0b110), // WO
kICC_BPR0_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b011), // RW
kICC_BPR1_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b011), // RW
kICC_CTLR_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b100), // RW
kICC_CTLR_EL3 = encode(0b11, 0b110, 0b1100, 0b1100, 0b100), // RW
kICC_DIR_EL1 = encode(0b11, 0b000, 0b1100, 0b1011, 0b001), // WO
kICC_EOIR0_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b001), // WO
kICC_EOIR1_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b001), // WO
kICC_HPPIR0_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b010), // RO
kICC_HPPIR1_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b010), // RO
kICC_IAR0_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b000), // RO
kICC_IAR1_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b000), // RO
kICC_IGRPEN0_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b110), // RW
kICC_IGRPEN1_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b111), // RW
kICC_IGRPEN1_EL3 = encode(0b11, 0b110, 0b1100, 0b1100, 0b111), // RW
kICC_PMR_EL1 = encode(0b11, 0b000, 0b0100, 0b0110, 0b000), // RW
kICC_RPR_EL1 = encode(0b11, 0b000, 0b1100, 0b1011, 0b011), // RO
kICC_SGI0R_EL1 = encode(0b11, 0b000, 0b1100, 0b1011, 0b111), // WO
kICC_SGI1R_EL1 = encode(0b11, 0b000, 0b1100, 0b1011, 0b101), // WO
kICC_SRE_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b101), // RW
kICC_SRE_EL2 = encode(0b11, 0b100, 0b1100, 0b1001, 0b101), // RW
kICC_SRE_EL3 = encode(0b11, 0b110, 0b1100, 0b1100, 0b101), // RW
kICH_AP0R0_EL2 = encode(0b11, 0b100, 0b1100, 0b1000, 0b000), // RW
kICH_AP0R1_EL2 = encode(0b11, 0b100, 0b1100, 0b1000, 0b001), // RW
kICH_AP0R2_EL2 = encode(0b11, 0b100, 0b1100, 0b1000, 0b010), // RW
kICH_AP0R3_EL2 = encode(0b11, 0b100, 0b1100, 0b1000, 0b011), // RW
kICH_AP1R0_EL2 = encode(0b11, 0b100, 0b1100, 0b1001, 0b000), // RW
kICH_AP1R1_EL2 = encode(0b11, 0b100, 0b1100, 0b1001, 0b001), // RW
kICH_AP1R2_EL2 = encode(0b11, 0b100, 0b1100, 0b1001, 0b010), // RW
kICH_AP1R3_EL2 = encode(0b11, 0b100, 0b1100, 0b1001, 0b011), // RW
kICH_EISR_EL2 = encode(0b11, 0b100, 0b1100, 0b1011, 0b011), // RO
kICH_ELRSR_EL2 = encode(0b11, 0b100, 0b1100, 0b1011, 0b101), // RO
kICH_HCR_EL2 = encode(0b11, 0b100, 0b1100, 0b1011, 0b000), // RW
kICH_LR0_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b000), // RW
kICH_LR10_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b010), // RW
kICH_LR11_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b011), // RW
kICH_LR12_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b100), // RW
kICH_LR13_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b101), // RW
kICH_LR14_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b110), // RW
kICH_LR15_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b111), // RW
kICH_LR1_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b001), // RW
kICH_LR2_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b010), // RW
kICH_LR3_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b011), // RW
kICH_LR4_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b100), // RW
kICH_LR5_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b101), // RW
kICH_LR6_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b110), // RW
kICH_LR7_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b111), // RW
kICH_LR8_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b000), // RW
kICH_LR9_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b001), // RW
kICH_MISR_EL2 = encode(0b11, 0b100, 0b1100, 0b1011, 0b010), // RO
kICH_VMCR_EL2 = encode(0b11, 0b100, 0b1100, 0b1011, 0b111), // RW
kICH_VTR_EL2 = encode(0b11, 0b100, 0b1100, 0b1011, 0b001), // RO
kID_AA64AFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0101, 0b100), // RO
kID_AA64AFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0101, 0b101), // RO
kID_AA64DFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0101, 0b000), // RO
kID_AA64DFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0101, 0b001), // RO
kID_AA64ISAR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0110, 0b000), // RO
kID_AA64ISAR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0110, 0b001), // RO
kID_AA64MMFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0111, 0b000), // RO
kID_AA64MMFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0111, 0b001), // RO
kID_AA64MMFR2_EL1 = encode(0b11, 0b000, 0b0000, 0b0111, 0b010), // RO
kID_AA64PFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0100, 0b000), // RO
kID_AA64PFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0100, 0b001), // RO
kID_AA64ZFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0100, 0b100), // RO
kID_AFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b011), // RO
kID_DFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b010), // RO
kID_ISAR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b000), // RO
kID_ISAR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b001), // RO
kID_ISAR2_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b010), // RO
kID_ISAR3_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b011), // RO
kID_ISAR4_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b100), // RO
kID_ISAR5_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b101), // RO
kID_ISAR6_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b111), // RO
kID_MMFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b100), // RO
kID_MMFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b101), // RO
kID_MMFR2_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b110), // RO
kID_MMFR3_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b111), // RO
kID_MMFR4_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b110), // RO
kID_MMFR5_EL1 = encode(0b11, 0b000, 0b0000, 0b0011, 0b110), // RO
kID_PFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b000), // RO
kID_PFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b001), // RO
kID_PFR2_EL1 = encode(0b11, 0b000, 0b0000, 0b0011, 0b100), // RO
kIFSR32_EL2 = encode(0b11, 0b100, 0b0101, 0b0000, 0b001), // RW
kISR_EL1 = encode(0b11, 0b000, 0b1100, 0b0001, 0b000), // RO
kLORC_EL1 = encode(0b11, 0b000, 0b1010, 0b0100, 0b011), // RW
kLOREA_EL1 = encode(0b11, 0b000, 0b1010, 0b0100, 0b001), // RW
kLORID_EL1 = encode(0b11, 0b000, 0b1010, 0b0100, 0b111), // RO
kLORN_EL1 = encode(0b11, 0b000, 0b1010, 0b0100, 0b010), // RW
kLORSA_EL1 = encode(0b11, 0b000, 0b1010, 0b0100, 0b000), // RW
kMAIR_EL1 = encode(0b11, 0b000, 0b1010, 0b0010, 0b000), // RW
kMAIR_EL12 = encode(0b11, 0b101, 0b1010, 0b0010, 0b000), // RW
kMAIR_EL2 = encode(0b11, 0b100, 0b1010, 0b0010, 0b000), // RW
kMAIR_EL3 = encode(0b11, 0b110, 0b1010, 0b0010, 0b000), // RW
kMDCCINT_EL1 = encode(0b10, 0b000, 0b0000, 0b0010, 0b000), // RW
kMDCCSR_EL0 = encode(0b10, 0b011, 0b0000, 0b0001, 0b000), // RO
kMDCR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b001), // RW
kMDCR_EL3 = encode(0b11, 0b110, 0b0001, 0b0011, 0b001), // RW
kMDRAR_EL1 = encode(0b10, 0b000, 0b0001, 0b0000, 0b000), // RO
kMDSCR_EL1 = encode(0b10, 0b000, 0b0000, 0b0010, 0b010), // RW
kMIDR_EL1 = encode(0b11, 0b000, 0b0000, 0b0000, 0b000), // RO
kMPAM0_EL1 = encode(0b11, 0b000, 0b1010, 0b0101, 0b001), // RW
kMPAM1_EL1 = encode(0b11, 0b000, 0b1010, 0b0101, 0b000), // RW
kMPAM1_EL12 = encode(0b11, 0b101, 0b1010, 0b0101, 0b000), // RW
kMPAM2_EL2 = encode(0b11, 0b100, 0b1010, 0b0101, 0b000), // RW
kMPAM3_EL3 = encode(0b11, 0b110, 0b1010, 0b0101, 0b000), // RW
kMPAMHCR_EL2 = encode(0b11, 0b100, 0b1010, 0b0100, 0b000), // RW
kMPAMIDR_EL1 = encode(0b11, 0b000, 0b1010, 0b0100, 0b100), // RO
kMPAMVPM0_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b000), // RW
kMPAMVPM1_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b001), // RW
kMPAMVPM2_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b010), // RW
kMPAMVPM3_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b011), // RW
kMPAMVPM4_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b100), // RW
kMPAMVPM5_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b101), // RW
kMPAMVPM6_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b110), // RW
kMPAMVPM7_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b111), // RW
kMPAMVPMV_EL2 = encode(0b11, 0b100, 0b1010, 0b0100, 0b001), // RW
kMPIDR_EL1 = encode(0b11, 0b000, 0b0000, 0b0000, 0b101), // RO
kMVFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0011, 0b000), // RO
kMVFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0011, 0b001), // RO
kMVFR2_EL1 = encode(0b11, 0b000, 0b0000, 0b0011, 0b010), // RO
kNZCV = encode(0b11, 0b011, 0b0100, 0b0010, 0b000), // RW
kOSDLR_EL1 = encode(0b10, 0b000, 0b0001, 0b0011, 0b100), // RW
kOSDTRRX_EL1 = encode(0b10, 0b000, 0b0000, 0b0000, 0b010), // RW
kOSDTRTX_EL1 = encode(0b10, 0b000, 0b0000, 0b0011, 0b010), // RW
kOSECCR_EL1 = encode(0b10, 0b000, 0b0000, 0b0110, 0b010), // RW
kOSLAR_EL1 = encode(0b10, 0b000, 0b0001, 0b0000, 0b100), // WO
kOSLSR_EL1 = encode(0b10, 0b000, 0b0001, 0b0001, 0b100), // RO
kPAN = encode(0b11, 0b000, 0b0100, 0b0010, 0b011), // RW
kPAR_EL1 = encode(0b11, 0b000, 0b0111, 0b0100, 0b000), // RW
kPMBIDR_EL1 = encode(0b11, 0b000, 0b1001, 0b1010, 0b111), // RO
kPMBLIMITR_EL1 = encode(0b11, 0b000, 0b1001, 0b1010, 0b000), // RW
kPMBPTR_EL1 = encode(0b11, 0b000, 0b1001, 0b1010, 0b001), // RW
kPMBSR_EL1 = encode(0b11, 0b000, 0b1001, 0b1010, 0b011), // RW
kPMCCFILTR_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b111), // RW
kPMCCNTR_EL0 = encode(0b11, 0b011, 0b1001, 0b1101, 0b000), // RW
kPMCEID0_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b110), // RO
kPMCEID1_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b111), // RO
kPMCNTENCLR_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b010), // RW
kPMCNTENSET_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b001), // RW
kPMCR_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b000), // RW
kPMEVCNTR0_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b000), // RW
kPMEVCNTR10_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b010), // RW
kPMEVCNTR11_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b011), // RW
kPMEVCNTR12_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b100), // RW
kPMEVCNTR13_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b101), // RW
kPMEVCNTR14_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b110), // RW
kPMEVCNTR15_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b111), // RW
kPMEVCNTR16_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b000), // RW
kPMEVCNTR17_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b001), // RW
kPMEVCNTR18_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b010), // RW
kPMEVCNTR19_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b011), // RW
kPMEVCNTR1_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b001), // RW
kPMEVCNTR20_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b100), // RW
kPMEVCNTR21_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b101), // RW
kPMEVCNTR22_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b110), // RW
kPMEVCNTR23_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b111), // RW
kPMEVCNTR24_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b000), // RW
kPMEVCNTR25_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b001), // RW
kPMEVCNTR26_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b010), // RW
kPMEVCNTR27_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b011), // RW
kPMEVCNTR28_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b100), // RW
kPMEVCNTR29_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b101), // RW
kPMEVCNTR2_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b010), // RW
kPMEVCNTR30_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b110), // RW
kPMEVCNTR3_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b011), // RW
kPMEVCNTR4_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b100), // RW
kPMEVCNTR5_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b101), // RW
kPMEVCNTR6_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b110), // RW
kPMEVCNTR7_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b111), // RW
kPMEVCNTR8_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b000), // RW
kPMEVCNTR9_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b001), // RW
kPMEVTYPER0_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b000), // RW
kPMEVTYPER10_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b010), // RW
kPMEVTYPER11_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b011), // RW
kPMEVTYPER12_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b100), // RW
kPMEVTYPER13_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b101), // RW
kPMEVTYPER14_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b110), // RW
kPMEVTYPER15_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b111), // RW
kPMEVTYPER16_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b000), // RW
kPMEVTYPER17_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b001), // RW
kPMEVTYPER18_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b010), // RW
kPMEVTYPER19_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b011), // RW
kPMEVTYPER1_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b001), // RW
kPMEVTYPER20_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b100), // RW
kPMEVTYPER21_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b101), // RW
kPMEVTYPER22_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b110), // RW
kPMEVTYPER23_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b111), // RW
kPMEVTYPER24_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b000), // RW
kPMEVTYPER25_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b001), // RW
kPMEVTYPER26_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b010), // RW
kPMEVTYPER27_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b011), // RW
kPMEVTYPER28_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b100), // RW
kPMEVTYPER29_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b101), // RW
kPMEVTYPER2_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b010), // RW
kPMEVTYPER30_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b110), // RW
kPMEVTYPER3_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b011), // RW
kPMEVTYPER4_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b100), // RW
kPMEVTYPER5_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b101), // RW
kPMEVTYPER6_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b110), // RW
kPMEVTYPER7_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b111), // RW
kPMEVTYPER8_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b000), // RW
kPMEVTYPER9_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b001), // RW
kPMINTENCLR_EL1 = encode(0b11, 0b000, 0b1001, 0b1110, 0b010), // RW
kPMINTENSET_EL1 = encode(0b11, 0b000, 0b1001, 0b1110, 0b001), // RW
kPMMIR_EL1 = encode(0b11, 0b000, 0b1001, 0b1110, 0b110), // RW
kPMOVSCLR_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b011), // RW
kPMOVSSET_EL0 = encode(0b11, 0b011, 0b1001, 0b1110, 0b011), // RW
kPMSCR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b000), // RW
kPMSCR_EL12 = encode(0b11, 0b101, 0b1001, 0b1001, 0b000), // RW
kPMSCR_EL2 = encode(0b11, 0b100, 0b1001, 0b1001, 0b000), // RW
kPMSELR_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b101), // RW
kPMSEVFR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b101), // RW
kPMSFCR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b100), // RW
kPMSICR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b010), // RW
kPMSIDR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b111), // RO
kPMSIRR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b011), // RW
kPMSLATFR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b110), // RW
kPMSWINC_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b100), // WO
kPMUSERENR_EL0 = encode(0b11, 0b011, 0b1001, 0b1110, 0b000), // RW
kPMXEVCNTR_EL0 = encode(0b11, 0b011, 0b1001, 0b1101, 0b010), // RW
kPMXEVTYPER_EL0 = encode(0b11, 0b011, 0b1001, 0b1101, 0b001), // RW
kREVIDR_EL1 = encode(0b11, 0b000, 0b0000, 0b0000, 0b110), // RO
kRGSR_EL1 = encode(0b11, 0b000, 0b0001, 0b0000, 0b101), // RW
kRMR_EL1 = encode(0b11, 0b000, 0b1100, 0b0000, 0b010), // RW
kRMR_EL2 = encode(0b11, 0b100, 0b1100, 0b0000, 0b010), // RW
kRMR_EL3 = encode(0b11, 0b110, 0b1100, 0b0000, 0b010), // RW
kRNDR = encode(0b11, 0b011, 0b0010, 0b0100, 0b000), // RO
kRNDRRS = encode(0b11, 0b011, 0b0010, 0b0100, 0b001), // RO
kRVBAR_EL1 = encode(0b11, 0b000, 0b1100, 0b0000, 0b001), // RO
kRVBAR_EL2 = encode(0b11, 0b100, 0b1100, 0b0000, 0b001), // RO
kRVBAR_EL3 = encode(0b11, 0b110, 0b1100, 0b0000, 0b001), // RO
kSCR_EL3 = encode(0b11, 0b110, 0b0001, 0b0001, 0b000), // RW
kSCTLR_EL1 = encode(0b11, 0b000, 0b0001, 0b0000, 0b000), // RW
kSCTLR_EL12 = encode(0b11, 0b101, 0b0001, 0b0000, 0b000), // RW
kSCTLR_EL2 = encode(0b11, 0b100, 0b0001, 0b0000, 0b000), // RW
kSCTLR_EL3 = encode(0b11, 0b110, 0b0001, 0b0000, 0b000), // RW
kSCXTNUM_EL0 = encode(0b11, 0b011, 0b1101, 0b0000, 0b111), // RW
kSCXTNUM_EL1 = encode(0b11, 0b000, 0b1101, 0b0000, 0b111), // RW
kSCXTNUM_EL12 = encode(0b11, 0b101, 0b1101, 0b0000, 0b111), // RW
kSCXTNUM_EL2 = encode(0b11, 0b100, 0b1101, 0b0000, 0b111), // RW
kSCXTNUM_EL3 = encode(0b11, 0b110, 0b1101, 0b0000, 0b111), // RW
kSDER32_EL2 = encode(0b11, 0b100, 0b0001, 0b0011, 0b001), // RW
kSDER32_EL3 = encode(0b11, 0b110, 0b0001, 0b0001, 0b001), // RW
kSPSR_EL1 = encode(0b11, 0b000, 0b0100, 0b0000, 0b000), // RW
kSPSR_EL12 = encode(0b11, 0b101, 0b0100, 0b0000, 0b000), // RW
kSPSR_EL2 = encode(0b11, 0b100, 0b0100, 0b0000, 0b000), // RW
kSPSR_EL3 = encode(0b11, 0b110, 0b0100, 0b0000, 0b000), // RW
kSPSR_abt = encode(0b11, 0b100, 0b0100, 0b0011, 0b001), // RW
kSPSR_fiq = encode(0b11, 0b100, 0b0100, 0b0011, 0b011), // RW
kSPSR_irq = encode(0b11, 0b100, 0b0100, 0b0011, 0b000), // RW
kSPSR_und = encode(0b11, 0b100, 0b0100, 0b0011, 0b010), // RW
kSPSel = encode(0b11, 0b000, 0b0100, 0b0010, 0b000), // RW
kSP_EL0 = encode(0b11, 0b000, 0b0100, 0b0001, 0b000), // RW
kSP_EL1 = encode(0b11, 0b100, 0b0100, 0b0001, 0b000), // RW
kSP_EL2 = encode(0b11, 0b110, 0b0100, 0b0001, 0b000), // RW
kSSBS = encode(0b11, 0b011, 0b0100, 0b0010, 0b110), // RW
kTCO = encode(0b11, 0b011, 0b0100, 0b0010, 0b111), // RW
kTCR_EL1 = encode(0b11, 0b000, 0b0010, 0b0000, 0b010), // RW
kTCR_EL12 = encode(0b11, 0b101, 0b0010, 0b0000, 0b010), // RW
kTCR_EL2 = encode(0b11, 0b100, 0b0010, 0b0000, 0b010), // RW
kTCR_EL3 = encode(0b11, 0b110, 0b0010, 0b0000, 0b010), // RW
kTEECR32_EL1 = encode(0b10, 0b010, 0b0000, 0b0000, 0b000), // RW
kTEEHBR32_EL1 = encode(0b10, 0b010, 0b0001, 0b0000, 0b000), // RW
kTFSRE0_EL1 = encode(0b11, 0b000, 0b0101, 0b0110, 0b001), // RW
kTFSR_EL1 = encode(0b11, 0b000, 0b0101, 0b0110, 0b000), // RW
kTFSR_EL12 = encode(0b11, 0b101, 0b0101, 0b0110, 0b000), // RW
kTFSR_EL2 = encode(0b11, 0b100, 0b0101, 0b0110, 0b000), // RW
kTFSR_EL3 = encode(0b11, 0b110, 0b0101, 0b0110, 0b000), // RW
kTPIDRRO_EL0 = encode(0b11, 0b011, 0b1101, 0b0000, 0b011), // RW
kTPIDR_EL0 = encode(0b11, 0b011, 0b1101, 0b0000, 0b010), // RW
kTPIDR_EL1 = encode(0b11, 0b000, 0b1101, 0b0000, 0b100), // RW
kTPIDR_EL2 = encode(0b11, 0b100, 0b1101, 0b0000, 0b010), // RW
kTPIDR_EL3 = encode(0b11, 0b110, 0b1101, 0b0000, 0b010), // RW
kTRBBASER_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b010), // RW
kTRBIDR_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b111), // RO
kTRBLIMITR_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b000), // RW
kTRBMAR_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b100), // RW
kTRBPTR_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b001), // RW
kTRBSR_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b011), // RW
kTRBTRG_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b110), // RW
kTRCACATR0 = encode(0b10, 0b001, 0b0010, 0b0000, 0b010), // RW
kTRCACATR1 = encode(0b10, 0b001, 0b0010, 0b0010, 0b010), // RW
kTRCACATR10 = encode(0b10, 0b001, 0b0010, 0b0100, 0b011), // RW
kTRCACATR11 = encode(0b10, 0b001, 0b0010, 0b0110, 0b011), // RW
kTRCACATR12 = encode(0b10, 0b001, 0b0010, 0b1000, 0b011), // RW
kTRCACATR13 = encode(0b10, 0b001, 0b0010, 0b1010, 0b011), // RW
kTRCACATR14 = encode(0b10, 0b001, 0b0010, 0b1100, 0b011), // RW
kTRCACATR15 = encode(0b10, 0b001, 0b0010, 0b1110, 0b011), // RW
kTRCACATR2 = encode(0b10, 0b001, 0b0010, 0b0100, 0b010), // RW
kTRCACATR3 = encode(0b10, 0b001, 0b0010, 0b0110, 0b010), // RW
kTRCACATR4 = encode(0b10, 0b001, 0b0010, 0b1000, 0b010), // RW
kTRCACATR5 = encode(0b10, 0b001, 0b0010, 0b1010, 0b010), // RW
kTRCACATR6 = encode(0b10, 0b001, 0b0010, 0b1100, 0b010), // RW
kTRCACATR7 = encode(0b10, 0b001, 0b0010, 0b1110, 0b010), // RW
kTRCACATR8 = encode(0b10, 0b001, 0b0010, 0b0000, 0b011), // RW
kTRCACATR9 = encode(0b10, 0b001, 0b0010, 0b0010, 0b011), // RW
kTRCACVR0 = encode(0b10, 0b001, 0b0010, 0b0000, 0b000), // RW
kTRCACVR1 = encode(0b10, 0b001, 0b0010, 0b0010, 0b000), // RW
kTRCACVR10 = encode(0b10, 0b001, 0b0010, 0b0100, 0b001), // RW
kTRCACVR11 = encode(0b10, 0b001, 0b0010, 0b0110, 0b001), // RW
kTRCACVR12 = encode(0b10, 0b001, 0b0010, 0b1000, 0b001), // RW
kTRCACVR13 = encode(0b10, 0b001, 0b0010, 0b1010, 0b001), // RW
kTRCACVR14 = encode(0b10, 0b001, 0b0010, 0b1100, 0b001), // RW
kTRCACVR15 = encode(0b10, 0b001, 0b0010, 0b1110, 0b001), // RW
kTRCACVR2 = encode(0b10, 0b001, 0b0010, 0b0100, 0b000), // RW
kTRCACVR3 = encode(0b10, 0b001, 0b0010, 0b0110, 0b000), // RW
kTRCACVR4 = encode(0b10, 0b001, 0b0010, 0b1000, 0b000), // RW
kTRCACVR5 = encode(0b10, 0b001, 0b0010, 0b1010, 0b000), // RW
kTRCACVR6 = encode(0b10, 0b001, 0b0010, 0b1100, 0b000), // RW
kTRCACVR7 = encode(0b10, 0b001, 0b0010, 0b1110, 0b000), // RW
kTRCACVR8 = encode(0b10, 0b001, 0b0010, 0b0000, 0b001), // RW
kTRCACVR9 = encode(0b10, 0b001, 0b0010, 0b0010, 0b001), // RW
kTRCAUTHSTATUS = encode(0b10, 0b001, 0b0111, 0b1110, 0b110), // RO
kTRCAUXCTLR = encode(0b10, 0b001, 0b0000, 0b0110, 0b000), // RW
kTRCBBCTLR = encode(0b10, 0b001, 0b0000, 0b1111, 0b000), // RW
kTRCCCCTLR = encode(0b10, 0b001, 0b0000, 0b1110, 0b000), // RW
kTRCCIDCCTLR0 = encode(0b10, 0b001, 0b0011, 0b0000, 0b010), // RW
kTRCCIDCCTLR1 = encode(0b10, 0b001, 0b0011, 0b0001, 0b010), // RW
kTRCCIDCVR0 = encode(0b10, 0b001, 0b0011, 0b0000, 0b000), // RW
kTRCCIDCVR1 = encode(0b10, 0b001, 0b0011, 0b0010, 0b000), // RW
kTRCCIDCVR2 = encode(0b10, 0b001, 0b0011, 0b0100, 0b000), // RW
kTRCCIDCVR3 = encode(0b10, 0b001, 0b0011, 0b0110, 0b000), // RW
kTRCCIDCVR4 = encode(0b10, 0b001, 0b0011, 0b1000, 0b000), // RW
kTRCCIDCVR5 = encode(0b10, 0b001, 0b0011, 0b1010, 0b000), // RW
kTRCCIDCVR6 = encode(0b10, 0b001, 0b0011, 0b1100, 0b000), // RW
kTRCCIDCVR7 = encode(0b10, 0b001, 0b0011, 0b1110, 0b000), // RW
kTRCCIDR0 = encode(0b10, 0b001, 0b0111, 0b1100, 0b111), // RO
kTRCCIDR1 = encode(0b10, 0b001, 0b0111, 0b1101, 0b111), // RO
kTRCCIDR2 = encode(0b10, 0b001, 0b0111, 0b1110, 0b111), // RO
kTRCCIDR3 = encode(0b10, 0b001, 0b0111, 0b1111, 0b111), // RO
kTRCCLAIMCLR = encode(0b10, 0b001, 0b0111, 0b1001, 0b110), // RW
kTRCCLAIMSET = encode(0b10, 0b001, 0b0111, 0b1000, 0b110), // RW
kTRCCNTCTLR0 = encode(0b10, 0b001, 0b0000, 0b0100, 0b101), // RW
kTRCCNTCTLR1 = encode(0b10, 0b001, 0b0000, 0b0101, 0b101), // RW
kTRCCNTCTLR2 = encode(0b10, 0b001, 0b0000, 0b0110, 0b101), // RW
kTRCCNTCTLR3 = encode(0b10, 0b001, 0b0000, 0b0111, 0b101), // RW
kTRCCNTRLDVR0 = encode(0b10, 0b001, 0b0000, 0b0000, 0b101), // RW
kTRCCNTRLDVR1 = encode(0b10, 0b001, 0b0000, 0b0001, 0b101), // RW
kTRCCNTRLDVR2 = encode(0b10, 0b001, 0b0000, 0b0010, 0b101), // RW
kTRCCNTRLDVR3 = encode(0b10, 0b001, 0b0000, 0b0011, 0b101), // RW
kTRCCNTVR0 = encode(0b10, 0b001, 0b0000, 0b1000, 0b101), // RW
kTRCCNTVR1 = encode(0b10, 0b001, 0b0000, 0b1001, 0b101), // RW
kTRCCNTVR2 = encode(0b10, 0b001, 0b0000, 0b1010, 0b101), // RW
kTRCCNTVR3 = encode(0b10, 0b001, 0b0000, 0b1011, 0b101), // RW
kTRCCONFIGR = encode(0b10, 0b001, 0b0000, 0b0100, 0b000), // RW
kTRCDEVAFF0 = encode(0b10, 0b001, 0b0111, 0b1010, 0b110), // RO
kTRCDEVAFF1 = encode(0b10, 0b001, 0b0111, 0b1011, 0b110), // RO
kTRCDEVARCH = encode(0b10, 0b001, 0b0111, 0b1111, 0b110), // RO
kTRCDEVID = encode(0b10, 0b001, 0b0111, 0b0010, 0b111), // RO
kTRCDEVTYPE = encode(0b10, 0b001, 0b0111, 0b0011, 0b111), // RO
kTRCDVCMR0 = encode(0b10, 0b001, 0b0010, 0b0000, 0b110), // RW
kTRCDVCMR1 = encode(0b10, 0b001, 0b0010, 0b0100, 0b110), // RW
kTRCDVCMR2 = encode(0b10, 0b001, 0b0010, 0b1000, 0b110), // RW
kTRCDVCMR3 = encode(0b10, 0b001, 0b0010, 0b1100, 0b110), // RW
kTRCDVCMR4 = encode(0b10, 0b001, 0b0010, 0b0000, 0b111), // RW
kTRCDVCMR5 = encode(0b10, 0b001, 0b0010, 0b0100, 0b111), // RW
kTRCDVCMR6 = encode(0b10, 0b001, 0b0010, 0b1000, 0b111), // RW
kTRCDVCMR7 = encode(0b10, 0b001, 0b0010, 0b1100, 0b111), // RW
kTRCDVCVR0 = encode(0b10, 0b001, 0b0010, 0b0000, 0b100), // RW
kTRCDVCVR1 = encode(0b10, 0b001, 0b0010, 0b0100, 0b100), // RW
kTRCDVCVR2 = encode(0b10, 0b001, 0b0010, 0b1000, 0b100), // RW
kTRCDVCVR3 = encode(0b10, 0b001, 0b0010, 0b1100, 0b100), // RW
kTRCDVCVR4 = encode(0b10, 0b001, 0b0010, 0b0000, 0b101), // RW
kTRCDVCVR5 = encode(0b10, 0b001, 0b0010, 0b0100, 0b101), // RW
kTRCDVCVR6 = encode(0b10, 0b001, 0b0010, 0b1000, 0b101), // RW
kTRCDVCVR7 = encode(0b10, 0b001, 0b0010, 0b1100, 0b101), // RW
kTRCEVENTCTL0R = encode(0b10, 0b001, 0b0000, 0b1000, 0b000), // RW
kTRCEVENTCTL1R = encode(0b10, 0b001, 0b0000, 0b1001, 0b000), // RW
kTRCEXTINSELR = encode(0b10, 0b001, 0b0000, 0b1000, 0b100), // RW
kTRCEXTINSELR0 = encode(0b10, 0b001, 0b0000, 0b1000, 0b100), // RW
kTRCEXTINSELR1 = encode(0b10, 0b001, 0b0000, 0b1001, 0b100), // RW
kTRCEXTINSELR2 = encode(0b10, 0b001, 0b0000, 0b1010, 0b100), // RW
kTRCEXTINSELR3 = encode(0b10, 0b001, 0b0000, 0b1011, 0b100), // RW
kTRCIDR0 = encode(0b10, 0b001, 0b0000, 0b1000, 0b111), // RO
kTRCIDR1 = encode(0b10, 0b001, 0b0000, 0b1001, 0b111), // RO
kTRCIDR10 = encode(0b10, 0b001, 0b0000, 0b0010, 0b110), // RO
kTRCIDR11 = encode(0b10, 0b001, 0b0000, 0b0011, 0b110), // RO
kTRCIDR12 = encode(0b10, 0b001, 0b0000, 0b0100, 0b110), // RO
kTRCIDR13 = encode(0b10, 0b001, 0b0000, 0b0101, 0b110), // RO
kTRCIDR2 = encode(0b10, 0b001, 0b0000, 0b1010, 0b111), // RO
kTRCIDR3 = encode(0b10, 0b001, 0b0000, 0b1011, 0b111), // RO
kTRCIDR4 = encode(0b10, 0b001, 0b0000, 0b1100, 0b111), // RO
kTRCIDR5 = encode(0b10, 0b001, 0b0000, 0b1101, 0b111), // RO
kTRCIDR6 = encode(0b10, 0b001, 0b0000, 0b1110, 0b111), // RO
kTRCIDR7 = encode(0b10, 0b001, 0b0000, 0b1111, 0b111), // RO
kTRCIDR8 = encode(0b10, 0b001, 0b0000, 0b0000, 0b110), // RO
kTRCIDR9 = encode(0b10, 0b001, 0b0000, 0b0001, 0b110), // RO
kTRCIMSPEC0 = encode(0b10, 0b001, 0b0000, 0b0000, 0b111), // RW
kTRCIMSPEC1 = encode(0b10, 0b001, 0b0000, 0b0001, 0b111), // RW
kTRCIMSPEC2 = encode(0b10, 0b001, 0b0000, 0b0010, 0b111), // RW
kTRCIMSPEC3 = encode(0b10, 0b001, 0b0000, 0b0011, 0b111), // RW
kTRCIMSPEC4 = encode(0b10, 0b001, 0b0000, 0b0100, 0b111), // RW
kTRCIMSPEC5 = encode(0b10, 0b001, 0b0000, 0b0101, 0b111), // RW
kTRCIMSPEC6 = encode(0b10, 0b001, 0b0000, 0b0110, 0b111), // RW
kTRCIMSPEC7 = encode(0b10, 0b001, 0b0000, 0b0111, 0b111), // RW
kTRCITCTRL = encode(0b10, 0b001, 0b0111, 0b0000, 0b100), // RW
kTRCLAR = encode(0b10, 0b001, 0b0111, 0b1100, 0b110), // WO
kTRCLSR = encode(0b10, 0b001, 0b0111, 0b1101, 0b110), // RO
kTRCOSLAR = encode(0b10, 0b001, 0b0001, 0b0000, 0b100), // WO
kTRCOSLSR = encode(0b10, 0b001, 0b0001, 0b0001, 0b100), // RO
kTRCPDCR = encode(0b10, 0b001, 0b0001, 0b0100, 0b100), // RW
kTRCPDSR = encode(0b10, 0b001, 0b0001, 0b0101, 0b100), // RO
kTRCPIDR0 = encode(0b10, 0b001, 0b0111, 0b1000, 0b111), // RO
kTRCPIDR1 = encode(0b10, 0b001, 0b0111, 0b1001, 0b111), // RO
kTRCPIDR2 = encode(0b10, 0b001, 0b0111, 0b1010, 0b111), // RO
kTRCPIDR3 = encode(0b10, 0b001, 0b0111, 0b1011, 0b111), // RO
kTRCPIDR4 = encode(0b10, 0b001, 0b0111, 0b0100, 0b111), // RO
kTRCPIDR5 = encode(0b10, 0b001, 0b0111, 0b0101, 0b111), // RO
kTRCPIDR6 = encode(0b10, 0b001, 0b0111, 0b0110, 0b111), // RO
kTRCPIDR7 = encode(0b10, 0b001, 0b0111, 0b0111, 0b111), // RO
kTRCPRGCTLR = encode(0b10, 0b001, 0b0000, 0b0001, 0b000), // RW
kTRCPROCSELR = encode(0b10, 0b001, 0b0000, 0b0010, 0b000), // RW
kTRCQCTLR = encode(0b10, 0b001, 0b0000, 0b0001, 0b001), // RW
kTRCRSCTLR10 = encode(0b10, 0b001, 0b0001, 0b1010, 0b000), // RW
kTRCRSCTLR11 = encode(0b10, 0b001, 0b0001, 0b1011, 0b000), // RW
kTRCRSCTLR12 = encode(0b10, 0b001, 0b0001, 0b1100, 0b000), // RW
kTRCRSCTLR13 = encode(0b10, 0b001, 0b0001, 0b1101, 0b000), // RW
kTRCRSCTLR14 = encode(0b10, 0b001, 0b0001, 0b1110, 0b000), // RW
kTRCRSCTLR15 = encode(0b10, 0b001, 0b0001, 0b1111, 0b000), // RW
kTRCRSCTLR16 = encode(0b10, 0b001, 0b0001, 0b0000, 0b001), // RW
kTRCRSCTLR17 = encode(0b10, 0b001, 0b0001, 0b0001, 0b001), // RW
kTRCRSCTLR18 = encode(0b10, 0b001, 0b0001, 0b0010, 0b001), // RW
kTRCRSCTLR19 = encode(0b10, 0b001, 0b0001, 0b0011, 0b001), // RW
kTRCRSCTLR2 = encode(0b10, 0b001, 0b0001, 0b0010, 0b000), // RW
kTRCRSCTLR20 = encode(0b10, 0b001, 0b0001, 0b0100, 0b001), // RW
kTRCRSCTLR21 = encode(0b10, 0b001, 0b0001, 0b0101, 0b001), // RW
kTRCRSCTLR22 = encode(0b10, 0b001, 0b0001, 0b0110, 0b001), // RW
kTRCRSCTLR23 = encode(0b10, 0b001, 0b0001, 0b0111, 0b001), // RW
kTRCRSCTLR24 = encode(0b10, 0b001, 0b0001, 0b1000, 0b001), // RW
kTRCRSCTLR25 = encode(0b10, 0b001, 0b0001, 0b1001, 0b001), // RW
kTRCRSCTLR26 = encode(0b10, 0b001, 0b0001, 0b1010, 0b001), // RW
kTRCRSCTLR27 = encode(0b10, 0b001, 0b0001, 0b1011, 0b001), // RW
kTRCRSCTLR28 = encode(0b10, 0b001, 0b0001, 0b1100, 0b001), // RW
kTRCRSCTLR29 = encode(0b10, 0b001, 0b0001, 0b1101, 0b001), // RW
kTRCRSCTLR3 = encode(0b10, 0b001, 0b0001, 0b0011, 0b000), // RW
kTRCRSCTLR30 = encode(0b10, 0b001, 0b0001, 0b1110, 0b001), // RW
kTRCRSCTLR31 = encode(0b10, 0b001, 0b0001, 0b1111, 0b001), // RW
kTRCRSCTLR4 = encode(0b10, 0b001, 0b0001, 0b0100, 0b000), // RW
kTRCRSCTLR5 = encode(0b10, 0b001, 0b0001, 0b0101, 0b000), // RW
kTRCRSCTLR6 = encode(0b10, 0b001, 0b0001, 0b0110, 0b000), // RW
kTRCRSCTLR7 = encode(0b10, 0b001, 0b0001, 0b0111, 0b000), // RW
kTRCRSCTLR8 = encode(0b10, 0b001, 0b0001, 0b1000, 0b000), // RW
kTRCRSCTLR9 = encode(0b10, 0b001, 0b0001, 0b1001, 0b000), // RW
kTRCRSR = encode(0b10, 0b001, 0b0000, 0b1010, 0b000), // RW
kTRCSEQEVR0 = encode(0b10, 0b001, 0b0000, 0b0000, 0b100), // RW
kTRCSEQEVR1 = encode(0b10, 0b001, 0b0000, 0b0001, 0b100), // RW
kTRCSEQEVR2 = encode(0b10, 0b001, 0b0000, 0b0010, 0b100), // RW
kTRCSEQRSTEVR = encode(0b10, 0b001, 0b0000, 0b0110, 0b100), // RW
kTRCSEQSTR = encode(0b10, 0b001, 0b0000, 0b0111, 0b100), // RW
kTRCSSCCR0 = encode(0b10, 0b001, 0b0001, 0b0000, 0b010), // RW
kTRCSSCCR1 = encode(0b10, 0b001, 0b0001, 0b0001, 0b010), // RW
kTRCSSCCR2 = encode(0b10, 0b001, 0b0001, 0b0010, 0b010), // RW
kTRCSSCCR3 = encode(0b10, 0b001, 0b0001, 0b0011, 0b010), // RW
kTRCSSCCR4 = encode(0b10, 0b001, 0b0001, 0b0100, 0b010), // RW
kTRCSSCCR5 = encode(0b10, 0b001, 0b0001, 0b0101, 0b010), // RW
kTRCSSCCR6 = encode(0b10, 0b001, 0b0001, 0b0110, 0b010), // RW
kTRCSSCCR7 = encode(0b10, 0b001, 0b0001, 0b0111, 0b010), // RW
kTRCSSCSR0 = encode(0b10, 0b001, 0b0001, 0b1000, 0b010), // RW
kTRCSSCSR1 = encode(0b10, 0b001, 0b0001, 0b1001, 0b010), // RW
kTRCSSCSR2 = encode(0b10, 0b001, 0b0001, 0b1010, 0b010), // RW
kTRCSSCSR3 = encode(0b10, 0b001, 0b0001, 0b1011, 0b010), // RW
kTRCSSCSR4 = encode(0b10, 0b001, 0b0001, 0b1100, 0b010), // RW
kTRCSSCSR5 = encode(0b10, 0b001, 0b0001, 0b1101, 0b010), // RW
kTRCSSCSR6 = encode(0b10, 0b001, 0b0001, 0b1110, 0b010), // RW
kTRCSSCSR7 = encode(0b10, 0b001, 0b0001, 0b1111, 0b010), // RW
kTRCSSPCICR0 = encode(0b10, 0b001, 0b0001, 0b0000, 0b011), // RW
kTRCSSPCICR1 = encode(0b10, 0b001, 0b0001, 0b0001, 0b011), // RW
kTRCSSPCICR2 = encode(0b10, 0b001, 0b0001, 0b0010, 0b011), // RW
kTRCSSPCICR3 = encode(0b10, 0b001, 0b0001, 0b0011, 0b011), // RW
kTRCSSPCICR4 = encode(0b10, 0b001, 0b0001, 0b0100, 0b011), // RW
kTRCSSPCICR5 = encode(0b10, 0b001, 0b0001, 0b0101, 0b011), // RW
kTRCSSPCICR6 = encode(0b10, 0b001, 0b0001, 0b0110, 0b011), // RW
kTRCSSPCICR7 = encode(0b10, 0b001, 0b0001, 0b0111, 0b011), // RW
kTRCSTALLCTLR = encode(0b10, 0b001, 0b0000, 0b1011, 0b000), // RW
kTRCSTATR = encode(0b10, 0b001, 0b0000, 0b0011, 0b000), // RO
kTRCSYNCPR = encode(0b10, 0b001, 0b0000, 0b1101, 0b000), // RW
kTRCTRACEIDR = encode(0b10, 0b001, 0b0000, 0b0000, 0b001), // RW
kTRCTSCTLR = encode(0b10, 0b001, 0b0000, 0b1100, 0b000), // RW
kTRCVDARCCTLR = encode(0b10, 0b001, 0b0000, 0b1010, 0b010), // RW
kTRCVDCTLR = encode(0b10, 0b001, 0b0000, 0b1000, 0b010), // RW
kTRCVDSACCTLR = encode(0b10, 0b001, 0b0000, 0b1001, 0b010), // RW
kTRCVICTLR = encode(0b10, 0b001, 0b0000, 0b0000, 0b010), // RW
kTRCVIIECTLR = encode(0b10, 0b001, 0b0000, 0b0001, 0b010), // RW
kTRCVIPCSSCTLR = encode(0b10, 0b001, 0b0000, 0b0011, 0b010), // RW
kTRCVISSCTLR = encode(0b10, 0b001, 0b0000, 0b0010, 0b010), // RW
kTRCVMIDCCTLR0 = encode(0b10, 0b001, 0b0011, 0b0010, 0b010), // RW
kTRCVMIDCCTLR1 = encode(0b10, 0b001, 0b0011, 0b0011, 0b010), // RW
kTRCVMIDCVR0 = encode(0b10, 0b001, 0b0011, 0b0000, 0b001), // RW
kTRCVMIDCVR1 = encode(0b10, 0b001, 0b0011, 0b0010, 0b001), // RW
kTRCVMIDCVR2 = encode(0b10, 0b001, 0b0011, 0b0100, 0b001), // RW
kTRCVMIDCVR3 = encode(0b10, 0b001, 0b0011, 0b0110, 0b001), // RW
kTRCVMIDCVR4 = encode(0b10, 0b001, 0b0011, 0b1000, 0b001), // RW
kTRCVMIDCVR5 = encode(0b10, 0b001, 0b0011, 0b1010, 0b001), // RW
kTRCVMIDCVR6 = encode(0b10, 0b001, 0b0011, 0b1100, 0b001), // RW
kTRCVMIDCVR7 = encode(0b10, 0b001, 0b0011, 0b1110, 0b001), // RW
kTRFCR_EL1 = encode(0b11, 0b000, 0b0001, 0b0010, 0b001), // RW
kTRFCR_EL12 = encode(0b11, 0b101, 0b0001, 0b0010, 0b001), // RW
kTRFCR_EL2 = encode(0b11, 0b100, 0b0001, 0b0010, 0b001), // RW
kTTBR0_EL1 = encode(0b11, 0b000, 0b0010, 0b0000, 0b000), // RW
kTTBR0_EL12 = encode(0b11, 0b101, 0b0010, 0b0000, 0b000), // RW
kTTBR0_EL2 = encode(0b11, 0b100, 0b0010, 0b0000, 0b000), // RW
kTTBR0_EL3 = encode(0b11, 0b110, 0b0010, 0b0000, 0b000), // RW
kTTBR1_EL1 = encode(0b11, 0b000, 0b0010, 0b0000, 0b001), // RW
kTTBR1_EL12 = encode(0b11, 0b101, 0b0010, 0b0000, 0b001), // RW
kTTBR1_EL2 = encode(0b11, 0b100, 0b0010, 0b0000, 0b001), // RW
kUAO = encode(0b11, 0b000, 0b0100, 0b0010, 0b100), // RW
kVBAR_EL1 = encode(0b11, 0b000, 0b1100, 0b0000, 0b000), // RW
kVBAR_EL12 = encode(0b11, 0b101, 0b1100, 0b0000, 0b000), // RW
kVBAR_EL2 = encode(0b11, 0b100, 0b1100, 0b0000, 0b000), // RW
kVBAR_EL3 = encode(0b11, 0b110, 0b1100, 0b0000, 0b000), // RW
kVDISR_EL2 = encode(0b11, 0b100, 0b1100, 0b0001, 0b001), // RW
kVMPIDR_EL2 = encode(0b11, 0b100, 0b0000, 0b0000, 0b101), // RW
kVNCR_EL2 = encode(0b11, 0b100, 0b0010, 0b0010, 0b000), // RW
kVPIDR_EL2 = encode(0b11, 0b100, 0b0000, 0b0000, 0b000), // RW
kVSESR_EL2 = encode(0b11, 0b100, 0b0101, 0b0010, 0b011), // RW
kVSTCR_EL2 = encode(0b11, 0b100, 0b0010, 0b0110, 0b010), // RW
kVSTTBR_EL2 = encode(0b11, 0b100, 0b0010, 0b0110, 0b000), // RW
kVTCR_EL2 = encode(0b11, 0b100, 0b0010, 0b0001, 0b010), // RW
kVTTBR_EL2 = encode(0b11, 0b100, 0b0010, 0b0001, 0b000), // RW
kZCR_EL1 = encode(0b11, 0b000, 0b0001, 0b0010, 0b000), // RW
kZCR_EL12 = encode(0b11, 0b101, 0b0001, 0b0010, 0b000), // RW
kZCR_EL2 = encode(0b11, 0b100, 0b0001, 0b0010, 0b000), // RW
kZCR_EL3 = encode(0b11, 0b110, 0b0001, 0b0010, 0b000) // RW
};
};
} // {Predicate}
//! \}
ASMJIT_END_SUB_NAMESPACE
#endif // ASMJIT_ARM_A64GLOBALS_H_INCLUDED