--- GNU AArch64 vocabulary for Lx
-- @module vocabulary_gnu_aarch64

-- Sources:
-- https://gnu.googlesource.com/binutils-gdb/+/1686e21559a7812ebbc05f57372cc30880768bf7/opcodes/aarch64-tbl.h
-- https://gnu.googlesource.com/binutils-gdb/+/1686e21559a7812ebbc05f57372cc30880768bf7/gas/config/tc-aarch64.c
-- https://gnu.googlesource.com/binutils-gdb/+/1686e21559a7812ebbc05f57372cc30880768bf7/opcodes/aarch64-opc.c
-- https://gnu.googlesource.com/binutils-gdb/+/1686e21559a7812ebbc05f57372cc30880768bf7/opcodes/aarch64-sys-regs.def

local instructions = {
	"abs",
	"adc",
	"adclb",
	"adclt",
	"adcs",
	"add",
	"addg",
	"addha",
	"addhn",
	"addhn2",
	"addhnb",
	"addhnt",
	"addp",
	"addpt",
	"addqp",
	"addqv",
	"adds",
	"addspl",
	"addsubp",
	"addsvl",
	"addv",
	"addva",
	"adr",
	"adrp",
	"aesd",
	"aesdimc",
	"aese",
	"aesemc",
	"aesimc",
	"aesmc",
	"and",
	"andqv",
	"ands",
	"asr",
	"asrv",
	"at",
	"autda",
	"autdb",
	"autdza",
	"autdzb",
	"autia",
	"autia1716",
	"autiasp",
	"autiaz",
	"autib",
	"autib1716",
	"autibsp",
	"autibz",
	"autiza",
	"autizb",
	"axflag",
	"b",
	"b.al",
	"b.any",
	"b.cc",
	"b.cs",
	"b.eq",
	"b.first",
	"b.ge",
	"b.gt",
	"b.hi",
	"b.hs",
	"b.last",
	"b.le",
	"b.lo",
	"b.ls",
	"b.lt",
	"b.mi",
	"b.ne",
	"b.nfrst",
	"b.nlast",
	"b.none",
	"b.nv",
	"b.pl",
	"b.plast",
	"b.pmore",
	"b.tcont",
	"b.tstop",
	"b.ul",
	"b.vc",
	"b.vs",
	"bc.al",
	"bc.any",
	"bc.cc",
	"bc.cs",
	"bc.eq",
	"bc.first",
	"bc.ge",
	"bc.gt",
	"bc.hi",
	"bc.hs",
	"bc.last",
	"bc.le",
	"bc.lo",
	"bc.ls",
	"bc.lt",
	"bc.mi",
	"bc.ne",
	"bc.nfrst",
	"bc.nlast",
	"bc.none",
	"bc.nv",
	"bc.pl",
	"bc.plast",
	"bc.pmore",
	"bc.tcont",
	"bc.tstop",
	"bc.ul",
	"bc.vc",
	"bc.vs",
	"bcax",
	"bcc",
	"bcs",
	"bdep",
	"beq",
	"bext",
	"bf1cvt",
	"bf1cvtl",
	"bf1cvtl2",
	"bf1cvtlt",
	"bf2cvt",
	"bf2cvtl",
	"bf2cvtl2",
	"bf2cvtlt",
	"bfadd",
	"bfc",
	"bfclamp",
	"bfcvt",
	"bfcvtn",
	"bfcvtn2",
	"bfcvtnt",
	"bfdot",
	"bfi",
	"bfm",
	"bfmax",
	"bfmaxnm",
	"bfmin",
	"bfminnm",
	"bfmla",
	"bfmlal",
	"bfmlalb",
	"bfmlalt",
	"bfmls",
	"bfmlsl",
	"bfmlslb",
	"bfmlslt",
	"bfmmla",
	"bfmop4a",
	"bfmop4s",
	"bfmopa",
	"bfmops",
	"bfmul",
	"bfscale",
	"bfsub",
	"bftmopa",
	"bfvdot",
	"bfxil",
	"bge",
	"bgrp",
	"bgt",
	"bhi",
	"bhs",
	"bic",
	"bics",
	"bif",
	"bit",
	"bl",
	"ble",
	"blo",
	"blr",
	"blraa",
	"blraaz",
	"blrab",
	"blrabz",
	"bls",
	"blt",
	"bmi",
	"bmopa",
	"bmops",
	"bne",
	"bpl",
	"br",
	"braa",
	"braaz",
	"brab",
	"brabz",
	"brb",
	"brk",
	"bsl",
	"bsl1n",
	"bsl2n",
	"bti",
	"bvc",
	"bvs",
	"cadd",
	"cbbeq",
	"cbbge",
	"cbbgt",
	"cbbhi",
	"cbbhs",
	"cbble",
	"cbblo",
	"cbbls",
	"cbblt",
	"cbbne",
	"cbeq",
	"cbge",
	"cbgt",
	"cbheq",
	"cbhge",
	"cbhgt",
	"cbhhi",
	"cbhhs",
	"cbhi",
	"cbhle",
	"cbhlo",
	"cbhls",
	"cbhlt",
	"cbhne",
	"cbhs",
	"cble",
	"cblo",
	"cbls",
	"cblt",
	"cbne",
	"cbnz",
	"cbz",
	"ccmn",
	"ccmp",
	"cdot",
	"cfinv",
	"cfp",
	"chkfeat",
	"cinc",
	"cinv",
	"clearbhb",
	"clrbhb",
	"clrex",
	"cls",
	"clz",
	"cmeq",
	"cmge",
	"cmgt",
	"cmhi",
	"cmhs",
	"cmla",
	"cmle",
	"cmlt",
	"cmn",
	"cmp",
	"cmpp",
	"cmtst",
	"cneg",
	"cnot",
	"cnt",
	"cntp",
	"compact",
	"cosp",
	"cpp",
	"cpye",
	"cpyen",
	"cpyern",
	"cpyert",
	"cpyertn",
	"cpyertrn",
	"cpyertwn",
	"cpyet",
	"cpyetn",
	"cpyetrn",
	"cpyetwn",
	"cpyewn",
	"cpyewt",
	"cpyewtn",
	"cpyewtrn",
	"cpyewtwn",
	"cpyfe",
	"cpyfen",
	"cpyfern",
	"cpyfert",
	"cpyfertn",
	"cpyfertrn",
	"cpyfertwn",
	"cpyfet",
	"cpyfetn",
	"cpyfetrn",
	"cpyfetwn",
	"cpyfewn",
	"cpyfewt",
	"cpyfewtn",
	"cpyfewtrn",
	"cpyfewtwn",
	"cpyfm",
	"cpyfmn",
	"cpyfmrn",
	"cpyfmrt",
	"cpyfmrtn",
	"cpyfmrtrn",
	"cpyfmrtwn",
	"cpyfmt",
	"cpyfmtn",
	"cpyfmtrn",
	"cpyfmtwn",
	"cpyfmwn",
	"cpyfmwt",
	"cpyfmwtn",
	"cpyfmwtrn",
	"cpyfmwtwn",
	"cpyfp",
	"cpyfpn",
	"cpyfprn",
	"cpyfprt",
	"cpyfprtn",
	"cpyfprtrn",
	"cpyfprtwn",
	"cpyfpt",
	"cpyfptn",
	"cpyfptrn",
	"cpyfptwn",
	"cpyfpwn",
	"cpyfpwt",
	"cpyfpwtn",
	"cpyfpwtrn",
	"cpyfpwtwn",
	"cpym",
	"cpymn",
	"cpymrn",
	"cpymrt",
	"cpymrtn",
	"cpymrtrn",
	"cpymrtwn",
	"cpymt",
	"cpymtn",
	"cpymtrn",
	"cpymtwn",
	"cpymwn",
	"cpymwt",
	"cpymwtn",
	"cpymwtrn",
	"cpymwtwn",
	"cpyp",
	"cpypn",
	"cpyprn",
	"cpyprt",
	"cpyprtn",
	"cpyprtrn",
	"cpyprtwn",
	"cpypt",
	"cpyptn",
	"cpyptrn",
	"cpyptwn",
	"cpypwn",
	"cpypwt",
	"cpypwtn",
	"cpypwtrn",
	"cpypwtwn",
	"csdb",
	"csel",
	"cset",
	"csetm",
	"csinc",
	"csinv",
	"csneg",
	"ctz",
	"dc",
	"dcps1",
	"dcps2",
	"dcps3",
	"dfb",
	"dgh",
	"dmb",
	"drps",
	"dsb",
	"dup",
	"dupq",
	"dvp",
	"eon",
	"eor",
	"eor3",
	"eorbt",
	"eorqv",
	"eortb",
	"eret",
	"eretaa",
	"eretab",
	"esb",
	"expand",
	"ext",
	"extq",
	"extr",
	"f1cvt",
	"f1cvtl",
	"f1cvtl2",
	"f1cvtlt",
	"f2cvt",
	"f2cvtl",
	"f2cvtl2",
	"f2cvtlt",
	"fabd",
	"fabs",
	"facge",
	"facgt",
	"fadd",
	"faddp",
	"faddqv",
	"famax",
	"famin",
	"fcadd",
	"fccmp",
	"fccmpe",
	"fclamp",
	"fcmeq",
	"fcmge",
	"fcmgt",
	"fcmla",
	"fcmle",
	"fcmlt",
	"fcmp",
	"fcmpe",
	"fcsel",
	"fcvt",
	"fcvtas",
	"fcvtau",
	"fcvtl",
	"fcvtl2",
	"fcvtlt",
	"fcvtms",
	"fcvtmu",
	"fcvtn",
	"fcvtn2",
	"fcvtnb",
	"fcvtns",
	"fcvtnt",
	"fcvtnu",
	"fcvtps",
	"fcvtpu",
	"fcvtx",
	"fcvtxn",
	"fcvtxn2",
	"fcvtxnt",
	"fcvtzs",
	"fcvtzsn",
	"fcvtzu",
	"fcvtzun",
	"fdiv",
	"fdot",
	"firstp",
	"fjcvtzs",
	"flogb",
	"fmadd",
	"fmax",
	"fmaxnm",
	"fmaxnmp",
	"fmaxnmqv",
	"fmaxnmv",
	"fmaxp",
	"fmaxqv",
	"fmaxv",
	"fmin",
	"fminnm",
	"fminnmp",
	"fminnmqv",
	"fminnmv",
	"fminp",
	"fminqv",
	"fminv",
	"fmla",
	"fmlal",
	"fmlal2",
	"fmlalb",
	"fmlall",
	"fmlallbb",
	"fmlallbt",
	"fmlalltb",
	"fmlalltt",
	"fmlalt",
	"fmls",
	"fmlsl",
	"fmlsl2",
	"fmlslb",
	"fmlslt",
	"fmmla",
	"fmop4a",
	"fmop4s",
	"fmopa",
	"fmops",
	"fmov",
	"fmsub",
	"fmul",
	"fmulx",
	"fneg",
	"fnmadd",
	"fnmsub",
	"fnmul",
	"frecpe",
	"frecps",
	"frecpx",
	"frint32x",
	"frint32z",
	"frint64x",
	"frint64z",
	"frinta",
	"frinti",
	"frintm",
	"frintn",
	"frintp",
	"frintx",
	"frintz",
	"frsqrte",
	"frsqrts",
	"fscale",
	"fsqrt",
	"fsub",
	"ftmopa",
	"fvdot",
	"fvdotb",
	"fvdott",
	"gcsb",
	"gcspopcx",
	"gcspopm",
	"gcspopx",
	"gcspushm",
	"gcspushx",
	"gcsss1",
	"gcsss2",
	"gcsstr",
	"gcssttr",
	"gic",
	"gicr",
	"gmi",
	"gsb",
	"hint",
	"histcnt",
	"histseg",
	"hlt",
	"hvc",
	"ic",
	"ins",
	"irg",
	"isb",
	"lastp",
	"ld1",
	"ld1b",
	"ld1d",
	"ld1h",
	"ld1q",
	"ld1r",
	"ld1rob",
	"ld1rod",
	"ld1roh",
	"ld1row",
	"ld1w",
	"ld2",
	"ld2q",
	"ld2r",
	"ld3",
	"ld3q",
	"ld3r",
	"ld4",
	"ld4q",
	"ld4r",
	"ldap1",
	"ldapr",
	"ldaprb",
	"ldaprh",
	"ldapur",
	"ldapurb",
	"ldapurh",
	"ldapursb",
	"ldapursh",
	"ldapursw",
	"ldar",
	"ldarb",
	"ldarh",
	"ldaxp",
	"ldaxr",
	"ldaxrb",
	"ldaxrh",
	"ldg",
	"ldgm",
	"ldiapp",
	"ldnp",
	"ldnt1b",
	"ldnt1d",
	"ldnt1h",
	"ldnt1sb",
	"ldnt1sh",
	"ldnt1sw",
	"ldnt1w",
	"ldp",
	"ldr",
	"ldraa",
	"ldrab",
	"ldrb",
	"ldrh",
	"ldrsb",
	"ldrsh",
	"ldrsw",
	"ldtr",
	"ldtrb",
	"ldtrh",
	"ldtrsb",
	"ldtrsh",
	"ldtrsw",
	"ldur",
	"ldurb",
	"ldurh",
	"ldursb",
	"ldursh",
	"ldursw",
	"ldxp",
	"ldxr",
	"ldxrb",
	"ldxrh",
	"lsl",
	"lslv",
	"lsr",
	"lsrv",
	"luti2",
	"luti4",
	"luti6",
	"madd",
	"maddpt",
	"madpt",
	"match",
	"mla",
	"mlapt",
	"mls",
	"mneg",
	"mov",
	"mova",
	"movaz",
	"movi",
	"movk",
	"movn",
	"movt",
	"movz",
	"mrrs",
	"mrs",
	"msr",
	"msrr",
	"msub",
	"msubpt",
	"mul",
	"mvn",
	"mvni",
	"nbsl",
	"neg",
	"negs",
	"ngc",
	"ngcs",
	"nmatch",
	"nop",
	"not",
	"orn",
	"orqv",
	"orr",
	"pacda",
	"pacdb",
	"pacdza",
	"pacdzb",
	"pacga",
	"pacia",
	"pacia1716",
	"paciasp",
	"paciaz",
	"pacib",
	"pacib1716",
	"pacibsp",
	"pacibz",
	"paciza",
	"pacizb",
	"pext",
	"plbi",
	"pmlal",
	"pmov",
	"pmul",
	"pmull",
	"pmull2",
	"pmullb",
	"pmullt",
	"prfm",
	"prfum",
	"psb",
	"psel",
	"pssbb",
	"ptrue",
	"raddhn",
	"raddhn2",
	"raddhnb",
	"raddhnt",
	"rax1",
	"rbit",
	"rcwcas",
	"rcwcasa",
	"rcwcasal",
	"rcwcasl",
	"rcwcasp",
	"rcwcaspa",
	"rcwcaspal",
	"rcwcaspl",
	"rcwclr",
	"rcwclra",
	"rcwclral",
	"rcwclrl",
	"rcwclrp",
	"rcwclrpa",
	"rcwclrpal",
	"rcwclrpl",
	"rcwscas",
	"rcwscasa",
	"rcwscasal",
	"rcwscasl",
	"rcwscasp",
	"rcwscaspa",
	"rcwscaspal",
	"rcwscaspl",
	"rcwsclr",
	"rcwsclra",
	"rcwsclral",
	"rcwsclrl",
	"rcwsclrp",
	"rcwsclrpa",
	"rcwsclrpal",
	"rcwsclrpl",
	"rcwset",
	"rcwseta",
	"rcwsetal",
	"rcwsetl",
	"rcwsetp",
	"rcwsetpa",
	"rcwsetpal",
	"rcwsetpl",
	"rcwsset",
	"rcwsseta",
	"rcwssetal",
	"rcwssetl",
	"rcwssetp",
	"rcwssetpa",
	"rcwssetpal",
	"rcwssetpl",
	"rcwsswp",
	"rcwsswpa",
	"rcwsswpal",
	"rcwsswpl",
	"rcwsswpp",
	"rcwsswppa",
	"rcwsswppal",
	"rcwsswppl",
	"rcwswp",
	"rcwswpa",
	"rcwswpal",
	"rcwswpl",
	"rcwswpp",
	"rcwswppa",
	"rcwswppal",
	"rcwswppl",
	"rdsvl",
	"ret",
	"retaa",
	"retab",
	"rev",
	"rev16",
	"rev32",
	"rev64",
	"revb",
	"revd",
	"revh",
	"revw",
	"rmif",
	"ror",
	"rorv",
	"rprfm",
	"rshrn",
	"rshrn2",
	"rshrnb",
	"rshrnt",
	"rsubhn",
	"rsubhn2",
	"rsubhnb",
	"rsubhnt",
	"saba",
	"sabal",
	"sabal2",
	"sabalb",
	"sabalt",
	"sabd",
	"sabdl",
	"sabdl2",
	"sabdlb",
	"sabdlt",
	"sadalp",
	"saddl",
	"saddl2",
	"saddlb",
	"saddlbt",
	"saddlp",
	"saddlt",
	"saddlv",
	"saddw",
	"saddw2",
	"saddwb",
	"saddwt",
	"sb",
	"sbc",
	"sbclb",
	"sbclt",
	"sbcs",
	"sbfiz",
	"sbfm",
	"sbfx",
	"sclamp",
	"scvtf",
	"scvtflt",
	"sdiv",
	"sdot",
	"sel",
	"sete",
	"seten",
	"setet",
	"setetn",
	"setf16",
	"setf8",
	"setge",
	"setgen",
	"setget",
	"setgetn",
	"setgm",
	"setgmn",
	"setgmt",
	"setgmtn",
	"setgoe",
	"setgoen",
	"setgoet",
	"setgoetn",
	"setgom",
	"setgomn",
	"setgomt",
	"setgomtn",
	"setgop",
	"setgopn",
	"setgopt",
	"setgoptn",
	"setgp",
	"setgpn",
	"setgpt",
	"setgptn",
	"setm",
	"setmn",
	"setmt",
	"setmtn",
	"setp",
	"setpn",
	"setpt",
	"setptn",
	"sev",
	"sevl",
	"sha1c",
	"sha1h",
	"sha1m",
	"sha1p",
	"sha1su0",
	"sha1su1",
	"sha256h",
	"sha256h2",
	"sha256su0",
	"sha256su1",
	"sha512h",
	"sha512h2",
	"sha512su0",
	"sha512su1",
	"shadd",
	"shl",
	"shll",
	"shll2",
	"shrn",
	"shrn2",
	"shrnb",
	"shrnt",
	"shsub",
	"shsubr",
	"shuh",
	"sli",
	"sm3partw1",
	"sm3partw2",
	"sm3ss1",
	"sm3tt1a",
	"sm3tt1b",
	"sm3tt2a",
	"sm3tt2b",
	"sm4e",
	"sm4ekey",
	"smaddl",
	"smax",
	"smaxp",
	"smaxqv",
	"smaxv",
	"smc",
	"smin",
	"sminp",
	"sminqv",
	"sminv",
	"smlal",
	"smlal2",
	"smlalb",
	"smlall",
	"smlalt",
	"smlsl",
	"smlsl2",
	"smlslb",
	"smlsll",
	"smlslt",
	"smmla",
	"smnegl",
	"smop4a",
	"smop4s",
	"smopa",
	"smops",
	"smov",
	"smstart",
	"smstop",
	"smsubl",
	"smulh",
	"smull",
	"smull2",
	"smullb",
	"smullt",
	"splice",
	"sqabs",
	"sqadd",
	"sqcadd",
	"sqcvt",
	"sqcvtn",
	"sqcvtu",
	"sqcvtun",
	"sqdmlal",
	"sqdmlal2",
	"sqdmlalb",
	"sqdmlalbt",
	"sqdmlalt",
	"sqdmlsl",
	"sqdmlsl2",
	"sqdmlslb",
	"sqdmlslbt",
	"sqdmlslt",
	"sqdmulh",
	"sqdmull",
	"sqdmull2",
	"sqdmullb",
	"sqdmullt",
	"sqneg",
	"sqrdcmlah",
	"sqrdmlah",
	"sqrdmlsh",
	"sqrdmulh",
	"sqrshl",
	"sqrshlr",
	"sqrshr",
	"sqrshrn",
	"sqrshrn2",
	"sqrshrnb",
	"sqrshrnt",
	"sqrshru",
	"sqrshrun",
	"sqrshrun2",
	"sqrshrunb",
	"sqrshrunt",
	"sqshl",
	"sqshlr",
	"sqshlu",
	"sqshrn",
	"sqshrn2",
	"sqshrnb",
	"sqshrnt",
	"sqshrun",
	"sqshrun2",
	"sqshrunb",
	"sqshrunt",
	"sqsub",
	"sqsubr",
	"sqxtn",
	"sqxtn2",
	"sqxtnb",
	"sqxtnt",
	"sqxtun",
	"sqxtun2",
	"sqxtunb",
	"sqxtunt",
	"srhadd",
	"sri",
	"srshl",
	"srshlr",
	"srshr",
	"srsra",
	"ssbb",
	"sshl",
	"sshll",
	"sshll2",
	"sshllb",
	"sshllt",
	"sshr",
	"ssra",
	"ssubl",
	"ssubl2",
	"ssublb",
	"ssublbt",
	"ssublt",
	"ssubltb",
	"ssubw",
	"ssubw2",
	"ssubwb",
	"ssubwt",
	"st1",
	"st1b",
	"st1d",
	"st1h",
	"st1q",
	"st1w",
	"st2",
	"st2g",
	"st2q",
	"st3",
	"st3q",
	"st4",
	"st4q",
	"stcph",
	"stg",
	"stgm",
	"stgp",
	"stilp",
	"stl1",
	"stlr",
	"stlrb",
	"stlrh",
	"stlur",
	"stlurb",
	"stlurh",
	"stlxp",
	"stlxr",
	"stlxrb",
	"stlxrh",
	"stmopa",
	"stnp",
	"stnt1b",
	"stnt1d",
	"stnt1h",
	"stnt1w",
	"stp",
	"str",
	"strb",
	"strh",
	"stshh",
	"sttr",
	"sttrb",
	"sttrh",
	"stur",
	"sturb",
	"sturh",
	"stxp",
	"stxr",
	"stxrb",
	"stxrh",
	"stz2g",
	"stzg",
	"stzgm",
	"sub",
	"subg",
	"subhn",
	"subhn2",
	"subhnb",
	"subhnt",
	"subp",
	"subps",
	"subpt",
	"subs",
	"sudot",
	"sumlall",
	"sumop4a",
	"sumop4s",
	"sumopa",
	"sumops",
	"sunpk",
	"suqadd",
	"sutmopa",
	"suvdot",
	"svc",
	"svdot",
	"sxtb",
	"sxth",
	"sxtl",
	"sxtl2",
	"sxtw",
	"sys",
	"sysl",
	"sysp",
	"tbl",
	"tblq",
	"tbnz",
	"tbx",
	"tbxq",
	"tbz",
	"tchangeb",
	"tchangef",
	"tenter",
	"texit",
	"tlbi",
	"tlbip",
	"trcit",
	"trn1",
	"trn2",
	"tsb",
	"tst",
	"uaba",
	"uabal",
	"uabal2",
	"uabalb",
	"uabalt",
	"uabd",
	"uabdl",
	"uabdl2",
	"uabdlb",
	"uabdlt",
	"uadalp",
	"uaddl",
	"uaddl2",
	"uaddlb",
	"uaddlp",
	"uaddlt",
	"uaddlv",
	"uaddw",
	"uaddw2",
	"uaddwb",
	"uaddwt",
	"ubfiz",
	"ubfm",
	"ubfx",
	"uclamp",
	"ucvtf",
	"ucvtflt",
	"udf",
	"udiv",
	"udot",
	"uhadd",
	"uhsub",
	"uhsubr",
	"umaddl",
	"umax",
	"umaxp",
	"umaxqv",
	"umaxv",
	"umin",
	"uminp",
	"uminqv",
	"uminv",
	"umlal",
	"umlal2",
	"umlalb",
	"umlall",
	"umlalt",
	"umlsl",
	"umlsl2",
	"umlslb",
	"umlsll",
	"umlslt",
	"ummla",
	"umnegl",
	"umop4a",
	"umop4s",
	"umopa",
	"umops",
	"umov",
	"umsubl",
	"umulh",
	"umull",
	"umull2",
	"umullb",
	"umullt",
	"uqadd",
	"uqcvt",
	"uqcvtn",
	"uqrshl",
	"uqrshlr",
	"uqrshr",
	"uqrshrn",
	"uqrshrn2",
	"uqrshrnb",
	"uqrshrnt",
	"uqshl",
	"uqshlr",
	"uqshrn",
	"uqshrn2",
	"uqshrnb",
	"uqshrnt",
	"uqsub",
	"uqsubr",
	"uqxtn",
	"uqxtn2",
	"uqxtnb",
	"uqxtnt",
	"urecpe",
	"urhadd",
	"urshl",
	"urshlr",
	"urshr",
	"ursqrte",
	"ursra",
	"usdot",
	"ushl",
	"ushll",
	"ushll2",
	"ushllb",
	"ushllt",
	"ushr",
	"usmlall",
	"usmmla",
	"usmop4a",
	"usmop4s",
	"usmopa",
	"usmops",
	"usqadd",
	"usra",
	"ustmopa",
	"usubl",
	"usubl2",
	"usublb",
	"usublt",
	"usubw",
	"usubw2",
	"usubwb",
	"usubwt",
	"usvdot",
	"utmopa",
	"uunpk",
	"uvdot",
	"uxtb",
	"uxth",
	"uxtl",
	"uxtl2",
	"uxtw",
	"uzp",
	"uzp1",
	"uzp2",
	"uzpq1",
	"uzpq2",
	"wfe",
	"wfet",
	"wfi",
	"wfit",
	"whilege",
	"whilegt",
	"whilehi",
	"whilehs",
	"whilele",
	"whilelo",
	"whilels",
	"whilelt",
	"whilerw",
	"whilewr",
	"xaflag",
	"xar",
	"xpacd",
	"xpaci",
	"xpaclri",
	"xtn",
	"xtn2",
	"yield",
	"zero",
	"zip",
	"zip1",
	"zip2",
	"zipq1",
	"zipq2",
}

