package core:rexcode/isa/rsp

⌘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

    Types

    CP0_Reg ¶

    CP0_Reg :: enum u8 {
    	SP_MEM_ADDR  = 0,  // DMEM/IMEM offset for DMA
    	SP_DRAM_ADDR = 1,  // RDRAM address for DMA
    	SP_RD_LEN    = 2,  // DMA read length
    	SP_WR_LEN    = 3,  // DMA write length
    	SP_STATUS    = 4,  // RSP status (halt/broke/busy)
    	SP_DMA_FULL  = 5, 
    	SP_DMA_BUSY  = 6, 
    	SP_SEMAPHORE = 7, 
    	DP_START     = 8,  // RDP command buffer start
    	DP_END       = 9, 
    	DP_CURRENT   = 10, 
    	DP_STATUS    = 11, 
    	DP_CLOCK     = 12, 
    	DP_BUFBUSY   = 13, 
    	DP_PIPEBUSY  = 14, 
    	DP_TMEM      = 15, 
    }

    Decode_Entry ¶

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

    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:      [4]Operand_Type,
    	// 4
    	enc:      [4]Operand_Encoding,
    	// 4
    	bits:     u32,
    	// 4
    	mask:     u32,
    	// 4
    	feature:  Feature,
    	// 1
    	flags:    Encoding_Flags,
    }

    Encoding_Flags ¶

    Encoding_Flags :: distinct bit_field u8 {
    	delay_slot: bool | 1,
    	likely:     bool | 1,
    	_:          u8 | 6,
    }

    Endianness ¶

    Endianness :: enum u8 {
    	LITTLE = 0, 
    	BIG    = 1, 
    }
     

    N64 is big-endian; carry the same Endianness enum as mips/ for uniformity even though only BIG is "wire-correct" for RSP IMEM in most toolchains.

    Related Procedures With Parameters

    Feature ¶

    Feature :: enum u8 {
    	RSP_SCALAR, // scalar MIPS subset on the RSP core
    	RSP_VU,     // RSP vector unit (COP2 with CO=1)
    	RSP_VLS,    // RSP vector load/store (op=0x32/0x3A)
    }

    GPR ¶

    GPR :: enum u8 {
    	ZERO = 0, 
    	AT   = 1, 
    	V0   = 2, 
    	V1   = 3, 
    	A0   = 4, 
    	A1   = 5, 
    	A2   = 6, 
    	A3   = 7, 
    	T0   = 8, 
    	T1   = 9, 
    	T2   = 10, 
    	T3   = 11, 
    	T4   = 12, 
    	T5   = 13, 
    	T6   = 14, 
    	T7   = 15, 
    	S0   = 16, 
    	S1   = 17, 
    	S2   = 18, 
    	S3   = 19, 
    	S4   = 20, 
    	S5   = 21, 
    	S6   = 22, 
    	S7   = 23, 
    	T8   = 24, 
    	T9   = 25, 
    	K0   = 26, 
    	K1   = 27, 
    	GP   = 28, 
    	SP   = 29, 
    	FP   = 30, 
    	RA   = 31, 
    }

    Instruction ¶

    Instruction :: struct #packed {
    	ops:           [4]Operand `fmt:"v,operand_count"`,
    	// 48 bytes
    	mnemonic:      Mnemonic,
    	//  2 bytes
    	operand_count: u8,
    	//  1 byte
    	flags:         Instruction_Flags,
    	//  1 byte
    	length:        u8,
    	//  1 byte (always 4)
    	_:             [11]u8,
    }

    Instruction_Flags ¶

    Instruction_Flags :: distinct bit_field u8 {
    	_: u8 | 8,
    }

    Instruction_Info ¶

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

    Mnemonic ¶

    Mnemonic :: enum u16 {
    	INVALID = 0, 
    	// R-type arithmetic / logical / shift
    	ADD, 
    	ADDU, 
    	SUB, 
    	SUBU, 
    	AND, 
    	OR, 
    	XOR, 
    	NOR, 
    	SLT, 
    	SLTU, 
    	SLL, 
    	SRL, 
    	SRA, 
    	SLLV, 
    	SRLV, 
    	SRAV, 
    	// I-type
    	ADDI, 
    	ADDIU, 
    	SLTI, 
    	SLTIU, 
    	ANDI, 
    	ORI, 
    	XORI, 
    	LUI, 
    	// Branches (with delay slot)
    	BEQ, 
    	BNE, 
    	BLEZ, 
    	BGTZ, 
    	BLTZ, 
    	BGEZ, 
    	BLTZAL, 
    	BGEZAL, 
    	// Jumps
    	J, 
    	JAL, 
    	JR, 
    	JALR, 
    	// Load / Store (no LWL/LWR/SWL/SWR on the RSP).
    	LB, 
    	LH, 
    	LW, 
    	LBU, 
    	LHU, 
    	SB, 
    	SH, 
    	SW, 
    	// System
    	BREAK, 
    	NOP, 
    	// Coprocessor moves
    	MFC0, 
    	MTC0, 
    	MFC2, 
    	MTC2, 
    	CFC2, 
    	CTC2, 
    	VMULF, 
    	VMULU, 
    	VMUDL, 
    	VMUDM, 
    	VMUDN, 
    	VMUDH, 
    	VMACF, 
    	VMACU, 
    	VMADL, 
    	VMADM, 
    	VMADN, 
    	VMADH, 
    	VADD, 
    	VSUB, 
    	VABS, 
    	VADDC, 
    	VSUBC, 
    	VSAR, 
    	VLT, 
    	VEQ, 
    	VNE, 
    	VGE, 
    	VCL, 
    	VCH, 
    	VCR, 
    	VMRG, 
    	VAND, 
    	VNAND, 
    	VOR, 
    	VNOR, 
    	VXOR, 
    	VNXOR, 
    	VRCP, 
    	VRCPL, 
    	VRCPH, 
    	VMOV, 
    	VRSQ, 
    	VRSQL, 
    	VRSQH, 
    	VNOP, 
    	LBV, 
    	LSV, 
    	LLV, 
    	LDV, 
    	LQV, 
    	LRV, 
    	LPV, 
    	LUV, 
    	LHV, 
    	LFV, 
    	LWV, 
    	LTV, 
    	SBV, 
    	SSV, 
    	SLV, 
    	SDV, 
    	SQV, 
    	SRV, 
    	SPV, 
    	SUV, 
    	SHV, 
    	SFV, 
    	SWV, 
    	STV, 
    }

    Related Procedures With Parameters

    Operand ¶

    Operand :: struct #packed {
    	using _: struct #raw_union {
    		reg:       Register,
    		// for REGISTER and VECTOR_REG
    		mem:       Memory,
    		vmem:      Vector_Mem,
    		immediate: i64,
    		relative:  i64,
    	},
    	kind:    Operand_Kind,
    	// 1 byte
    	size:    u8,
    	// 1 byte
    	element: u8,
    	// 1 byte — for VECTOR_REG
    	_:       [1]u8,
    }

    Related Procedures With Returns

    Operand_Encoding ¶

    Operand_Encoding :: enum u8 {
    	NONE, 
    	RS,          // bits 25-21
    	RT,          // bits 20-16
    	RD,          // bits 15-11
    	SHAMT,       // bits 10-6
    	IMM_16,      // bits 15-0
    	IMM_5,       // bits 10-6
    	IMM_20,      // bits 25-6
    	IMM_26,      // bits 25-0
    	OFFSET_BASE, // scalar memory (rs + 16-bit offset)
    	BRANCH_16, 
    	IMPL, 
    	// Vector-unit placements
    	VT,          // bits 20-16 (vector source 2)
    	VS,          // bits 15-11 (vector source 1)
    	VD,          // bits 10-6  (vector destination)
    	ELEM,        // bits 24-21 (element selector for vector ALU)
    	// Vector L/S placements
    	VT_LS,       // bits 20-16 (target vector reg)
    	VOP,         // bits 15-11 (vector L/S op selector LBV..LTV)
    	VELEM_LS,    // bits 10-7  (element offset for L/S)
    	VOFFSET,     // bits  6-0  (signed 7-bit offset, element-scaled)
    	VBASE,       // bits 25-21 (GPR base for vector L/S)
    }

    Operand_Kind ¶

    Operand_Kind :: enum u8 {
    	NONE, 
    	REGISTER, 
    	VECTOR_REG, // vector register with element selector
    	MEMORY, 
    	VECTOR_MEM, // vector memory: base + 7-bit offset + element selector
    	IMMEDIATE, 
    	RELATIVE, 
    }

    Operand_Type ¶

    Operand_Type :: enum u8 {
    	NONE, 
    	GPR,      // scalar GPR
    	VR,       // vector register $v0..$v31
    	VR_ELEM,  // vector register with element selector (e.g. $v3[4])
    	CP0_REG,  // RSP CP0 (DMA/status registers)
    	CP2_CTRL, // VCO / VCC / VCE
    	IMM5, 
    	IMM16S, 
    	IMM16U, 
    	IMM20, 
    	IMM26, 
    	REL16, 
    	REL_J26, 
    	MEM,      // scalar memory (base+disp16)
    	VMEM,     // vector memory (base+offset7 with element)
    }

    Register ¶

    Register :: distinct u16

    Related Procedures With Returns

    Related Constants

    Relocation ¶

    Relocation :: struct #packed {
    	offset:   u32,
    	label_id: u32,
    	addend:   i32,
    	type:     Relocation_Type,
    	size:     u8,
    	inst_idx: u16,
    }

    Relocation_Type ¶

    Relocation_Type :: enum u8 {
    	NONE  = 0, 
    	REL16,     // 16-bit signed PC-rel branch (BEQ/BNE/BLEZ/BGTZ/...)
    	J26,       // 26-bit J-type region target ((target_addr >> 2) & 0x3FFFFFF)
    }

    VR ¶

    VR :: enum u8 {
    	V0  = 0, 
    	V1  = 1, 
    	V2  = 2, 
    	V3  = 3, 
    	V4  = 4, 
    	V5  = 5, 
    	V6  = 6, 
    	V7  = 7, 
    	V8  = 8, 
    	V9  = 9, 
    	V10 = 10, 
    	V11 = 11, 
    	V12 = 12, 
    	V13 = 13, 
    	V14 = 14, 
    	V15 = 15, 
    	V16 = 16, 
    	V17 = 17, 
    	V18 = 18, 
    	V19 = 19, 
    	V20 = 20, 
    	V21 = 21, 
    	V22 = 22, 
    	V23 = 23, 
    	V24 = 24, 
    	V25 = 25, 
    	V26 = 26, 
    	V27 = 27, 
    	V28 = 28, 
    	V29 = 29, 
    	V30 = 30, 
    	V31 = 31, 
    }

    Constants

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

    A0:: Register(REG_GPR | 4)
    A1:: Register(REG_GPR | 5)
    A2:: Register(REG_GPR | 6)
    A3:: Register(REG_GPR | 7)
    AT:: Register(REG_GPR | 1)
    DEFAULT_PRINT_OPTIONS: rexcode_isa.Print_Options : isa.DEFAULT_PRINT_OPTIONS
    FP:: Register(REG_GPR | 30)
    GP:: Register(REG_GPR | 28)
    K0:: Register(REG_GPR | 26)
    K1:: Register(REG_GPR | 27)
    LABEL_UNDEFINED: rexcode_isa.Label_Definition : isa.LABEL_UNDEFINED
    MASK_… 8
    MASK_FUNCT:: u32(0x0000003F)
    MASK_OPCODE:: u32(0xFC000000)
    MASK_RD:: u32(0x0000F800)
    MASK_RS:: u32(0x03E00000)
    MASK_RT:: u32(0x001F0000)
    MASK_SHAMT:: u32(0x000007C0)
    MASK_VELEM:: u32(0x01E00000)
    vector ALU element field (bits 24-21)
    MASK_VOFFS7:: u32(0x0000007F)
    vector L/S offset (bits 6-0)
    MAX_INST_SIZE:: 4
    NONE:: Register(0xFFFF)
    RA:: Register(REG_GPR | 31)
    REG_… 5
    REG_CP0:: 0x0400
    RSP CP0 (DMA control etc.)
    REG_GPR:: 0x0100
    REG_NONE:: 0x0000
    REG_VC:: 0x0300
    VCO/VCC/VCE
    REG_VR:: 0x0200
    vector $v0..$v31
    S0:: Register(REG_GPR | 16)
    S1:: Register(REG_GPR | 17)
    S2:: Register(REG_GPR | 18)
    S3:: Register(REG_GPR | 19)
    S4:: Register(REG_GPR | 20)
    S5:: Register(REG_GPR | 21)
    S6:: Register(REG_GPR | 22)
    S7:: Register(REG_GPR | 23)
    SP:: Register(REG_GPR | 29)
    T0:: Register(REG_GPR | 8)
    T1:: Register(REG_GPR | 9)
    T2:: Register(REG_GPR | 10)
    T3:: Register(REG_GPR | 11)
    T4:: Register(REG_GPR | 12)
    T5:: Register(REG_GPR | 13)
    T6:: Register(REG_GPR | 14)
    T7:: Register(REG_GPR | 15)
    T8:: Register(REG_GPR | 24)
    T9:: Register(REG_GPR | 25)
    V0:: Register(REG_GPR | 2)
    V1:: Register(REG_GPR | 3)
    VCC:: Register(REG_VC | 1)
    compare results
    VCE:: Register(REG_VC | 2)
    VCH/VCR low-byte carry
    VCO:: Register(REG_VC | 0)
    carry/overflow from vector add/sub
    VR0:: Register(REG_VR | 0)
    VR1:: Register(REG_VR | 1)
    VR10:: Register(REG_VR | 10)
    VR11:: Register(REG_VR | 11)
    VR12:: Register(REG_VR | 12)
    VR13:: Register(REG_VR | 13)
    VR14:: Register(REG_VR | 14)
    VR15:: Register(REG_VR | 15)
    VR16:: Register(REG_VR | 16)
    VR17:: Register(REG_VR | 17)
    VR18:: Register(REG_VR | 18)
    VR19:: Register(REG_VR | 19)
    VR2:: Register(REG_VR | 2)
    VR20:: Register(REG_VR | 20)
    VR21:: Register(REG_VR | 21)
    VR22:: Register(REG_VR | 22)
    VR23:: Register(REG_VR | 23)
    VR24:: Register(REG_VR | 24)
    VR25:: Register(REG_VR | 25)
    VR26:: Register(REG_VR | 26)
    VR27:: Register(REG_VR | 27)
    VR28:: Register(REG_VR | 28)
    VR29:: Register(REG_VR | 29)
    VR3:: Register(REG_VR | 3)
    VR30:: Register(REG_VR | 30)
    VR31:: Register(REG_VR | 31)
    VR4:: Register(REG_VR | 4)
    VR5:: Register(REG_VR | 5)
    VR6:: Register(REG_VR | 6)
    VR7:: Register(REG_VR | 7)
    VR8:: Register(REG_VR | 8)
    VR9:: Register(REG_VR | 9)
    ZERO:: Register(REG_GPR | 0)

    Variables

    DECODE_ENTRIES ¶

    @(rodata)
    DECODE_ENTRIES: []Decode_Entry = …

    DECODE_INDEX_COP2 ¶

    @(rodata)
    DECODE_INDEX_COP2: []Decode_Index = …

    DECODE_INDEX_LWC2 ¶

    @(rodata)
    DECODE_INDEX_LWC2: []Decode_Index = …

    DECODE_INDEX_PRIMARY ¶

    @(rodata)
    DECODE_INDEX_PRIMARY: []Decode_Index = …

    DECODE_INDEX_REGIMM ¶

    @(rodata)
    DECODE_INDEX_REGIMM: []Decode_Index = …

    DECODE_INDEX_SPECIAL ¶

    @(rodata)
    DECODE_INDEX_SPECIAL: []Decode_Index = …

    DECODE_INDEX_SWC2 ¶

    @(rodata)
    DECODE_INDEX_SWC2: []Decode_Index = …

    ENCODE_FORMS ¶

    @(rodata)
    ENCODE_FORMS: []Encoding = …

    ENCODE_RUNS ¶

    @(rodata)
    ENCODE_RUNS: []Encode_Run = …

    Procedures

    One row per procedure; each is a proc "contextless" unless it says otherwise.

    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, endianness: Endianness = .BIG) -> (byte_count: u32, ok: bool)
    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 (RSP instructions are 4 bytes).

    Instruction-count ceiling for data (RSP instructions are 4 bytes).

    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).

    emit_addproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_add_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_addiproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_addi_gpr_gpr_imm16proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_addiuproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_addiu_gpr_gpr_imm16proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_adduproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_addu_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_andproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_and_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_andiproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_andi_gpr_gpr_imm16proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_beqproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, label_id: u32)
    emit_beq_gpr_gpr_relproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, label_id: u32)
    emit_bgezproc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32)
    emit_bgez_gpr_relproc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32)
    emit_bgezalproc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32)
    emit_bgezal_gpr_relproc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32)
    emit_bgtzproc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32)
    emit_bgtz_gpr_relproc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32)
    emit_blezproc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32)
    emit_blez_gpr_relproc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32)
    emit_bltzproc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32)
    emit_bltz_gpr_relproc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32)
    emit_bltzalproc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32)
    emit_bltzal_gpr_relproc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32)
    emit_bneproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, label_id: u32)
    emit_bne_gpr_gpr_relproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, label_id: u32)
    emit_breakproc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_break_imm20proc(instructions: ^[dynamic]Instruction, imm: i64)
    emit_cfc2proc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_cfc2_gpr_cp2proc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_ctc2proc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_ctc2_gpr_cp2proc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_jproc(instructions: ^[dynamic]Instruction, label_id: u32)
    emit_j_relproc(instructions: ^[dynamic]Instruction, label_id: u32)
    emit_jalproc(instructions: ^[dynamic]Instruction, label_id: u32)
    emit_jal_relproc(instructions: ^[dynamic]Instruction, label_id: u32)
    emit_jalrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_jalr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_jrproc(instructions: ^[dynamic]Instruction, a: Register)
    emit_jr_gprproc(instructions: ^[dynamic]Instruction, a: Register)
    emit_lbproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_lb_gpr_memproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_lbuproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_lbu_gpr_memproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_lbvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lbv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_ldvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_ldv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lfvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lfv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lhproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_lh_gpr_memproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_lhuproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_lhu_gpr_memproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_lhvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lhv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_llvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_llv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lpvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lpv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lqvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lqv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lrvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lrv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lsvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lsv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_ltvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_ltv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_luiproc(instructions: ^[dynamic]Instruction, a: Register, imm: i64)
    emit_lui_gpr_imm16proc(instructions: ^[dynamic]Instruction, a: Register, imm: i64)
    emit_luvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_luv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lwproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_lw_gpr_memproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_lwvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_lwv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_mfc0proc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_mfc0_gpr_cp0proc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_mfc2proc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_mfc2_gpr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_mtc0proc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_mtc0_gpr_cp0proc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_mtc2proc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_mtc2_gpr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register)
    emit_nopproc(instructions: ^[dynamic]Instruction)
    emit_nop_noneproc(instructions: ^[dynamic]Instruction)
    emit_norproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_nor_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_orproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_or_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_oriproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_ori_gpr_gpr_imm16proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_sbproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_sb_gpr_memproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_sbvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_sbv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_sdvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_sdv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_sfvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_sfv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_shproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_sh_gpr_memproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_shvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_shv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_sllproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_sll_gpr_gpr_imm5proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_sllvproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_sllv_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_sltproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_slt_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_sltiproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_slti_gpr_gpr_imm16proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_sltiuproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_sltiu_gpr_gpr_imm16proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_sltuproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_sltu_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_slvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_slv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_spvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_spv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_sqvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_sqv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_sraproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_sra_gpr_gpr_imm5proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_sravproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_srav_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_srlproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_srl_gpr_gpr_imm5proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_srlvproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_srlv_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_srvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_srv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_ssvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_ssv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_stvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_stv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_subproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_sub_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_subuproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_subu_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_suvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_suv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_swproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_sw_gpr_memproc(instructions: ^[dynamic]Instruction, a: Register, m: Memory)
    emit_swvproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_swv_vr_vmemproc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem)
    emit_vabsproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vabs_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vaddproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vadd_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vaddcproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vaddc_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vandproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vand_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vchproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vch_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vclproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vcl_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vcrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vcr_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_veqproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_veq_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vgeproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vge_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vltproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vlt_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmacfproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmacf_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmacuproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmacu_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmadhproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmadh_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmadlproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmadl_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmadmproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmadm_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmadnproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmadn_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmovproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, element: u8 = 0)
    emit_vmov_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, element: u8 = 0)
    emit_vmrgproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmrg_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmudhproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmudh_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmudlproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmudl_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmudmproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmudm_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmudnproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmudn_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmulfproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmulf_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmuluproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vmulu_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vnandproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vnand_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vneproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vne_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vnopproc(instructions: ^[dynamic]Instruction)
    emit_vnop_noneproc(instructions: ^[dynamic]Instruction)
    emit_vnorproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vnor_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vnxorproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vnxor_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vorproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vor_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vrcpproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vrcp_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vrcphproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vrcph_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vrcplproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vrcpl_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vrsqproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vrsq_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vrsqhproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vrsqh_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vrsqlproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vrsql_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vsarproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vsar_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vsubproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vsub_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vsubcproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vsubc_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vxorproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_vxor_vr_vr_vrproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0)
    emit_xorproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_xor_gpr_gpr_gprproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register)
    emit_xoriproc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    emit_xori_gpr_gpr_imm16proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64)
    encodeproc(instructions: []Instruction, label_defs: []rexcode_isa.Label_Definition, code: []u8, relocs: ^[dynamic]Relocation, errors: ^[dynamic]rexcode_isa.Error, endianness: Endianness = .BIG, resolve: bool = true, base_address: u64 = 0) -> (byte_count: u32, ok: bool)
    encode_max_code_size(instructions: []Instruction) -> int
    encode_max_relocation_count(instructions: []Instruction) -> int
    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.

    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)
    gpr_from_num(num: u8) -> Register
    inst_add(a: Register, b: Register, c: Register) -> Instruction
    inst_add_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_addi(a: Register, b: Register, imm: i64) -> Instruction
    inst_addi_gpr_gpr_imm16(a: Register, b: Register, imm: i64) -> Instruction
    inst_addiu(a: Register, b: Register, imm: i64) -> Instruction
    inst_addiu_gpr_gpr_imm16(a: Register, b: Register, imm: i64) -> Instruction
    inst_addu(a: Register, b: Register, c: Register) -> Instruction
    inst_addu_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_and(a: Register, b: Register, c: Register) -> Instruction
    inst_and_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_andi(a: Register, b: Register, imm: i64) -> Instruction
    inst_andi_gpr_gpr_imm16(a: Register, b: Register, imm: i64) -> Instruction
    inst_beq(a: Register, b: Register, label_id: u32) -> Instruction
    inst_beq_gpr_gpr_rel(a: Register, b: Register, label_id: u32) -> Instruction
    inst_bgez(a: Register, label_id: u32) -> Instruction
    inst_bgez_gpr_rel(a: Register, label_id: u32) -> Instruction
    inst_bgezal(a: Register, label_id: u32) -> Instruction
    inst_bgezal_gpr_rel(a: Register, label_id: u32) -> Instruction
    inst_bgtz(a: Register, label_id: u32) -> Instruction
    inst_bgtz_gpr_rel(a: Register, label_id: u32) -> Instruction
    inst_blez(a: Register, label_id: u32) -> Instruction
    inst_blez_gpr_rel(a: Register, label_id: u32) -> Instruction
    inst_bltz(a: Register, label_id: u32) -> Instruction
    inst_bltz_gpr_rel(a: Register, label_id: u32) -> Instruction
    inst_bltzal(a: Register, label_id: u32) -> Instruction
    inst_bltzal_gpr_rel(a: Register, label_id: u32) -> Instruction
    inst_bne(a: Register, b: Register, label_id: u32) -> Instruction
    inst_bne_gpr_gpr_rel(a: Register, b: Register, label_id: u32) -> Instruction
    inst_branch1(m: Mnemonic, rs: Register, label_id: u32) -> Instruction
    Branch helpers
    inst_branch2(m: Mnemonic, rs, rt: Register, label_id: u32) -> Instruction
    inst_break(imm: i64) -> Instruction
    inst_break_imm20(imm: i64) -> Instruction
    inst_cfc2(a: Register, b: Register) -> Instruction
    inst_cfc2_gpr_cp2(a: Register, b: Register) -> Instruction
    inst_ctc2(a: Register, b: Register) -> Instruction
    inst_ctc2_gpr_cp2(a: Register, b: Register) -> Instruction
    inst_j(label_id: u32) -> Instruction
    inst_j_rel(label_id: u32) -> Instruction
    inst_jal(label_id: u32) -> Instruction
    inst_jal_rel(label_id: u32) -> Instruction
    inst_jalr(a: Register, b: Register) -> Instruction
    inst_jalr_gpr_gpr(a: Register, b: Register) -> Instruction
    inst_jr(a: Register) -> Instruction
    inst_jr_gpr(a: Register) -> Instruction
    inst_jump(m: Mnemonic, label_id: u32) -> Instruction
    inst_lb(a: Register, m: Memory) -> Instruction
    inst_lb_gpr_mem(a: Register, m: Memory) -> Instruction
    inst_lbu(a: Register, m: Memory) -> Instruction
    inst_lbu_gpr_mem(a: Register, m: Memory) -> Instruction
    inst_lbv(a: Register, m: Vector_Mem) -> Instruction
    inst_lbv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_ldv(a: Register, m: Vector_Mem) -> Instruction
    inst_ldv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_lfv(a: Register, m: Vector_Mem) -> Instruction
    inst_lfv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_lh(a: Register, m: Memory) -> Instruction
    inst_lh_gpr_mem(a: Register, m: Memory) -> Instruction
    inst_lhu(a: Register, m: Memory) -> Instruction
    inst_lhu_gpr_mem(a: Register, m: Memory) -> Instruction
    inst_lhv(a: Register, m: Vector_Mem) -> Instruction
    inst_lhv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_llv(a: Register, m: Vector_Mem) -> Instruction
    inst_llv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_lpv(a: Register, m: Vector_Mem) -> Instruction
    inst_lpv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_lqv(a: Register, m: Vector_Mem) -> Instruction
    inst_lqv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_lrv(a: Register, m: Vector_Mem) -> Instruction
    inst_lrv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_lsv(a: Register, m: Vector_Mem) -> Instruction
    inst_lsv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_ltv(a: Register, m: Vector_Mem) -> Instruction
    inst_ltv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_lui(a: Register, imm: i64) -> Instruction
    inst_lui_gpr_imm16(a: Register, imm: i64) -> Instruction
    inst_luv(a: Register, m: Vector_Mem) -> Instruction
    inst_luv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_lw(a: Register, m: Memory) -> Instruction
    inst_lw_gpr_mem(a: Register, m: Memory) -> Instruction
    inst_lwv(a: Register, m: Vector_Mem) -> Instruction
    inst_lwv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_mfc0(a: Register, b: Register) -> Instruction
    inst_mfc0_gpr_cp0(a: Register, b: Register) -> Instruction
    inst_mfc2(a: Register, b: Register) -> Instruction
    inst_mfc2_gpr_vr(a: Register, b: Register) -> Instruction
    inst_mtc0(a: Register, b: Register) -> Instruction
    inst_mtc0_gpr_cp0(a: Register, b: Register) -> Instruction
    inst_mtc2(a: Register, b: Register) -> Instruction
    inst_mtc2_gpr_vr(a: Register, b: Register) -> Instruction
    inst_none(m: Mnemonic) -> Instruction
    inst_nop() -> Instruction
    inst_nop_none() -> Instruction
    inst_nor(a: Register, b: Register, c: Register) -> Instruction
    inst_nor_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_or(a: Register, b: Register, c: Register) -> Instruction
    inst_or_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_ori(a: Register, b: Register, imm: i64) -> Instruction
    inst_ori_gpr_gpr_imm16(a: Register, b: Register, imm: i64) -> Instruction
    inst_r(m: Mnemonic, a: Register) -> Instruction
    inst_r_i(m: Mnemonic, rt: Register, imm: i64) -> Instruction
    inst_r_m(m: Mnemonic, r: Register, mm: Memory, size: u8 = 4) -> Instruction
    inst_r_r(m: Mnemonic, d, s: Register) -> Instruction
    inst_r_r_i(m: Mnemonic, rt, rs: Register, imm: i64) -> Instruction
    inst_r_r_r(m: Mnemonic, d, s1, s2: Register) -> Instruction
    inst_sb(a: Register, m: Memory) -> Instruction
    inst_sb_gpr_mem(a: Register, m: Memory) -> Instruction
    inst_sbv(a: Register, m: Vector_Mem) -> Instruction
    inst_sbv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_sdv(a: Register, m: Vector_Mem) -> Instruction
    inst_sdv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_sfv(a: Register, m: Vector_Mem) -> Instruction
    inst_sfv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_sh(a: Register, m: Memory) -> Instruction
    inst_sh_gpr_mem(a: Register, m: Memory) -> Instruction
    inst_shv(a: Register, m: Vector_Mem) -> Instruction
    inst_shv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_sll(a: Register, b: Register, imm: i64) -> Instruction
    inst_sll_gpr_gpr_imm5(a: Register, b: Register, imm: i64) -> Instruction
    inst_sllv(a: Register, b: Register, c: Register) -> Instruction
    inst_sllv_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_slt(a: Register, b: Register, c: Register) -> Instruction
    inst_slt_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_slti(a: Register, b: Register, imm: i64) -> Instruction
    inst_slti_gpr_gpr_imm16(a: Register, b: Register, imm: i64) -> Instruction
    inst_sltiu(a: Register, b: Register, imm: i64) -> Instruction
    inst_sltiu_gpr_gpr_imm16(a: Register, b: Register, imm: i64) -> Instruction
    inst_sltu(a: Register, b: Register, c: Register) -> Instruction
    inst_sltu_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_slv(a: Register, m: Vector_Mem) -> Instruction
    inst_slv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_spv(a: Register, m: Vector_Mem) -> Instruction
    inst_spv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_sqv(a: Register, m: Vector_Mem) -> Instruction
    inst_sqv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_sra(a: Register, b: Register, imm: i64) -> Instruction
    inst_sra_gpr_gpr_imm5(a: Register, b: Register, imm: i64) -> Instruction
    inst_srav(a: Register, b: Register, c: Register) -> Instruction
    inst_srav_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_srl(a: Register, b: Register, imm: i64) -> Instruction
    inst_srl_gpr_gpr_imm5(a: Register, b: Register, imm: i64) -> Instruction
    inst_srlv(a: Register, b: Register, c: Register) -> Instruction
    inst_srlv_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_srv(a: Register, m: Vector_Mem) -> Instruction
    inst_srv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_ssv(a: Register, m: Vector_Mem) -> Instruction
    inst_ssv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_stv(a: Register, m: Vector_Mem) -> Instruction
    inst_stv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_sub(a: Register, b: Register, c: Register) -> Instruction
    inst_sub_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_subu(a: Register, b: Register, c: Register) -> Instruction
    inst_subu_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_suv(a: Register, m: Vector_Mem) -> Instruction
    inst_suv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_sw(a: Register, m: Memory) -> Instruction
    inst_sw_gpr_mem(a: Register, m: Memory) -> Instruction
    inst_swv(a: Register, m: Vector_Mem) -> Instruction
    inst_swv_vr_vmem(a: Register, m: Vector_Mem) -> Instruction
    inst_v_v_v(m: Mnemonic, vd, vs, vt: Register, vt_element: u8 = 0) -> Instruction
    Vector ALU: 3-operand vector op with optional element selector on vt.
    inst_v_vmem(m: Mnemonic, vt: Register, vmem_op: Vector_Mem) -> Instruction
    Vector load/store: $vt[element], offset(base).
    inst_vabs(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vabs_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vadd(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vadd_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vaddc(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vaddc_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vand(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vand_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vch(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vch_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vcl(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vcl_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vcr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vcr_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_veq(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_veq_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vge(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vge_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vlt(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vlt_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmacf(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmacf_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmacu(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmacu_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmadh(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmadh_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmadl(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmadl_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmadm(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmadm_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmadn(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmadn_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmov(a: Register, b: Register, element: u8 = 0) -> Instruction
    inst_vmov_vr_vr(a: Register, b: Register, element: u8 = 0) -> Instruction
    inst_vmrg(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmrg_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmudh(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmudh_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmudl(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmudl_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmudm(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmudm_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmudn(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmudn_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmulf(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmulf_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmulu(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vmulu_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vnand(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vnand_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vne(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vne_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vnop() -> Instruction
    inst_vnop_none() -> Instruction
    inst_vnor(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vnor_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vnxor(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vnxor_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vor(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vor_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vrcp(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vrcp_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vrcph(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vrcph_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vrcpl(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vrcpl_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vrsq(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vrsq_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vrsqh(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vrsqh_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vrsql(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vrsql_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vsar(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vsar_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vsub(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vsub_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vsubc(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vsubc_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vxor(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_vxor_vr_vr_vr(a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction
    inst_xor(a: Register, b: Register, c: Register) -> Instruction
    inst_xor_gpr_gpr_gpr(a: Register, b: Register, c: Register) -> Instruction
    inst_xori(a: Register, b: Register, imm: i64) -> Instruction
    inst_xori_gpr_gpr_imm16(a: Register, b: Register, imm: i64) -> Instruction
    mem(base: Register, disp: i32) -> Memory
    mnemonic_to_stringproc(m: Mnemonic, lowercase: bool = true, allocator := context.temp_allocator) -> string
    op_imm(v: i64, size: u8) -> Operand
    op_label(label_id: u32) -> Operand
    op_mem(m: Memory, size: u8) -> Operand
    op_reg(r: Register) -> Operand
    op_vmem(m: Vector_Mem, size: u8) -> Operand
    op_vr(r: Register, element: u8 = 0) -> Operand
    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)
    read_u32(code: []u8, offset: u32, endianness: Endianness) -> u32
    reg_class(r: Register) -> u16
    reg_hw(r: Register) -> u8
    register_nameproc(r: Register, lowercase: bool = true, allocator := context.temp_allocator) -> string
    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
    vmem(base: Register, element: u8, offset: i32) -> Vector_Mem
    vr_from_num(num: u8) -> Register
    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)
    write_u32(code: []u8, offset: u32, word: u32, endianness: Endianness)

    Procedure Groups

    This section is empty.

    Source Files

    Generation Information

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