package core:rexcode/isa/arm32

⌘K
Ctrl+K
or
/

    Overview

    rexcode · Brendan Punsky (dotbmp@github), original author

    rexcode · Brendan Punsky (dotbmp@github), original author

    rexcode · Brendan Punsky (dotbmp@github), original author

    rexcode · Brendan Punsky (dotbmp@github), original author

    rexcode · Brendan Punsky (dotbmp@github), original author

    rexcode · Brendan Punsky (dotbmp@github), original author

    rexcode · Brendan Punsky (dotbmp@github), original author

    rexcode · Brendan Punsky (dotbmp@github), original author

    rexcode · Brendan Punsky (dotbmp@github), original author

    rexcode · Brendan Punsky (dotbmp@github), original author

    rexcode · Brendan Punsky (dotbmp@github), original author

    rexcode · Brendan Punsky (dotbmp@github), original author

    Types

    Data_Type ¶

    Data_Type :: enum u8 {
    	NONE, 
    	S8, 
    	S16, 
    	S32, 
    	S64,  // signed integer
    	U8, 
    	U16, 
    	U32, 
    	U64,  // unsigned integer
    	I8, 
    	I16, 
    	I32, 
    	I64,  // sign-agnostic integer
    	F16, 
    	F32, 
    	F64,  // floating point
    	P8, 
    	P16,  // polynomial
    	BF16, // bfloat16
    	SZ8, 
    	SZ16, 
    	SZ32, 
    	SZ64, // bare element size (`vmov.32`, `vstrb.8`)
    }
     

    The data type an A32 mnemonic carries as a suffix: vadd.i32, vcvt.s32.f32, vstrb.8. Unlike A64 -- where the arrangement belongs to each operand (add v0.4s, v1.4s, v2.4s) -- in A32 it belongs to the INSTRUCTION, which is why it lives here and on Instruction rather than on Operand.

    It is not decoration: NEON reuses one operand shape across every element width, so vadd.i8 and vadd.f32 are both DPR,DPR,DPR and the type is the only thing that separates their encodings. Without it the encoder can only ever reach the first form of each shape.

    Data_Types ¶

    Data_Types :: [2]Data_Type
     

    Two slots because the convert family names both ends: vcvt.s32.f32. Everything else leaves dt[1] as .NONE.

    Decode_Entry ¶

    Decode_Entry :: struct #packed {
    	mnemonic: Mnemonic,
    	// 2
    	ops:      [6]Operand_Type,
    	// 6
    	enc:      [6]Operand_Encoding,
    	// 6
    	bits:     u32,
    	// 4
    	mask:     u32,
    	// 4
    	feature:  Feature,
    	// 1
    	mode:     Mode,
    	// 1
    	flags:    Encoding_Flags,
    	// 1
    	dt:       [2]Data_Type,
    }

    Decode_Index ¶

    Decode_Index :: struct #packed {
    	start: u16,
    	count: u16,
    }

    Encode_Run ¶

    Encode_Run :: struct {
    	start: u32,
    	count: u32,
    }
     

    Companion run index: ENCODE_RUNS[mnemonic] -> contiguous run in ENCODE_FORMS.

    Encoding ¶

    Encoding :: struct #packed {
    	mnemonic: Mnemonic,
    	// 2
    	ops:      [6]Operand_Type,
    	// 6
    	enc:      [6]Operand_Encoding,
    	// 6
    	bits:     u32,
    	// 4
    	mask:     u32,
    	// 4
    	feature:  Feature,
    	// 1
    	mode:     Mode,
    	// 1
    	flags:    Encoding_Flags,
    	// 1
    	dt:       [2]Data_Type,
    }

    Encoding_Flags ¶

    Encoding_Flags :: distinct bit_field u8 {
    	sets_flags:  bool | 1,
    	cond_in_28:  bool | 1,
    	branch:      bool | 1,
    	cond_branch: bool | 1,
    	writes_pc:   bool | 1,
    	thumb32:     bool | 1,
    	deprecated:  bool | 1,
    	cond_in_21:  bool | 1,
    }

    Feature ¶

    Feature :: enum u8 {
    	BASE,         // ARMv4 base ISA (works on every ARM core including ARM7TDMI / GBA)
    	THUMB,        // Thumb-1 (ARMv4T+)
    	V5T,          // ARMv5T additions (BLX, CLZ, BKPT)
    	V5TE,         // ARMv5TE DSP extensions (SMLAxy / SMULxy / etc.)
    	V5TEJ,        // ARMv5TEJ (BXJ; Jazelle support)
    	V6,           // ARMv6 SIMD-on-GPR + REV/SXTB/etc.
    	V6K,          // ARMv6K (CLREX, multiprocessing hints)
    	V6T2,         // ARMv6T2 (Thumb-2, MOVW/MOVT, bitfield)
    	V7,           // ARMv7-A/R base (DMB/DSB/ISB, LDREX/STREX full set)
    	V7VE,         // ARMv7-A Virtualisation Extensions (HVC, ERET)
    	V8,           // ARMv8-A AArch32 (HLT, SEVL, MVN nzcvqg)
    	DIV,          // SDIV/UDIV (ARMv7-A optional, ARMv7-R/M mandatory)
    	VFPV2,        // VFP version 2 (double-precision FP)
    	VFPV3,        // VFP version 3 (D32, VCVTB/T half-prec)
    	VFPV4,        // VFP version 4 (VFMA family)
    	HALF_FP,      // FP16 storage support
    	NEON,         // Advanced SIMD
    	NEON_HALF_FP, // FP16 NEON arithmetic
    	CRYPTO,       // ARMv8 crypto (AES + SHA1 + SHA2)
    	CRC32,        // ARMv8 CRC32B/H/W + CRC32CB/H/W
    	DOT,          // ARMv8.2 dot product (VSDOT/VUDOT)
    	BF16,         // ARMv8.6 BFloat16
    	FCMA,         // ARMv8.3 complex number (VCMLA/VCADD)
    	FHM,          // ARMv8.2 FP16 multiply-acc-long
    	// ---- M-profile ARMv8-M extensions ----
    	V8M,          // ARMv8-M baseline (Cortex-M23, M33, M55, M85)
    	V8M_SE,       // ARMv8-M Security Extensions (TT/TTT/TTA/TTAT)
    	V81M,         // ARMv8.1-M mainline (low-overhead loops, MVE)
    	MVE_INT,      // M-profile Vector Extension (Helium) integer (Cortex-M55+)
    	MVE_FP,       // M-profile Vector Extension floating-point
    	CDE,          // Custom Datapath Extension (Cortex-M33+)
    }

    Index_Mode ¶

    Index_Mode :: enum u8 {
    	OFFSET     = 0, // [Rn, #imm]      -- no writeback
    	PRE_INDEX  = 1, // [Rn, #imm]!     -- writeback after addr calc
    	POST_INDEX = 2, // [Rn], #imm      -- writeback, base = Rn pre-update
    }

    Instruction ¶

    Instruction :: struct #align (64) {
    	// Six, because the coprocessor forms need six: MCR, MRC and CDP are
    	// written `mcr p15, #0, r0, c0, c0, #0`, and dropping the last two
    	// operands does not merely print short -- an opc2 that is not zero
    	// encodes as zero, which is the wrong instruction. Six operands cannot
    	// fit alongside the rest in 64 bytes (Operand is 11, and Memory cannot
    	// go below 8), so this straddles two cache lines rather than one.
    	ops:      [6]Operand `fmt:"v,operand_count"`,
    	// 6 * 11 = 66
    	mnemonic: Mnemonic,
    	// cond, operand_count, mode, length and the two flag bits share one
    	// 16-bit word -- together they need 13 bits, and spending six bytes on
    	// them was what pushed Instruction over 48. `using` keeps inst.cond,
    	// inst.operand_count, inst.mode, inst.length, inst.sets_flags and
    	// inst.wide reading and writing exactly as they did as plain fields.
    	using _:  bit_field u16 {
    		cond:          u8 | 4,
    		operand_count: u8 | 3,
    		mode:          Mode | 1,
    		length:        u8 | 3,
    		sets_flags:    bool | 1,
    		wide:          bool | 1,
    		writeback:     bool | 1,
    	},
    	// Form-id hint: when non-zero, this is (1 + the index into
    	// ENCODING_TABLE[mnemonic]) of the form the decoder produced. The encoder
    	// uses it as a tie-breaker for the shape-ambiguous entries the data type
    	// does not separate on its own -- register lists, LDM/STM addressing
    	// modes. User-constructed instructions leave it at 0 and take the
    	// first shape match.
    	form_id:  u16,
    	// The `.i32` / `.s32.f32` suffix. Zero (.NONE) means "unspecified": the
    	// encoder then takes the first form of the matching shape, which is what
    	// every instruction did before this field existed. Set it and the encoder
    	// picks the encoding for that type.
    	dt:       [2]Data_Type,
    	// Spare, and free: the operands leave the tail of the second cache line
    	// unused either way. New fields land here without changing the layout.
    	_:        [54]u8,
    }
     

    Sized and aligned to a cache line -- see the note in arm64/instructions.odin. The payload is 48 bytes; padding out to 64 and aligning is worth ~21% on decode, because decode writes whole Instructions and unaligned stores are expensive enough to outweigh writing more bytes.

    Related Procedures With Parameters

    Instruction_Flags ¶

    Instruction_Flags :: distinct bit_field u8 {
    	sets_flags: bool | 1,
    	wide:       bool | 1,
    	_:          u8 | 6,
    }

    Instruction_Info ¶

    Instruction_Info :: struct {
    	offset:       u32,
    	decode_entry: u16,
    	_:            u16,
    }

    List_Shape ¶

    List_Shape :: distinct bit_field u8 {
    	count:     u8 | 3,
    	stride:    u8 | 3,
    	all_lanes: bool | 1,
    }

    Memory ¶

    Memory :: distinct bit_field u64 {
    	base:       Register | 15,
    	index:      Register | 15,
    	shift_type: Shift_Type | 4,
    	shift_amt:  u8 | 6,
    	mode:       Index_Mode | 2,
    	sign:       i8 | 3,
    	disp:       i32 | 19,
    }
     

    Packed into one word: this sits in every Operand, so its width is multiplied by four in every Instruction. Field syntax and composite literals are unchanged, so this is invisible to callers.

    A memory base or index is always a GPR, whose raw value never exceeds REG_GPR|15 = 0x100F, so 15 bits hold one losslessly (index uses Register(0), not a high sentinel, for "absent"). disp gets 19 bits (+/-262,143) against a worst case of 4,095 -- the imm12 of an A32 load -- so there is ~64x headroom.

    Related Procedures With Returns

    Mnemonic ¶

    Mnemonic :: enum u16 {
    	INVALID      = 0, 
    	// -------------------------------------------------------------------------
    	// Data processing -- core 16 ops (A32 + T32)
    	// -------------------------------------------------------------------------
    	AND, 
    	EOR, 
    	SUB, 
    	RSB, 
    	ADD, 
    	ADC, 
    	SBC, 
    	RSC, 
    	TST, 
    	TEQ, 
    	CMP, 
    	CMN, 
    	ORR, 
    	MOV, 
    	BIC, 
    	MVN, 
    	// Shift mnemonics (in A32 these are MOV aliases with shift, but in Thumb
    	// they are first-class encodings, so they have their own Mnemonic entries)
    	LSL, 
    	LSR, 
    	ASR, 
    	ROR, 
    	RRX, 
    	// Thumb-1 specific: ADR is an alias for ADD Rd, PC, #imm  (also exists in
    	// A32 as an ADD/SUB imm to PC alias)
    	ADR, 
    	NEG,              // Thumb-1 only: NEG Rd, Rm = RSB Rd, Rm, #0
    	// ARMv6T2: 16-bit immediate moves
    	MOVW,             // MOV with 16-bit immediate (low half)
    	MOVT,             // MOV-Top (high half, preserves low)
    	// ARMv6T2: bit field manipulation
    	BFC, 
    	BFI, 
    	SBFX, 
    	UBFX, 
    	// ARMv6: register operand sign/zero extends with optional rotation
    	SXTB, 
    	SXTB16, 
    	SXTH, 
    	UXTB, 
    	UXTB16, 
    	UXTH, 
    	SXTAB, 
    	SXTAB16, 
    	SXTAH, 
    	UXTAB, 
    	UXTAB16, 
    	UXTAH, 
    	// ARMv6: bit reverse / byte swap / count leading zeros
    	CLZ, 
    	RBIT, 
    	REV, 
    	REV16, 
    	REVSH, 
    	SEL,              // select bytes per APSR.GE flags
    	// ARMv6T2/v7: PKHBT/PKHTB (pack halfword)
    	PKHBT, 
    	PKHTB, 
    	// ARMv6: USAD8 (sum of absolute differences)
    	USAD8, 
    	USADA8, 
    	// ARMv6: saturating arithmetic
    	SSAT, 
    	USAT, 
    	SSAT16, 
    	USAT16, 
    	QADD, 
    	QSUB, 
    	QDADD, 
    	QDSUB, 
    	// ARMv6: SIMD on GPRs (8/16-bit lanes packed in 32-bit reg)
    	SADD8, 
    	SADD16, 
    	SASX, 
    	SSAX, 
    	SSUB8, 
    	SSUB16, 
    	UADD8, 
    	UADD16, 
    	UASX, 
    	USAX, 
    	USUB8, 
    	USUB16, 
    	QADD8, 
    	QADD16, 
    	QASX, 
    	QSAX, 
    	QSUB8, 
    	QSUB16, 
    	UQADD8, 
    	UQADD16, 
    	UQASX, 
    	UQSAX, 
    	UQSUB8, 
    	UQSUB16, 
    	SHADD8, 
    	SHADD16, 
    	SHASX, 
    	SHSAX, 
    	SHSUB8, 
    	SHSUB16, 
    	UHADD8, 
    	UHADD16, 
    	UHASX, 
    	UHSAX, 
    	UHSUB8, 
    	UHSUB16, 
    	// ARMv6: dual multiply-accumulate
    	SMUAD, 
    	SMUADX, 
    	SMUSD, 
    	SMUSDX, 
    	SMLAD, 
    	SMLADX, 
    	SMLSD, 
    	SMLSDX, 
    	SMLALD, 
    	SMLALDX, 
    	SMLSLD, 
    	SMLSLDX, 
    	// Most-significant-word multiply
    	SMMUL, 
    	SMMULR, 
    	SMMLA, 
    	SMMLAR, 
    	SMMLS, 
    	SMMLSR, 
    	// Multiply / multiply-accumulate (ARMv4+ core)
    	MUL, 
    	MLA, 
    	MLS,              // ARMv6T2: multiply-subtract
    	UMULL, 
    	UMLAL, 
    	SMULL, 
    	SMLAL, 
    	UMAAL,            // ARMv6: unsigned long multiply-acc-acc
    	// Halfword multiply (ARMv5TE / ARMv6 DSP):
    	//   SMLA{x}{y}, SMLAW{y}, SMUL{x}{y}, SMULW{y}, SMLAL{x}{y}
    	SMLABB, 
    	SMLABT, 
    	SMLATB, 
    	SMLATT, 
    	SMLAWB, 
    	SMLAWT, 
    	SMULBB, 
    	SMULBT, 
    	SMULTB, 
    	SMULTT, 
    	SMULWB, 
    	SMULWT, 
    	SMLALBB, 
    	SMLALBT, 
    	SMLALTB, 
    	SMLALTT, 
    	// Integer division (ARMv7-A optional, ARMv7-R/M mandatory; v7VE adds A-profile)
    	SDIV, 
    	UDIV, 
    	// -------------------------------------------------------------------------
    	// Branches
    	// -------------------------------------------------------------------------
    	B,                // signed 24/26-bit branch
    	BL,               // branch + link
    	BX,               // branch and exchange (to ARM/Thumb)
    	BLX,              // branch+link+exchange (reg or imm)
    	BXJ,              // branch and exchange to Jazelle (deprecated)
    	// ARMv6T2+: compare and branch (Thumb-only)
    	CBZ, 
    	CBNZ, 
    	// ARMv6T2+: table branch (Thumb-only)
    	TBB, 
    	TBH, 
    	// -------------------------------------------------------------------------
    	// Status register access / hint instructions
    	// -------------------------------------------------------------------------
    	MSR, 
    	MRS, 
    	CPS,              // change processor state
    	SETEND,           // set endianness (deprecated in v8)
    	NOP, 
    	YIELD, 
    	WFE, 
    	WFI, 
    	SEV, 
    	SEVL,             // ARMv8: sev local
    	DBG, 
    	HINT,             // generic hint with imm
    	DMB, 
    	DSB, 
    	ISB,              // ARMv7 barriers
    	CLREX,            // clear exclusive monitor
    	PLD, 
    	PLDW, 
    	PLI,              // preload
    	// ARMv8 AArch32 additions
    	HLT,              // halt instruction (debug)
    	DCPS1, 
    	DCPS2, 
    	DCPS3,            // debug change processor state
    	ERET,             // exception return (PL2+)
    	// ARMv8 security/profiling/trace barriers (FEAT_RAS, FEAT_SB, FEAT_SPE, FEAT_TRF)
    	ESB,              // error synchronization barrier (HINT #16)
    	PSB_CSYNC,        // profile sync barrier (HINT #17)
    	TSB_CSYNC,        // trace sync barrier (HINT #18)
    	CSDB,             // consumption of speculative data barrier (HINT #20)
    	SB,               // synchronization barrier (ARMv8.5, dedicated encoding)
    	// ARMv8.1 PAN (Privileged Access Never) bit toggle
    	SETPAN, 
    	// -------------------------------------------------------------------------
    	// Exception generation
    	// -------------------------------------------------------------------------
    	SVC,              // supervisor call (was SWI)
    	BKPT,             // breakpoint
    	HVC,              // hypervisor call (ARMv7VE)
    	SMC,              // secure monitor call (TrustZone)
    	UDF,              // permanently undefined
    	// -------------------------------------------------------------------------
    	// Load / Store
    	// -------------------------------------------------------------------------
    	LDR, 
    	STR,              // word
    	LDRB, 
    	STRB,             // byte
    	LDRH, 
    	STRH,             // halfword
    	LDRSB, 
    	LDRSH,            // signed loads
    	LDRD, 
    	STRD,             // doubleword (Rt/Rt+1 pair)
    	LDRT, 
    	STRT,             // user-mode (privileged-mode pretend)
    	LDRBT, 
    	STRBT, 
    	LDRHT, 
    	STRHT, 
    	LDRSBT, 
    	LDRSHT, 
    	// ARMv6+ acquire/release
    	LDA, 
    	STL,              // word acquire/release
    	LDAB, 
    	STLB,             // byte
    	LDAH, 
    	STLH,             // halfword
    	// ARMv6 exclusive load/store
    	LDREX, 
    	STREX, 
    	LDREXB, 
    	STREXB, 
    	LDREXH, 
    	STREXH, 
    	LDREXD, 
    	STREXD, 
    	LDAEX, 
    	STLEX,            // ARMv8 acquire/release exclusive
    	LDAEXB, 
    	STLEXB, 
    	LDAEXH, 
    	STLEXH, 
    	LDAEXD, 
    	STLEXD, 
    	// Block move
    	LDM, 
    	STM,              // IA order (the default spelling)
    	// The other three increment/decrement orders are their own mnemonics --
    	// that is how an assembler spells them, and it is the only way to reach
    	// their encodings: all four share one operand shape, so nothing else
    	// tells them apart.
    	LDMIB, 
    	LDMDA, 
    	LDMDB, 
    	STMIB, 
    	STMDA, 
    	STMDB, 
    	// Stack convenience aliases
    	PUSH, 
    	POP, 
    	// Swap (deprecated since ARMv6 but still encoded)
    	SWP, 
    	SWPB, 
    	// -------------------------------------------------------------------------
    	// ARMv6 / Return-from-Exception
    	// -------------------------------------------------------------------------
    	// The addressing mode is part of the name, as it is for LDM and STM.
    	RFEDA, 
    	RFEDB, 
    	RFEIA, 
    	RFEIB,            // return from exception
    	SRSDA, 
    	SRSDB, 
    	SRSIA, 
    	SRSIB,            // store return state
    	// -------------------------------------------------------------------------
    	// Coprocessor (legacy CP-space; many subsumed by VFP/NEON)
    	// -------------------------------------------------------------------------
    	CDP, 
    	CDP2, 
    	MCR, 
    	MCR2, 
    	MRC, 
    	MRC2, 
    	MCRR, 
    	MCRR2, 
    	MRRC, 
    	MRRC2, 
    	LDC, 
    	LDC2, 
    	STC, 
    	STC2, 
    	// The N bit asks the coprocessor for the long transfer, and the syntax
    	// spells that on the mnemonic.
    	LDCL, 
    	LDC2L, 
    	STCL, 
    	STC2L, 
    	// -------------------------------------------------------------------------
    	// ARMv8 AArch32 CRC32 (FEAT_CRC32)
    	// -------------------------------------------------------------------------
    	CRC32B, 
    	CRC32H, 
    	CRC32W, 
    	CRC32CB, 
    	CRC32CH, 
    	CRC32CW, 
    	// -------------------------------------------------------------------------
    	// VFP / Advanced SIMD shared opcodes
    	// -------------------------------------------------------------------------
    	// -- Scalar FP arithmetic (operates on S<n>, D<n>) -------------------------
    	VADD, 
    	VSUB, 
    	VMUL, 
    	VDIV, 
    	VMLA, 
    	VMLS, 
    	VNMUL, 
    	VNMLA, 
    	VNMLS, 
    	VFMA, 
    	VFMS, 
    	VFNMA, 
    	VFNMS, 
    	// The bfloat16 multiply-accumulates name which half of each pair they
    	// take, bottom or top, on the mnemonic.
    	VFMAB, 
    	VFMAT, 
    	VABS, 
    	VNEG, 
    	VSQRT, 
    	VCMP, 
    	VCMPE, 
    	VCVT,             // cross-format conversion (encoded via cmode bits)
    	VCVTB, 
    	VCVTT,            // half-precision conversion (bottom/top lane)
    	VCVTA, 
    	VCVTN, 
    	VCVTP, 
    	VCVTM,            // ARMv8: rounding-mode FP-to-int
    	VCVTR,            // FP-to-int using FPSCR rounding
    	VMOV,             // many forms (reg-reg, reg-imm, GPR-FPR)
    	VMRS, 
    	VMSR,             // FPSCR/coprocessor access
    	VLDR, 
    	VSTR, 
    	// The addressing mode is part of the name, as it is for LDM and STM.
    	VLDMIA, 
    	VLDMDB, 
    	VSTMIA, 
    	VSTMDB, 
    	VPUSH, 
    	VPOP, 
    	VSEL,             // ARMv8 conditional select
    	VMAXNM, 
    	VMINNM,           // ARMv8 IEEE 754-2008 min/max
    	VRINTA, 
    	VRINTN, 
    	VRINTP, 
    	VRINTM,           // ARMv8 round-to-int by mode
    	VRINTR, 
    	VRINTZ, 
    	VRINTX,           // round to int per current/zero/exact
    	// -- NEON-specific (vector D/Q reg) -----------------------------------------
    	VADDL, 
    	VADDW, 
    	VSUBL, 
    	VSUBW, 
    	VHADD, 
    	VHSUB, 
    	VRHADD, 
    	VQADD, 
    	VQSUB, 
    	VMULL, 
    	VMLAL, 
    	VMLSL, 
    	VQDMULL, 
    	VQDMLAL, 
    	VQDMLSL, 
    	VQDMULH, 
    	VQRDMULH, 
    	// ARMv8.1 FEAT_RDM: rounding doubling multiply-accumulate
    	VQRDMLAH, 
    	VQRDMLSH, 
    	VABA, 
    	VABAL, 
    	VABD, 
    	VABDL, 
    	VAND, 
    	VBIC, 
    	VORR, 
    	VORN, 
    	VEOR, 
    	VBSL, 
    	VBIT, 
    	VBIF, 
    	VMVN, 
    	VMOVN, 
    	VQMOVN, 
    	VQMOVUN, 
    	VMOVL,            // extend halve-width to full-width
    	VTST, 
    	VCEQ, 
    	VCGE, 
    	VCGT, 
    	VCLE, 
    	VCLT, 
    	VACGE, 
    	VACGT,            // absolute compare for FP
    	VACLE, 
    	VACLT, 
    	VMAX, 
    	VMIN, 
    	VPMAX, 
    	VPMIN, 
    	VPADD, 
    	VPADDL, 
    	VPADAL, 
    	VRECPE, 
    	VRECPS,           // reciprocal estimate / step
    	VRSQRTE, 
    	VRSQRTS, 
    	VSHL, 
    	VSHR, 
    	VSRA, 
    	VRSHL, 
    	VRSHR, 
    	VRSRA, 
    	VSLI, 
    	VSRI, 
    	VQSHL, 
    	VQSHRN, 
    	VQSHRUN, 
    	VQRSHL, 
    	VQRSHRN, 
    	VQRSHRUN, 
    	VSHRN, 
    	VRSHRN, 
    	VSHLL,            // shift-left long
    	VCLS, 
    	VCLZ, 
    	VCNT, 
    	VREV16, 
    	VREV32, 
    	VREV64, 
    	VEXT,             // vector extract
    	VTBL, 
    	VTBX,             // table lookup
    	VTRN, 
    	VUZP, 
    	VZIP, 
    	VDUP,             // duplicate scalar to vector
    	VSWP,             // swap
    	// Load/Store structures (NEON)
    	VLD1, 
    	VLD2, 
    	VLD3, 
    	VLD4, 
    	VST1, 
    	VST2, 
    	VST3, 
    	VST4, 
    	// -- Advanced SIMD / NEON crypto (ARMv8 AArch32 FEAT_AES + FEAT_SHA1/2) ---
    	AESE, 
    	AESD, 
    	AESMC, 
    	AESIMC, 
    	SHA1H, 
    	SHA1SU0, 
    	SHA1SU1, 
    	SHA1C, 
    	SHA1M, 
    	SHA1P, 
    	SHA256H, 
    	SHA256H2, 
    	SHA256SU0, 
    	SHA256SU1, 
    	// -- VFP rounding (ARMv8 FEAT_FP) ----------------------------------------
    	VJCVT,            // VJCVT: F64-to-S32 with FPSCR.RM rounding
    	// -- Dot Product (FEAT_DotProd) ------------------------------------------
    	VSDOT, 
    	VUDOT, 
    	// -- BF16 (FEAT_BF16) ----------------------------------------------------
    	// BF16<->F32
    	VDOT, 
    	VMMLA, 
    	// -- FHM (FEAT_FHM) FP16 matrix mul/acc ----------------------------------
    	VFMAL, 
    	VFMSL,            // F16 fused multiply-add long
    	// -- ComplexNum (FEAT_FCMA) ----------------------------------------------
    	VCMLA, 
    	VCADD, 
    	// -- I8MM (FEAT_I8MM, ARMv8.6) integer matrix multiply + mixed-sign dot --
    	VSMMLA,           // signed-signed 8x8 matrix mul
    	VUMMLA,           // unsigned-unsigned
    	VUSMMLA,          // unsigned-signed
    	VSUDOT,           // signed-unsigned dot product
    	VUSDOT,           // unsigned-signed dot product
    	// -- Lane-indexed NEON multiply / MAC forms (heavily used in DSP/codec) --
    	// -- MVE saturating unary -----------------------------------------------
    	VQABS, 
    	VQNEG, 
    	// -- MVE FP lane manipulation (F16 packing) -----------------------------
    	VMOVX,            // extract high F16 lane from S-reg
    	VINS,             // insert F16 into high lane of S-reg
    	// -------------------------------------------------------------------------
    	// Thumb-only mnemonics (extra ones not shared with A32)
    	// -------------------------------------------------------------------------
    	IT,               // if-then block (Thumb-2)
    	// -------------------------------------------------------------------------
    	// ARMv8-M Security Extensions (TrustZone-M)
    	// -------------------------------------------------------------------------
    	TT,               // test target
    	TTT,              // test target unprivileged
    	TTA,              // test target alternate domain
    	TTAT,             // test target alternate domain unprivileged
    	SG,               // secure gateway (enter secure state)
    	BXNS,             // branch and exchange non-secure
    	BLXNS,            // branch with link and exchange non-secure
    	// -------------------------------------------------------------------------
    	// PACBTI for ARMv8.1-M (Cortex-M85)
    	// -------------------------------------------------------------------------
    	PAC,              // PAC R12, LR, SP
    	PACBTI,           // PACBTI R12, LR, SP (combined PAC + BTI marker)
    	AUT,              // AUT R12, LR, SP
    	AUTG,             // AUTG Rd, Rn, Rm (general form)
    	BTI,              // M-profile branch target identification
    	// -------------------------------------------------------------------------
    	// ARMv8.1-M low-overhead loops (Helium prerequisite, but useful even without MVE)
    	// -------------------------------------------------------------------------
    	WLS,              // while loop start
    	WLSTP,            // while loop start with tail predication
    	DLS,              // do loop start
    	DLSTP,            // do loop start with tail predication
    	LE,               // loop end
    	LETP,             // loop end with tail predication
    	LCTP,             // loop clear tail predication
    	// Branch Future (ARMv8.1-M). T32, encoded via REL_BF + BF_BOFF/BF_BLOC/BF_RM
    	// operand encodings and BF_BOFF_T32/BF_BLOC_T32 relocations (see encoder.odin).
    	// bf-point imm4 at hw0[10:7]; branch target J:imm10 at hw1[11]:[10:1]; BFLX/BFX
    	// use a register target Rm at hw0[3:0]; BFCSEL adds a 4-bit condition at
    	// hw0[5:2] (its else-target is the implicit fall-through). Byte-exact vs llvm-mc.
    	BF,               // branch future
    	BFX,              // branch future indirect (bfx)
    	BFL,              // branch future and link
    	BFLX,             // branch future link and exchange
    	BFCSEL,           // branch future conditional select
    	// -------------------------------------------------------------------------
    	// Custom Datapath Extension (CDE)
    	// -------------------------------------------------------------------------
    	CX1, 
    	CX1A,             // dual-coprocessor + GPR dest (32-bit)
    	CX1D, 
    	CX1DA,            // 64-bit GPR pair dest
    	CX2, 
    	CX2A, 
    	CX2D, 
    	CX2DA, 
    	CX3, 
    	CX3A, 
    	CX3D, 
    	CX3DA, 
    	VCX1, 
    	VCX1A,            // VFP S/D-reg dest
    	VCX2, 
    	VCX2A, 
    	VCX3, 
    	VCX3A, 
    	// Predication block (then/else interleaved)
    	VPT,              // predicate-then block
    	VPST,             // predicate-then-set block (single)
    	VPSEL,            // predicate select (per-element)
    	VPNOT,            // invert VPR
    	VCTP,             // create tail predicate (.8/.16/.32/.64)
    	// Reductions (single-vector accumulate)
    	VADDV, 
    	VADDVA,           // accumulate sum across vector (signed/unsigned, +acc)
    	VADDLV, 
    	VADDLVA,          // long version (S64 accumulator)
    	VMAXV, 
    	VMAXAV,           // max (and absolute)
    	VMINV, 
    	VMINAV, 
    	VMAXNMV, 
    	VMAXNMAV,         // FP max-num
    	VMINNMV, 
    	VMINNMAV, 
    	// Dual MAC reductions (multiply-accumulate then sum)
    	VABAV,            // accumulate absolute difference
    	VMLADAV, 
    	VMLADAVA, 
    	VMLADAVX, 
    	VMLADAVAX, 
    	VMLALDAV, 
    	VMLALDAVA, 
    	VMLALDAVX, 
    	VMLALDAVAX, 
    	VMLSDAV, 
    	VMLSDAVA, 
    	VMLSDAVX, 
    	VMLSDAVAX, 
    	VMLSLDAV, 
    	VMLSLDAVA, 
    	VMLSLDAVX, 
    	VMLSLDAVAX, 
    	VRMLALDAVH, 
    	VRMLALDAVHA, 
    	VRMLALDAVHX, 
    	VRMLALDAVHAX, 
    	VRMLSLDAVH, 
    	VRMLSLDAVHA, 
    	VRMLSLDAVHX, 
    	VRMLSLDAVHAX, 
    	VMLAV, 
    	VMLAVA,           // simple MAC across vector
    	VMLSV, 
    	VMLSVA, 
    	// Complex arithmetic (Q-register vector form)
    	VCMUL,            // complex multiply (separate from VCMLA)
    	VHCADD,           // halving complex add
    	// Bit reverse + shifts unique to MVE
    	VBRSR,            // bit reverse with shift right
    	VSHLC,            // shift left with carry
    	VDDUP,            // decrement and duplicate
    	VIDUP,            // increment and duplicate
    	VDWDUP,           // decrement-wrap and duplicate
    	VIWDUP,           // increment-wrap and duplicate
    	// Narrowing with B/T (bottom/top)
    	VMOVNB, 
    	VMOVNT,           // narrow bottom/top
    	VQMOVNB, 
    	VQMOVNT,          // saturating narrow B/T
    	VQMOVUNB, 
    	VQMOVUNT,         // saturating-unsigned narrow B/T
    	// Widening with B/T
    	VSHLLB, 
    	VSHLLT,           // shift left long bottom/top
    	VMULLB, 
    	VMULLT,           // multiply long B/T
    	VMLALB, 
    	VMLALT,           // multiply-accumulate long B/T
    	VMLSLB, 
    	VMLSLT, 
    	VSHRNB, 
    	VSHRNT,           // shift right narrow B/T
    	VRSHRNB, 
    	VRSHRNT, 
    	VQSHRNB, 
    	VQSHRNT, 
    	VQRSHRNB, 
    	VQRSHRNT, 
    	VQSHRUNB, 
    	VQSHRUNT, 
    	VQRSHRUNB, 
    	VQRSHRUNT, 
    	// Saturating doubling MAC reductions
    	VQDMLADH, 
    	VQDMLADHX, 
    	VQDMLSDH, 
    	VQDMLSDHX, 
    	VQRDMLADH, 
    	VQRDMLADHX, 
    	VQRDMLSDH, 
    	VQRDMLSDHX, 
    	// MVE load/store (mostly reuses VLDR/VSTR but distinct forms exist):
    	VLDRB, 
    	VLDRH, 
    	VLDRW, 
    	VLDRD,            // MVE contiguous load (B/H/W/D)
    	VSTRB, 
    	VSTRH, 
    	VSTRW, 
    	VSTRD,            // MVE contiguous store
    	VLD20, 
    	VLD21,            // 2-vector interleaved (halves)
    	VLD40, 
    	VLD41, 
    	VLD42, 
    	VLD43,            // 4-vector interleaved (quarters)
    	VST20, 
    	VST21, 
    	VST40, 
    	VST41, 
    	VST42, 
    	VST43, 
    	// -------------------------------------------------------------------------
    	// Sentinel
    	// -------------------------------------------------------------------------
    	_COUNT, 
    }

    Related Procedures With Parameters

    Mode ¶

    Mode :: enum u8 {
    	A32 = 0, // 32-bit ARM
    	T32 = 1, // Thumb (16-bit or 32-bit T2)
    }

    Related Procedures With Parameters

    NEON_Imm_Form ¶

    NEON_Imm_Form :: struct {
    	raw_imm32: u32,
    	// the 32-bit constant the user wants
    	cmode:     u8,
    	// selected cmode (0..15)
    	op:        u8,
    	// op bit (0 or 1)
    	abcdefgh:  u8,
    }

    Operand ¶

    Operand :: struct #packed {
    	using _: struct #packed #raw_union {
    		// A register operand's shift and lane ride WITH the register instead
    		// of in the tail -- that is what keeps Operand at 10 bytes, and they
    		// only ever apply to a register anyway. `using` means op.reg,
    		// op.shift_type, op.shift_amt and op.lane still read and write
    		// exactly as they did when these were separate fields.
    		using _:   bit_field u32 {
    			reg:        Register | 16,
    			shift_type: Shift_Type | 4,
    			shift_amt:  u8 | 6,
    			lane:       u8 | 5,
    			has_lane:   bool | 1,
    		},
    		mem:       Memory,
    		immediate: i64,
    		relative:  i64,
    	},
    	kind: Operand_Kind,
    	size: u8,
    	// How the syntax writes this register as a list. `count` 0 means a plain
    	// register. NEON structure loads also come in a spaced form that steps two
    	// registers at a time -- `{d2, d4}` -- and a to-all-lanes form written
    	// `{d2[]}`. A GPR list (`{r4, lr}`) is not a run at all and stays a
    	// bitmask under REG_LIST.
    	list: List_Shape,
    }

    Related Procedures With Returns

    Operand_Encoding ¶

    Operand_Encoding :: enum u8 {
    	NONE, 
    	IMPL,                  // implicit operand (no bits emitted)
    	// ---- A32 GPR slots ----
    	RD,                    // bits 15-12 (data-proc dest)
    	RN_A32,                // bits 19-16
    	RM_A32,                // bits 3-0
    	RS_A32,                // bits 11-8  (register-shifted-register shift amount)
    	RT_A32,                // bits 15-12 (load/store target = RD slot)
    	RT2_A32,               // bits 15-12 + 1 (LDRD/STRD even-odd pair, implicit)
    	RA_A32,                // bits 15-12 (MLA, MLS accumulator)
    	RDLO_A32,              // bits 15-12 (UMULL/SMULL low result)
    	RDHI_A32,              // bits 19-16 (UMULL/SMULL high result)
    	// ---- T32 (Thumb-2 32-bit) slots ----
    	RD_T32,                // bits 11-8 of second halfword (high half of u32)
    	RN_T32,                // bits 19-16 of first halfword (low 4 bits of byte at offset 2)
    	RM_T32,                // bits 3-0 of second halfword
    	RT_T32,                // load/store target
    	RT2_T32,               // second load/store register
    	RA_T32,                // accumulator (MLA/MLS)
    	// ---- T16 slots ----
    	RD_T16_LO,             // bits 2-0 of halfword (low 3 bits)
    	RM_T16_LO,             // bits 5-3
    	RN_T16_LO,             // bits 5-3 (alias)
    	RD_T16_HI,             // hi-reg form: rd[3] at bit 7, rd[2:0] at bits 2-0
    	RM_T16_HI,             // rm at bits 6-3 (4-bit hi-reg)
    	// ---- Modified immediate ----
    	A32_IMM_MOD,           // bits 11-0 carry rotate(11:8) + value(7:0)
    	T32_IMM_MOD,           // Thumb-2 modified-imm in i:imm3:imm8 (bits 26, 14-12, 7-0)
    	A32_IMM12_ROT,         // identical to A32_IMM_MOD; alternate name for clarity
    	// ---- Immediate field placements (A32) ----
    	A32_IMM12,             // bits 11-0 (LDR/STR offset)
    	A32_IMM_SHIFT,         // bits 11-7 (data-proc shift_imm)
    	A32_IMM_SHIFT_32,      // same field, but a zero means 32 (LSR/ASR)
    	A32_SHIFT_TYPE,        // bits 6-5
    	A32_RS_SHIFT,          // bits 11-8 (RSR uses Rs register)
    	A32_IMM24,             // bits 23-0 (B/BL/SVC)
    	A32_IMM4,              // bits 3-0 in modified-imm rotate or SAT amount
    	A32_IMM4_ROTATE,       // bits 11-8 (rotation in some forms)
    	A32_IMM5_LSB,          // bits 11-7 (BFC/BFI/UBFX lsb)
    	A32_IMM5_W,            // bits 20-16 (BFC/BFI msb -- width = msb - lsb + 1)
    	A32_COND_FIELD,        // bits 31-28
    	A32_REG_LIST,          // bits 15-0 (LDM/STM/PUSH/POP bitmask of R0..R15)
    	// ---- VFP / NEON register fields ----
    	VD_S,                  // S<reg>: Vd<4:1>=bits 15-12, D=bit 22; combined 5-bit reg
    	VN_S,                  // S<reg>: Vn<4:1>=bits 19-16, N=bit 7
    	VM_S,                  // S<reg>: Vm<4:1>=bits 3-0,  M=bit 5
    	VD_D,                  // D<reg>: D=bit 22, Vd<3:0>=bits 15-12
    	VN_D,                  // D<reg>: N=bit 7,  Vn<3:0>=bits 19-16
    	VM_D,                  // D<reg>: M=bit 5,  Vm<3:0>=bits 3-0
    	VD_Q,                  // Q<reg>: D=bit 22, Vd<3:0>=bits 15-12 (must be even)
    	VN_Q,                  // Q<reg>: N=bit 7,  Vn<3:0>=bits 19-16 (must be even)
    	VM_Q,                  // Q<reg>: M=bit 5,  Vm<3:0>=bits 3-0 (must be even)
    	// NEON by-element scalar Dm[lane] (VQDMULH/VQRDMULH-by-scalar):
    	//   .16: Dm in D0..D7 at bits 2:0, lane = bit5:bit3
    	//   .32: Dm in D0..D15 at bits 3:0, lane = bit5
    	NEON_VM_SCALAR16, 
    	NEON_VM_SCALAR32, 
    	// VMOV (core register to scalar) destination Dd[lane]: Dd at bits 19:16 +
    	// bit 7; the lane bits depend on element size:
    	//   .8  lane[2:0] = bit22 : bit21 : bit5     .16 lane[1:0] = bit21 : bit6
    	//   .32 lane[0]   = bit21
    	VMOV_LANE_8, 
    	VMOV_LANE_16, 
    	VMOV_LANE_32, 
    	// MVE complex-op rotation immediate (user passes degrees):
    	//   MVE_ROT_HCADD: #90/#270 -> bit 12;  MVE_ROT_CMLA: #0/90/180/270 -> bits 24:23
    	MVE_ROT_HCADD, 
    	MVE_ROT_CMLA, 
    	// MVE 3-bit Q registers (Q0..Q7): Qn at bits 19:17, Qm at bits 3:1.
    	VN_Q_MVE, 
    	VM_Q_MVE, 
    	VFP_IMM8, 
    	VM_S_PLUS1,            // the second S register of a consecutive pair
    	DBG_OPTION,            // DBG's option, bits 3:0 -- not the wider hint field
    	MRS_SPEC_REG,          // APSR or SPSR, by the R bit
    	VFP_SPEC_REG,          // VMRS/VMSR system register, bits 19:16
    	SETEND_ENDIAN,         // LE or BE, by the E bit
    	IMPL_SP,               // an SP the syntax names but no field encodes
    	MODE_IMM5,             // processor mode, bits 4:0 (SRS)
    	RN_A32_WB,             // base register whose writeback rides in bit 21
    	NEON_LANE_VN_32,       // Vn:N with the 32-bit lane index in bit 21              // VFP immediate (VMOV.F32/F64 #imm)
    	NEON_IMM8_ABCDEFGH,    // bits 18-16 (abc) + bits 3-0 (defgh)
    	NEON_CMODE,            // bits 11-8 (cmode for VMOV/VMVN immediate)
    	NEON_OP_BIT,           // bit 5 (op for VMOV immediate variant)
    	// ---- VFP / NEON list ----
    	VFP_S_LIST,            // VLDM/VSTM single-prec list (8-bit count, start in Vd_S)
    	VFP_D_LIST,            // VLDM/VSTM double-prec list (8-bit count, start in Vd_D)
    	// VTBL/VTBX read their table from a run of one to four D registers
    	// starting at Vn. Which run length applies is the `len` field, which is
    	// a fixed pattern bit of each form rather than something the operand
    	// encodes -- so the length rides in the encoding, the way the NEON
    	// structure-list lengths already do, and the encoder emits only Vn.
    	NEON_VN_TABLE_1, 
    	NEON_VN_TABLE_2, 
    	NEON_VN_TABLE_3, 
    	NEON_VN_TABLE_4, 
    	// NEON "by scalar": the multiplier is one lane of a low D register, and
    	// the register number and the lane number share one four-bit field. How
    	// they share it depends on the element size -- 16-bit takes Vm from bits
    	// 2:0, so D0..D7, and the lane from M:bit3; 32-bit takes Vm from bits
    	// 3:0, so D0..D15, and the lane from M alone.
    	NEON_VM_SCALAR_16, 
    	NEON_VM_SCALAR_32, 
    	// VDUP from a lane packs the element size and the lane index into one
    	// four-bit field: `xxx1` is a byte lane, `xx10` a halfword, `x100` a
    	// word, and the bits above the marker are the index.
    	NEON_VDUP_LANE_8, 
    	NEON_VDUP_LANE_16, 
    	NEON_VDUP_LANE_32, 
    	// NEON structure load/store lists (VLD1-4 / VST1-4). Unlike VLDM's list,
    	// the register count is part of the form's type field at bits 11:8, so the
    	// encoding writes only Vd; how many registers -- and whether the run steps
    	// by one or by two -- comes from the form. Verified against llvm-mc.
    	NEON_D_LIST_1,         // {d2}
    	NEON_D_LIST_2,         // {d2, d3}
    	NEON_D_LIST_3,         // {d2, d3, d4}
    	NEON_D_LIST_4,         // {d2, d3, d4, d5}
    	NEON_D_LIST_2X,        // {d2, d4}          -- spaced
    	NEON_D_LIST_3X,        // {d2, d4, d6}      -- spaced
    	NEON_D_LIST_4X,        // {d2, d4, d6, d8}  -- spaced
    	NEON_D_LIST_ALL,       // {d2[]}            -- to all lanes
    	// The structure loads that broadcast take a list of two, three or four,
    	// and bit 5 spaces it -- `{d0[], d2[]}` rather than `{d0[], d1[]}`.
    	NEON_D_LIST_ALL_2, 
    	NEON_D_LIST_ALL_3, 
    	NEON_D_LIST_ALL_4, 
    	// VLD1/VST1 single-lane: Vd plus the lane index, whose width and position
    	// follow the element size -- bits 7:5 for .8, 7:6 for .16, bit 7 for .32.
    	// Verified against llvm-mc.
    	// ..._N is how many registers the list holds: VLD2 writes `{d0[1], d1[1]}`.
    	NEON_LANE_D_8, 
    	NEON_LANE_D_16, 
    	NEON_LANE_D_32, 
    	NEON_LANE_D_8_2, 
    	NEON_LANE_D_16_2, 
    	NEON_LANE_D_32_2, 
    	NEON_LANE_D_8_3, 
    	NEON_LANE_D_16_3, 
    	NEON_LANE_D_32_3, 
    	NEON_LANE_D_8_4, 
    	NEON_LANE_D_16_4, 
    	NEON_LANE_D_32_4, 
    	// ---- Memory addressing composites ----
    	MEM_IMM12_OFFSET,      // [Rn, #±imm12]
    	// The halfword and dual load/stores split their 8-bit offset around the
    	// opcode at bits 7:4, so they cannot use the 12-bit forms below.
    	// LDRD/STRD name a register pair, and the second is always the first plus
    	// one, so it occupies no bits of its own.
    	RT2_A32_PAIR, 
    	MEM_IMM8_PRE_INDEX, 
    	MEM_IMM8_POST_INDEX, 
    	MEM_IMM8_OFFSET, 
    	MEM_IMM8_SCALED4,      // VFP load/store: imm8 in words, U at bit 23
    	MEM_IMM8_SCALED4_PRE,  // same, pre-indexed
    	MEM_IMM8_SCALED4_POST, // same, post-indexed       // [Rn, #±imm8] (LDRH/STRH/LDRSB/STRD)
    	MEM_REG_OFFSET,        // [Rn, ±Rm{, shift}]
    	MEM_PRE_INDEX,         // [Rn, #imm]! / [Rn, ±Rm]!
    	MEM_POST_INDEX,        // [Rn], #imm / [Rn], ±Rm
    	MEM_LITERAL,           // [PC, #imm]  (LDR literal)
    	MEM_DOUBLEREG,         // [Rn, Rm] for LDRD/STRD register offset
    	// ---- Coprocessor ----
    	COPROC_NUM_FIELD,      // bits 11-8 in CDP/LDC/STC (cp_num)
    	COPROC_CRD_FIELD,      // bits 15-12 -- the destination, which is not CRn
    	COPROC_OPC1_MCR,       // bits 23-21 (MCR/MRC opc1, three bits not four)
    	COPROC_OPC1_FIELD,     // bits 23-20 (CDP opc1)
    	COPROC_OPC2_FIELD,     // bits 7-5  (CDP / MCR / MRC opc2)
    	COPROC_CRN_FIELD,      // bits 19-16
    	COPROC_CRM_FIELD,      // bits 3-0
    	COPROC_OPC_MCRR,       // bits 7-4 (MCRR/MRRC 4-bit opcode)
    	// ---- Branch fields ----
    	BRANCH_24,             // A32 imm24 at bits 23-0 (scaled ×4, ±32MB)
    	BRANCH_24_T32,         // T32 unconditional: S/J1/J2 + imm10 + imm11 (scaled ×2)
    	BRANCH_20_T32,         // T32 conditional: S + cond + imm6 + J1 + J2 + imm11
    	BRANCH_11_T16,         // T16 unconditional (imm11, scaled ×2, ±2KB)
    	BRANCH_8_T16,          // T16 conditional (cond + imm8, scaled ×2, ±256B)
    	BRANCH_CBZ,            // T16 CBZ/CBNZ (i + imm5 + Rn, scaled ×2)
    	// ARMv8.1-M Branch Future fields (T32):
    	BF_BOFF,               // bf-point offset: imm4 at hw0[10:7], (label-PC-4)/2
    	BF_BLOC,               // branch target: J at hw1[11] + imm10 at hw1[10:1]
    	BF_RM,                 // BFLX/BFX register target at hw0[3:0]
    	BFCSEL_COND,           // BFCSEL condition at hw0[5:2]
    	// ---- Misc ----
    	PSR_FIELD_MASK,        // APSR fields_mask at bits 19-16 (MSR)
    	SYSM_FIELD,            // SYSm at bits 7-0 (MRS_BANKED)
    	BARRIER_TYPE,          // bits 3-0 for DMB/DSB/ISB
    	IT_MASK,               // bits 7-0 for IT block (mask + cond)
    	CPS_IFLAGS,            // imod + iflags + mode for CPS
    	HINT_FIELD,            // hint imm
    	// ---- Saturate ----
    	VFP_FBITS,             // VCVT fixed-point fraction bits: width - (imm4:i)
    	// VSHLL's widest form shifts by exactly the element size, which no field
    	// carries -- the size is a fixed bit of the form, so the amount is too.
    	NEON_SHLL_8, 
    	NEON_SHLL_16, 
    	NEON_SHLL_32, 
    	// Complex-arithmetic rotations, named in degrees. VCADD has two, in bit
    	// 24; VCMLA has four, in bits 21:20.
    	// VCMLA names its rotation twice over: the by-element forms put it in
    	// bits 21:20, the vector forms in 24:23.
    	NEON_ROT_2, 
    	NEON_ROT_4, 
    	NEON_ROT_4_HI, 
    	SAT_IMM5,              // bits 20-16: SSAT/SSAT16 saturate-to width, less one
    	SAT_IMM5_T32,          // Thumb-2 signed saturate amount, less one
    	SAT_IMM5_U,            // bits 20-16: USAT/USAT16 width, which is not biased
    	SAT_IMM5_U_T32,        // Thumb-2 unsigned saturate amount
    	// ---- BFC/BFI/SBFX/UBFX ----
    	// SBFX/UBFX hold the width less one, where BFI/BFC hold the top bit's
    	// position and the width is msb - lsb + 1.
    	BFX_WIDTH, 
    	BFI_MSB,               // bits 20-16 (msb position)
    	BFI_LSB,               // bits 11-7  (lsb position; also shift_imm slot)
    	BFI_LSB_T32,           // Thumb-2 BFI lsb (different layout)
    	// ---- NEON shift-immediate (imm6 in bits 21:16, with element-size hint
    	//      in bit 22 = L bit for 64-bit shifts) ----
    	NEON_SHIFT_IMM6,       // 6-bit shift amount at bits 21:16 (NEON VSHR/VSRA/...)
    	NEON_SHIFT_IMM3,       // 3-bit shift at bits 18:16 (.I8 form, top 3 bits zero)
    	// ---- ARMv8-M / MVE / CDE ----
    	QD_MVE,                // MVE Qd: bit 22 fixed 0, bits 15:13 = Qd[2:0]
    	QN_MVE,                // MVE Qn: bit 7, bits 19:17 = Qn[2:0]
    	QM_MVE,                // MVE Qm: bit 5, bits 3:1 = Qm[2:0]
    	MVE_SIZE_FIELD,        // 2-bit size in bits 21:20 (B/H/W/D)
    	MVE_VPT_MASK_FIELD,    // VPT mask in bits 3:0 of second halfword
    	MVE_LOOP_IMM,          // low-overhead-loop immediate
    	CDE_COPROC_FIELD,      // CDE p<n> coprocessor selector (bits 11:8)
    	CDE_IMM_FIELD,         // CDE immediate (variable layout)
    	CDE_ACC_FIELD,         // CDE accumulator bit (distinguishes CX1/CX1A)
    	V8M_TT_AT_BITS,        // TT/TTA/TTT/TTAT A and T bit field at bits 7:6
    }

    Operand_Kind ¶

    Operand_Kind :: enum u8 {
    	NONE, 
    	REGISTER, 
    	IMMEDIATE, 
    	MEMORY, 
    	RELATIVE, 
    	REG_LIST,        // LDM/STM/PUSH/POP bitmask (low 16 bits = R0..R15)
    	// A modified immediate is a bit pattern an 8-bit field expands into, and
    	// assemblers write it as one: in hex, or as a float when the expansion
    	// produced one. The value is stored expanded either way -- for the float
    	// it is the 32-bit pattern, which is what the encoder needs back.
    	HEX_IMMEDIATE, 
    	FLOAT_IMMEDIATE, 
    }

    Operand_Type ¶

    Operand_Type :: enum u8 {
    	NONE, 
    	// ---- Integer registers ----
    	GPR,             // R0..R15 (or SP/LR/PC by alias)
    	GPR_NOPC,        // R0..R14 (PC disallowed by spec)
    	GPR_NOSP,        // R0..R14 except SP
    	GPR_LOW,         // R0..R7 (Thumb-1 low-reg encoding)
    	GPR_SHIFTED,     // Rm + shift type + immediate shift amount
    	GPR_RSR,         // Rm + shift type + Rs register-shifted-register
    	GPR_LIST,        // Register list (LDM/STM/PUSH/POP); bitmask 16 GPRs
    	// ---- Floating point / SIMD ----
    	SPR,             // S0..S31
    	DPR,             // D0..D31
    	QPR,             // Q0..Q15
    	SPR_LIST,        // VLDM/VSTM/VPUSH/VPOP list of S regs
    	DPR_LIST,        // VLDM/VSTM list of D regs
    	SPR_ELEM,        // S<n> with no extra shape info
    	DPR_ELEM,        // D<n>[lane] for scalar-FP-in-SIMD operations
    	QPR_ELEM,        // Q<n>[lane]
    	// ---- Immediates ----
    	IMM,             // generic immediate (sized per encoding)
    	IMM_MOD,         // A32 modified-immediate (8-bit + 4-bit rotate)
    	IMM_T32_MOD,     // Thumb-2 modified-immediate (similar but distinct encoding)
    	IMM16_LO_HI,     // MOVW/MOVT 16-bit immediate split into imm4 + imm12
    	IMM12,           // unsigned 12-bit (LDR/STR offset)
    	IMM5,            // 5-bit (shift_imm, BFC/BFI lsb)
    	IMM5_W,          // 5-bit field width (BFC/BFI/SBFX/UBFX)
    	IMM4,            // 4-bit (rotate, ext rotation amount)
    	IMM4_SAT,        // SSAT/USAT saturation amount
    	IMM8,            // 8-bit (NEON VMOV, ConstantPool index, etc.)
    	IMM3,            // 3-bit Thumb register-encoded immediate
    	IMM_HINT,        // hint number (DBG, HINT)
    	IMM_BARRIER,     // DMB/DSB/ISB barrier type
    	IMM_ENDIAN,      // 1-bit BE/LE for SETEND
    	IMM_IFLAGS,      // CPS iflags + mode
    	IMM_BANKED,      // banked register selector (MSR/MRS banked)
    	IMM_SYSM,        // 7-bit SYSm field
    	IMM_COPROC,      // coprocessor number 0..15
    	IMM_COPROC_OP,   // coprocessor opcode (CDP / MCR / MRC: opcode1/2 fields)
    	NEON_IMM,        // NEON modified-immediate (with cmode + abcdefgh)
    	// ---- PC-relative ----
    	REL24,           // A32 B / BL (signed 24-bit << 2)
    	REL24_T32,       // T32 B unconditional (J1/J2 + imm10 + imm11)
    	REL20,           // T32 B<cond> (signed 20-bit equivalent)
    	REL11,           // T16 B<cond>
    	REL8,            // T16 conditional branch (signed 8-bit)
    	REL_LDR_LITERAL, // PC-relative literal load offset
    	REL_BF,          // ARMv8.1-M Branch Future label (bf-point / branch target)
    	// ---- Condition code ----
    	COND,            // 4-bit cond field (for IT block / B<cond> / etc.)
    	// ---- Memory ----
    	MEM,             // memory operand; addressing mode in operand payload
    	// ---- Coprocessor ----
    	COPROC_REG,      // CRn / CRm (coprocessor register identifier)
    	COPROC_NUM,      // pX (coprocessor number 0..15)
    	// ---- Misc ----
    	PSR_FIELD,       // APSR/CPSR field selector (_nzcvq, _g, _nzcvqg, _s, _x, _c)
    	// ---- ARMv8-M / MVE / CDE operand classes ----
    	VPR,             // VPR predicate register (single; bit-wise predicate state)
    	QPR_MVE,         // MVE Q-register (Q0..Q7; 3-bit index; bit 22 = 0 always)
    	QPR_MVE_LIST,    // MVE multi-Q list (e.g. VLD2x2 etc.)
    	MVE_VPT_MASK,    // VPT block mask (4-bit then/else pattern)
    	MVE_VCTP_SIZE,   // 2-bit element-size selector for VCTP (B/H/W/D)
    	MVE_LOOP_TGT,    // low-overhead-loop branch target (WLS/LE/DLS imm)
    	CDE_COPROC,      // CDE coprocessor number 0..7
    	CDE_IMM,         // CDE immediate (varies per CX1/CX2/CX3 form)
    	CDE_VFP_REG,     // CDE VCX1/2/3 destination S/D-reg
    }

    Relocation ¶

    Relocation :: struct #packed {
    	offset:   u32,
    	label_id: u32,
    	addend:   i32,
    	type:     Relocation_Type,
    	size:     u8,
    	// 2 (T16) or 4 (A32/T32)
    	inst_idx: u16,
    }

    Relocation_Type ¶

    Relocation_Type :: enum u8 {
    	NONE            = 0, 
    	// A32 branches
    	BRANCH_A32_24,       // B / BL, 24-bit signed << 2
    	BLX_A32,             // BLX imm, 24-bit signed << 2 + H bit at bit 24
    	// T32 branches
    	BRANCH_T32_25,       // T32 B unconditional (J1/J2 + imm10 + imm11)
    	BRANCH_T32_21,       // T32 B<cond> (S + cond + imm6 + J1/J2 + imm11)
    	// T16 branches
    	BRANCH_T16_11,       // T16 B unconditional (signed 11-bit << 1)
    	BRANCH_T16_8,        // T16 B<cond> (signed 8-bit << 1)
    	BRANCH_T16_CBZ,      // T16 CBZ/CBNZ (i + imm5 + Rn)
    	// T32 low-overhead loops (ARMv8.1-M)
    	BRANCH_T32_WLS,      // WLS / WLSTP imm11
    	BRANCH_T32_LE,       // LE / LETP imm11
    	// T32 Branch Future (ARMv8.1-M)
    	BF_BOFF_T32,         // bf-point: imm4 at hw0[10:7] = (label - (PC+4))/2
    	BF_BLOC_T32,         // branch target: J at hw1[11] + imm10 at hw1[10:1]
    	// Literal load (ADR / LDR PC-rel)
    	LDR_LITERAL_A32,     // signed 12-bit (U bit + imm12)
    	LDR_LITERAL_T32,     // signed 12-bit (U bit + imm12) Thumb-2
    	LDR_LITERAL_T16,     // unsigned 8-bit << 2 (Thumb-1 PC-rel)
    	ADR_A32,             // ADR encoded as ADD/SUB to PC
    	ADR_T32, 
    	ADR_T16,             // Thumb-1 ADR (imm8 << 2)
    	// Absolute forms via MOVW + MOVT pair
    	MOVW_ABS,            // imm16 low half
    	MOVT_ABS,            // imm16 high half
    }

    Shift_Type ¶

    Shift_Type :: enum u8 {
    	LSL     = 0, 
    	LSR     = 1, 
    	ASR     = 2, 
    	ROR     = 3, 
    	RRX     = 4, // pseudo: encoded as ROR #0
    	NONE    = 5, 
    	// Register-shifted-register markers: the shift count comes from the Rs
    	// register stored in shift_amt (0..15), not from an immediate. Encoder
    	// packs bits 11..8 = Rs, 6..5 = (type - LSL_REG) low 2 bits, bit 4 = 1.
    	LSL_REG = 6, 
    	LSR_REG = 7, 
    	ASR_REG = 8, 
    	ROR_REG = 9, 
    }

    Constants

    One row per constant, under the prefix it shares with others.

    APSR:: Register(REG_SREG | 0)
    ---- Status / control registers ---------------------------------------------
    BE:: Register(REG_ENDIAN | 1)
    COND_… 16
    COND_AL:: u32(0xE)
    COND_CC:: u32(0x3)
    COND_CS:: u32(0x2)
    COND_EQ:: u32(0x0)
    Condition code constants (cond field values).
    COND_GE:: u32(0xA)
    COND_GT:: u32(0xC)
    COND_HI:: u32(0x8)
    COND_LE:: u32(0xD)
    COND_LS:: u32(0x9)
    COND_LT:: u32(0xB)
    COND_MI:: u32(0x4)
    COND_NE:: u32(0x1)
    COND_NV:: u32(0xF)
    NV is "always" in encoding (also marks unconditional class)
    COND_PL:: u32(0x5)
    COND_VC:: u32(0x7)
    COND_VS:: u32(0x6)
    CPSR:: Register(REG_SREG | 1)
    D0:: Register(REG_DPR | 0)
    ---- VFP/NEON double-precision (D0..D31) ------------------------------------
    D1:: Register(REG_DPR | 1)
    D10:: Register(REG_DPR | 10)
    D11:: Register(REG_DPR | 11)
    D12:: Register(REG_DPR | 12)
    D13:: Register(REG_DPR | 13)
    D14:: Register(REG_DPR | 14)
    D15:: Register(REG_DPR | 15)
    D16:: Register(REG_DPR | 16)
    D17:: Register(REG_DPR | 17)
    D18:: Register(REG_DPR | 18)
    D19:: Register(REG_DPR | 19)
    D2:: Register(REG_DPR | 2)
    D20:: Register(REG_DPR | 20)
    D21:: Register(REG_DPR | 21)
    D22:: Register(REG_DPR | 22)
    D23:: Register(REG_DPR | 23)
    D24:: Register(REG_DPR | 24)
    D25:: Register(REG_DPR | 25)
    D26:: Register(REG_DPR | 26)
    D27:: Register(REG_DPR | 27)
    D28:: Register(REG_DPR | 28)
    D29:: Register(REG_DPR | 29)
    D3:: Register(REG_DPR | 3)
    D30:: Register(REG_DPR | 30)
    D31:: Register(REG_DPR | 31)
    D4:: Register(REG_DPR | 4)
    D5:: Register(REG_DPR | 5)
    D6:: Register(REG_DPR | 6)
    D7:: Register(REG_DPR | 7)
    D8:: Register(REG_DPR | 8)
    D9:: Register(REG_DPR | 9)
    DECODE_T32_SUB_BUCKETS:: 32
    DEFAULT_PRINT_OPTIONS: rexcode_isa.Print_Options : isa.DEFAULT_PRINT_OPTIONS
    FP: Register : R11
    frame pointer
    FPEXC:: Register(REG_FPSC | 8)
    FPSCR:: Register(REG_FPSC | 1)
    FPSID:: Register(REG_FPSC | 0)
    IP: Register : R12
    intra-procedure scratch
    LABEL_UNDEFINED: rexcode_isa.Label_Definition : isa.LABEL_UNDEFINED
    LE:: Register(REG_ENDIAN | 0)
    FPSCR / FPSID and friends
    LR: Register : R14
    link register
    MASK_… 12
    MASK_COND:: u32(0xF0000000)
    bits 31-28
    MASK_IMM12:: u32(0x00000FFF)
    bits 11-0
    MASK_IMM24:: u32(0x00FFFFFF)
    bits 23-0
    MASK_OPCODE_HI:: u32(0x0FE00000)
    bits 27-25 (selects encoding class) + 24-21 (op)
    MASK_RD_A32:: u32(0x0000F000)
    bits 15-12
    MASK_RLIST:: u32(0x0000FFFF)
    bits 15-0
    MASK_RM_A32:: u32(0x0000000F)
    bits 3-0
    MASK_RN_A32:: u32(0x000F0000)
    bits 19-16
    MASK_RS_A32:: u32(0x00000F00)
    bits 11-8
    MASK_SHIFT_IMM:: u32(0x00000F80)
    bits 11-7
    MASK_SHIFT_TYPE:: u32(0x00000060)
    bits 6-5
    MASK_S_FLAG:: u32(0x00100000)
    bit 20
    MAX_INST_SIZE:: 4
    MVFR0:: Register(REG_FPSC | 7)
    MVFR1:: Register(REG_FPSC | 6)
    MVFR2:: Register(REG_FPSC | 5)
    PC: Register : R15
    program counter
    PSR_… 8
    PSR_FIELD_ALL: u8 : PSR_FIELD_F | PSR_FIELD_S | PSR_FIELD_X | PSR_FIELD_C
    PSR_FIELD_C:: u8(1 << 0)
    PSR_FIELD_F:: u8(1 << 3)
    PSR_FIELD_G: u8 : PSR_FIELD_X
    PSR_FIELD_NZCVQ: u8 : PSR_FIELD_F
    _nzcvq = F bit (flags) _g = X bit (GE bits, ARMv6+) _nzcvqg = F | X _all (cpsr_all) …

    _nzcvq = F bit (flags) _g = X bit (GE bits, ARMv6+) _nzcvqg = F | X _all (cpsr_all) = F | S | X | C

    PSR_FIELD_NZCVQG: u8 : PSR_FIELD_F | PSR_FIELD_X
    PSR_FIELD_S:: u8(1 << 2)
    PSR_FIELD_X:: u8(1 << 1)
    Q0:: Register(REG_QPR | 0)
    ---- NEON quad-word (Q0..Q15) -----------------------------------------------
    Q1:: Register(REG_QPR | 1)
    Q10:: Register(REG_QPR | 10)
    Q11:: Register(REG_QPR | 11)
    Q12:: Register(REG_QPR | 12)
    Q13:: Register(REG_QPR | 13)
    Q14:: Register(REG_QPR | 14)
    Q15:: Register(REG_QPR | 15)
    Q2:: Register(REG_QPR | 2)
    Q3:: Register(REG_QPR | 3)
    Q4:: Register(REG_QPR | 4)
    Q5:: Register(REG_QPR | 5)
    Q6:: Register(REG_QPR | 6)
    Q7:: Register(REG_QPR | 7)
    Q8:: Register(REG_QPR | 8)
    Q9:: Register(REG_QPR | 9)
    R0:: Register(REG_GPR | 0)
    ---- GPR ---------------------------------------------------------------------
    R1:: Register(REG_GPR | 1)
    R10:: Register(REG_GPR | 10)
    R11:: Register(REG_GPR | 11)
    R12:: Register(REG_GPR | 12)
    R13:: Register(REG_GPR | 13)
    R14:: Register(REG_GPR | 14)
    R15:: Register(REG_GPR | 15)
    R2:: Register(REG_GPR | 2)
    R3:: Register(REG_GPR | 3)
    R4:: Register(REG_GPR | 4)
    R5:: Register(REG_GPR | 5)
    R6:: Register(REG_GPR | 6)
    R7:: Register(REG_GPR | 7)
    R8:: Register(REG_GPR | 8)
    R9:: Register(REG_GPR | 9)
    REG_… 13
    REG_BANKED:: u16(0x7000)
    REG_CLASS_MASK:: u16(0xF000)
    REG_COPROC:: u16(0x8000)
    REG_COPROC_NUM:: u16(0xA000)
    A coprocessor number is written p15, not as a plain number, and it is a different thing from the CRn/CRm registers REG_COPROC names.

    A coprocessor number is written p15, not as a plain number, and it is a different thing from the CRn/CRm registers REG_COPROC names.

    REG_DPR:: u16(0x3000)
    REG_ENDIAN:: u16(0x9000)
    SETEND names its argument le or be.

    SETEND names its argument le or be. That is a bare token in the syntax, which is what the special-register classes above already model.

    REG_FPSC:: u16(0x6000)
    REG_GPR:: u16(0x1000)
    REG_HW_MASK:: u16(0x0FFF)
    REG_NONE:: u16(0x0000)
    REG_QPR:: u16(0x4000)
    REG_SPR:: u16(0x2000)
    REG_SREG:: u16(0x5000)
    S0:: Register(REG_SPR | 0)
    ---- VFP single-precision ---------------------------------------------------
    S1:: Register(REG_SPR | 1)
    S10:: Register(REG_SPR | 10)
    S11:: Register(REG_SPR | 11)
    S12:: Register(REG_SPR | 12)
    S13:: Register(REG_SPR | 13)
    S14:: Register(REG_SPR | 14)
    S15:: Register(REG_SPR | 15)
    S16:: Register(REG_SPR | 16)
    S17:: Register(REG_SPR | 17)
    S18:: Register(REG_SPR | 18)
    S19:: Register(REG_SPR | 19)
    S2:: Register(REG_SPR | 2)
    S20:: Register(REG_SPR | 20)
    S21:: Register(REG_SPR | 21)
    S22:: Register(REG_SPR | 22)
    S23:: Register(REG_SPR | 23)
    S24:: Register(REG_SPR | 24)
    S25:: Register(REG_SPR | 25)
    S26:: Register(REG_SPR | 26)
    S27:: Register(REG_SPR | 27)
    S28:: Register(REG_SPR | 28)
    S29:: Register(REG_SPR | 29)
    S3:: Register(REG_SPR | 3)
    S30:: Register(REG_SPR | 30)
    S31:: Register(REG_SPR | 31)
    S4:: Register(REG_SPR | 4)
    S5:: Register(REG_SPR | 5)
    S6:: Register(REG_SPR | 6)
    S7:: Register(REG_SPR | 7)
    S8:: Register(REG_SPR | 8)
    S9:: Register(REG_SPR | 9)
    SB: Register : R9
    Conventional aliases
    SHIFT_… 5
    SHIFT_ASR:: u32(2)
    SHIFT_LSL:: u32(0)
    Shift type field values (A32 bits 6-5).
    SHIFT_LSR:: u32(1)
    SHIFT_ROR:: u32(3)
    SHIFT_RRX:: u32(3)
    encoded as ROR #0
    SL: Register : R10
    stack limit
    SP: Register : R13
    stack pointer
    SPSR:: Register(REG_SREG | 2)

    Variables

    DECODE_BUCKET_LIST ¶

    @(rodata)
    DECODE_BUCKET_LIST: []u16 = …

    DECODE_ENTRIES ¶

    @(rodata)
    DECODE_ENTRIES: []Decode_Entry = …

    DECODE_FORM_IDX ¶

    @(rodata)
    DECODE_FORM_IDX: []u16 = …

    DECODE_INDEX_A32 ¶

    @(rodata)
    DECODE_INDEX_A32: []Decode_Index = …

    DECODE_INDEX_T16 ¶

    @(rodata)
    DECODE_INDEX_T16: []Decode_Index = …

    DECODE_INDEX_T32 ¶

    @(rodata)
    DECODE_INDEX_T32: []Decode_Index = …

    DECODE_INDEX_T32_SUB ¶

    @(rodata)
    DECODE_INDEX_T32_SUB: []Decode_Index = …

    ENCODE_FORMS ¶

    @(rodata)
    ENCODE_FORMS: []Encoding = …

    ENCODE_RUNS ¶

    @(rodata)
    ENCODE_RUNS: []Encode_Run = …

    Procedures

    One row per procedure, under the procedure groups they belong to; each is a proc "contextless" unless it says otherwise.

    a32_t32_neon_swap(bits: u32) -> u32
    Transform an A32 NEON/VFP encoding word to its T32 equivalent (or vice versa) by toggling bit 28.
    aprintproc(instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil, allocator := context.allocator) -> string
    aprintlnproc(instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil, allocator := context.allocator) -> string
    bprintproc(buf: []u8, instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil) -> string
    bprintlnproc(buf: []u8, instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil) -> string
    decodeproc(data: []u8, relocs: []Relocation, instructions: ^[dynamic]Instruction, inst_info: ^[dynamic]Instruction_Info, label_defs: ^[dynamic]rexcode_isa.Label_Definition, errors: ^[dynamic]rexcode_isa.Error, mode: Mode = .A32) -> (byte_count: u32, ok: bool)
    decode_a32_modimm(imm12: u32) -> u32
    Decode an A32 modified-immediate field (12 bits) to its 32-bit value.
    decode_estimate_instruction_count(data: []u8) -> int
    Typical-case estimate of the instruction count for data.

    Typical-case estimate of the instruction count for data.

    decode_max_instruction_count(data: []u8) -> int
    Instruction-count ceiling for data (A32 is 4 bytes, Thumb 2; minimum 2).

    Instruction-count ceiling for data (A32 is 4 bytes, Thumb 2; minimum 2).

    decode_neon_modimm(abcdefgh: u32, cmode: u32, op: u32) -> u32
    Decode the 8-bit abcdefgh + cmode + op back into a 32-bit constant.
    decode_psr_field(word: u32) -> u8
    decode_reserveproc(instructions: ^[dynamic]Instruction, inst_info: ^[dynamic]Instruction_Info, label_defs: ^[dynamic]rexcode_isa.Label_Definition, data: []u8, exact: bool = false)
    Pre-size the caller's decode output arrays for data (reserves on top of any existing elements; nil to skip; exact=true for the ceiling, else the estimate).

    Pre-size the caller's decode output arrays for data (reserves on top of any existing elements; nil to skip; exact=true for the ceiling, else the estimate).

    decode_t32_modimm(field12: u32) -> u32
    Decode a 12-bit i:imm3:imm8 field to its 32-bit constant value.
    decode_vfp_imm8_f16(abcdefgh: u32) -> u16
    decode_vfp_imm8_f32(abcdefgh: u32) -> u32
    decode_vfp_imm8_f64(abcdefgh: u32) -> u64
    emit_adc 4 forms
    emit_adc_r_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_adc_r_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_adc_r_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register)
    emit_adc_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_add 6 forms
    emit_add_r_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_add_r_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_add_r_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register)
    emit_add_rlo_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_add_rlo_imm8proc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_add_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_adrproc(instructions: ^[dynamic]Instruction, dst: Register, offset: i64)
    emit_adr_rlo_relproc(instructions: ^[dynamic]Instruction, dst: Register, offset: i64)
    emit_aesdproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_aesd_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_aeseproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_aese_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_aesimcproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_aesimc_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_aesmcproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_aesmc_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_and 4 forms
    emit_and_r_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_and_r_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_and_r_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register)
    emit_and_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_asr 3 forms
    emit_asr_r_r_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_asr_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_asr_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_autproc(instructions: ^[dynamic]Instruction)
    emit_aut_noneproc(instructions: ^[dynamic]Instruction)
    emit_autgproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_autg_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_b 2 forms
    emit_b_relproc(instructions: ^[dynamic]Instruction, offset: i64)
    emit_b_rel_condproc(instructions: ^[dynamic]Instruction, offset: i64, imm: i64)
    emit_bfproc(instructions: ^[dynamic]Instruction, offset: i64, offset2: i64)
    emit_bf_rel_relproc(instructions: ^[dynamic]Instruction, offset: i64, offset2: i64)
    emit_bfcproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, imm2: i64)
    emit_bfc_r_imm5_imm5wproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, imm2: i64)
    emit_bfcselproc(instructions: ^[dynamic]Instruction, offset: i64, offset2: i64, imm: i64)
    emit_bfcsel_rel_rel_imm4proc(instructions: ^[dynamic]Instruction, offset: i64, offset2: i64, imm: i64)
    emit_bfiproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64, imm2: i64)
    emit_bfi_r_r_imm5_imm5wproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64, imm2: i64)
    emit_bflproc(instructions: ^[dynamic]Instruction, offset: i64, offset2: i64)
    emit_bfl_rel_relproc(instructions: ^[dynamic]Instruction, offset: i64, offset2: i64)
    emit_bflxproc(instructions: ^[dynamic]Instruction, offset: i64, src: Register)
    emit_bflx_rel_rproc(instructions: ^[dynamic]Instruction, offset: i64, src: Register)
    emit_bfxproc(instructions: ^[dynamic]Instruction, offset: i64, src: Register)
    emit_bfx_rel_rproc(instructions: ^[dynamic]Instruction, offset: i64, src: Register)
    emit_bic 4 forms
    emit_bic_r_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_bic_r_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_bic_r_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register)
    emit_bic_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_bkptproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_bkpt_immproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_blproc(instructions: ^[dynamic]Instruction, offset: i64)
    emit_bl_relproc(instructions: ^[dynamic]Instruction, offset: i64)
    emit_blx 2 forms
    emit_blx_rproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_blx_relproc(instructions: ^[dynamic]Instruction, offset: i64)
    emit_blxnsproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_blxns_rproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_btiproc(instructions: ^[dynamic]Instruction)
    emit_bti_noneproc(instructions: ^[dynamic]Instruction)
    emit_bxproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_bx_rproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_bxjproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_bxj_rproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_bxnsproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_bxns_rproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_cbnzproc(instructions: ^[dynamic]Instruction, dst: Register, offset: i64)
    emit_cbnz_rlo_relproc(instructions: ^[dynamic]Instruction, dst: Register, offset: i64)
    emit_cbzproc(instructions: ^[dynamic]Instruction, dst: Register, offset: i64)
    emit_cbz_rlo_relproc(instructions: ^[dynamic]Instruction, dst: Register, offset: i64)
    emit_cdpproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64)
    emit_cdp2proc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64)
    emit_cdp2_cpn_cpop_crd_crd_crd_cpopproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64)
    emit_cdp_cpn_cpop_crd_crd_crd_cpopproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64)
    emit_clrexproc(instructions: ^[dynamic]Instruction)
    emit_clrex_noneproc(instructions: ^[dynamic]Instruction)
    emit_clzproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_clz_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_cmn 4 forms
    emit_cmn_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_cmn_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, shift: Shift_Type, amount: u8)
    emit_cmn_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, shift: Shift_Type, rs: Register)
    emit_cmn_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_cmp 4 forms
    emit_cmp_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_cmp_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, shift: Shift_Type, amount: u8)
    emit_cmp_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, shift: Shift_Type, rs: Register)
    emit_cmp_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_cpsproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_cps_iflproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_crc32bproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_crc32b_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_crc32cbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_crc32cb_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_crc32chproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_crc32ch_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_crc32cwproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_crc32cw_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_crc32hproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_crc32h_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_crc32wproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_crc32w_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_csdbproc(instructions: ^[dynamic]Instruction)
    emit_csdb_noneproc(instructions: ^[dynamic]Instruction)
    emit_cx1proc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, imm2: i64)
    emit_cx1_cp_r_immproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, imm2: i64)
    emit_cx1aproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, imm2: i64)
    emit_cx1a_cp_r_immproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, imm2: i64)
    emit_cx1dproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, imm2: i64)
    emit_cx1d_cp_r_immproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, imm2: i64)
    emit_cx1daproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, imm2: i64)
    emit_cx1da_cp_r_immproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, imm2: i64)
    emit_cx2proc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, imm2: i64)
    emit_cx2_cp_r_r_immproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, imm2: i64)
    emit_cx2aproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, imm2: i64)
    emit_cx2a_cp_r_r_immproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, imm2: i64)
    emit_cx2dproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, imm2: i64)
    emit_cx2d_cp_r_r_immproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, imm2: i64)
    emit_cx2daproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, imm2: i64)
    emit_cx2da_cp_r_r_immproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, imm2: i64)
    emit_cx3proc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, src3: Register)
    emit_cx3_cp_r_r_rproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, src3: Register)
    emit_cx3aproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, src3: Register)
    emit_cx3a_cp_r_r_rproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, src3: Register)
    emit_cx3dproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, src3: Register)
    emit_cx3d_cp_r_r_rproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, src3: Register)
    emit_cx3daproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, src3: Register)
    emit_cx3da_cp_r_r_rproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, src3: Register)
    emit_dbgproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_dbg_hintproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_dcps1proc(instructions: ^[dynamic]Instruction)
    emit_dcps1_noneproc(instructions: ^[dynamic]Instruction)
    emit_dcps2proc(instructions: ^[dynamic]Instruction)
    emit_dcps2_noneproc(instructions: ^[dynamic]Instruction)
    emit_dcps3proc(instructions: ^[dynamic]Instruction)
    emit_dcps3_noneproc(instructions: ^[dynamic]Instruction)
    emit_dlsproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_dls_rproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_dlstpproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_dlstp_rproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_dmbproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_dmb_barrproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_dsbproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_dsb_barrproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_eor 4 forms
    emit_eor_r_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_eor_r_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_eor_r_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register)
    emit_eor_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_eretproc(instructions: ^[dynamic]Instruction)
    emit_eret_noneproc(instructions: ^[dynamic]Instruction)
    emit_esbproc(instructions: ^[dynamic]Instruction)
    emit_esb_noneproc(instructions: ^[dynamic]Instruction)
    emit_hintproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_hint_hintproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_hltproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_hlt_immproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_hvcproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_hvc_immproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_isbproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_isb_barrproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_itproc(instructions: ^[dynamic]Instruction, imm: i64, imm2: i64)
    emit_it_cond_imm4proc(instructions: ^[dynamic]Instruction, imm: i64, imm2: i64)
    emit_lctpproc(instructions: ^[dynamic]Instruction)
    emit_lctp_noneproc(instructions: ^[dynamic]Instruction)
    emit_ldaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_lda_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldabproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldab_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldaexproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldaex_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldaexbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldaexb_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldaexdproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldaexd_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldaexhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldaexh_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldahproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldah_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldcproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_ldc2proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_ldc2_cpn_crd_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_ldc2lproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_ldc2l_cpn_crd_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_ldc_cpn_crd_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_ldclproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_ldcl_cpn_crd_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_ldmproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_ldm_r_listproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_ldmdaproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_ldmda_r_listproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_ldmdbproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_ldmdb_r_listproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_ldmibproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_ldmib_r_listproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_ldrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldr_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrb_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrbtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrbt_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrdproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_ldrd_r_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_ldrexproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrex_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrexbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrexb_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrexd 2 forms
    emit_ldrexd_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrexd_r_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_ldrexhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrexh_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrh_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrhtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrht_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrsbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrsb_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrsbtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrsbt_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrsh_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrshtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrsht_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_ldrt_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_leproc(instructions: ^[dynamic]Instruction, offset: i64)
    emit_le_relproc(instructions: ^[dynamic]Instruction, offset: i64)
    emit_letpproc(instructions: ^[dynamic]Instruction, offset: i64)
    emit_letp_relproc(instructions: ^[dynamic]Instruction, offset: i64)
    emit_lsl 3 forms
    emit_lsl_r_r_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_lsl_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_lsl_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_lsr 3 forms
    emit_lsr_r_r_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_lsr_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_lsr_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_mcrproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64)
    emit_mcr2proc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64)
    emit_mcr2_cpn_cpop_r_crd_crd_cpopproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64)
    emit_mcr_cpn_cpop_r_crd_crd_cpopproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64)
    emit_mcrrproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register)
    emit_mcrr2proc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register)
    emit_mcrr2_cpn_cpop_r_r_crdproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register)
    emit_mcrr_cpn_cpop_r_r_crdproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register)
    emit_mlaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_mla_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_mlsproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_mls_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_mov 4 forms
    emit_mov_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_mov_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, shift: Shift_Type, amount: u8)
    emit_mov_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, shift: Shift_Type, rs: Register)
    emit_mov_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_movtproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_movt_r_imm16proc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_movwproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_movw_r_imm16proc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_mrcproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64)
    emit_mrc2proc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64)
    emit_mrc2_cpn_cpop_r_crd_crd_cpopproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64)
    emit_mrc_cpn_cpop_r_crd_crd_cpopproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64)
    emit_mrrcproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register)
    emit_mrrc2proc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register)
    emit_mrrc2_cpn_cpop_r_r_crdproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register)
    emit_mrrc_cpn_cpop_r_r_crdproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, src2: Register, src3: Register)
    emit_mrsproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_mrs_r_psrproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_msr 2 forms
    emit_msr_psr_immmproc(instructions: ^[dynamic]Instruction, imm: i64, imm2: i64)
    emit_msr_psr_rproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register)
    emit_mul 2 forms
    emit_mul_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_mul_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_mvn 4 forms
    emit_mvn_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_mvn_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, shift: Shift_Type, amount: u8)
    emit_mvn_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, shift: Shift_Type, rs: Register)
    emit_mvn_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_negproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_neg_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_nopproc(instructions: ^[dynamic]Instruction)
    emit_nop_noneproc(instructions: ^[dynamic]Instruction)
    emit_orr 4 forms
    emit_orr_r_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_orr_r_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_orr_r_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register)
    emit_orr_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_pacproc(instructions: ^[dynamic]Instruction)
    emit_pac_noneproc(instructions: ^[dynamic]Instruction)
    emit_pacbtiproc(instructions: ^[dynamic]Instruction)
    emit_pacbti_noneproc(instructions: ^[dynamic]Instruction)
    emit_pkhbtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_pkhbt_r_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_pkhtbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_pkhtb_r_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_pldproc(instructions: ^[dynamic]Instruction, dst: Memory)
    emit_pld_memproc(instructions: ^[dynamic]Instruction, dst: Memory)
    emit_pldwproc(instructions: ^[dynamic]Instruction, dst: Memory)
    emit_pldw_memproc(instructions: ^[dynamic]Instruction, dst: Memory)
    emit_pliproc(instructions: ^[dynamic]Instruction, dst: Memory)
    emit_pli_memproc(instructions: ^[dynamic]Instruction, dst: Memory)
    emit_popproc(instructions: ^[dynamic]Instruction, regs: u16)
    emit_pop_listproc(instructions: ^[dynamic]Instruction, regs: u16)
    emit_psb_csyncproc(instructions: ^[dynamic]Instruction)
    emit_psb_csync_noneproc(instructions: ^[dynamic]Instruction)
    emit_pushproc(instructions: ^[dynamic]Instruction, regs: u16)
    emit_push_listproc(instructions: ^[dynamic]Instruction, regs: u16)
    emit_qaddproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qadd16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qadd16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qadd8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qadd8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qadd_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qasxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qasx_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qdaddproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qdadd_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qdsubproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qdsub_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qsaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qsax_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qsubproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qsub16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qsub16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qsub8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qsub8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_qsub_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_rbitproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_rbit_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_revproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_rev16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_rev16_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_rev_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_revshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_revsh_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_rfedaproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_rfeda_rproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_rfedbproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_rfedb_rproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_rfeiaproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_rfeia_rproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_rfeibproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_rfeib_rproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_ror 3 forms
    emit_ror_r_r_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_ror_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_ror_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_rrxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_rrx_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_rsb 3 forms
    emit_rsb_r_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_rsb_r_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_rsb_r_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register)
    emit_rsc 3 forms
    emit_rsc_r_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_rsc_r_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_rsc_r_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register)
    emit_sadd16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sadd16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sadd8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sadd8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sasxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sasx_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sbproc(instructions: ^[dynamic]Instruction)
    emit_sb_noneproc(instructions: ^[dynamic]Instruction)
    emit_sbc 4 forms
    emit_sbc_r_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_sbc_r_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_sbc_r_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register)
    emit_sbc_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_sbfxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64, imm2: i64)
    emit_sbfx_r_r_imm5_imm5wproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64, imm2: i64)
    emit_sdivproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sdiv_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_selproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sel_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_setendproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_setend_endproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_setpanproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_setpan_hintproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_sevproc(instructions: ^[dynamic]Instruction)
    emit_sev_noneproc(instructions: ^[dynamic]Instruction)
    emit_sevlproc(instructions: ^[dynamic]Instruction)
    emit_sevl_noneproc(instructions: ^[dynamic]Instruction)
    emit_sgproc(instructions: ^[dynamic]Instruction)
    emit_sg_noneproc(instructions: ^[dynamic]Instruction)
    emit_sha1cproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha1c_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha1hproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_sha1h_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_sha1mproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha1m_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha1pproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha1p_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha1su0proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha1su0_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha1su1proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_sha1su1_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_sha256hproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha256h2proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha256h2_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha256h_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha256su0proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_sha256su0_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_sha256su1proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sha256su1_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_shadd16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_shadd16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_shadd8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_shadd8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_shasxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_shasx_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_shsaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_shsax_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_shsub16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_shsub16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_shsub8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_shsub8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smcproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_smc_immproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_smlabbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlabb_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlabtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlabt_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smladproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlad_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smladxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smladx_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlalproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlal_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlalbbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlalbb_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlalbtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlalbt_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlaldproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlald_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlaldxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlaldx_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlaltbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlaltb_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlalttproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlaltt_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlatbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlatb_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlattproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlatt_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlawbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlawb_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlawtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlawt_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlsdproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlsd_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlsdxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlsdx_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlsldproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlsld_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlsldxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smlsldx_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smmlaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smmla_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smmlarproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smmlar_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smmlsproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smmls_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smmlsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smmlsr_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smmulproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smmul_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smmulrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smmulr_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smuadproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smuad_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smuadxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smuadx_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smulbbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smulbb_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smulbtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smulbt_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smullproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smull_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_smultbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smultb_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smulttproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smultt_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smulwbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smulwb_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smulwtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smulwt_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smusdproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smusd_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smusdxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_smusdx_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_srsdaproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_srsda_r_immproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_srsdbproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_srsdb_r_immproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_srsiaproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_srsia_r_immproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_srsibproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_srsib_r_immproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_ssatproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, shift: Shift_Type, amount: u8)
    emit_ssat16proc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register)
    emit_ssat16_r_imm4s_rproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register)
    emit_ssat_r_imm4s_rshproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, shift: Shift_Type, amount: u8)
    emit_ssaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_ssax_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_ssub16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_ssub16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_ssub8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_ssub8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_stcproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stc2proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stc2_cpn_crd_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stc2lproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stc2l_cpn_crd_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stc_cpn_crd_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stclproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stcl_cpn_crd_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stlproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_stl_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_stlbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_stlb_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_stlexproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stlex_r_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stlexbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stlexb_r_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stlexdproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stlexd_r_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stlexhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stlexh_r_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_stlhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_stlh_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_stmproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_stm_r_listproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_stmdaproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_stmda_r_listproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_stmdbproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_stmdb_r_listproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_stmibproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_stmib_r_listproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_strproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_str_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_strbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_strb_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_strbtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_strbt_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_strdproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_strd_r_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_strexproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_strex_r_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_strexbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_strexb_r_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_strexd 2 forms
    emit_strexd_r_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_strexd_r_r_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Memory)
    emit_strexhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_strexh_r_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Memory)
    emit_strhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_strh_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_strhtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_strht_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_strtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_strt_r_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_sub 5 forms
    emit_sub_r_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_sub_r_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8)
    emit_sub_r_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register)
    emit_sub_rlo_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sub_rlo_imm8proc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_svcproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_svc_immproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_swpproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_swp_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_swpbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_swpb_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sxtabproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sxtab16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sxtab16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sxtab_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sxtahproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sxtah_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_sxtbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_sxtb16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_sxtb16_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_sxtb_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_sxthproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_sxth_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_tbbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_tbb_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_tbhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_tbh_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_teq 3 forms
    emit_teq_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_teq_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, shift: Shift_Type, amount: u8)
    emit_teq_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, shift: Shift_Type, rs: Register)
    emit_tsb_csyncproc(instructions: ^[dynamic]Instruction)
    emit_tsb_csync_noneproc(instructions: ^[dynamic]Instruction)
    emit_tst 4 forms
    emit_tst_r_immmproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_tst_r_rshproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, shift: Shift_Type, amount: u8)
    emit_tst_r_rsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, shift: Shift_Type, rs: Register)
    emit_tst_rlo_rloproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_ttproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_tt_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_ttaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_tta_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_ttatproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_ttat_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_tttproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_ttt_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_uadd16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uadd16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uadd8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uadd8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uasxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uasx_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_ubfxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64, imm2: i64)
    emit_ubfx_r_r_imm5_imm5wproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64, imm2: i64)
    emit_udfproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_udf_immproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_udivproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_udiv_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uhadd16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uhadd16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uhadd8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uhadd8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uhasxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uhasx_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uhsaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uhsax_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uhsub16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uhsub16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uhsub8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uhsub8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_umaalproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_umaal_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_umlalproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_umlal_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_umullproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_umull_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_uqadd16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uqadd16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uqadd8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uqadd8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uqasxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uqasx_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uqsaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uqsax_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uqsub16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uqsub16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uqsub8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uqsub8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_usad8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_usad8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_usada8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_usada8_r_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_usatproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, shift: Shift_Type, amount: u8)
    emit_usat16proc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register)
    emit_usat16_r_imm4s_rproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register)
    emit_usat_r_imm4s_rshproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64, src: Register, shift: Shift_Type, amount: u8)
    emit_usaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_usax_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_usub16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_usub16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_usub8proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_usub8_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uxtabproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uxtab16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uxtab16_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uxtab_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uxtahproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uxtah_r_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_uxtbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_uxtb16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_uxtb16_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_uxtb_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_uxthproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_uxth_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vabaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vaba_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vabalproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vabal_q_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vabavproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vabav_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vabdproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vabd_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vabdlproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vabdl_q_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vabsproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vabs_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vacgeproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vacge_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vacgtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vacgt_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vacleproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vacle_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vacltproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vaclt_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vaddproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vadd_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vaddlproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vaddl_q_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vaddlvproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vaddlv_r_r_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vaddlvaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vaddlva_r_r_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vaddvproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vaddv_r_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vaddvaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vaddva_r_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vaddwproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vaddw_q_q_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vandproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vand_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vbic 2 forms
    emit_vbic_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_vbic_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vbifproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vbif_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vbitproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vbit_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vbrsrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vbrsr_q_q_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vbslproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vbsl_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vcaddproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, imm: i64)
    emit_vcadd_d_d_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, imm: i64)
    emit_vceq 2 forms
    emit_vceq_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vceq_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcge 2 forms
    emit_vcge_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vcge_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcgt 2 forms
    emit_vcgt_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vcgt_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcle 2 forms
    emit_vcle_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vcle_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vclsproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcls_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vclt 2 forms
    emit_vclt_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vclt_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vclzproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vclz_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcmla 2 forms
    emit_vcmla_d_d_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, imm: i64)
    emit_vcmla_d_d_dlane_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8, imm: i64)
    emit_vcmp 2 forms
    emit_vcmp_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcmp_sproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_vcmpe 2 forms
    emit_vcmpe_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcmpe_sproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_vcmulproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vcmul_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vcntproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcnt_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vctpproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_vctp_rproc(instructions: ^[dynamic]Instruction, dst: Register)
    emit_vcvt 2 forms
    emit_vcvt_d_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvt_s_s_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vcvtaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvta_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvtbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvtb_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvtmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvtm_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvtnproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvtn_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvtpproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvtp_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvtrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvtr_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvttproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcvtt_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vcx1proc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, imm2: i64)
    emit_vcx1_cp_s_immproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, imm2: i64)
    emit_vcx1aproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, imm2: i64)
    emit_vcx1a_cp_s_immproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, imm2: i64)
    emit_vcx2proc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, imm2: i64)
    emit_vcx2_cp_s_s_immproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, imm2: i64)
    emit_vcx2aproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, imm2: i64)
    emit_vcx2a_cp_s_s_immproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, imm2: i64)
    emit_vcx3proc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, src3: Register)
    emit_vcx3_cp_s_s_sproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, src3: Register)
    emit_vcx3aproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, src3: Register)
    emit_vcx3a_cp_s_s_sproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register, src2: Register, src3: Register)
    emit_vddupproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vddup_q_r_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vdivproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vdiv_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vdotproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vdot_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vdup 2 forms
    emit_vdup_d_rproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vdup_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, lane: u8)
    emit_vdwdupproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, imm: i64)
    emit_vdwdup_q_r_r_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, imm: i64)
    emit_veorproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_veor_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vextproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, imm: i64)
    emit_vext_d_d_d_imm4proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, imm: i64)
    emit_vfmaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfma_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfmabproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfmab_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfmalproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfmal_d_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfmatproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfmat_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfmsproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfms_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfmslproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfmsl_d_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfnmaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfnma_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfnmsproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vfnms_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vhaddproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vhadd_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vhcadd 2 forms
    emit_vhcadd_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vhcadd_q_q_q_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, imm: i64)
    emit_vhsubproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vhsub_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vidupproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vidup_q_r_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vinsproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vins_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_viwdupproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, imm: i64)
    emit_viwdup_q_r_r_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, imm: i64)
    emit_vjcvtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vjcvt_s_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vld1 2 forms
    emit_vld1_dlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld1_dlane_memproc(instructions: ^[dynamic]Instruction, dst: Register, lane: u8, src: Memory)
    emit_vld2proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld20proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld20_qlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld21proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld21_qlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld2_dlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld3proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld3_dlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld4proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld40proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld40_qlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld41proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld41_qlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld42proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld42_qlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld43proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld43_qlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vld4_dlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vldmdbproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_vldmdb_r_slistproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_vldmiaproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_vldmia_r_slistproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_vldrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_vldr_s_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_vldrb 2 forms
    emit_vldrb_q_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_vldrb_q_mem_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory, src2: Register)
    emit_vldrd 2 forms
    emit_vldrd_q_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_vldrd_q_mem_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory, src2: Register)
    emit_vldrh 2 forms
    emit_vldrh_q_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_vldrh_q_mem_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory, src2: Register)
    emit_vldrw 2 forms
    emit_vldrw_q_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_vldrw_q_mem_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory, src2: Register)
    emit_vmaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmax_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmaxavproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmaxav_r_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmaxnmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmaxnm_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmaxnmavproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmaxnmav_r_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmaxnmvproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmaxnmv_r_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmaxvproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmaxv_r_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vminproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmin_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vminavproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vminav_r_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vminnmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vminnm_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vminnmavproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vminnmav_r_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vminnmvproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vminnmv_r_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vminvproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vminv_r_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmla 2 forms
    emit_vmla_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmla_d_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vmladavproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmladav_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmladavaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmladava_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmladavaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmladavax_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmladavxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmladavx_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlal 2 forms
    emit_vmlal_q_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlal_q_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vmlalbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlalb_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlaldavproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlaldav_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlaldavaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlaldava_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlaldavaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlaldavax_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlaldavxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlaldavx_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlaltproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlalt_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlavproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlav_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlavaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlava_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmls 2 forms
    emit_vmls_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmls_d_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vmlsdavproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsdav_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsdavaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsdava_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsdavaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsdavax_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsdavxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsdavx_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsl 2 forms
    emit_vmlsl_q_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsl_q_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vmlslbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlslb_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsldavproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlsldav_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlsldavaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlsldava_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlsldavaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlsldavax_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlsldavxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlsldavx_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmlsltproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlslt_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsvproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsv_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsvaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmlsva_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmmlaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmmla_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmov 7 forms
    emit_vmov_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmov_s_imm8proc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_vmov_r_r_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmov_r_r_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vmov_r_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, lane: u8)
    emit_vmov_qlane_rproc(instructions: ^[dynamic]Instruction, dst: Register, lane: u8, src: Register)
    emit_vmov_qlane_qlane_r_rproc(instructions: ^[dynamic]Instruction, dst: Register, lane: u8, src: Register, lane2: u8, src2: Register, src3: Register)
    emit_vmovlproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmovl_q_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmovnproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmovn_d_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmovnbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmovnb_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmovntproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmovnt_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmovxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmovx_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmrsproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_vmrs_r_psrproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_vmsrproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register)
    emit_vmsr_psr_rproc(instructions: ^[dynamic]Instruction, imm: i64, src: Register)
    emit_vmul 2 forms
    emit_vmul_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmul_d_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vmull 2 forms
    emit_vmull_q_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmull_q_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vmullbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmullb_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmulltproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmullt_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vmvn 2 forms
    emit_vmvn_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vmvn_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_vnegproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vneg_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vnmlaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vnmla_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vnmlsproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vnmls_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vnmulproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vnmul_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vornproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vorn_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vorr 2 forms
    emit_vorr_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, imm: i64)
    emit_vorr_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vpadalproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vpadal_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vpaddproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vpadd_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vpaddlproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vpaddl_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vpmaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vpmax_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vpminproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vpmin_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vpnotproc(instructions: ^[dynamic]Instruction)
    emit_vpnot_noneproc(instructions: ^[dynamic]Instruction)
    emit_vpopproc(instructions: ^[dynamic]Instruction, regs: u16)
    emit_vpop_slistproc(instructions: ^[dynamic]Instruction, regs: u16)
    emit_vpselproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vpsel_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vpstproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_vpst_vptproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_vptproc(instructions: ^[dynamic]Instruction, imm: i64, imm2: i64, src: Register, src2: Register)
    emit_vpt_vpt_cond_q_qproc(instructions: ^[dynamic]Instruction, imm: i64, imm2: i64, src: Register, src2: Register)
    emit_vpushproc(instructions: ^[dynamic]Instruction, regs: u16)
    emit_vpush_slistproc(instructions: ^[dynamic]Instruction, regs: u16)
    emit_vqabsproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqabs_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqaddproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqadd_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmladhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmladh_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmladhxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmladhx_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmlal 2 forms
    emit_vqdmlal_q_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmlal_q_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vqdmlsdhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmlsdh_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmlsdhxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmlsdhx_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmlsl 2 forms
    emit_vqdmlsl_q_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmlsl_q_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vqdmulh 2 forms
    emit_vqdmulh_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmulh_d_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vqdmull 2 forms
    emit_vqdmull_q_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqdmull_q_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vqmovnproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqmovn_d_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqmovnbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqmovnb_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqmovntproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqmovnt_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqmovunproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqmovun_d_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqmovunbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqmovunb_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqmovuntproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqmovunt_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqnegproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqneg_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vqrdmladhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrdmladh_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrdmladhxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrdmladhx_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrdmlah 2 forms
    emit_vqrdmlah_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrdmlah_d_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vqrdmlsdhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrdmlsdh_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrdmlsdhxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrdmlsdhx_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrdmlsh 2 forms
    emit_vqrdmlsh_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrdmlsh_d_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vqrdmulh 2 forms
    emit_vqrdmulh_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrdmulh_d_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vqrshlproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrshl_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqrshrnproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqrshrn_d_q_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqrshrnbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqrshrnb_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqrshrntproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqrshrnt_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqrshrunproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqrshrun_d_q_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqrshrunbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqrshrunb_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqrshruntproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqrshrunt_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshl 2 forms
    emit_vqshl_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqshl_d_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshrnproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshrn_d_q_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshrnbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshrnb_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshrntproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshrnt_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshrunproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshrun_d_q_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshrunbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshrunb_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshruntproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqshrunt_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vqsubproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vqsub_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vrecpeproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrecpe_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrecpsproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vrecps_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vrev16proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrev16_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrev32proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrev32_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrev64proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrev64_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrhaddproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vrhadd_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vrintaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrinta_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrintmproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrintm_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrintnproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrintn_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrintpproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrintp_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrintrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrintr_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrintxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrintx_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrintzproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrintz_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrmlaldavhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlaldavh_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlaldavhaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlaldavha_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlaldavhaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlaldavhax_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlaldavhxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlaldavhx_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlsldavhproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlsldavh_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlsldavhaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlsldavha_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlsldavhaxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlsldavhax_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlsldavhxproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrmlsldavhx_r_r_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, src3: Register)
    emit_vrshlproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vrshl_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vrshrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vrshr_d_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vrshrnproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vrshrn_d_q_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vrshrnbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vrshrnb_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vrshrntproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vrshrnt_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vrsqrteproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrsqrte_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vrsqrtsproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vrsqrts_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vrsraproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vrsra_d_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vsdot 2 forms
    emit_vsdot_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vsdot_d_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vselproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vsel_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vshlproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vshl_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vshlcproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshlc_q_r_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshllproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshll_q_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshllbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshllb_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshlltproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshllt_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshr_d_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshrnproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshrn_d_q_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshrnbproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshrnb_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshrntproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vshrnt_q_q_imm5proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vsliproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vsli_d_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vsmmlaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vsmmla_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vsqrtproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vsqrt_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vsraproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vsra_d_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vsriproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vsri_d_d_immproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64)
    emit_vst1 2 forms
    emit_vst1_dlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst1_dlane_memproc(instructions: ^[dynamic]Instruction, dst: Register, lane: u8, src: Memory)
    emit_vst2proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst20proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst20_qlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst21proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst21_qlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst2_dlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst3proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst3_dlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst4proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst40proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst40_qlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst41proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst41_qlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst42proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst42_qlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst43proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst43_qlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vst4_dlist_memproc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory)
    emit_vstmdbproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_vstmdb_r_slistproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_vstmiaproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_vstmia_r_slistproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16)
    emit_vstrproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_vstr_s_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_vstrb 2 forms
    emit_vstrb_q_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_vstrb_q_mem_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory, src2: Register)
    emit_vstrd 2 forms
    emit_vstrd_q_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_vstrd_q_mem_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory, src2: Register)
    emit_vstrh 2 forms
    emit_vstrh_q_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_vstrh_q_mem_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory, src2: Register)
    emit_vstrw 2 forms
    emit_vstrw_q_memproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory)
    emit_vstrw_q_mem_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory, src2: Register)
    emit_vsubproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vsub_s_s_sproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vsublproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vsubl_q_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vsubwproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vsubw_q_q_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vsudotproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vsudot_q_q_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vswpproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vswp_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vtblproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16, src: Register)
    emit_vtbl_d_dlist_dproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16, src: Register)
    emit_vtbxproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16, src: Register)
    emit_vtbx_d_dlist_dproc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16, src: Register)
    emit_vtrnproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vtrn_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vtstproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vtst_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vudot 2 forms
    emit_vudot_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vudot_d_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vummlaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vummla_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vusdot 2 forms
    emit_vusdot_d_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vusdot_d_d_dlaneproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8)
    emit_vusmmlaproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vusmmla_q_q_qproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register)
    emit_vuzpproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vuzp_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vzipproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_vzip_d_dproc(instructions: ^[dynamic]Instruction, dst: Register, src: Register)
    emit_wfeproc(instructions: ^[dynamic]Instruction)
    emit_wfe_noneproc(instructions: ^[dynamic]Instruction)
    emit_wfiproc(instructions: ^[dynamic]Instruction)
    emit_wfi_noneproc(instructions: ^[dynamic]Instruction)
    emit_wlsproc(instructions: ^[dynamic]Instruction, dst: Register, offset: i64)
    emit_wls_r_relproc(instructions: ^[dynamic]Instruction, dst: Register, offset: i64)
    emit_wlstpproc(instructions: ^[dynamic]Instruction, dst: Register, offset: i64)
    emit_wlstp_r_relproc(instructions: ^[dynamic]Instruction, dst: Register, offset: i64)
    emit_yieldproc(instructions: ^[dynamic]Instruction)
    emit_yield_noneproc(instructions: ^[dynamic]Instruction)
    encodeproc(instructions: []Instruction, label_defs: []rexcode_isa.Label_Definition, code: []u8, relocs: ^[dynamic]Relocation, errors: ^[dynamic]rexcode_isa.Error, resolve: bool = true, base_address: u64 = 0) -> (byte_count: u32, ok: bool)
    encode_a32_modimmproc(value: u32) -> (u32, bool)
    Encode an arbitrary 32-bit constant as an A32 modified-immediate.

    Encode an arbitrary 32-bit constant as an A32 modified-immediate. Returns the 12-bit field on success.

    encode_max_code_size(instructions: []Instruction) -> int
    encode_max_relocation_count(instructions: []Instruction) -> int
    encode_neon_modimmproc(value: u32) -> (form: NEON_Imm_Form, ok: bool)
    Encode a (32-bit) constant for NEON immediate operations.

    Encode a (32-bit) constant for NEON immediate operations. On success, returns (cmode, op, abcdefgh) packed in the low bits as a single u32: bits 12:8 = cmode, bit 7 = op, bits 7:0 = abcdefgh... actually returns a struct.

    encode_psr_field(sel: u8) -> u32
    encode_reserveproc(code: ^[dynamic]u8, relocs: ^[dynamic]Relocation, instructions: []Instruction)
    Pre-size the caller's encode outputs (code grown by length so code[:] is a valid emit target; relocs reserved by capacity) so the encode hot path never…

    Pre-size the caller's encode outputs (code grown by length so code[:] is a valid emit target; relocs reserved by capacity) so the encode hot path never reallocates. Allocates no new buffers; pass nil to skip either array.

    encode_t32_modimmproc(value: u32) -> (u32, bool)
    Encode an arbitrary 32-bit constant as a T32 modified-immediate.

    Encode an arbitrary 32-bit constant as a T32 modified-immediate. Returns 12 bits packed as i:imm3:imm8 on success.

    encode_vfp_imm8_f16proc(value: u16) -> (u8, bool)
    encode_vfp_imm8_f32proc(value: u32) -> (u8, bool)
    encode_vfp_imm8_f64proc(value: u64) -> (u8, bool)
    encoding_flags(sets_flags: bool = false, cond_in_28: bool = true, branch: bool = false, cond_branch: bool = false, writes_pc: bool = false, thumb32: bool = false, deprecated: bool = false) -> Encoding_Flags
    Convenience: build an Encoding_Flags with named fields.
    extract_neon_modimm_abcdefgh(word: u32) -> u32
    Reconstruct abcdefgh from the instruction word.
    fprintproc(fd: ^os.File, instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil)
    fprintlnproc(fd: ^os.File, instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil)
    inst_adc 4 forms
    inst_adc_r_r_immm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_adc_r_r_rsh(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_adc_r_r_rsr(dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_adc_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_add 6 forms
    inst_add_r_r_immm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_add_r_r_rsh(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_add_r_r_rsr(dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_add_rlo_rlo_rlo(dst: Register, src: Register, src2: Register) -> Instruction
    inst_add_rlo_imm8(dst: Register, imm: i64) -> Instruction
    inst_add_r_r(dst: Register, src: Register) -> Instruction
    inst_adr(dst: Register, offset: i64) -> Instruction
    inst_adr_rlo_rel(dst: Register, offset: i64) -> Instruction
    inst_aesd(dst: Register, src: Register) -> Instruction
    inst_aesd_q_q(dst: Register, src: Register) -> Instruction
    inst_aese(dst: Register, src: Register) -> Instruction
    inst_aese_q_q(dst: Register, src: Register) -> Instruction
    inst_aesimc(dst: Register, src: Register) -> Instruction
    inst_aesimc_q_q(dst: Register, src: Register) -> Instruction
    inst_aesmc(dst: Register, src: Register) -> Instruction
    inst_aesmc_q_q(dst: Register, src: Register) -> Instruction
    inst_and 4 forms
    inst_and_r_r_immm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_and_r_r_rsh(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_and_r_r_rsr(dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_and_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_asr 3 forms
    inst_asr_r_r_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_asr_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_asr_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_aut() -> Instruction
    inst_aut_none() -> Instruction
    inst_autg(dst: Register, src: Register, src2: Register) -> Instruction
    inst_autg_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_b 2 forms
    inst_b_rel(offset: i64) -> Instruction
    inst_b_rel_cond(offset: i64, imm: i64) -> Instruction
    inst_bf(offset: i64, offset2: i64) -> Instruction
    inst_bf_rel_rel(offset: i64, offset2: i64) -> Instruction
    inst_bfc(dst: Register, imm: i64, imm2: i64) -> Instruction
    inst_bfc_r_imm5_imm5w(dst: Register, imm: i64, imm2: i64) -> Instruction
    inst_bfcsel(offset: i64, offset2: i64, imm: i64) -> Instruction
    inst_bfcsel_rel_rel_imm4(offset: i64, offset2: i64, imm: i64) -> Instruction
    inst_bfi(dst: Register, src: Register, imm: i64, imm2: i64) -> Instruction
    inst_bfi_r_r_imm5_imm5w(dst: Register, src: Register, imm: i64, imm2: i64) -> Instruction
    inst_bfl(offset: i64, offset2: i64) -> Instruction
    inst_bfl_rel_rel(offset: i64, offset2: i64) -> Instruction
    inst_bflx(offset: i64, src: Register) -> Instruction
    inst_bflx_rel_r(offset: i64, src: Register) -> Instruction
    inst_bfx(offset: i64, src: Register) -> Instruction
    inst_bfx_rel_r(offset: i64, src: Register) -> Instruction
    inst_bic 4 forms
    inst_bic_r_r_immm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_bic_r_r_rsh(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_bic_r_r_rsr(dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_bic_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_bkpt(imm: i64) -> Instruction
    inst_bkpt_imm(imm: i64) -> Instruction
    inst_bl(offset: i64) -> Instruction
    inst_bl_rel(offset: i64) -> Instruction
    inst_block(m: Mnemonic, base: Register, mask: u16, mode: Mode = .A32) -> Instruction
    LDM/STM/PUSH/POP block move
    inst_blx 2 forms
    inst_blx_r(dst: Register) -> Instruction
    inst_blx_rel(offset: i64) -> Instruction
    inst_blxns(dst: Register) -> Instruction
    inst_blxns_r(dst: Register) -> Instruction
    inst_branch(m: Mnemonic, label_id: u32, mode: Mode = .A32) -> Instruction
    Branches with label
    inst_bti() -> Instruction
    inst_bti_none() -> Instruction
    inst_bx(dst: Register) -> Instruction
    inst_bx_r(dst: Register) -> Instruction
    inst_bxj(dst: Register) -> Instruction
    inst_bxj_r(dst: Register) -> Instruction
    inst_bxns(dst: Register) -> Instruction
    inst_bxns_r(dst: Register) -> Instruction
    inst_cbnz(dst: Register, offset: i64) -> Instruction
    inst_cbnz_rlo_rel(dst: Register, offset: i64) -> Instruction
    inst_cbz(dst: Register, offset: i64) -> Instruction
    inst_cbz_rlo_rel(dst: Register, offset: i64) -> Instruction
    inst_cdp(dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64) -> Instruction
    inst_cdp2(dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64) -> Instruction
    inst_cdp2_cpn_cpop_crd_crd_crd_cpop(dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64) -> Instruction
    inst_cdp_cpn_cpop_crd_crd_crd_cpop(dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64) -> Instruction
    inst_clrex() -> Instruction
    inst_clrex_none() -> Instruction
    inst_clz(dst: Register, src: Register) -> Instruction
    inst_clz_r_r(dst: Register, src: Register) -> Instruction
    inst_cmn 4 forms
    inst_cmn_r_immm(dst: Register, imm: i64) -> Instruction
    inst_cmn_r_rsh(dst: Register, src: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_cmn_r_rsr(dst: Register, src: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_cmn_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_cmp 4 forms
    inst_cmp_r_immm(dst: Register, imm: i64) -> Instruction
    inst_cmp_r_rsh(dst: Register, src: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_cmp_r_rsr(dst: Register, src: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_cmp_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_cps(imm: i64) -> Instruction
    inst_cps_ifl(imm: i64) -> Instruction
    inst_crc32b(dst: Register, src: Register, src2: Register) -> Instruction
    inst_crc32b_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_crc32cb(dst: Register, src: Register, src2: Register) -> Instruction
    inst_crc32cb_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_crc32ch(dst: Register, src: Register, src2: Register) -> Instruction
    inst_crc32ch_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_crc32cw(dst: Register, src: Register, src2: Register) -> Instruction
    inst_crc32cw_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_crc32h(dst: Register, src: Register, src2: Register) -> Instruction
    inst_crc32h_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_crc32w(dst: Register, src: Register, src2: Register) -> Instruction
    inst_crc32w_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_csdb() -> Instruction
    inst_csdb_none() -> Instruction
    inst_cx1(imm: i64, src: Register, imm2: i64) -> Instruction
    inst_cx1_cp_r_imm(imm: i64, src: Register, imm2: i64) -> Instruction
    inst_cx1a(imm: i64, src: Register, imm2: i64) -> Instruction
    inst_cx1a_cp_r_imm(imm: i64, src: Register, imm2: i64) -> Instruction
    inst_cx1d(imm: i64, src: Register, imm2: i64) -> Instruction
    inst_cx1d_cp_r_imm(imm: i64, src: Register, imm2: i64) -> Instruction
    inst_cx1da(imm: i64, src: Register, imm2: i64) -> Instruction
    inst_cx1da_cp_r_imm(imm: i64, src: Register, imm2: i64) -> Instruction
    inst_cx2(imm: i64, src: Register, src2: Register, imm2: i64) -> Instruction
    inst_cx2_cp_r_r_imm(imm: i64, src: Register, src2: Register, imm2: i64) -> Instruction
    inst_cx2a(imm: i64, src: Register, src2: Register, imm2: i64) -> Instruction
    inst_cx2a_cp_r_r_imm(imm: i64, src: Register, src2: Register, imm2: i64) -> Instruction
    inst_cx2d(imm: i64, src: Register, src2: Register, imm2: i64) -> Instruction
    inst_cx2d_cp_r_r_imm(imm: i64, src: Register, src2: Register, imm2: i64) -> Instruction
    inst_cx2da(imm: i64, src: Register, src2: Register, imm2: i64) -> Instruction
    inst_cx2da_cp_r_r_imm(imm: i64, src: Register, src2: Register, imm2: i64) -> Instruction
    inst_cx3(imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_cx3_cp_r_r_r(imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_cx3a(imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_cx3a_cp_r_r_r(imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_cx3d(imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_cx3d_cp_r_r_r(imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_cx3da(imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_cx3da_cp_r_r_r(imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_dbg(imm: i64) -> Instruction
    inst_dbg_hint(imm: i64) -> Instruction
    inst_dcps1() -> Instruction
    inst_dcps1_none() -> Instruction
    inst_dcps2() -> Instruction
    inst_dcps2_none() -> Instruction
    inst_dcps3() -> Instruction
    inst_dcps3_none() -> Instruction
    inst_dls(dst: Register) -> Instruction
    inst_dls_r(dst: Register) -> Instruction
    inst_dlstp(dst: Register) -> Instruction
    inst_dlstp_r(dst: Register) -> Instruction
    inst_dmb(imm: i64) -> Instruction
    inst_dmb_barr(imm: i64) -> Instruction
    inst_dsb(imm: i64) -> Instruction
    inst_dsb_barr(imm: i64) -> Instruction
    inst_eor 4 forms
    inst_eor_r_r_immm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_eor_r_r_rsh(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_eor_r_r_rsr(dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_eor_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_eret() -> Instruction
    inst_eret_none() -> Instruction
    inst_esb() -> Instruction
    inst_esb_none() -> Instruction
    inst_hint(imm: i64) -> Instruction
    inst_hint_hint(imm: i64) -> Instruction
    inst_hlt(imm: i64) -> Instruction
    inst_hlt_imm(imm: i64) -> Instruction
    inst_hvc(imm: i64) -> Instruction
    inst_hvc_imm(imm: i64) -> Instruction
    inst_i(m: Mnemonic, v: i64, mode: Mode = .A32) -> Instruction
    inst_isb(imm: i64) -> Instruction
    inst_isb_barr(imm: i64) -> Instruction
    inst_it(imm: i64, imm2: i64) -> Instruction
    inst_it_cond_imm4(imm: i64, imm2: i64) -> Instruction
    inst_lctp() -> Instruction
    inst_lctp_none() -> Instruction
    inst_lda(dst: Register, src: Memory) -> Instruction
    inst_lda_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldab(dst: Register, src: Memory) -> Instruction
    inst_ldab_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldaex(dst: Register, src: Memory) -> Instruction
    inst_ldaex_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldaexb(dst: Register, src: Memory) -> Instruction
    inst_ldaexb_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldaexd(dst: Register, src: Memory) -> Instruction
    inst_ldaexd_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldaexh(dst: Register, src: Memory) -> Instruction
    inst_ldaexh_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldah(dst: Register, src: Memory) -> Instruction
    inst_ldah_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldc(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_ldc2(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_ldc2_cpn_crd_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_ldc2l(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_ldc2l_cpn_crd_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_ldc_cpn_crd_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_ldcl(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_ldcl_cpn_crd_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_ldm(dst: Register, regs: u16) -> Instruction
    inst_ldm_r_list(dst: Register, regs: u16) -> Instruction
    inst_ldmda(dst: Register, regs: u16) -> Instruction
    inst_ldmda_r_list(dst: Register, regs: u16) -> Instruction
    inst_ldmdb(dst: Register, regs: u16) -> Instruction
    inst_ldmdb_r_list(dst: Register, regs: u16) -> Instruction
    inst_ldmib(dst: Register, regs: u16) -> Instruction
    inst_ldmib_r_list(dst: Register, regs: u16) -> Instruction
    inst_ldr(dst: Register, src: Memory) -> Instruction
    inst_ldr_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrb(dst: Register, src: Memory) -> Instruction
    inst_ldrb_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrbt(dst: Register, src: Memory) -> Instruction
    inst_ldrbt_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrd(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_ldrd_r_r_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_ldrex(dst: Register, src: Memory) -> Instruction
    inst_ldrex_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrexb(dst: Register, src: Memory) -> Instruction
    inst_ldrexb_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrexd 2 forms
    inst_ldrexd_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrexd_r_r_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_ldrexh(dst: Register, src: Memory) -> Instruction
    inst_ldrexh_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrh(dst: Register, src: Memory) -> Instruction
    inst_ldrh_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrht(dst: Register, src: Memory) -> Instruction
    inst_ldrht_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrsb(dst: Register, src: Memory) -> Instruction
    inst_ldrsb_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrsbt(dst: Register, src: Memory) -> Instruction
    inst_ldrsbt_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrsh(dst: Register, src: Memory) -> Instruction
    inst_ldrsh_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrsht(dst: Register, src: Memory) -> Instruction
    inst_ldrsht_r_mem(dst: Register, src: Memory) -> Instruction
    inst_ldrt(dst: Register, src: Memory) -> Instruction
    inst_ldrt_r_mem(dst: Register, src: Memory) -> Instruction
    inst_le(offset: i64) -> Instruction
    inst_le_rel(offset: i64) -> Instruction
    inst_letp(offset: i64) -> Instruction
    inst_letp_rel(offset: i64) -> Instruction
    inst_load(m: Mnemonic, rd: Register, mm: Memory, mode: Mode = .A32) -> Instruction
    Memory load/store
    inst_lsl 3 forms
    inst_lsl_r_r_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_lsl_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_lsl_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_lsr 3 forms
    inst_lsr_r_r_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_lsr_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_lsr_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_mcr(dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64) -> Instruction
    inst_mcr2(dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64) -> Instruction
    inst_mcr2_cpn_cpop_r_crd_crd_cpop(dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64) -> Instruction
    inst_mcr_cpn_cpop_r_crd_crd_cpop(dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64) -> Instruction
    inst_mcrr(dst: Register, imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_mcrr2(dst: Register, imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_mcrr2_cpn_cpop_r_r_crd(dst: Register, imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_mcrr_cpn_cpop_r_r_crd(dst: Register, imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_mla(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_mla_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_mls(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_mls_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_mov 4 forms
    inst_mov_r_immm(dst: Register, imm: i64) -> Instruction
    inst_mov_r_rsh(dst: Register, src: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_mov_r_rsr(dst: Register, src: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_mov_r_r(dst: Register, src: Register) -> Instruction
    inst_movt(dst: Register, imm: i64) -> Instruction
    inst_movt_r_imm16(dst: Register, imm: i64) -> Instruction
    inst_movw(dst: Register, imm: i64) -> Instruction
    inst_movw_r_imm16(dst: Register, imm: i64) -> Instruction
    inst_mrc(dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64) -> Instruction
    inst_mrc2(dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64) -> Instruction
    inst_mrc2_cpn_cpop_r_crd_crd_cpop(dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64) -> Instruction
    inst_mrc_cpn_cpop_r_crd_crd_cpop(dst: Register, imm: i64, src: Register, src2: Register, src3: Register, imm2: i64) -> Instruction
    inst_mrrc(dst: Register, imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_mrrc2(dst: Register, imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_mrrc2_cpn_cpop_r_r_crd(dst: Register, imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_mrrc_cpn_cpop_r_r_crd(dst: Register, imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_mrs(dst: Register, imm: i64) -> Instruction
    inst_mrs_r_psr(dst: Register, imm: i64) -> Instruction
    inst_msr 2 forms
    inst_msr_psr_immm(imm: i64, imm2: i64) -> Instruction
    inst_msr_psr_r(imm: i64, src: Register) -> Instruction
    inst_mul 2 forms
    inst_mul_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_mul_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_mvn 4 forms
    inst_mvn_r_immm(dst: Register, imm: i64) -> Instruction
    inst_mvn_r_rsh(dst: Register, src: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_mvn_r_rsr(dst: Register, src: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_mvn_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_neg(dst: Register, src: Register) -> Instruction
    inst_neg_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_none(m: Mnemonic, mode: Mode = .A32) -> Instruction
    inst_nop() -> Instruction
    inst_nop_none() -> Instruction
    inst_orr 4 forms
    inst_orr_r_r_immm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_orr_r_r_rsh(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_orr_r_r_rsr(dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_orr_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_pac() -> Instruction
    inst_pac_none() -> Instruction
    inst_pacbti() -> Instruction
    inst_pacbti_none() -> Instruction
    inst_pkhbt(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_pkhbt_r_r_rsh(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_pkhtb(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_pkhtb_r_r_rsh(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_pld(dst: Memory) -> Instruction
    inst_pld_mem(dst: Memory) -> Instruction
    inst_pldw(dst: Memory) -> Instruction
    inst_pldw_mem(dst: Memory) -> Instruction
    inst_pli(dst: Memory) -> Instruction
    inst_pli_mem(dst: Memory) -> Instruction
    inst_pop(regs: u16) -> Instruction
    inst_pop_list(regs: u16) -> Instruction
    inst_psb_csync() -> Instruction
    inst_psb_csync_none() -> Instruction
    inst_push(regs: u16) -> Instruction
    inst_push_list(regs: u16) -> Instruction
    inst_qadd(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qadd16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qadd16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qadd8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qadd8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qadd_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qasx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qasx_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qdadd(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qdadd_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qdsub(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qdsub_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qsax(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qsax_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qsub(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qsub16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qsub16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qsub8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qsub8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_qsub_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_r(m: Mnemonic, r: Register, mode: Mode = .A32) -> Instruction
    1-operand
    inst_r_i(m: Mnemonic, rd: Register, v: i64, mode: Mode = .A32) -> Instruction
    inst_r_r(m: Mnemonic, rd, rm: Register, mode: Mode = .A32) -> Instruction
    2-operand
    inst_r_r_i(m: Mnemonic, rd, rn: Register, v: i64, mode: Mode = .A32) -> Instruction
    inst_r_r_r(m: Mnemonic, rd, rn, rm: Register, mode: Mode = .A32) -> Instruction
    3-operand data-proc (ADD/SUB/AND/etc.)
    inst_r_r_r_r(m: Mnemonic, rd, rn, rm, ra: Register, mode: Mode = .A32) -> Instruction
    4-operand MLA / MLS / SMLAL etc.
    inst_r_r_r_shifted(m: Mnemonic, rd, rn, rm: Register, st: Shift_Type, amt: u8, mode: Mode = .A32) -> Instruction
    inst_rbit(dst: Register, src: Register) -> Instruction
    inst_rbit_r_r(dst: Register, src: Register) -> Instruction
    inst_rev(dst: Register, src: Register) -> Instruction
    inst_rev16(dst: Register, src: Register) -> Instruction
    inst_rev16_r_r(dst: Register, src: Register) -> Instruction
    inst_rev_r_r(dst: Register, src: Register) -> Instruction
    inst_revsh(dst: Register, src: Register) -> Instruction
    inst_revsh_r_r(dst: Register, src: Register) -> Instruction
    inst_rfeda(dst: Register) -> Instruction
    inst_rfeda_r(dst: Register) -> Instruction
    inst_rfedb(dst: Register) -> Instruction
    inst_rfedb_r(dst: Register) -> Instruction
    inst_rfeia(dst: Register) -> Instruction
    inst_rfeia_r(dst: Register) -> Instruction
    inst_rfeib(dst: Register) -> Instruction
    inst_rfeib_r(dst: Register) -> Instruction
    inst_ror 3 forms
    inst_ror_r_r_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_ror_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_ror_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_rrx(dst: Register, src: Register) -> Instruction
    inst_rrx_r_r(dst: Register, src: Register) -> Instruction
    inst_rsb 3 forms
    inst_rsb_r_r_immm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_rsb_r_r_rsh(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_rsb_r_r_rsr(dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_rsc 3 forms
    inst_rsc_r_r_immm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_rsc_r_r_rsh(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_rsc_r_r_rsr(dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_sadd16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sadd16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sadd8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sadd8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sasx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sasx_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sb() -> Instruction
    inst_sb_none() -> Instruction
    inst_sbc 4 forms
    inst_sbc_r_r_immm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_sbc_r_r_rsh(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_sbc_r_r_rsr(dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_sbc_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_sbfx(dst: Register, src: Register, imm: i64, imm2: i64) -> Instruction
    inst_sbfx_r_r_imm5_imm5w(dst: Register, src: Register, imm: i64, imm2: i64) -> Instruction
    inst_sdiv(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sdiv_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sel(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sel_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_set_cond(inst: Instruction, cond: u8) -> Instruction
    Set condition code on any builder
    inst_set_flags(inst: Instruction) -> Instruction
    Set S flag (sets APSR.NZCV)
    inst_setend(imm: i64) -> Instruction
    inst_setend_end(imm: i64) -> Instruction
    inst_setpan(imm: i64) -> Instruction
    inst_setpan_hint(imm: i64) -> Instruction
    inst_sev() -> Instruction
    inst_sev_none() -> Instruction
    inst_sevl() -> Instruction
    inst_sevl_none() -> Instruction
    inst_sg() -> Instruction
    inst_sg_none() -> Instruction
    inst_sha1c(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha1c_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha1h(dst: Register, src: Register) -> Instruction
    inst_sha1h_q_q(dst: Register, src: Register) -> Instruction
    inst_sha1m(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha1m_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha1p(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha1p_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha1su0(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha1su0_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha1su1(dst: Register, src: Register) -> Instruction
    inst_sha1su1_q_q(dst: Register, src: Register) -> Instruction
    inst_sha256h(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha256h2(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha256h2_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha256h_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha256su0(dst: Register, src: Register) -> Instruction
    inst_sha256su0_q_q(dst: Register, src: Register) -> Instruction
    inst_sha256su1(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sha256su1_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_shadd16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_shadd16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_shadd8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_shadd8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_shasx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_shasx_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_shsax(dst: Register, src: Register, src2: Register) -> Instruction
    inst_shsax_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_shsub16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_shsub16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_shsub8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_shsub8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_size_from_bits(bits: u32, mode: Mode) -> u8
    inst_smc(imm: i64) -> Instruction
    inst_smc_imm(imm: i64) -> Instruction
    inst_smlabb(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlabb_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlabt(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlabt_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlad(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlad_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smladx(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smladx_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlal(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlal_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlalbb(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlalbb_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlalbt(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlalbt_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlald(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlald_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlaldx(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlaldx_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlaltb(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlaltb_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlaltt(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlaltt_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlatb(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlatb_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlatt(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlatt_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlawb(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlawb_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlawt(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlawt_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlsd(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlsd_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlsdx(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlsdx_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlsld(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlsld_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlsldx(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smlsldx_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smmla(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smmla_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smmlar(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smmlar_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smmls(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smmls_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smmlsr(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smmlsr_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smmul(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smmul_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smmulr(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smmulr_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smuad(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smuad_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smuadx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smuadx_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smulbb(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smulbb_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smulbt(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smulbt_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smull(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smull_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_smultb(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smultb_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smultt(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smultt_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smulwb(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smulwb_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smulwt(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smulwt_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smusd(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smusd_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smusdx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_smusdx_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_srsda(dst: Register, imm: i64) -> Instruction
    inst_srsda_r_imm(dst: Register, imm: i64) -> Instruction
    inst_srsdb(dst: Register, imm: i64) -> Instruction
    inst_srsdb_r_imm(dst: Register, imm: i64) -> Instruction
    inst_srsia(dst: Register, imm: i64) -> Instruction
    inst_srsia_r_imm(dst: Register, imm: i64) -> Instruction
    inst_srsib(dst: Register, imm: i64) -> Instruction
    inst_srsib_r_imm(dst: Register, imm: i64) -> Instruction
    inst_ssat(dst: Register, imm: i64, src: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_ssat16(dst: Register, imm: i64, src: Register) -> Instruction
    inst_ssat16_r_imm4s_r(dst: Register, imm: i64, src: Register) -> Instruction
    inst_ssat_r_imm4s_rsh(dst: Register, imm: i64, src: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_ssax(dst: Register, src: Register, src2: Register) -> Instruction
    inst_ssax_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_ssub16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_ssub16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_ssub8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_ssub8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_stc(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stc2(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stc2_cpn_crd_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stc2l(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stc2l_cpn_crd_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stc_cpn_crd_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stcl(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stcl_cpn_crd_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stl(dst: Register, src: Memory) -> Instruction
    inst_stl_r_mem(dst: Register, src: Memory) -> Instruction
    inst_stlb(dst: Register, src: Memory) -> Instruction
    inst_stlb_r_mem(dst: Register, src: Memory) -> Instruction
    inst_stlex(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stlex_r_r_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stlexb(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stlexb_r_r_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stlexd(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stlexd_r_r_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stlexh(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stlexh_r_r_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_stlh(dst: Register, src: Memory) -> Instruction
    inst_stlh_r_mem(dst: Register, src: Memory) -> Instruction
    inst_stm(dst: Register, regs: u16) -> Instruction
    inst_stm_r_list(dst: Register, regs: u16) -> Instruction
    inst_stmda(dst: Register, regs: u16) -> Instruction
    inst_stmda_r_list(dst: Register, regs: u16) -> Instruction
    inst_stmdb(dst: Register, regs: u16) -> Instruction
    inst_stmdb_r_list(dst: Register, regs: u16) -> Instruction
    inst_stmib(dst: Register, regs: u16) -> Instruction
    inst_stmib_r_list(dst: Register, regs: u16) -> Instruction
    inst_store(m: Mnemonic, rd: Register, mm: Memory, mode: Mode = .A32) -> Instruction
    inst_str(dst: Register, src: Memory) -> Instruction
    inst_str_r_mem(dst: Register, src: Memory) -> Instruction
    inst_strb(dst: Register, src: Memory) -> Instruction
    inst_strb_r_mem(dst: Register, src: Memory) -> Instruction
    inst_strbt(dst: Register, src: Memory) -> Instruction
    inst_strbt_r_mem(dst: Register, src: Memory) -> Instruction
    inst_strd(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_strd_r_r_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_strex(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_strex_r_r_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_strexb(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_strexb_r_r_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_strexd 2 forms
    inst_strexd_r_r_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_strexd_r_r_r_mem(dst: Register, src: Register, src2: Register, src3: Memory) -> Instruction
    inst_strexh(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_strexh_r_r_mem(dst: Register, src: Register, src2: Memory) -> Instruction
    inst_strh(dst: Register, src: Memory) -> Instruction
    inst_strh_r_mem(dst: Register, src: Memory) -> Instruction
    inst_strht(dst: Register, src: Memory) -> Instruction
    inst_strht_r_mem(dst: Register, src: Memory) -> Instruction
    inst_strt(dst: Register, src: Memory) -> Instruction
    inst_strt_r_mem(dst: Register, src: Memory) -> Instruction
    inst_sub 5 forms
    inst_sub_r_r_immm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_sub_r_r_rsh(dst: Register, src: Register, src2: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_sub_r_r_rsr(dst: Register, src: Register, src2: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_sub_rlo_rlo_rlo(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sub_rlo_imm8(dst: Register, imm: i64) -> Instruction
    inst_svc(imm: i64) -> Instruction
    inst_svc_imm(imm: i64) -> Instruction
    inst_swp(dst: Register, src: Register, src2: Register) -> Instruction
    inst_swp_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_swpb(dst: Register, src: Register, src2: Register) -> Instruction
    inst_swpb_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sxtab(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sxtab16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sxtab16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sxtab_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sxtah(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sxtah_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_sxtb(dst: Register, src: Register) -> Instruction
    inst_sxtb16(dst: Register, src: Register) -> Instruction
    inst_sxtb16_r_r(dst: Register, src: Register) -> Instruction
    inst_sxtb_r_r(dst: Register, src: Register) -> Instruction
    inst_sxth(dst: Register, src: Register) -> Instruction
    inst_sxth_r_r(dst: Register, src: Register) -> Instruction
    inst_tbb(dst: Register, src: Register) -> Instruction
    inst_tbb_r_r(dst: Register, src: Register) -> Instruction
    inst_tbh(dst: Register, src: Register) -> Instruction
    inst_tbh_r_r(dst: Register, src: Register) -> Instruction
    inst_teq 3 forms
    inst_teq_r_immm(dst: Register, imm: i64) -> Instruction
    inst_teq_r_rsh(dst: Register, src: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_teq_r_rsr(dst: Register, src: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_tsb_csync() -> Instruction
    inst_tsb_csync_none() -> Instruction
    inst_tst 4 forms
    inst_tst_r_immm(dst: Register, imm: i64) -> Instruction
    inst_tst_r_rsh(dst: Register, src: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_tst_r_rsr(dst: Register, src: Register, shift: Shift_Type, rs: Register) -> Instruction
    inst_tst_rlo_rlo(dst: Register, src: Register) -> Instruction
    inst_tt(dst: Register, src: Register) -> Instruction
    inst_tt_r_r(dst: Register, src: Register) -> Instruction
    inst_tta(dst: Register, src: Register) -> Instruction
    inst_tta_r_r(dst: Register, src: Register) -> Instruction
    inst_ttat(dst: Register, src: Register) -> Instruction
    inst_ttat_r_r(dst: Register, src: Register) -> Instruction
    inst_ttt(dst: Register, src: Register) -> Instruction
    inst_ttt_r_r(dst: Register, src: Register) -> Instruction
    inst_uadd16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uadd16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uadd8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uadd8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uasx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uasx_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_ubfx(dst: Register, src: Register, imm: i64, imm2: i64) -> Instruction
    inst_ubfx_r_r_imm5_imm5w(dst: Register, src: Register, imm: i64, imm2: i64) -> Instruction
    inst_udf(imm: i64) -> Instruction
    inst_udf_imm(imm: i64) -> Instruction
    inst_udiv(dst: Register, src: Register, src2: Register) -> Instruction
    inst_udiv_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uhadd16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uhadd16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uhadd8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uhadd8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uhasx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uhasx_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uhsax(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uhsax_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uhsub16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uhsub16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uhsub8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uhsub8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_umaal(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_umaal_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_umlal(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_umlal_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_umull(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_umull_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_uqadd16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uqadd16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uqadd8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uqadd8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uqasx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uqasx_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uqsax(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uqsax_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uqsub16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uqsub16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uqsub8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uqsub8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_usad8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_usad8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_usada8(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_usada8_r_r_r_r(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_usat(dst: Register, imm: i64, src: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_usat16(dst: Register, imm: i64, src: Register) -> Instruction
    inst_usat16_r_imm4s_r(dst: Register, imm: i64, src: Register) -> Instruction
    inst_usat_r_imm4s_rsh(dst: Register, imm: i64, src: Register, shift: Shift_Type, amount: u8) -> Instruction
    inst_usax(dst: Register, src: Register, src2: Register) -> Instruction
    inst_usax_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_usub16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_usub16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_usub8(dst: Register, src: Register, src2: Register) -> Instruction
    inst_usub8_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uxtab(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uxtab16(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uxtab16_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uxtab_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uxtah(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uxtah_r_r_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_uxtb(dst: Register, src: Register) -> Instruction
    inst_uxtb16(dst: Register, src: Register) -> Instruction
    inst_uxtb16_r_r(dst: Register, src: Register) -> Instruction
    inst_uxtb_r_r(dst: Register, src: Register) -> Instruction
    inst_uxth(dst: Register, src: Register) -> Instruction
    inst_uxth_r_r(dst: Register, src: Register) -> Instruction
    inst_vaba(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vaba_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vabal(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vabal_q_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vabav(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vabav_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vabd(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vabd_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vabdl(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vabdl_q_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vabs(dst: Register, src: Register) -> Instruction
    inst_vabs_s_s(dst: Register, src: Register) -> Instruction
    inst_vacge(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vacge_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vacgt(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vacgt_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vacle(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vacle_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vaclt(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vaclt_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vadd(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vadd_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vaddl(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vaddl_q_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vaddlv(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vaddlv_r_r_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vaddlva(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vaddlva_r_r_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vaddv(dst: Register, src: Register) -> Instruction
    inst_vaddv_r_q(dst: Register, src: Register) -> Instruction
    inst_vaddva(dst: Register, src: Register) -> Instruction
    inst_vaddva_r_q(dst: Register, src: Register) -> Instruction
    inst_vaddw(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vaddw_q_q_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vand(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vand_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vbic 2 forms
    inst_vbic_d_imm(dst: Register, imm: i64) -> Instruction
    inst_vbic_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vbif(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vbif_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vbit(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vbit_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vbrsr(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vbrsr_q_q_r(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vbsl(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vbsl_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vcadd(dst: Register, src: Register, src2: Register, imm: i64) -> Instruction
    inst_vcadd_d_d_d_imm(dst: Register, src: Register, src2: Register, imm: i64) -> Instruction
    inst_vceq 2 forms
    inst_vceq_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vceq_d_d(dst: Register, src: Register) -> Instruction
    inst_vcge 2 forms
    inst_vcge_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vcge_d_d(dst: Register, src: Register) -> Instruction
    inst_vcgt 2 forms
    inst_vcgt_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vcgt_d_d(dst: Register, src: Register) -> Instruction
    inst_vcle 2 forms
    inst_vcle_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vcle_d_d(dst: Register, src: Register) -> Instruction
    inst_vcls(dst: Register, src: Register) -> Instruction
    inst_vcls_d_d(dst: Register, src: Register) -> Instruction
    inst_vclt 2 forms
    inst_vclt_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vclt_d_d(dst: Register, src: Register) -> Instruction
    inst_vclz(dst: Register, src: Register) -> Instruction
    inst_vclz_d_d(dst: Register, src: Register) -> Instruction
    inst_vcmla 2 forms
    inst_vcmla_d_d_d_imm(dst: Register, src: Register, src2: Register, imm: i64) -> Instruction
    inst_vcmla_d_d_dlane_imm(dst: Register, src: Register, src2: Register, lane: u8, imm: i64) -> Instruction
    inst_vcmp 2 forms
    inst_vcmp_s_s(dst: Register, src: Register) -> Instruction
    inst_vcmp_s(dst: Register) -> Instruction
    inst_vcmpe 2 forms
    inst_vcmpe_s_s(dst: Register, src: Register) -> Instruction
    inst_vcmpe_s(dst: Register) -> Instruction
    inst_vcmul(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vcmul_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vcnt(dst: Register, src: Register) -> Instruction
    inst_vcnt_d_d(dst: Register, src: Register) -> Instruction
    inst_vctp(dst: Register) -> Instruction
    inst_vctp_r(dst: Register) -> Instruction
    inst_vcvt 2 forms
    inst_vcvt_d_s(dst: Register, src: Register) -> Instruction
    inst_vcvt_s_s_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vcvta(dst: Register, src: Register) -> Instruction
    inst_vcvta_s_s(dst: Register, src: Register) -> Instruction
    inst_vcvtb(dst: Register, src: Register) -> Instruction
    inst_vcvtb_s_s(dst: Register, src: Register) -> Instruction
    inst_vcvtm(dst: Register, src: Register) -> Instruction
    inst_vcvtm_s_s(dst: Register, src: Register) -> Instruction
    inst_vcvtn(dst: Register, src: Register) -> Instruction
    inst_vcvtn_s_s(dst: Register, src: Register) -> Instruction
    inst_vcvtp(dst: Register, src: Register) -> Instruction
    inst_vcvtp_s_s(dst: Register, src: Register) -> Instruction
    inst_vcvtr(dst: Register, src: Register) -> Instruction
    inst_vcvtr_s_s(dst: Register, src: Register) -> Instruction
    inst_vcvtt(dst: Register, src: Register) -> Instruction
    inst_vcvtt_s_s(dst: Register, src: Register) -> Instruction
    inst_vcx1(imm: i64, src: Register, imm2: i64) -> Instruction
    inst_vcx1_cp_s_imm(imm: i64, src: Register, imm2: i64) -> Instruction
    inst_vcx1a(imm: i64, src: Register, imm2: i64) -> Instruction
    inst_vcx1a_cp_s_imm(imm: i64, src: Register, imm2: i64) -> Instruction
    inst_vcx2(imm: i64, src: Register, src2: Register, imm2: i64) -> Instruction
    inst_vcx2_cp_s_s_imm(imm: i64, src: Register, src2: Register, imm2: i64) -> Instruction
    inst_vcx2a(imm: i64, src: Register, src2: Register, imm2: i64) -> Instruction
    inst_vcx2a_cp_s_s_imm(imm: i64, src: Register, src2: Register, imm2: i64) -> Instruction
    inst_vcx3(imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vcx3_cp_s_s_s(imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vcx3a(imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vcx3a_cp_s_s_s(imm: i64, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vddup(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vddup_q_r_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vdiv(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vdiv_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vdot(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vdot_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vdup 2 forms
    inst_vdup_d_r(dst: Register, src: Register) -> Instruction
    inst_vdup_d_dlane(dst: Register, src: Register, lane: u8) -> Instruction
    inst_vdwdup(dst: Register, src: Register, src2: Register, imm: i64) -> Instruction
    inst_vdwdup_q_r_r_imm(dst: Register, src: Register, src2: Register, imm: i64) -> Instruction
    inst_veor(dst: Register, src: Register, src2: Register) -> Instruction
    inst_veor_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vext(dst: Register, src: Register, src2: Register, imm: i64) -> Instruction
    inst_vext_d_d_d_imm4(dst: Register, src: Register, src2: Register, imm: i64) -> Instruction
    inst_vfma(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfma_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfmab(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfmab_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfmal(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfmal_d_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfmat(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfmat_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfms(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfms_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfmsl(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfmsl_d_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfnma(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfnma_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfnms(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vfnms_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vhadd(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vhadd_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vhcadd 2 forms
    inst_vhcadd_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vhcadd_q_q_q_imm(dst: Register, src: Register, src2: Register, imm: i64) -> Instruction
    inst_vhsub(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vhsub_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vidup(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vidup_q_r_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vins(dst: Register, src: Register) -> Instruction
    inst_vins_s_s(dst: Register, src: Register) -> Instruction
    inst_viwdup(dst: Register, src: Register, src2: Register, imm: i64) -> Instruction
    inst_viwdup_q_r_r_imm(dst: Register, src: Register, src2: Register, imm: i64) -> Instruction
    inst_vjcvt(dst: Register, src: Register) -> Instruction
    inst_vjcvt_s_d(dst: Register, src: Register) -> Instruction
    inst_vld1 2 forms
    inst_vld1_dlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vld1_dlane_mem(dst: Register, lane: u8, src: Memory) -> Instruction
    inst_vld2(regs: u16, src: Memory) -> Instruction
    inst_vld20(regs: u16, src: Memory) -> Instruction
    inst_vld20_qlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vld21(regs: u16, src: Memory) -> Instruction
    inst_vld21_qlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vld2_dlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vld3(regs: u16, src: Memory) -> Instruction
    inst_vld3_dlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vld4(regs: u16, src: Memory) -> Instruction
    inst_vld40(regs: u16, src: Memory) -> Instruction
    inst_vld40_qlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vld41(regs: u16, src: Memory) -> Instruction
    inst_vld41_qlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vld42(regs: u16, src: Memory) -> Instruction
    inst_vld42_qlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vld43(regs: u16, src: Memory) -> Instruction
    inst_vld43_qlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vld4_dlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vldmdb(dst: Register, regs: u16) -> Instruction
    inst_vldmdb_r_slist(dst: Register, regs: u16) -> Instruction
    inst_vldmia(dst: Register, regs: u16) -> Instruction
    inst_vldmia_r_slist(dst: Register, regs: u16) -> Instruction
    inst_vldr(dst: Register, src: Memory) -> Instruction
    inst_vldr_s_mem(dst: Register, src: Memory) -> Instruction
    inst_vldrb 2 forms
    inst_vldrb_q_mem(dst: Register, src: Memory) -> Instruction
    inst_vldrb_q_mem_q(dst: Register, src: Memory, src2: Register) -> Instruction
    inst_vldrd 2 forms
    inst_vldrd_q_mem(dst: Register, src: Memory) -> Instruction
    inst_vldrd_q_mem_q(dst: Register, src: Memory, src2: Register) -> Instruction
    inst_vldrh 2 forms
    inst_vldrh_q_mem(dst: Register, src: Memory) -> Instruction
    inst_vldrh_q_mem_q(dst: Register, src: Memory, src2: Register) -> Instruction
    inst_vldrw 2 forms
    inst_vldrw_q_mem(dst: Register, src: Memory) -> Instruction
    inst_vldrw_q_mem_q(dst: Register, src: Memory, src2: Register) -> Instruction
    inst_vmax(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmax_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmaxav(dst: Register, src: Register) -> Instruction
    inst_vmaxav_r_q(dst: Register, src: Register) -> Instruction
    inst_vmaxnm(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmaxnm_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmaxnmav(dst: Register, src: Register) -> Instruction
    inst_vmaxnmav_r_q(dst: Register, src: Register) -> Instruction
    inst_vmaxnmv(dst: Register, src: Register) -> Instruction
    inst_vmaxnmv_r_q(dst: Register, src: Register) -> Instruction
    inst_vmaxv(dst: Register, src: Register) -> Instruction
    inst_vmaxv_r_q(dst: Register, src: Register) -> Instruction
    inst_vmin(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmin_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vminav(dst: Register, src: Register) -> Instruction
    inst_vminav_r_q(dst: Register, src: Register) -> Instruction
    inst_vminnm(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vminnm_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vminnmav(dst: Register, src: Register) -> Instruction
    inst_vminnmav_r_q(dst: Register, src: Register) -> Instruction
    inst_vminnmv(dst: Register, src: Register) -> Instruction
    inst_vminnmv_r_q(dst: Register, src: Register) -> Instruction
    inst_vminv(dst: Register, src: Register) -> Instruction
    inst_vminv_r_q(dst: Register, src: Register) -> Instruction
    inst_vmla 2 forms
    inst_vmla_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmla_d_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vmladav(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmladav_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmladava(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmladava_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmladavax(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmladavax_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmladavx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmladavx_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlal 2 forms
    inst_vmlal_q_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlal_q_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vmlalb(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlalb_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlaldav(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlaldav_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlaldava(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlaldava_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlaldavax(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlaldavax_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlaldavx(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlaldavx_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlalt(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlalt_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlav(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlav_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlava(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlava_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmls 2 forms
    inst_vmls_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmls_d_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vmlsdav(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsdav_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsdava(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsdava_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsdavax(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsdavax_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsdavx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsdavx_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsl 2 forms
    inst_vmlsl_q_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsl_q_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vmlslb(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlslb_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsldav(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlsldav_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlsldava(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlsldava_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlsldavax(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlsldavax_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlsldavx(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlsldavx_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmlslt(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlslt_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsv(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsv_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsva(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmlsva_r_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmmla(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmmla_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmov 7 forms
    inst_vmov_s_s(dst: Register, src: Register) -> Instruction
    inst_vmov_s_imm8(dst: Register, imm: i64) -> Instruction
    inst_vmov_r_r_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmov_r_r_s_s(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vmov_r_dlane(dst: Register, src: Register, lane: u8) -> Instruction
    inst_vmov_qlane_r(dst: Register, lane: u8, src: Register) -> Instruction
    inst_vmov_qlane_qlane_r_r(dst: Register, lane: u8, src: Register, lane2: u8, src2: Register, src3: Register) -> Instruction
    inst_vmovl(dst: Register, src: Register) -> Instruction
    inst_vmovl_q_d(dst: Register, src: Register) -> Instruction
    inst_vmovn(dst: Register, src: Register) -> Instruction
    inst_vmovn_d_q(dst: Register, src: Register) -> Instruction
    inst_vmovnb(dst: Register, src: Register) -> Instruction
    inst_vmovnb_q_q(dst: Register, src: Register) -> Instruction
    inst_vmovnt(dst: Register, src: Register) -> Instruction
    inst_vmovnt_q_q(dst: Register, src: Register) -> Instruction
    inst_vmovx(dst: Register, src: Register) -> Instruction
    inst_vmovx_s_s(dst: Register, src: Register) -> Instruction
    inst_vmrs(dst: Register, imm: i64) -> Instruction
    inst_vmrs_r_psr(dst: Register, imm: i64) -> Instruction
    inst_vmsr(imm: i64, src: Register) -> Instruction
    inst_vmsr_psr_r(imm: i64, src: Register) -> Instruction
    inst_vmul 2 forms
    inst_vmul_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmul_d_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vmull 2 forms
    inst_vmull_q_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmull_q_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vmullb(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmullb_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmullt(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmullt_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vmvn 2 forms
    inst_vmvn_d_d(dst: Register, src: Register) -> Instruction
    inst_vmvn_d_imm(dst: Register, imm: i64) -> Instruction
    inst_vneg(dst: Register, src: Register) -> Instruction
    inst_vneg_s_s(dst: Register, src: Register) -> Instruction
    inst_vnmla(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vnmla_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vnmls(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vnmls_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vnmul(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vnmul_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vorn(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vorn_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vorr 2 forms
    inst_vorr_d_imm(dst: Register, imm: i64) -> Instruction
    inst_vorr_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vpadal(dst: Register, src: Register) -> Instruction
    inst_vpadal_d_d(dst: Register, src: Register) -> Instruction
    inst_vpadd(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vpadd_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vpaddl(dst: Register, src: Register) -> Instruction
    inst_vpaddl_d_d(dst: Register, src: Register) -> Instruction
    inst_vpmax(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vpmax_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vpmin(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vpmin_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vpnot() -> Instruction
    inst_vpnot_none() -> Instruction
    inst_vpop(regs: u16) -> Instruction
    inst_vpop_slist(regs: u16) -> Instruction
    inst_vpsel(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vpsel_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vpst(imm: i64) -> Instruction
    inst_vpst_vpt(imm: i64) -> Instruction
    inst_vpt(imm: i64, imm2: i64, src: Register, src2: Register) -> Instruction
    inst_vpt_vpt_cond_q_q(imm: i64, imm2: i64, src: Register, src2: Register) -> Instruction
    inst_vpush(regs: u16) -> Instruction
    inst_vpush_slist(regs: u16) -> Instruction
    inst_vqabs(dst: Register, src: Register) -> Instruction
    inst_vqabs_q_q(dst: Register, src: Register) -> Instruction
    inst_vqadd(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqadd_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmladh(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmladh_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmladhx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmladhx_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmlal 2 forms
    inst_vqdmlal_q_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmlal_q_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vqdmlsdh(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmlsdh_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmlsdhx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmlsdhx_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmlsl 2 forms
    inst_vqdmlsl_q_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmlsl_q_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vqdmulh 2 forms
    inst_vqdmulh_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmulh_d_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vqdmull 2 forms
    inst_vqdmull_q_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqdmull_q_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vqmovn(dst: Register, src: Register) -> Instruction
    inst_vqmovn_d_q(dst: Register, src: Register) -> Instruction
    inst_vqmovnb(dst: Register, src: Register) -> Instruction
    inst_vqmovnb_q_q(dst: Register, src: Register) -> Instruction
    inst_vqmovnt(dst: Register, src: Register) -> Instruction
    inst_vqmovnt_q_q(dst: Register, src: Register) -> Instruction
    inst_vqmovun(dst: Register, src: Register) -> Instruction
    inst_vqmovun_d_q(dst: Register, src: Register) -> Instruction
    inst_vqmovunb(dst: Register, src: Register) -> Instruction
    inst_vqmovunb_q_q(dst: Register, src: Register) -> Instruction
    inst_vqmovunt(dst: Register, src: Register) -> Instruction
    inst_vqmovunt_q_q(dst: Register, src: Register) -> Instruction
    inst_vqneg(dst: Register, src: Register) -> Instruction
    inst_vqneg_q_q(dst: Register, src: Register) -> Instruction
    inst_vqrdmladh(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrdmladh_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrdmladhx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrdmladhx_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrdmlah 2 forms
    inst_vqrdmlah_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrdmlah_d_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vqrdmlsdh(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrdmlsdh_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrdmlsdhx(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrdmlsdhx_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrdmlsh 2 forms
    inst_vqrdmlsh_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrdmlsh_d_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vqrdmulh 2 forms
    inst_vqrdmulh_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrdmulh_d_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vqrshl(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrshl_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqrshrn(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqrshrn_d_q_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqrshrnb(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqrshrnb_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqrshrnt(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqrshrnt_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqrshrun(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqrshrun_d_q_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqrshrunb(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqrshrunb_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqrshrunt(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqrshrunt_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshl 2 forms
    inst_vqshl_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqshl_d_d_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshrn(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshrn_d_q_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshrnb(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshrnb_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshrnt(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshrnt_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshrun(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshrun_d_q_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshrunb(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshrunb_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshrunt(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqshrunt_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vqsub(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vqsub_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vrecpe(dst: Register, src: Register) -> Instruction
    inst_vrecpe_d_d(dst: Register, src: Register) -> Instruction
    inst_vrecps(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vrecps_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vrev16(dst: Register, src: Register) -> Instruction
    inst_vrev16_d_d(dst: Register, src: Register) -> Instruction
    inst_vrev32(dst: Register, src: Register) -> Instruction
    inst_vrev32_d_d(dst: Register, src: Register) -> Instruction
    inst_vrev64(dst: Register, src: Register) -> Instruction
    inst_vrev64_d_d(dst: Register, src: Register) -> Instruction
    inst_vrhadd(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vrhadd_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vrinta(dst: Register, src: Register) -> Instruction
    inst_vrinta_s_s(dst: Register, src: Register) -> Instruction
    inst_vrintm(dst: Register, src: Register) -> Instruction
    inst_vrintm_s_s(dst: Register, src: Register) -> Instruction
    inst_vrintn(dst: Register, src: Register) -> Instruction
    inst_vrintn_s_s(dst: Register, src: Register) -> Instruction
    inst_vrintp(dst: Register, src: Register) -> Instruction
    inst_vrintp_s_s(dst: Register, src: Register) -> Instruction
    inst_vrintr(dst: Register, src: Register) -> Instruction
    inst_vrintr_s_s(dst: Register, src: Register) -> Instruction
    inst_vrintx(dst: Register, src: Register) -> Instruction
    inst_vrintx_s_s(dst: Register, src: Register) -> Instruction
    inst_vrintz(dst: Register, src: Register) -> Instruction
    inst_vrintz_s_s(dst: Register, src: Register) -> Instruction
    inst_vrmlaldavh(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlaldavh_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlaldavha(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlaldavha_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlaldavhax(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlaldavhax_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlaldavhx(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlaldavhx_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlsldavh(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlsldavh_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlsldavha(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlsldavha_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlsldavhax(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlsldavhax_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlsldavhx(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrmlsldavhx_r_r_q_q(dst: Register, src: Register, src2: Register, src3: Register) -> Instruction
    inst_vrshl(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vrshl_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vrshr(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vrshr_d_d_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vrshrn(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vrshrn_d_q_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vrshrnb(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vrshrnb_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vrshrnt(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vrshrnt_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vrsqrte(dst: Register, src: Register) -> Instruction
    inst_vrsqrte_d_d(dst: Register, src: Register) -> Instruction
    inst_vrsqrts(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vrsqrts_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vrsra(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vrsra_d_d_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vsdot 2 forms
    inst_vsdot_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vsdot_d_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vsel(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vsel_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vshl(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vshl_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vshlc(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshlc_q_r_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshll(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshll_q_d_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshllb(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshllb_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshllt(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshllt_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshr(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshr_d_d_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshrn(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshrn_d_q_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshrnb(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshrnb_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshrnt(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vshrnt_q_q_imm5(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vsli(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vsli_d_d_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vsmmla(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vsmmla_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vsqrt(dst: Register, src: Register) -> Instruction
    inst_vsqrt_s_s(dst: Register, src: Register) -> Instruction
    inst_vsra(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vsra_d_d_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vsri(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vsri_d_d_imm(dst: Register, src: Register, imm: i64) -> Instruction
    inst_vst1 2 forms
    inst_vst1_dlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vst1_dlane_mem(dst: Register, lane: u8, src: Memory) -> Instruction
    inst_vst2(regs: u16, src: Memory) -> Instruction
    inst_vst20(regs: u16, src: Memory) -> Instruction
    inst_vst20_qlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vst21(regs: u16, src: Memory) -> Instruction
    inst_vst21_qlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vst2_dlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vst3(regs: u16, src: Memory) -> Instruction
    inst_vst3_dlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vst4(regs: u16, src: Memory) -> Instruction
    inst_vst40(regs: u16, src: Memory) -> Instruction
    inst_vst40_qlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vst41(regs: u16, src: Memory) -> Instruction
    inst_vst41_qlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vst42(regs: u16, src: Memory) -> Instruction
    inst_vst42_qlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vst43(regs: u16, src: Memory) -> Instruction
    inst_vst43_qlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vst4_dlist_mem(regs: u16, src: Memory) -> Instruction
    inst_vstmdb(dst: Register, regs: u16) -> Instruction
    inst_vstmdb_r_slist(dst: Register, regs: u16) -> Instruction
    inst_vstmia(dst: Register, regs: u16) -> Instruction
    inst_vstmia_r_slist(dst: Register, regs: u16) -> Instruction
    inst_vstr(dst: Register, src: Memory) -> Instruction
    inst_vstr_s_mem(dst: Register, src: Memory) -> Instruction
    inst_vstrb 2 forms
    inst_vstrb_q_mem(dst: Register, src: Memory) -> Instruction
    inst_vstrb_q_mem_q(dst: Register, src: Memory, src2: Register) -> Instruction
    inst_vstrd 2 forms
    inst_vstrd_q_mem(dst: Register, src: Memory) -> Instruction
    inst_vstrd_q_mem_q(dst: Register, src: Memory, src2: Register) -> Instruction
    inst_vstrh 2 forms
    inst_vstrh_q_mem(dst: Register, src: Memory) -> Instruction
    inst_vstrh_q_mem_q(dst: Register, src: Memory, src2: Register) -> Instruction
    inst_vstrw 2 forms
    inst_vstrw_q_mem(dst: Register, src: Memory) -> Instruction
    inst_vstrw_q_mem_q(dst: Register, src: Memory, src2: Register) -> Instruction
    inst_vsub(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vsub_s_s_s(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vsubl(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vsubl_q_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vsubw(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vsubw_q_q_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vsudot(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vsudot_q_q_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vswp(dst: Register, src: Register) -> Instruction
    inst_vswp_d_d(dst: Register, src: Register) -> Instruction
    inst_vtbl(dst: Register, regs: u16, src: Register) -> Instruction
    inst_vtbl_d_dlist_d(dst: Register, regs: u16, src: Register) -> Instruction
    inst_vtbx(dst: Register, regs: u16, src: Register) -> Instruction
    inst_vtbx_d_dlist_d(dst: Register, regs: u16, src: Register) -> Instruction
    inst_vtrn(dst: Register, src: Register) -> Instruction
    inst_vtrn_d_d(dst: Register, src: Register) -> Instruction
    inst_vtst(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vtst_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vudot 2 forms
    inst_vudot_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vudot_d_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vummla(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vummla_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vusdot 2 forms
    inst_vusdot_d_d_d(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vusdot_d_d_dlane(dst: Register, src: Register, src2: Register, lane: u8) -> Instruction
    inst_vusmmla(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vusmmla_q_q_q(dst: Register, src: Register, src2: Register) -> Instruction
    inst_vuzp(dst: Register, src: Register) -> Instruction
    inst_vuzp_d_d(dst: Register, src: Register) -> Instruction
    inst_vzip(dst: Register, src: Register) -> Instruction
    inst_vzip_d_d(dst: Register, src: Register) -> Instruction
    inst_wfe() -> Instruction
    inst_wfe_none() -> Instruction
    inst_wfi() -> Instruction
    inst_wfi_none() -> Instruction
    inst_wls(dst: Register, offset: i64) -> Instruction
    inst_wls_r_rel(dst: Register, offset: i64) -> Instruction
    inst_wlstp(dst: Register, offset: i64) -> Instruction
    inst_wlstp_r_rel(dst: Register, offset: i64) -> Instruction
    inst_yield() -> Instruction
    inst_yield_none() -> Instruction
    is_dpr(r: Register) -> bool
    is_fp_scalar(r: Register) -> bool
    is_gpr(r: Register) -> bool
    is_neon_or_vfp_opcode(bits: u32) -> bool
    is_qpr(r: Register) -> bool
    is_simd(r: Register) -> bool
    is_spr(r: Register) -> bool
    mem_imm(base: Register, disp: i32) -> Memory
    mem_imm_post(base: Register, disp: i32) -> Memory
    mem_imm_pre(base: Register, disp: i32) -> Memory
    mem_reg(base, index: Register, sign: i8 = 1) -> Memory
    mem_reg_shift(base, index: Register, st: Shift_Type, amt: u8, sign: i8 = 1) -> Memory
    mnemonic_to_stringproc(m: Mnemonic, lowercase: bool = true, allocator := context.temp_allocator) -> string
    op_dpr_lane(d: Register, idx: u8) -> Operand
    op_float_imm(bits: u32) -> Operand
    op_hex_imm(v: u32) -> Operand
    op_imm(v: i64, size: u8 = 4) -> Operand
    op_label(label_id: u32, size: u8 = 4) -> Operand
    op_mem(m: Memory) -> Operand
    op_qpr_lane(q: Register, idx: u8) -> Operand
    op_reg(r: Register) -> Operand
    op_reg_list(mask: u16) -> Operand
    op_reg_run(first: Register, count: u8, stride: u8 = 1, all_lanes: bool = false) -> Operand
    The head of a register list, written {d1, d2, d3} (stride 1) or {d2, d4} (stride 2).

    The head of a register list, written {d1, d2, d3} (stride 1) or {d2, d4} (stride 2).

    op_reg_shifted(r: Register, st: Shift_Type, amt: u8) -> Operand
    op_rel_offset(off: i64) -> Operand
    pack_neon_modimm_field(f: NEON_Imm_Form) -> u32
    Pack the NEON_Imm_Form into the bits the encoder ORs into the instruction word: bits 18:16 = abc (high 3), bits 3:0 = defgh (low 4)... wait, abcdefgh is 8 bits…

    Pack the NEON_Imm_Form into the bits the encoder ORs into the instruction word: bits 18:16 = abc (high 3), bits 3:0 = defgh (low 4)... wait, abcdefgh is 8 bits split a:bcdefgh: actually it's (a)(bcd)(efgh) — 3 + 4? no. Standard NEON layout puts a at bit 24, bc at bits 18:17, d at bit 16, efgh at bits 3:0. Per ARM ARM: bits 24, 18:16, 3:0 = abcdefgh

    printproc(instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil)
    printlnproc(instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil)
    reg_class(r: Register) -> u16
    ---- Helpers ----------------------------------------------------------------
    reg_hw(r: Register) -> u16
    register_nameproc(r: Register, lowercase: bool = true, allocator := context.temp_allocator) -> string
    rol32(v: u32, n: u32) -> u32
    ror32(v: u32, n: u32) -> u32
    sbprintproc(sb: ^strings.Builder, instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil)
    sbprintlnproc(sb: ^strings.Builder, instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil)
    tprintproc(instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil) -> string
    tprintlnproc(instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil) -> string
    wprintproc(w: io.Stream, instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil)
    wprintlnproc(w: io.Stream, instructions: []Instruction, inst_info: []Instruction_Info, label_defs: []rexcode_isa.Label_Definition, tokens: ^[dynamic]rexcode_isa.Token = nil, options: ^rexcode_isa.Print_Options = nil, label_names: ^map[rexcode_isa.Label_Offset]string = nil)

    Procedure Groups

    Listed with their procedures under Procedures.

    Source Files

    Generation Information

    Generated with odin version dev-2026-10 (vendor "odin") Windows_amd64 @ 2026-10-10 00:25:51.511820200 +0000 UTC