local registers = {
	"b0",
	"b1",
	"b10",
	"b11",
	"b12",
	"b13",
	"b14",
	"b15",
	"b16",
	"b17",
	"b18",
	"b19",
	"b2",
	"b20",
	"b21",
	"b22",
	"b23",
	"b24",
	"b25",
	"b26",
	"b27",
	"b28",
	"b29",
	"b3",
	"b30",
	"b31",
	"b4",
	"b5",
	"b6",
	"b7",
	"b8",
	"b9",
	"d0",
	"d1",
	"d10",
	"d11",
	"d12",
	"d13",
	"d14",
	"d15",
	"d16",
	"d17",
	"d18",
	"d19",
	"d2",
	"d20",
	"d21",
	"d22",
	"d23",
	"d24",
	"d25",
	"d26",
	"d27",
	"d28",
	"d29",
	"d3",
	"d30",
	"d31",
	"d4",
	"d5",
	"d6",
	"d7",
	"d8",
	"d9",
	"fp",
	"h0",
	"h1",
	"h10",
	"h11",
	"h12",
	"h13",
	"h14",
	"h15",
	"h16",
	"h17",
	"h18",
	"h19",
	"h2",
	"h20",
	"h21",
	"h22",
	"h23",
	"h24",
	"h25",
	"h26",
	"h27",
	"h28",
	"h29",
	"h3",
	"h30",
	"h31",
	"h4",
	"h5",
	"h6",
	"h7",
	"h8",
	"h9",
	"ip0",
	"ip1",
	"lr",
	"p0",
	"p1",
	"p10",
	"p11",
	"p12",
	"p13",
	"p14",
	"p15",
	"p2",
	"p3",
	"p4",
	"p5",
	"p6",
	"p7",
	"p8",
	"p9",
	"pn0",
	"pn1",
	"pn10",
	"pn11",
	"pn12",
	"pn13",
	"pn14",
	"pn15",
	"pn2",
	"pn3",
	"pn4",
	"pn5",
	"pn6",
	"pn7",
	"pn8",
	"pn9",
	"q0",
	"q1",
	"q10",
	"q11",
	"q12",
	"q13",
	"q14",
	"q15",
	"q16",
	"q17",
	"q18",
	"q19",
	"q2",
	"q20",
	"q21",
	"q22",
	"q23",
	"q24",
	"q25",
	"q26",
	"q27",
	"q28",
	"q29",
	"q3",
	"q30",
	"q31",
	"q4",
	"q5",
	"q6",
	"q7",
	"q8",
	"q9",
	"s0",
	"s1",
	"s10",
	"s11",
	"s12",
	"s13",
	"s14",
	"s15",
	"s16",
	"s17",
	"s18",
	"s19",
	"s2",
	"s20",
	"s21",
	"s22",
	"s23",
	"s24",
	"s25",
	"s26",
	"s27",
	"s28",
	"s29",
	"s3",
	"s30",
	"s31",
	"s4",
	"s5",
	"s6",
	"s7",
	"s8",
	"s9",
	"sp",
	"v0",
	"v1",
	"v10",
	"v11",
	"v12",
	"v13",
	"v14",
	"v15",
	"v16",
	"v17",
	"v18",
	"v19",
	"v2",
	"v20",
	"v21",
	"v22",
	"v23",
	"v24",
	"v25",
	"v26",
	"v27",
	"v28",
	"v29",
	"v3",
	"v30",
	"v31",
	"v4",
	"v5",
	"v6",
	"v7",
	"v8",
	"v9",
	"w0",
	"w1",
	"w10",
	"w11",
	"w12",
	"w13",
	"w14",
	"w15",
	"w16",
	"w17",
	"w18",
	"w19",
	"w2",
	"w20",
	"w21",
	"w22",
	"w23",
	"w24",
	"w25",
	"w26",
	"w27",
	"w28",
	"w29",
	"w3",
	"w30",
	"w4",
	"w5",
	"w6",
	"w7",
	"w8",
	"w9",
	"wsp",
	"wzr",
	"x0",
	"x1",
	"x10",
	"x11",
	"x12",
	"x13",
	"x14",
	"x15",
	"x16",
	"x17",
	"x18",
	"x19",
	"x2",
	"x20",
	"x21",
	"x22",
	"x23",
	"x24",
	"x25",
	"x26",
	"x27",
	"x28",
	"x29",
	"x3",
	"x30",
	"x4",
	"x5",
	"x6",
	"x7",
	"x8",
	"x9",
	"xzr",
	"z0",
	"z1",
	"z10",
	"z11",
	"z12",
	"z13",
	"z14",
	"z15",
	"z16",
	"z17",
	"z18",
	"z19",
	"z2",
	"z20",
	"z21",
	"z22",
	"z23",
	"z24",
	"z25",
	"z26",
	"z27",
	"z28",
	"z29",
	"z3",
	"z30",
	"z31",
	"z4",
	"z5",
	"z6",
	"z7",
	"z8",
	"z9",
	"za",
	"za0",
	"za0h",
	"za0v",
	"za1",
	"za10",
	"za10h",
	"za10v",
	"za11",
	"za11h",
	"za11v",
	"za12",
	"za12h",
	"za12v",
	"za13",
	"za13h",
	"za13v",
	"za14",
	"za14h",
	"za14v",
	"za15",
	"za15h",
	"za15v",
	"za1h",
	"za1v",
	"za2",
	"za2h",
	"za2v",
	"za3",
	"za3h",
	"za3v",
	"za4",
	"za4h",
	"za4v",
	"za5",
	"za5h",
	"za5v",
	"za6",
	"za6h",
	"za6v",
	"za7",
	"za7h",
	"za7v",
	"za8",
	"za8h",
	"za8v",
	"za9",
	"za9h",
	"za9v",
	"zt0",
}

local system_registers = {
	"accdata_el1",
	"ack",
	"actlr_el1",
	"actlr_el12",
	"actlr_el2",
	"actlr_el3",
	"actlralias_el1",
	"actlrmask_el1",
	"actlrmask_el12",
	"actlrmask_el2",
	"afgdtp0_el1",
	"afgdtp0_el12",
	"afgdtp0_el2",
	"afgdtp0_el3",
	"afgdtp10_el1",
	"afgdtp10_el12",
	"afgdtp10_el2",
	"afgdtp10_el3",
	"afgdtp11_el1",
	"afgdtp11_el12",
	"afgdtp11_el2",
	"afgdtp11_el3",
	"afgdtp12_el1",
	"afgdtp12_el12",
	"afgdtp12_el2",
	"afgdtp12_el3",
	"afgdtp13_el1",
	"afgdtp13_el12",
	"afgdtp13_el2",
	"afgdtp13_el3",
	"afgdtp14_el1",
	"afgdtp14_el12",
	"afgdtp14_el2",
	"afgdtp14_el3",
	"afgdtp15_el1",
	"afgdtp15_el12",
	"afgdtp15_el2",
	"afgdtp15_el3",
	"afgdtp1_el1",
	"afgdtp1_el12",
	"afgdtp1_el2",
	"afgdtp1_el3",
	"afgdtp2_el1",
	"afgdtp2_el12",
	"afgdtp2_el2",
	"afgdtp2_el3",
	"afgdtp3_el1",
	"afgdtp3_el12",
	"afgdtp3_el2",
	"afgdtp3_el3",
	"afgdtp4_el1",
	"afgdtp4_el12",
	"afgdtp4_el2",
	"afgdtp4_el3",
	"afgdtp5_el1",
	"afgdtp5_el12",
	"afgdtp5_el2",
	"afgdtp5_el3",
	"afgdtp6_el1",
	"afgdtp6_el12",
	"afgdtp6_el2",
	"afgdtp6_el3",
	"afgdtp7_el1",
	"afgdtp7_el12",
	"afgdtp7_el2",
	"afgdtp7_el3",
	"afgdtp8_el1",
	"afgdtp8_el12",
	"afgdtp8_el2",
	"afgdtp8_el3",
	"afgdtp9_el1",
	"afgdtp9_el12",
	"afgdtp9_el2",
	"afgdtp9_el3",
	"afgdtu0_el1",
	"afgdtu0_el12",
	"afgdtu0_el2",
	"afgdtu10_el1",
	"afgdtu10_el12",
	"afgdtu10_el2",
	"afgdtu11_el1",
	"afgdtu11_el12",
	"afgdtu11_el2",
	"afgdtu12_el1",
	"afgdtu12_el12",
	"afgdtu12_el2",
	"afgdtu13_el1",
	"afgdtu13_el12",
	"afgdtu13_el2",
	"afgdtu14_el1",
	"afgdtu14_el12",
	"afgdtu14_el2",
	"afgdtu15_el1",
	"afgdtu15_el12",
	"afgdtu15_el2",
	"afgdtu1_el1",
	"afgdtu1_el12",
	"afgdtu1_el2",
	"afgdtu2_el1",
	"afgdtu2_el12",
	"afgdtu2_el2",
	"afgdtu3_el1",
	"afgdtu3_el12",
	"afgdtu3_el2",
	"afgdtu4_el1",
	"afgdtu4_el12",
	"afgdtu4_el2",
	"afgdtu5_el1",
	"afgdtu5_el12",
	"afgdtu5_el2",
	"afgdtu6_el1",
	"afgdtu6_el12",
	"afgdtu6_el2",
	"afgdtu7_el1",
	"afgdtu7_el12",
	"afgdtu7_el2",
	"afgdtu8_el1",
	"afgdtu8_el12",
	"afgdtu8_el2",
	"afgdtu9_el1",
	"afgdtu9_el12",
	"afgdtu9_el2",
	"afsr0_el1",
	"afsr0_el12",
	"afsr0_el2",
	"afsr0_el3",
	"afsr1_el1",
	"afsr1_el12",
	"afsr1_el2",
	"afsr1_el3",
	"aidr_el1",
	"alle1",
	"alle1is",
	"alle1os",
	"alle2",
	"alle2is",
	"alle2os",
	"alle3",
	"alle3is",
	"alle3os",
	"allint",
	"amair2_el1",
	"amair2_el12",
	"amair2_el2",
	"amair2_el3",
	"amair_el1",
	"amair_el12",
	"amair_el2",
	"amair_el3",
	"amcfgr_el0",
	"amcg1idr_el0",
	"amcgcr_el0",
	"amcntenclr0_el0",
	"amcntenclr1_el0",
	"amcntenset0_el0",
	"amcntenset1_el0",
	"amcr_el0",
	"amevcntr00_el0",
	"amevcntr01_el0",
	"amevcntr02_el0",
	"amevcntr03_el0",
	"amevcntr10_el0",
	"amevcntr110_el0",
	"amevcntr111_el0",
	"amevcntr112_el0",
	"amevcntr113_el0",
	"amevcntr114_el0",
	"amevcntr115_el0",
	"amevcntr11_el0",
	"amevcntr12_el0",
	"amevcntr13_el0",
	"amevcntr14_el0",
	"amevcntr15_el0",
	"amevcntr16_el0",
	"amevcntr17_el0",
	"amevcntr18_el0",
	"amevcntr19_el0",
	"amevcntvoff00_el2",
	"amevcntvoff010_el2",
	"amevcntvoff011_el2",
	"amevcntvoff012_el2",
	"amevcntvoff013_el2",
	"amevcntvoff014_el2",
	"amevcntvoff015_el2",
	"amevcntvoff01_el2",
	"amevcntvoff02_el2",
	"amevcntvoff03_el2",
	"amevcntvoff04_el2",
	"amevcntvoff05_el2",
	"amevcntvoff06_el2",
	"amevcntvoff07_el2",
	"amevcntvoff08_el2",
	"amevcntvoff09_el2",
	"amevcntvoff10_el2",
	"amevcntvoff110_el2",
	"amevcntvoff111_el2",
	"amevcntvoff112_el2",
	"amevcntvoff113_el2",
	"amevcntvoff114_el2",
	"amevcntvoff115_el2",
	"amevcntvoff11_el2",
	"amevcntvoff12_el2",
	"amevcntvoff13_el2",
	"amevcntvoff14_el2",
	"amevcntvoff15_el2",
	"amevcntvoff16_el2",
	"amevcntvoff17_el2",
	"amevcntvoff18_el2",
	"amevcntvoff19_el2",
	"amevtyper00_el0",
	"amevtyper01_el0",
	"amevtyper02_el0",
	"amevtyper03_el0",
	"amevtyper10_el0",
	"amevtyper110_el0",
	"amevtyper111_el0",
	"amevtyper112_el0",
	"amevtyper113_el0",
	"amevtyper114_el0",
	"amevtyper115_el0",
	"amevtyper11_el0",
	"amevtyper12_el0",
	"amevtyper13_el0",
	"amevtyper14_el0",
	"amevtyper15_el0",
	"amevtyper16_el0",
	"amevtyper17_el0",
	"amevtyper18_el0",
	"amevtyper19_el0",
	"amuserenr_el0",
	"apdakeyhi_el1",
	"apdakeylo_el1",
	"apdbkeyhi_el1",
	"apdbkeylo_el1",
	"apgakeyhi_el1",
	"apgakeylo_el1",
	"apiakeyhi_el1",
	"apiakeylo_el1",
	"apibkeyhi_el1",
	"apibkeylo_el1",
	"aside1",
	"aside1is",
	"aside1os",
	"brbcr_el1",
	"brbcr_el12",
	"brbcr_el2",
	"brbfcr_el1",
	"brbidr0_el1",
	"brbinf0_el1",
	"brbinf10_el1",
	"brbinf11_el1",
	"brbinf12_el1",
	"brbinf13_el1",
	"brbinf14_el1",
	"brbinf15_el1",
	"brbinf16_el1",
	"brbinf17_el1",
	"brbinf18_el1",
	"brbinf19_el1",
	"brbinf1_el1",
	"brbinf20_el1",
	"brbinf21_el1",
	"brbinf22_el1",
	"brbinf23_el1",
	"brbinf24_el1",
	"brbinf25_el1",
	"brbinf26_el1",
	"brbinf27_el1",
	"brbinf28_el1",
	"brbinf29_el1",
	"brbinf2_el1",
	"brbinf30_el1",
	"brbinf31_el1",
	"brbinf3_el1",
	"brbinf4_el1",
	"brbinf5_el1",
	"brbinf6_el1",
	"brbinf7_el1",
	"brbinf8_el1",
	"brbinf9_el1",
	"brbinfinj_el1",
	"brbsrc0_el1",
	"brbsrc10_el1",
	"brbsrc11_el1",
	"brbsrc12_el1",
	"brbsrc13_el1",
	"brbsrc14_el1",
	"brbsrc15_el1",
	"brbsrc16_el1",
	"brbsrc17_el1",
	"brbsrc18_el1",
	"brbsrc19_el1",
	"brbsrc1_el1",
	"brbsrc20_el1",
	"brbsrc21_el1",
	"brbsrc22_el1",
	"brbsrc23_el1",
	"brbsrc24_el1",
	"brbsrc25_el1",
	"brbsrc26_el1",
	"brbsrc27_el1",
	"brbsrc28_el1",
	"brbsrc29_el1",
	"brbsrc2_el1",
	"brbsrc30_el1",
	"brbsrc31_el1",
	"brbsrc3_el1",
	"brbsrc4_el1",
	"brbsrc5_el1",
	"brbsrc6_el1",
	"brbsrc7_el1",
	"brbsrc8_el1",
	"brbsrc9_el1",
	"brbsrcinj_el1",
	"brbtgt0_el1",
	"brbtgt10_el1",
	"brbtgt11_el1",
	"brbtgt12_el1",
	"brbtgt13_el1",
	"brbtgt14_el1",
	"brbtgt15_el1",
	"brbtgt16_el1",
	"brbtgt17_el1",
	"brbtgt18_el1",
	"brbtgt19_el1",
	"brbtgt1_el1",
	"brbtgt20_el1",
	"brbtgt21_el1",
	"brbtgt22_el1",
	"brbtgt23_el1",
	"brbtgt24_el1",
	"brbtgt25_el1",
	"brbtgt26_el1",
	"brbtgt27_el1",
	"brbtgt28_el1",
	"brbtgt29_el1",
	"brbtgt2_el1",
	"brbtgt30_el1",
	"brbtgt31_el1",
	"brbtgt3_el1",
	"brbtgt4_el1",
	"brbtgt5_el1",
	"brbtgt6_el1",
	"brbtgt7_el1",
	"brbtgt8_el1",
	"brbtgt9_el1",
	"brbtgtinj_el1",
	"brbts_el1",
	"ccsidr2_el1",
	"ccsidr_el1",
	"cdaff",
	"cddi",
	"cddis",
	"cden",
	"cdeoi",
	"cdhm",
	"cdia",
	"cdnmia",
	"cdpend",
	"cdpri",
	"cdrcfg",
	"cgdsw",
	"cgdvac",
	"cgdvadp",
	"cgdvaoc",
	"cgdvap",
	"cgsw",
	"cgvac",
	"cgvadp",
	"cgvap",
	"cigdpae",
	"cigdpapa",
	"cigdsw",
	"cigdvac",
	"cigdvaoc",
	"cigdvaps",
	"cigsw",
	"cigvac",
	"cipae",
	"cipapa",
	"cisw",
	"civac",
	"civaoc",
	"civaps",
	"clidr_el1",
	"cntfrq_el0",
	"cnthctl_el2",
	"cnthp_ctl_el2",
	"cnthp_cval_el2",
	"cnthp_tval_el2",
	"cnthps_ctl_el2",
	"cnthps_cval_el2",
	"cnthps_tval_el2",
	"cnthv_ctl_el2",
	"cnthv_cval_el2",
	"cnthv_tval_el2",
	"cnthvs_ctl_el2",
	"cnthvs_cval_el2",
	"cnthvs_tval_el2",
	"cntkctl_el1",
	"cntkctl_el12",
	"cntp_ctl_el0",
	"cntp_ctl_el02",
	"cntp_cval_el0",
	"cntp_cval_el02",
	"cntp_tval_el0",
	"cntp_tval_el02",
	"cntpct_el0",
	"cntpctss_el0",
	"cntpoff_el2",
	"cntps_ctl_el1",
	"cntps_cval_el1",
	"cntps_tval_el1",
	"cntv_ctl_el0",
	"cntv_ctl_el02",
	"cntv_cval_el0",
	"cntv_cval_el02",
	"cntv_tval_el0",
	"cntv_tval_el02",
	"cntvct_el0",
	"cntvctss_el0",
	"cntvoff_el2",
	"contextidr_el1",
	"contextidr_el12",
	"contextidr_el2",
	"cpacr_el1",
	"cpacr_el12",
	"cpacralias_el1",
	"cpacrmask_el1",
	"cpacrmask_el12",
	"cptr_el2",
	"cptr_el3",
	"cptrmask_el2",
	"csselr_el1",
	"csw",
	"ctr_el0",
	"currentel",
	"cvac",
	"cvadp",
	"cvaoc",
	"cvap",
	"cvau",
	"dacr32_el2",
	"daif",
	"daifclr",
	"daifset",
	"dbgauthstatus_el1",
	"dbgbcr0_el1",
	"dbgbcr10_el1",
	"dbgbcr11_el1",
	"dbgbcr12_el1",
	"dbgbcr13_el1",
	"dbgbcr14_el1",
	"dbgbcr15_el1",
	"dbgbcr1_el1",
	"dbgbcr2_el1",
	"dbgbcr3_el1",
	"dbgbcr4_el1",
	"dbgbcr5_el1",
	"dbgbcr6_el1",
	"dbgbcr7_el1",
	"dbgbcr8_el1",
	"dbgbcr9_el1",
	"dbgbvr0_el1",
	"dbgbvr10_el1",
	"dbgbvr11_el1",
	"dbgbvr12_el1",
	"dbgbvr13_el1",
	"dbgbvr14_el1",
	"dbgbvr15_el1",
	"dbgbvr1_el1",
	"dbgbvr2_el1",
	"dbgbvr3_el1",
	"dbgbvr4_el1",
	"dbgbvr5_el1",
	"dbgbvr6_el1",
	"dbgbvr7_el1",
	"dbgbvr8_el1",
	"dbgbvr9_el1",
	"dbgclaimclr_el1",
	"dbgclaimset_el1",
	"dbgdtr_el0",
	"dbgdtrrx_el0",
	"dbgdtrtx_el0",
	"dbgprcr_el1",
	"dbgvcr32_el2",
	"dbgwcr0_el1",
	"dbgwcr10_el1",
	"dbgwcr11_el1",
	"dbgwcr12_el1",
	"dbgwcr13_el1",
	"dbgwcr14_el1",
	"dbgwcr15_el1",
	"dbgwcr1_el1",
	"dbgwcr2_el1",
	"dbgwcr3_el1",
	"dbgwcr4_el1",
	"dbgwcr5_el1",
	"dbgwcr6_el1",
	"dbgwcr7_el1",
	"dbgwcr8_el1",
	"dbgwcr9_el1",
	"dbgwvr0_el1",
	"dbgwvr10_el1",
	"dbgwvr11_el1",
	"dbgwvr12_el1",
	"dbgwvr13_el1",
	"dbgwvr14_el1",
	"dbgwvr15_el1",
	"dbgwvr1_el1",
	"dbgwvr2_el1",
	"dbgwvr3_el1",
	"dbgwvr4_el1",
	"dbgwvr5_el1",
	"dbgwvr6_el1",
	"dbgwvr7_el1",
	"dbgwvr8_el1",
	"dbgwvr9_el1",
	"dczid_el0",
	"disr_el1",
	"dit",
	"dlr_el0",
	"dpocr_el0",
	"dpotbr0_el1",
	"dpotbr0_el12",
	"dpotbr0_el2",
	"dpotbr0_el3",
	"dpotbr1_el1",
	"dpotbr1_el12",
	"dpotbr1_el2",
	"dspsr_el0",
	"elr_el1",
	"elr_el12",
	"elr_el2",
	"elr_el3",
	"erridr_el1",
	"errselr_el1",
	"erxaddr_el1",
	"erxctlr_el1",
	"erxfr_el1",
	"erxgsr_el1",
	"erxmisc0_el1",
	"erxmisc1_el1",
	"erxmisc2_el1",
	"erxmisc3_el1",
	"erxpfgcdn_el1",
	"erxpfgctl_el1",
	"erxpfgf_el1",
	"erxstatus_el1",
	"esr_el1",
	"esr_el12",
	"esr_el2",
	"esr_el3",
	"far_el1",
	"far_el12",
	"far_el2",
	"far_el3",
	"fgdtp0_el1",
	"fgdtp0_el12",
	"fgdtp0_el2",
	"fgdtp0_el3",
	"fgdtp10_el1",
	"fgdtp10_el12",
	"fgdtp10_el2",
	"fgdtp10_el3",
	"fgdtp11_el1",
	"fgdtp11_el12",
	"fgdtp11_el2",
	"fgdtp11_el3",
	"fgdtp12_el1",
	"fgdtp12_el12",
	"fgdtp12_el2",
	"fgdtp12_el3",
	"fgdtp13_el1",
	"fgdtp13_el12",
	"fgdtp13_el2",
	"fgdtp13_el3",
	"fgdtp14_el1",
	"fgdtp14_el12",
	"fgdtp14_el2",
	"fgdtp14_el3",
	"fgdtp15_el1",
	"fgdtp15_el12",
	"fgdtp15_el2",
	"fgdtp15_el3",
	"fgdtp1_el1",
	"fgdtp1_el12",
	"fgdtp1_el2",
	"fgdtp1_el3",
	"fgdtp2_el1",
	"fgdtp2_el12",
	"fgdtp2_el2",
	"fgdtp2_el3",
	"fgdtp3_el1",
	"fgdtp3_el12",
	"fgdtp3_el2",
	"fgdtp3_el3",
	"fgdtp4_el1",
	"fgdtp4_el12",
	"fgdtp4_el2",
	"fgdtp4_el3",
	"fgdtp5_el1",
	"fgdtp5_el12",
	"fgdtp5_el2",
	"fgdtp5_el3",
	"fgdtp6_el1",
	"fgdtp6_el12",
	"fgdtp6_el2",
	"fgdtp6_el3",
	"fgdtp7_el1",
	"fgdtp7_el12",
	"fgdtp7_el2",
	"fgdtp7_el3",
	"fgdtp8_el1",
	"fgdtp8_el12",
	"fgdtp8_el2",
	"fgdtp8_el3",
	"fgdtp9_el1",
	"fgdtp9_el12",
	"fgdtp9_el2",
	"fgdtp9_el3",
	"fgdtu0_el1",
	"fgdtu0_el12",
	"fgdtu0_el2",
	"fgdtu10_el1",
	"fgdtu10_el12",
	"fgdtu10_el2",
	"fgdtu11_el1",
	"fgdtu11_el12",
	"fgdtu11_el2",
	"fgdtu12_el1",
	"fgdtu12_el12",
	"fgdtu12_el2",
	"fgdtu13_el1",
	"fgdtu13_el12",
	"fgdtu13_el2",
	"fgdtu14_el1",
	"fgdtu14_el12",
	"fgdtu14_el2",
	"fgdtu15_el1",
	"fgdtu15_el12",
	"fgdtu15_el2",
	"fgdtu1_el1",
	"fgdtu1_el12",
	"fgdtu1_el2",
	"fgdtu2_el1",
	"fgdtu2_el12",
	"fgdtu2_el2",
	"fgdtu3_el1",
	"fgdtu3_el12",
	"fgdtu3_el2",
	"fgdtu4_el1",
	"fgdtu4_el12",
	"fgdtu4_el2",
	"fgdtu5_el1",
	"fgdtu5_el12",
	"fgdtu5_el2",
	"fgdtu6_el1",
	"fgdtu6_el12",
	"fgdtu6_el2",
	"fgdtu7_el1",
	"fgdtu7_el12",
	"fgdtu7_el2",
	"fgdtu8_el1",
	"fgdtu8_el12",
	"fgdtu8_el2",
	"fgdtu9_el1",
	"fgdtu9_el12",
	"fgdtu9_el2",
	"fgwte3_el3",
	"fpcr",
	"fpexc32_el2",
	"fpmr",
	"fpsr",
	"gbva",
	"gcr_el1",
	"gcscr_el1",
	"gcscr_el12",
	"gcscr_el2",
	"gcscr_el3",
	"gcscre0_el1",
	"gcspr_el0",
	"gcspr_el1",
	"gcspr_el12",
	"gcspr_el2",
	"gcspr_el3",
	"gmid_el1",
	"gpcbw_el3",
	"gpccr_el3",
	"gptbr_el3",
	"gva",
	"gzva",
	"hacdbsbr_el2",
	"hacdbscons_el2",
	"hacr_el2",
	"hafgrtr_el2",
	"hcr_el2",
	"hcrmask_el2",
	"hcrx_el2",
	"hcrxmask_el2",
	"hdbssbr_el2",
	"hdbssprod_el2",
	"hdfgrtr2_el2",
	"hdfgrtr_el2",
	"hdfgwtr2_el2",
	"hdfgwtr_el2",
	"hfgitr2_el2",
	"hfgitr_el2",
	"hfgrtr2_el2",
	"hfgrtr_el2",
	"hfgwtr2_el2",
	"hfgwtr_el2",
	"hpfar_el2",
	"hstr_el2",
	"iallu",
	"ialluis",
	"icc_ap0r0_el1",
	"icc_ap0r1_el1",
	"icc_ap0r2_el1",
	"icc_ap0r3_el1",
	"icc_ap1r0_el1",
	"icc_ap1r1_el1",
	"icc_ap1r2_el1",
	"icc_ap1r3_el1",
	"icc_apr_el1",
	"icc_apr_el3",
	"icc_asgi1r_el1",
	"icc_bpr0_el1",
	"icc_bpr1_el1",
	"icc_cr0_el1",
	"icc_cr0_el3",
	"icc_ctlr_el1",
	"icc_ctlr_el3",
	"icc_dir_el1",
	"icc_domhppir_el3",
	"icc_eoir0_el1",
	"icc_eoir1_el1",
	"icc_hapr_el1",
	"icc_hppir0_el1",
	"icc_hppir1_el1",
	"icc_hppir_el1",
	"icc_hppir_el3",
	"icc_iaffidr_el1",
	"icc_iar0_el1",
	"icc_iar1_el1",
	"icc_icsr_el1",
	"icc_idr0_el1",
	"icc_igrpen0_el1",
	"icc_igrpen1_el1",
	"icc_igrpen1_el3",
	"icc_nmiar1_el1",
	"icc_pcr_el1",
	"icc_pcr_el3",
	"icc_pmr_el1",
	"icc_ppi_cactiver0_el1",
	"icc_ppi_cactiver1_el1",
	"icc_ppi_cpendr0_el1",
	"icc_ppi_cpendr1_el1",
	"icc_ppi_domainr0_el3",
	"icc_ppi_domainr1_el3",
	"icc_ppi_domainr2_el3",
	"icc_ppi_domainr3_el3",
	"icc_ppi_enabler0_el1",
	"icc_ppi_enabler1_el1",
	"icc_ppi_hmr0_el1",
	"icc_ppi_hmr1_el1",
	"icc_ppi_priorityr0_el1",
	"icc_ppi_priorityr10_el1",
	"icc_ppi_priorityr11_el1",
	"icc_ppi_priorityr12_el1",
	"icc_ppi_priorityr13_el1",
	"icc_ppi_priorityr14_el1",
	"icc_ppi_priorityr15_el1",
	"icc_ppi_priorityr1_el1",
	"icc_ppi_priorityr2_el1",
	"icc_ppi_priorityr3_el1",
	"icc_ppi_priorityr4_el1",
	"icc_ppi_priorityr5_el1",
	"icc_ppi_priorityr6_el1",
	"icc_ppi_priorityr7_el1",
	"icc_ppi_priorityr8_el1",
	"icc_ppi_priorityr9_el1",
	"icc_ppi_sactiver0_el1",
	"icc_ppi_sactiver1_el1",
	"icc_ppi_spendr0_el1",
	"icc_ppi_spendr1_el1",
	"icc_rpr_el1",
	"icc_sgi0r_el1",
	"icc_sgi1r_el1",
	"icc_sre_el1",
	"icc_sre_el2",
	"icc_sre_el3",
	"ich_ap0r0_el2",
	"ich_ap0r1_el2",
	"ich_ap0r2_el2",
	"ich_ap0r3_el2",
	"ich_ap1r0_el2",
	"ich_ap1r1_el2",
	"ich_ap1r2_el2",
	"ich_ap1r3_el2",
	"ich_apr_el2",
	"ich_contextr_el2",
	"ich_eisr_el2",
	"ich_elrsr_el2",
	"ich_hcr_el2",
	"ich_hfgitr_el2",
	"ich_hfgrtr_el2",
	"ich_hfgwtr_el2",
	"ich_hppir_el2",
	"ich_lr0_el2",
	"ich_lr10_el2",
	"ich_lr11_el2",
	"ich_lr12_el2",
	"ich_lr13_el2",
	"ich_lr14_el2",
	"ich_lr15_el2",
	"ich_lr1_el2",
	"ich_lr2_el2",
	"ich_lr3_el2",
	"ich_lr4_el2",
	"ich_lr5_el2",
	"ich_lr6_el2",
	"ich_lr7_el2",
	"ich_lr8_el2",
	"ich_lr9_el2",
	"ich_misr_el2",
	"ich_ppi_activer0_el2",
	"ich_ppi_activer1_el2",
	"ich_ppi_dvir0_el2",
	"ich_ppi_dvir1_el2",
	"ich_ppi_enabler0_el2",
	"ich_ppi_enabler1_el2",
	"ich_ppi_pendr0_el2",
	"ich_ppi_pendr1_el2",
	"ich_ppi_priorityr0_el2",
	"ich_ppi_priorityr10_el2",
	"ich_ppi_priorityr11_el2",
	"ich_ppi_priorityr12_el2",
	"ich_ppi_priorityr13_el2",
	"ich_ppi_priorityr14_el2",
	"ich_ppi_priorityr15_el2",
	"ich_ppi_priorityr1_el2",
	"ich_ppi_priorityr2_el2",
	"ich_ppi_priorityr3_el2",
	"ich_ppi_priorityr4_el2",
	"ich_ppi_priorityr5_el2",
	"ich_ppi_priorityr6_el2",
	"ich_ppi_priorityr7_el2",
	"ich_ppi_priorityr8_el2",
	"ich_ppi_priorityr9_el2",
	"ich_vctlr_el2",
	"ich_vmcr_el2",
	"ich_vtr_el2",
	"id_aa64afr0_el1",
	"id_aa64afr1_el1",
	"id_aa64dfr0_el1",
	"id_aa64dfr1_el1",
	"id_aa64dfr2_el1",
	"id_aa64fpfr0_el1",
	"id_aa64isar0_el1",
	"id_aa64isar1_el1",
	"id_aa64isar2_el1",
	"id_aa64isar3_el1",
	"id_aa64mmfr0_el1",
	"id_aa64mmfr1_el1",
	"id_aa64mmfr2_el1",
	"id_aa64mmfr3_el1",
	"id_aa64mmfr4_el1",
	"id_aa64pfr0_el1",
	"id_aa64pfr1_el1",
	"id_aa64pfr2_el1",
	"id_aa64smfr0_el1",
	"id_aa64zfr0_el1",
	"id_afr0_el1",
	"id_dfr0_el1",
	"id_dfr1_el1",
	"id_isar0_el1",
	"id_isar1_el1",
	"id_isar2_el1",
	"id_isar3_el1",
	"id_isar4_el1",
	"id_isar5_el1",
	"id_isar6_el1",
	"id_mmfr0_el1",
	"id_mmfr1_el1",
	"id_mmfr2_el1",
	"id_mmfr3_el1",
	"id_mmfr4_el1",
	"id_mmfr5_el1",
	"id_pfr0_el1",
	"id_pfr1_el1",
	"id_pfr2_el1",
	"ifsr32_el2",
	"igdsw",
	"igdvac",
	"igsw",
	"igvac",
	"ipas2e1",
	"ipas2e1is",
	"ipas2e1os",
	"ipas2le1",
	"ipas2le1is",
	"ipas2le1os",
	"irtbrp_el1",
	"irtbrp_el12",
	"irtbrp_el2",
	"irtbrp_el3",
	"irtbru_el1",
	"irtbru_el12",
	"irtbru_el2",
	"isr_el1",
	"isw",
	"ivac",
	"ivau",
	"ldaff",
	"lddi",
	"lddis",
	"lden",
	"ldhm",
	"ldpend",
	"ldpri",
	"ldrcfg",
	"ldstt_el1",
	"ldstt_el12",
	"ldstt_el2",
	"lorc_el1",
	"lorea_el1",
	"lorid_el1",
	"lorn_el1",
	"lorsa_el1",
	"mair2_el1",
	"mair2_el12",
	"mair2_el2",
	"mair2_el3",
	"mair_el1",
	"mair_el12",
	"mair_el2",
	"mair_el3",
	"mdccint_el1",
	"mdccsr_el0",
	"mdcr_el2",
	"mdcr_el3",
	"mdrar_el1",
	"mdscr_el1",
	"mdselr_el1",
	"mdstepop_el1",
	"mecid_a0_el2",
	"mecid_a1_el2",
	"mecid_p0_el2",
	"mecid_p1_el2",
	"mecid_rl_a_el3",
	"mecidr_el2",
	"mfar_el3",
	"midr_el1",
	"mpam0_el1",
	"mpam1_el1",
	"mpam1_el12",
	"mpam2_el2",
	"mpam3_el3",
	"mpambw0_el1",
	"mpambw1_el1",
	"mpambw1_el12",
	"mpambw2_el2",
	"mpambw3_el3",
	"mpambwcap_el2",
	"mpambwidr_el1",
	"mpambwsm_el1",
	"mpamctl_el1",
	"mpamctl_el12",
	"mpamctl_el2",
	"mpamctl_el3",
	"mpamhcr_el2",
	"mpamidr_el1",
	"mpamsm_el1",
	"mpamvpm0_el2",
	"mpamvpm1_el2",
	"mpamvpm2_el2",
	"mpamvpm3_el2",
	"mpamvpm4_el2",
	"mpamvpm5_el2",
	"mpamvpm6_el2",
	"mpamvpm7_el2",
	"mpamvpmv_el2",
	"mpidr_el1",
	"mpuir_el1",
	"mpuir_el2",
	"mvfr0_el1",
	"mvfr1_el1",
	"mvfr2_el1",
	"nvhcr_el2",
	"nvhcrmask_el2",
	"nvhcrx_el2",
	"nvhcrxmask_el2",
	"nxs",
	"nzcv",
	"osdlr_el1",
	"osdtrrx_el1",
	"osdtrtx_el1",
	"oseccr_el1",
	"oslar_el1",
	"oslsr_el1",
	"paall",
	"paallos",
	"pan",
	"par_el1",
	"permae1",
	"permae1is",
	"permae1os",
	"perme1",
	"perme1is",
	"perme1os",
	"perme2",
	"perme2is",
	"perme2os",
	"perme3",
	"perme3is",
	"perme3os",
	"pfar_el1",
	"pfar_el12",
	"pfar_el2",
	"pir_el1",
	"pir_el12",
	"pir_el2",
	"pir_el3",
	"pire0_el1",
	"pire0_el12",
	"pire0_el2",
	"pm",
	"pmbidr_el1",
	"pmblimitr_el1",
	"pmbmar_el1",
	"pmbptr_el1",
	"pmbsr_el1",
	"pmbsr_el12",
	"pmbsr_el2",
	"pmbsr_el3",
	"pmccfiltr_el0",
	"pmccntr_el0",
	"pmccntsvr_el1",
	"pmceid0_el0",
	"pmceid1_el0",
	"pmcntenclr_el0",
	"pmcntenset_el0",
	"pmcr_el0",
	"pmecr_el1",
	"pmevcntr0_el0",
	"pmevcntr10_el0",
	"pmevcntr11_el0",
	"pmevcntr12_el0",
	"pmevcntr13_el0",
	"pmevcntr14_el0",
	"pmevcntr15_el0",
	"pmevcntr16_el0",
	"pmevcntr17_el0",
	"pmevcntr18_el0",
	"pmevcntr19_el0",
	"pmevcntr1_el0",
	"pmevcntr20_el0",
	"pmevcntr21_el0",
	"pmevcntr22_el0",
	"pmevcntr23_el0",
	"pmevcntr24_el0",
	"pmevcntr25_el0",
	"pmevcntr26_el0",
	"pmevcntr27_el0",
	"pmevcntr28_el0",
	"pmevcntr29_el0",
	"pmevcntr2_el0",
	"pmevcntr30_el0",
	"pmevcntr3_el0",
	"pmevcntr4_el0",
	"pmevcntr5_el0",
	"pmevcntr6_el0",
	"pmevcntr7_el0",
	"pmevcntr8_el0",
	"pmevcntr9_el0",
	"pmevcntsvr0_el1",
	"pmevcntsvr10_el1",
	"pmevcntsvr11_el1",
	"pmevcntsvr12_el1",
	"pmevcntsvr13_el1",
	"pmevcntsvr14_el1",
	"pmevcntsvr15_el1",
	"pmevcntsvr16_el1",
	"pmevcntsvr17_el1",
	"pmevcntsvr18_el1",
	"pmevcntsvr19_el1",
	"pmevcntsvr1_el1",
	"pmevcntsvr20_el1",
	"pmevcntsvr21_el1",
	"pmevcntsvr22_el1",
	"pmevcntsvr23_el1",
	"pmevcntsvr24_el1",
	"pmevcntsvr25_el1",
	"pmevcntsvr26_el1",
	"pmevcntsvr27_el1",
	"pmevcntsvr28_el1",
	"pmevcntsvr29_el1",
	"pmevcntsvr2_el1",
	"pmevcntsvr30_el1",
	"pmevcntsvr3_el1",
	"pmevcntsvr4_el1",
	"pmevcntsvr5_el1",
	"pmevcntsvr6_el1",
	"pmevcntsvr7_el1",
	"pmevcntsvr8_el1",
	"pmevcntsvr9_el1",
	"pmevtyper0_el0",
	"pmevtyper10_el0",
	"pmevtyper11_el0",
	"pmevtyper12_el0",
	"pmevtyper13_el0",
	"pmevtyper14_el0",
	"pmevtyper15_el0",
	"pmevtyper16_el0",
	"pmevtyper17_el0",
	"pmevtyper18_el0",
	"pmevtyper19_el0",
	"pmevtyper1_el0",
	"pmevtyper20_el0",
	"pmevtyper21_el0",
	"pmevtyper22_el0",
	"pmevtyper23_el0",
	"pmevtyper24_el0",
	"pmevtyper25_el0",
	"pmevtyper26_el0",
	"pmevtyper27_el0",
	"pmevtyper28_el0",
	"pmevtyper29_el0",
	"pmevtyper2_el0",
	"pmevtyper30_el0",
	"pmevtyper3_el0",
	"pmevtyper4_el0",
	"pmevtyper5_el0",
	"pmevtyper6_el0",
	"pmevtyper7_el0",
	"pmevtyper8_el0",
	"pmevtyper9_el0",
	"pmiar_el1",
	"pmicfiltr_el0",
	"pmicntr_el0",
	"pmicntsvr_el1",
	"pmintenclr_el1",
	"pmintenset_el1",
	"pmmir_el1",
	"pmovsclr_el0",
	"pmovsset_el0",
	"pmscr_el1",
	"pmscr_el12",
	"pmscr_el2",
	"pmsdsfr_el1",
	"pmselr_el0",
	"pmsevfr_el1",
	"pmsfcr_el1",
	"pmsicr_el1",
	"pmsidr_el1",
	"pmsirr_el1",
	"pmslatfr_el1",
	"pmsnevfr_el1",
	"pmsscr_el1",
	"pmswinc_el0",
	"pmuacr_el1",
	"pmuserenr_el0",
	"pmxevcntr_el0",
	"pmxevtyper_el0",
	"pmzr_el0",
	"por_el0",
	"por_el1",
	"por_el12",
	"por_el2",
	"por_el3",
	"prbar10_el1",
	"prbar10_el2",
	"prbar11_el1",
	"prbar11_el2",
	"prbar12_el1",
	"prbar12_el2",
	"prbar13_el1",
	"prbar13_el2",
	"prbar14_el1",
	"prbar14_el2",
	"prbar15_el1",
	"prbar15_el2",
	"prbar1_el1",
	"prbar1_el2",
	"prbar2_el1",
	"prbar2_el2",
	"prbar3_el1",
	"prbar3_el2",
	"prbar4_el1",
	"prbar4_el2",
	"prbar5_el1",
	"prbar5_el2",
	"prbar6_el1",
	"prbar6_el2",
	"prbar7_el1",
	"prbar7_el2",
	"prbar8_el1",
	"prbar8_el2",
	"prbar9_el1",
	"prbar9_el2",
	"prbar_el1",
	"prbar_el2",
	"prenr_el1",
	"prenr_el2",
	"prlar10_el1",
	"prlar10_el2",
	"prlar11_el1",
	"prlar11_el2",
	"prlar12_el1",
	"prlar12_el2",
	"prlar13_el1",
	"prlar13_el2",
	"prlar14_el1",
	"prlar14_el2",
	"prlar15_el1",
	"prlar15_el2",
	"prlar1_el1",
	"prlar1_el2",
	"prlar2_el1",
	"prlar2_el2",
	"prlar3_el1",
	"prlar3_el2",
	"prlar4_el1",
	"prlar4_el2",
	"prlar5_el1",
	"prlar5_el2",
	"prlar6_el1",
	"prlar6_el2",
	"prlar7_el1",
	"prlar7_el2",
	"prlar8_el1",
	"prlar8_el2",
	"prlar9_el1",
	"prlar9_el2",
	"prlar_el1",
	"prlar_el2",
	"prselr_el1",
	"prselr_el2",
	"rctx",
	"rcwmask_el1",
	"rcwsmask_el1",
	"revidr_el1",
	"rgsr_el1",
	"ripas2e1",
	"ripas2e1is",
	"ripas2e1os",
	"ripas2le1",
	"ripas2le1is",
	"ripas2le1os",
	"rmr_el1",
	"rmr_el2",
	"rmr_el3",
	"rndr",
	"rndrrs",
	"rpalos",
	"rpaos",
	"rvaae1",
	"rvaae1is",
	"rvaae1os",
	"rvaale1",
	"rvaale1is",
	"rvaale1os",
	"rvae1",
	"rvae1is",
	"rvae1os",
	"rvae2",
	"rvae2is",
	"rvae2os",
	"rvae3",
	"rvae3is",
	"rvae3os",
	"rvale1",
	"rvale1is",
	"rvale1os",
	"rvale2",
	"rvale2is",
	"rvale2os",
	"rvale3",
	"rvale3is",
	"rvale3os",
	"rvbar_el1",
	"rvbar_el2",
	"rvbar_el3",
	"s12e0r",
	"s12e0w",
	"s12e1r",
	"s12e1w",
	"s1e0r",
	"s1e0w",
	"s1e1a",
	"s1e1r",
	"s1e1rp",
	"s1e1w",
	"s1e1wp",
	"s1e2a",
	"s1e2r",
	"s1e2w",
	"s1e3a",
	"s1e3r",
	"s1e3w",
	"s2pir_el2",
	"s2por_el1",
	"scr2_el3",
	"scr_el3",
	"sctlr2_el1",
	"sctlr2_el12",
	"sctlr2_el2",
	"sctlr2_el3",
	"sctlr2alias_el1",
	"sctlr2mask_el1",
	"sctlr2mask_el12",
	"sctlr2mask_el2",
	"sctlr_el1",
	"sctlr_el12",
	"sctlr_el2",
	"sctlr_el3",
	"sctlralias_el1",
	"sctlrmask_el1",
	"sctlrmask_el12",
	"sctlrmask_el2",
	"scxtnum_el0",
	"scxtnum_el1",
	"scxtnum_el12",
	"scxtnum_el2",
	"scxtnum_el3",
	"sder32_el2",
	"sder32_el3",
	"smcr_el1",
	"smcr_el12",
	"smcr_el2",
	"smcr_el3",
	"smidr_el1",
	"smpri_el1",
	"smprimap_el2",
	"sp_el0",
	"sp_el1",
	"sp_el2",
	"spmaccessr_el1",
	"spmaccessr_el12",
	"spmaccessr_el2",
	"spmaccessr_el3",
	"spmcfgr_el1",
	"spmcgcr0_el1",
	"spmcgcr1_el1",
	"spmcntenclr_el0",
	"spmcntenset_el0",
	"spmcr_el0",
	"spmdevaff_el1",
	"spmdevarch_el1",
	"spmevcntr0_el0",
	"spmevcntr10_el0",
	"spmevcntr11_el0",
	"spmevcntr12_el0",
	"spmevcntr13_el0",
	"spmevcntr14_el0",
	"spmevcntr15_el0",
	"spmevcntr1_el0",
	"spmevcntr2_el0",
	"spmevcntr3_el0",
	"spmevcntr4_el0",
	"spmevcntr5_el0",
	"spmevcntr6_el0",
	"spmevcntr7_el0",
	"spmevcntr8_el0",
	"spmevcntr9_el0",
	"spmevfilt2r0_el0",
	"spmevfilt2r10_el0",
	"spmevfilt2r11_el0",
	"spmevfilt2r12_el0",
	"spmevfilt2r13_el0",
	"spmevfilt2r14_el0",
	"spmevfilt2r15_el0",
	"spmevfilt2r1_el0",
	"spmevfilt2r2_el0",
	"spmevfilt2r3_el0",
	"spmevfilt2r4_el0",
	"spmevfilt2r5_el0",
	"spmevfilt2r6_el0",
	"spmevfilt2r7_el0",
	"spmevfilt2r8_el0",
	"spmevfilt2r9_el0",
	"spmevfiltr0_el0",
	"spmevfiltr10_el0",
	"spmevfiltr11_el0",
	"spmevfiltr12_el0",
	"spmevfiltr13_el0",
	"spmevfiltr14_el0",
	"spmevfiltr15_el0",
	"spmevfiltr1_el0",
	"spmevfiltr2_el0",
	"spmevfiltr3_el0",
	"spmevfiltr4_el0",
	"spmevfiltr5_el0",
	"spmevfiltr6_el0",
	"spmevfiltr7_el0",
	"spmevfiltr8_el0",
	"spmevfiltr9_el0",
	"spmevtyper0_el0",
	"spmevtyper10_el0",
	"spmevtyper11_el0",
	"spmevtyper12_el0",
	"spmevtyper13_el0",
	"spmevtyper14_el0",
	"spmevtyper15_el0",
	"spmevtyper1_el0",
	"spmevtyper2_el0",
	"spmevtyper3_el0",
	"spmevtyper4_el0",
	"spmevtyper5_el0",
	"spmevtyper6_el0",
	"spmevtyper7_el0",
	"spmevtyper8_el0",
	"spmevtyper9_el0",
	"spmiidr_el1",
	"spmintenclr_el1",
	"spmintenset_el1",
	"spmovsclr_el0",
	"spmovsset_el0",
	"spmrootcr_el3",
	"spmscr_el1",
	"spmselr_el0",
	"spmzr_el0",
	"spsel",
	"spsr_abt",
	"spsr_el1",
	"spsr_el12",
	"spsr_el2",
	"spsr_el3",
	"spsr_fiq",
	"spsr_hyp",
	"spsr_irq",
	"spsr_svc",
	"spsr_und",
	"ssbs",
	"stindex_el1",
	"stindex_el12",
	"stindex_el2",
	"stindex_el3",
	"svcr",
	"svcrsm",
	"svcrsmza",
	"svcrza",
	"sys",
	"tco",
	"tcr2_el1",
	"tcr2_el12",
	"tcr2_el2",
	"tcr2alias_el1",
	"tcr2mask_el1",
	"tcr2mask_el12",
	"tcr2mask_el2",
	"tcr_el1",
	"tcr_el12",
	"tcr_el2",
	"tcr_el3",
	"tcralias_el1",
	"tcrmask_el1",
	"tcrmask_el12",
	"tcrmask_el2",
	"tfsr_el1",
	"tfsr_el12",
	"tfsr_el2",
	"tfsr_el3",
	"tfsre0_el1",
	"tindex_el0",
	"tindex_el1",
	"tindex_el12",
	"tindex_el2",
	"tindex_el3",
	"tlbididr_el1",
	"tpcr0_el0",
	"tpcr0_el1",
	"tpcr0_el12",
	"tpcr0_el2",
	"tpcr1_el0",
	"tpcr1_el1",
	"tpcr1_el12",
	"tpcr1_el2",
	"tpidr2_el0",
	"tpidr3_el0",
	"tpidr3_el1",
	"tpidr3_el12",
	"tpidr3_el2",
	"tpidr3_el3",
	"tpidr_el0",
	"tpidr_el1",
	"tpidr_el2",
	"tpidr_el3",
	"tpidrro_el0",
	"trbbaser_el1",
	"trbidr_el1",
	"trblimitr_el1",
	"trbmar_el1",
	"trbmpam_el1",
	"trbptr_el1",
	"trbsr_el1",
	"trbsr_el12",
	"trbsr_el2",
	"trbsr_el3",
	"trbtrg_el1",
	"trcacatr0",
	"trcacatr1",
	"trcacatr10",
	"trcacatr11",
	"trcacatr12",
	"trcacatr13",
	"trcacatr14",
	"trcacatr15",
	"trcacatr2",
	"trcacatr3",
	"trcacatr4",
	"trcacatr5",
	"trcacatr6",
	"trcacatr7",
	"trcacatr8",
	"trcacatr9",
	"trcacvr0",
	"trcacvr1",
	"trcacvr10",
	"trcacvr11",
	"trcacvr12",
	"trcacvr13",
	"trcacvr14",
	"trcacvr15",
	"trcacvr2",
	"trcacvr3",
	"trcacvr4",
	"trcacvr5",
	"trcacvr6",
	"trcacvr7",
	"trcacvr8",
	"trcacvr9",
	"trcauthstatus",
	"trcauxctlr",
	"trcbbctlr",
	"trcccctlr",
	"trccidcctlr0",
	"trccidcctlr1",
	"trccidcvr0",
	"trccidcvr1",
	"trccidcvr2",
	"trccidcvr3",
	"trccidcvr4",
	"trccidcvr5",
	"trccidcvr6",
	"trccidcvr7",
	"trccidr0",
	"trccidr1",
	"trccidr2",
	"trccidr3",
	"trcclaimclr",
	"trcclaimset",
	"trccntctlr0",
	"trccntctlr1",
	"trccntctlr2",
	"trccntctlr3",
	"trccntrldvr0",
	"trccntrldvr1",
	"trccntrldvr2",
	"trccntrldvr3",
	"trccntvr0",
	"trccntvr1",
	"trccntvr2",
	"trccntvr3",
	"trcconfigr",
	"trcdevaff0",
	"trcdevaff1",
	"trcdevarch",
	"trcdevid",
	"trcdevtype",
	"trcdvcmr0",
	"trcdvcmr1",
	"trcdvcmr2",
	"trcdvcmr3",
	"trcdvcmr4",
	"trcdvcmr5",
	"trcdvcmr6",
	"trcdvcmr7",
	"trcdvcvr0",
	"trcdvcvr1",
	"trcdvcvr2",
	"trcdvcvr3",
	"trcdvcvr4",
	"trcdvcvr5",
	"trcdvcvr6",
	"trcdvcvr7",
	"trceventctl0r",
	"trceventctl1r",
	"trcextinselr",
	"trcextinselr0",
	"trcextinselr1",
	"trcextinselr2",
	"trcextinselr3",
	"trcidr0",
	"trcidr1",
	"trcidr10",
	"trcidr11",
	"trcidr12",
	"trcidr13",
	"trcidr2",
	"trcidr3",
	"trcidr4",
	"trcidr5",
	"trcidr6",
	"trcidr7",
	"trcidr8",
	"trcidr9",
	"trcimspec0",
	"trcimspec1",
	"trcimspec2",
	"trcimspec3",
	"trcimspec4",
	"trcimspec5",
	"trcimspec6",
	"trcimspec7",
	"trcitctrl",
	"trcitecr_el1",
	"trcitecr_el12",
	"trcitecr_el2",
	"trciteedcr",
	"trclar",
	"trclsr",
	"trcoslar",
	"trcoslsr",
	"trcpdcr",
	"trcpdsr",
	"trcpidr0",
	"trcpidr1",
	"trcpidr2",
	"trcpidr3",
	"trcpidr4",
	"trcpidr5",
	"trcpidr6",
	"trcpidr7",
	"trcprgctlr",
	"trcprocselr",
	"trcqctlr",
	"trcrsctlr10",
	"trcrsctlr11",
	"trcrsctlr12",
	"trcrsctlr13",
	"trcrsctlr14",
	"trcrsctlr15",
	"trcrsctlr16",
	"trcrsctlr17",
	"trcrsctlr18",
	"trcrsctlr19",
	"trcrsctlr2",
	"trcrsctlr20",
	"trcrsctlr21",
	"trcrsctlr22",
	"trcrsctlr23",
	"trcrsctlr24",
	"trcrsctlr25",
	"trcrsctlr26",
	"trcrsctlr27",
	"trcrsctlr28",
	"trcrsctlr29",
	"trcrsctlr3",
	"trcrsctlr30",
	"trcrsctlr31",
	"trcrsctlr4",
	"trcrsctlr5",
	"trcrsctlr6",
	"trcrsctlr7",
	"trcrsctlr8",
	"trcrsctlr9",
	"trcrsr",
	"trcseqevr0",
	"trcseqevr1",
	"trcseqevr2",
	"trcseqrstevr",
	"trcseqstr",
	"trcssccr0",
	"trcssccr1",
	"trcssccr2",
	"trcssccr3",
	"trcssccr4",
	"trcssccr5",
	"trcssccr6",
	"trcssccr7",
	"trcsscsr0",
	"trcsscsr1",
	"trcsscsr2",
	"trcsscsr3",
	"trcsscsr4",
	"trcsscsr5",
	"trcsscsr6",
	"trcsscsr7",
	"trcsspcicr0",
	"trcsspcicr1",
	"trcsspcicr2",
	"trcsspcicr3",
	"trcsspcicr4",
	"trcsspcicr5",
	"trcsspcicr6",
	"trcsspcicr7",
	"trcstallctlr",
	"trcstatr",
	"trcsyncpr",
	"trctraceidr",
	"trctsctlr",
	"trcvdarcctlr",
	"trcvdctlr",
	"trcvdsacctlr",
	"trcvictlr",
	"trcviiectlr",
	"trcvipcssctlr",
	"trcvissctlr",
	"trcvmidcctlr0",
	"trcvmidcctlr1",
	"trcvmidcvr0",
	"trcvmidcvr1",
	"trcvmidcvr2",
	"trcvmidcvr3",
	"trcvmidcvr4",
	"trcvmidcvr5",
	"trcvmidcvr6",
	"trcvmidcvr7",
	"trfcr_el1",
	"trfcr_el12",
	"trfcr_el2",
	"ttbr0_el1",
	"ttbr0_el12",
	"ttbr0_el2",
	"ttbr0_el3",
	"ttbr1_el1",
	"ttbr1_el12",
	"ttbr1_el2",
	"tttbrp_el1",
	"tttbrp_el12",
	"tttbrp_el2",
	"tttbrp_el3",
	"tttbru_el1",
	"tttbru_el12",
	"tttbru_el2",
	"uao",
	"vaae1",
	"vaae1is",
	"vaae1os",
	"vaale1",
	"vaale1is",
	"vaale1os",
	"vae1",
	"vae1is",
	"vae1os",
	"vae2",
	"vae2is",
	"vae2os",
	"vae3",
	"vae3is",
	"vae3os",
	"vale1",
	"vale1is",
	"vale1os",
	"vale2",
	"vale2is",
	"vale2os",
	"vale3",
	"vale3is",
	"vale3os",
	"vbar_el1",
	"vbar_el12",
	"vbar_el2",
	"vbar_el3",
	"vdaff",
	"vddi",
	"vddis",
	"vden",
	"vdhm",
	"vdisr_el2",
	"vdisr_el3",
	"vdpend",
	"vdpri",
	"vdrcfg",
	"vmalle1",
	"vmalle1is",
	"vmalle1os",
	"vmalls12e1",
	"vmalls12e1is",
	"vmalls12e1os",
	"vmallws2e1",
	"vmallws2e1is",
	"vmallws2e1os",
	"vmecid_a_el2",
	"vmecid_p_el2",
	"vmpidr_el2",
	"vnccr_el2",
	"vncr_el2",
	"vpidr_el2",
	"vsctlr_el2",
	"vsesr_el2",
	"vsesr_el3",
	"vstcr_el2",
	"vsttbr_el2",
	"vtcr_el2",
	"vtlbid0_el2",
	"vtlbid1_el2",
	"vtlbid2_el2",
	"vtlbid3_el2",
	"vtlbidos0_el2",
	"vtlbidos1_el2",
	"vtlbidos2_el2",
	"vtlbidos3_el2",
	"vttbr_el2",
	"zcr_el1",
	"zcr_el12",
	"zcr_el2",
	"zcr_el3",
	"zgbva",
	"zva",
}

local directives = {
	".aeabi_attribute",
	".aeabi_subsection",
	".arch",
	".arch_extension",
	".bfloat16",
	".cfi_b_key_frame",
	".cfi_mte_tagged_frame",
	".cpu",
	".dword",
	".even",
	".float16",
	".inst",
	".long",
	".ltorg",
	".pool",
	".req",
	".secidx",
	".secrel32",
	".tlsdescadd",
	".tlsdesccall",
	".tlsdescldr",
	".unreq",
	".variant_pcs",
	".word",
	".xword",
}

local modifiers = {
	"al",
	"any",
	"asr",
	"c",
	"cc",
	"cs",
	"csync",
	"dsync",
	"eq",
	"first",
	"ge",
	"gt",
	"hi",
	"hs",
	"ir",
	"ish",
	"ishld",
	"ishnxs",
	"ishst",
	"j",
	"jc",
	"keep",
	"last",
	"ld",
	"le",
	"lo",
	"ls",
	"lsl",
	"lsr",
	"lt",
	"mi",
	"msl",
	"mul",
	"mul vl",
	"ne",
	"nfrst",
	"nlast",
	"none",
	"nsh",
	"nshld",
	"nshnxs",
	"nshst",
	"nv",
	"osh",
	"oshld",
	"oshnxs",
	"oshst",
	"ph",
	"pl",
	"plast",
	"pldl1keep",
	"pldl1strm",
	"pldl2keep",
	"pldl2strm",
	"pldl3keep",
	"pldl3strm",
	"pldslckeep",
	"pldslcstrm",
	"plil1keep",
	"plil1strm",
	"plil2keep",
	"plil2strm",
	"plil3keep",
	"plil3strm",
	"plislckeep",
	"plislcstrm",
	"pmore",
	"pstl1keep",
	"pstl1strm",
	"pstl2keep",
	"pstl2strm",
	"pstl3keep",
	"pstl3strm",
	"pstslckeep",
	"pstslcstrm",
	"r",
	"ror",
	"st",
	"strm",
	"sxtb",
	"sxth",
	"sxtw",
	"sxtx",
	"sy",
	"synxs",
	"tcont",
	"tstop",
	"ul",
	"uxtb",
	"uxth",
	"uxtw",
	"uxtx",
	"vc",
	"vs",
}

--- Add one caseless vocabulary group to symbol map
-- @param symbols table destination symbol map
-- @param words table reserved words
-- @param token_type string syntax token type
local function add_ci(symbols, words, token_type)
	for _, word in ipairs(words) do
		symbols[word] = token_type
		symbols[string.upper(word)] = token_type
	end
end

local symbols = {}

-- Operand names load first so instruction aliases keep instruction role
add_ci(symbols, modifiers, "literal")
add_ci(symbols, registers, "variable")
add_ci(symbols, system_registers, "constant")
add_ci(symbols, directives, "keyword")
add_ci(symbols, instructions, "keyword")

return symbols
