package core:rexcode/isa/rsp
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
Index
Types (31)
- CP0_Reg
- Decode_Entry
- Decode_Index
- Encode_Run
- Encoding
- Encoding_Flags
- Endianness
- Error
- Error_Code
- Feature
- GPR
- Instruction
- Instruction_Flags
- Instruction_Info
- Label_Definition
- Label_Map
- Memory
- Mnemonic
- Operand
- Operand_Encoding
- Operand_Kind
- Operand_Type
- Print_Options
- Print_Result
- Register
- Relocation
- Relocation_Type
- Token
- Token_Kind
- VR
- Vector_Mem
Constants (84)
- A0
- A1
- A2
- A3
- AT
- DEFAULT_PRINT_OPTIONS
- FP
- GP
- K0
- K1
- LABEL_UNDEFINED
- MASK_FUNCT
- MASK_OPCODE
- MASK_RD
- MASK_RS
- MASK_RT
- MASK_SHAMT
- MASK_VELEM
- MASK_VOFFS7
- MAX_INST_SIZE
- NONE
- RA
- REG_CP0
- REG_GPR
- REG_NONE
- REG_VC
- REG_VR
- S0
- S1
- S2
- S3
- S4
- S5
- S6
- S7
- SP
- T0
- T1
- T2
- T3
- T4
- T5
- T6
- T7
- T8
- T9
- V0
- V1
- VCC
- VCE
- VCO
- VR0
- VR1
- VR10
- VR11
- VR12
- VR13
- VR14
- VR15
- VR16
- VR17
- VR18
- VR19
- VR2
- VR20
- VR21
- VR22
- VR23
- VR24
- VR25
- VR26
- VR27
- VR28
- VR29
- VR3
- VR30
- VR31
- VR4
- VR5
- VR6
- VR7
- VR8
- VR9
- ZERO
Procedures (514)
- aprint
- aprintln
- bprint
- bprintln
- decode
- decode_estimate_instruction_count
- decode_max_instruction_count
- decode_reserve
- emit_add
- emit_add_gpr_gpr_gpr
- emit_addi
- emit_addi_gpr_gpr_imm16
- emit_addiu
- emit_addiu_gpr_gpr_imm16
- emit_addu
- emit_addu_gpr_gpr_gpr
- emit_and
- emit_and_gpr_gpr_gpr
- emit_andi
- emit_andi_gpr_gpr_imm16
- emit_beq
- emit_beq_gpr_gpr_rel
- emit_bgez
- emit_bgez_gpr_rel
- emit_bgezal
- emit_bgezal_gpr_rel
- emit_bgtz
- emit_bgtz_gpr_rel
- emit_blez
- emit_blez_gpr_rel
- emit_bltz
- emit_bltz_gpr_rel
- emit_bltzal
- emit_bltzal_gpr_rel
- emit_bne
- emit_bne_gpr_gpr_rel
- emit_break
- emit_break_imm20
- emit_cfc2
- emit_cfc2_gpr_cp2
- emit_ctc2
- emit_ctc2_gpr_cp2
- emit_j
- emit_j_rel
- emit_jal
- emit_jal_rel
- emit_jalr
- emit_jalr_gpr_gpr
- emit_jr
- emit_jr_gpr
- emit_lb
- emit_lb_gpr_mem
- emit_lbu
- emit_lbu_gpr_mem
- emit_lbv
- emit_lbv_vr_vmem
- emit_ldv
- emit_ldv_vr_vmem
- emit_lfv
- emit_lfv_vr_vmem
- emit_lh
- emit_lh_gpr_mem
- emit_lhu
- emit_lhu_gpr_mem
- emit_lhv
- emit_lhv_vr_vmem
- emit_llv
- emit_llv_vr_vmem
- emit_lpv
- emit_lpv_vr_vmem
- emit_lqv
- emit_lqv_vr_vmem
- emit_lrv
- emit_lrv_vr_vmem
- emit_lsv
- emit_lsv_vr_vmem
- emit_ltv
- emit_ltv_vr_vmem
- emit_lui
- emit_lui_gpr_imm16
- emit_luv
- emit_luv_vr_vmem
- emit_lw
- emit_lw_gpr_mem
- emit_lwv
- emit_lwv_vr_vmem
- emit_mfc0
- emit_mfc0_gpr_cp0
- emit_mfc2
- emit_mfc2_gpr_vr
- emit_mtc0
- emit_mtc0_gpr_cp0
- emit_mtc2
- emit_mtc2_gpr_vr
- emit_nop
- emit_nop_none
- emit_nor
- emit_nor_gpr_gpr_gpr
- emit_or
- emit_or_gpr_gpr_gpr
- emit_ori
- emit_ori_gpr_gpr_imm16
- emit_sb
- emit_sb_gpr_mem
- emit_sbv
- emit_sbv_vr_vmem
- emit_sdv
- emit_sdv_vr_vmem
- emit_sfv
- emit_sfv_vr_vmem
- emit_sh
- emit_sh_gpr_mem
- emit_shv
- emit_shv_vr_vmem
- emit_sll
- emit_sll_gpr_gpr_imm5
- emit_sllv
- emit_sllv_gpr_gpr_gpr
- emit_slt
- emit_slt_gpr_gpr_gpr
- emit_slti
- emit_slti_gpr_gpr_imm16
- emit_sltiu
- emit_sltiu_gpr_gpr_imm16
- emit_sltu
- emit_sltu_gpr_gpr_gpr
- emit_slv
- emit_slv_vr_vmem
- emit_spv
- emit_spv_vr_vmem
- emit_sqv
- emit_sqv_vr_vmem
- emit_sra
- emit_sra_gpr_gpr_imm5
- emit_srav
- emit_srav_gpr_gpr_gpr
- emit_srl
- emit_srl_gpr_gpr_imm5
- emit_srlv
- emit_srlv_gpr_gpr_gpr
- emit_srv
- emit_srv_vr_vmem
- emit_ssv
- emit_ssv_vr_vmem
- emit_stv
- emit_stv_vr_vmem
- emit_sub
- emit_sub_gpr_gpr_gpr
- emit_subu
- emit_subu_gpr_gpr_gpr
- emit_suv
- emit_suv_vr_vmem
- emit_sw
- emit_sw_gpr_mem
- emit_swv
- emit_swv_vr_vmem
- emit_vabs
- emit_vabs_vr_vr_vr
- emit_vadd
- emit_vadd_vr_vr_vr
- emit_vaddc
- emit_vaddc_vr_vr_vr
- emit_vand
- emit_vand_vr_vr_vr
- emit_vch
- emit_vch_vr_vr_vr
- emit_vcl
- emit_vcl_vr_vr_vr
- emit_vcr
- emit_vcr_vr_vr_vr
- emit_veq
- emit_veq_vr_vr_vr
- emit_vge
- emit_vge_vr_vr_vr
- emit_vlt
- emit_vlt_vr_vr_vr
- emit_vmacf
- emit_vmacf_vr_vr_vr
- emit_vmacu
- emit_vmacu_vr_vr_vr
- emit_vmadh
- emit_vmadh_vr_vr_vr
- emit_vmadl
- emit_vmadl_vr_vr_vr
- emit_vmadm
- emit_vmadm_vr_vr_vr
- emit_vmadn
- emit_vmadn_vr_vr_vr
- emit_vmov
- emit_vmov_vr_vr
- emit_vmrg
- emit_vmrg_vr_vr_vr
- emit_vmudh
- emit_vmudh_vr_vr_vr
- emit_vmudl
- emit_vmudl_vr_vr_vr
- emit_vmudm
- emit_vmudm_vr_vr_vr
- emit_vmudn
- emit_vmudn_vr_vr_vr
- emit_vmulf
- emit_vmulf_vr_vr_vr
- emit_vmulu
- emit_vmulu_vr_vr_vr
- emit_vnand
- emit_vnand_vr_vr_vr
- emit_vne
- emit_vne_vr_vr_vr
- emit_vnop
- emit_vnop_none
- emit_vnor
- emit_vnor_vr_vr_vr
- emit_vnxor
- emit_vnxor_vr_vr_vr
- emit_vor
- emit_vor_vr_vr_vr
- emit_vrcp
- emit_vrcp_vr_vr_vr
- emit_vrcph
- emit_vrcph_vr_vr_vr
- emit_vrcpl
- emit_vrcpl_vr_vr_vr
- emit_vrsq
- emit_vrsq_vr_vr_vr
- emit_vrsqh
- emit_vrsqh_vr_vr_vr
- emit_vrsql
- emit_vrsql_vr_vr_vr
- emit_vsar
- emit_vsar_vr_vr_vr
- emit_vsub
- emit_vsub_vr_vr_vr
- emit_vsubc
- emit_vsubc_vr_vr_vr
- emit_vxor
- emit_vxor_vr_vr_vr
- emit_xor
- emit_xor_gpr_gpr_gpr
- emit_xori
- emit_xori_gpr_gpr_imm16
- encode
- encode_max_code_size
- encode_max_relocation_count
- encode_reserve
- fprint
- fprintln
- gpr_from_num
- inst_add
- inst_add_gpr_gpr_gpr
- inst_addi
- inst_addi_gpr_gpr_imm16
- inst_addiu
- inst_addiu_gpr_gpr_imm16
- inst_addu
- inst_addu_gpr_gpr_gpr
- inst_and
- inst_and_gpr_gpr_gpr
- inst_andi
- inst_andi_gpr_gpr_imm16
- inst_beq
- inst_beq_gpr_gpr_rel
- inst_bgez
- inst_bgez_gpr_rel
- inst_bgezal
- inst_bgezal_gpr_rel
- inst_bgtz
- inst_bgtz_gpr_rel
- inst_blez
- inst_blez_gpr_rel
- inst_bltz
- inst_bltz_gpr_rel
- inst_bltzal
- inst_bltzal_gpr_rel
- inst_bne
- inst_bne_gpr_gpr_rel
- inst_branch1
- inst_branch2
- inst_break
- inst_break_imm20
- inst_cfc2
- inst_cfc2_gpr_cp2
- inst_ctc2
- inst_ctc2_gpr_cp2
- inst_j
- inst_j_rel
- inst_jal
- inst_jal_rel
- inst_jalr
- inst_jalr_gpr_gpr
- inst_jr
- inst_jr_gpr
- inst_jump
- inst_lb
- inst_lb_gpr_mem
- inst_lbu
- inst_lbu_gpr_mem
- inst_lbv
- inst_lbv_vr_vmem
- inst_ldv
- inst_ldv_vr_vmem
- inst_lfv
- inst_lfv_vr_vmem
- inst_lh
- inst_lh_gpr_mem
- inst_lhu
- inst_lhu_gpr_mem
- inst_lhv
- inst_lhv_vr_vmem
- inst_llv
- inst_llv_vr_vmem
- inst_lpv
- inst_lpv_vr_vmem
- inst_lqv
- inst_lqv_vr_vmem
- inst_lrv
- inst_lrv_vr_vmem
- inst_lsv
- inst_lsv_vr_vmem
- inst_ltv
- inst_ltv_vr_vmem
- inst_lui
- inst_lui_gpr_imm16
- inst_luv
- inst_luv_vr_vmem
- inst_lw
- inst_lw_gpr_mem
- inst_lwv
- inst_lwv_vr_vmem
- inst_mfc0
- inst_mfc0_gpr_cp0
- inst_mfc2
- inst_mfc2_gpr_vr
- inst_mtc0
- inst_mtc0_gpr_cp0
- inst_mtc2
- inst_mtc2_gpr_vr
- inst_none
- inst_nop
- inst_nop_none
- inst_nor
- inst_nor_gpr_gpr_gpr
- inst_or
- inst_or_gpr_gpr_gpr
- inst_ori
- inst_ori_gpr_gpr_imm16
- inst_r
- inst_r_i
- inst_r_m
- inst_r_r
- inst_r_r_i
- inst_r_r_r
- inst_sb
- inst_sb_gpr_mem
- inst_sbv
- inst_sbv_vr_vmem
- inst_sdv
- inst_sdv_vr_vmem
- inst_sfv
- inst_sfv_vr_vmem
- inst_sh
- inst_sh_gpr_mem
- inst_shv
- inst_shv_vr_vmem
- inst_sll
- inst_sll_gpr_gpr_imm5
- inst_sllv
- inst_sllv_gpr_gpr_gpr
- inst_slt
- inst_slt_gpr_gpr_gpr
- inst_slti
- inst_slti_gpr_gpr_imm16
- inst_sltiu
- inst_sltiu_gpr_gpr_imm16
- inst_sltu
- inst_sltu_gpr_gpr_gpr
- inst_slv
- inst_slv_vr_vmem
- inst_spv
- inst_spv_vr_vmem
- inst_sqv
- inst_sqv_vr_vmem
- inst_sra
- inst_sra_gpr_gpr_imm5
- inst_srav
- inst_srav_gpr_gpr_gpr
- inst_srl
- inst_srl_gpr_gpr_imm5
- inst_srlv
- inst_srlv_gpr_gpr_gpr
- inst_srv
- inst_srv_vr_vmem
- inst_ssv
- inst_ssv_vr_vmem
- inst_stv
- inst_stv_vr_vmem
- inst_sub
- inst_sub_gpr_gpr_gpr
- inst_subu
- inst_subu_gpr_gpr_gpr
- inst_suv
- inst_suv_vr_vmem
- inst_sw
- inst_sw_gpr_mem
- inst_swv
- inst_swv_vr_vmem
- inst_v_v_v
- inst_v_vmem
- inst_vabs
- inst_vabs_vr_vr_vr
- inst_vadd
- inst_vadd_vr_vr_vr
- inst_vaddc
- inst_vaddc_vr_vr_vr
- inst_vand
- inst_vand_vr_vr_vr
- inst_vch
- inst_vch_vr_vr_vr
- inst_vcl
- inst_vcl_vr_vr_vr
- inst_vcr
- inst_vcr_vr_vr_vr
- inst_veq
- inst_veq_vr_vr_vr
- inst_vge
- inst_vge_vr_vr_vr
- inst_vlt
- inst_vlt_vr_vr_vr
- inst_vmacf
- inst_vmacf_vr_vr_vr
- inst_vmacu
- inst_vmacu_vr_vr_vr
- inst_vmadh
- inst_vmadh_vr_vr_vr
- inst_vmadl
- inst_vmadl_vr_vr_vr
- inst_vmadm
- inst_vmadm_vr_vr_vr
- inst_vmadn
- inst_vmadn_vr_vr_vr
- inst_vmov
- inst_vmov_vr_vr
- inst_vmrg
- inst_vmrg_vr_vr_vr
- inst_vmudh
- inst_vmudh_vr_vr_vr
- inst_vmudl
- inst_vmudl_vr_vr_vr
- inst_vmudm
- inst_vmudm_vr_vr_vr
- inst_vmudn
- inst_vmudn_vr_vr_vr
- inst_vmulf
- inst_vmulf_vr_vr_vr
- inst_vmulu
- inst_vmulu_vr_vr_vr
- inst_vnand
- inst_vnand_vr_vr_vr
- inst_vne
- inst_vne_vr_vr_vr
- inst_vnop
- inst_vnop_none
- inst_vnor
- inst_vnor_vr_vr_vr
- inst_vnxor
- inst_vnxor_vr_vr_vr
- inst_vor
- inst_vor_vr_vr_vr
- inst_vrcp
- inst_vrcp_vr_vr_vr
- inst_vrcph
- inst_vrcph_vr_vr_vr
- inst_vrcpl
- inst_vrcpl_vr_vr_vr
- inst_vrsq
- inst_vrsq_vr_vr_vr
- inst_vrsqh
- inst_vrsqh_vr_vr_vr
- inst_vrsql
- inst_vrsql_vr_vr_vr
- inst_vsar
- inst_vsar_vr_vr_vr
- inst_vsub
- inst_vsub_vr_vr_vr
- inst_vsubc
- inst_vsubc_vr_vr_vr
- inst_vxor
- inst_vxor_vr_vr_vr
- inst_xor
- inst_xor_gpr_gpr_gpr
- inst_xori
- inst_xori_gpr_gpr_imm16
- mem
- mnemonic_to_string
- op_imm
- op_label
- op_mem
- op_reg
- op_vmem
- op_vr
- println
- read_u32
- reg_class
- reg_hw
- register_name
- sbprint
- sbprintln
- tprint
- tprintln
- vmem
- vr_from_num
- wprint
- wprintln
- write_u32
Procedure Groups (0)
This section is empty.
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, }
Encode_Run ¶
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, }
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.
Error_Code ¶
Error_Code :: rexcode_isa.Error_Code
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, }
Related Procedures With Returns
- inst_add_gpr_gpr_gpr
- inst_addi_gpr_gpr_imm16
- inst_addiu_gpr_gpr_imm16
- inst_addu_gpr_gpr_gpr
- inst_and_gpr_gpr_gpr
- inst_andi_gpr_gpr_imm16
- inst_beq_gpr_gpr_rel
- inst_bgez_gpr_rel
- inst_bgezal_gpr_rel
- inst_bgtz_gpr_rel
- inst_blez_gpr_rel
- inst_bltz_gpr_rel
- inst_bltzal_gpr_rel
- inst_bne_gpr_gpr_rel
- inst_branch1
- inst_branch2
- inst_break_imm20
- inst_cfc2_gpr_cp2
- inst_ctc2_gpr_cp2
- inst_j_rel
- inst_jal_rel
- inst_jalr_gpr_gpr
- inst_jr_gpr
- inst_jump
- inst_lb_gpr_mem
- inst_lbu_gpr_mem
- inst_lbv_vr_vmem
- inst_ldv_vr_vmem
- inst_lfv_vr_vmem
- inst_lh_gpr_mem
- inst_lhu_gpr_mem
- inst_lhv_vr_vmem
- inst_llv_vr_vmem
- inst_lpv_vr_vmem
- inst_lqv_vr_vmem
- inst_lrv_vr_vmem
- inst_lsv_vr_vmem
- inst_ltv_vr_vmem
- inst_lui_gpr_imm16
- inst_luv_vr_vmem
- inst_lw_gpr_mem
- inst_lwv_vr_vmem
- inst_mfc0_gpr_cp0
- inst_mfc2_gpr_vr
- inst_mtc0_gpr_cp0
- inst_mtc2_gpr_vr
- inst_none
- inst_nop_none
- inst_nor_gpr_gpr_gpr
- inst_or_gpr_gpr_gpr
- inst_ori_gpr_gpr_imm16
- inst_r
- inst_r_i
- inst_r_m
- inst_r_r
- inst_r_r_i
- inst_r_r_r
- inst_sb_gpr_mem
- inst_sbv_vr_vmem
- inst_sdv_vr_vmem
- inst_sfv_vr_vmem
- inst_sh_gpr_mem
- inst_shv_vr_vmem
- inst_sll_gpr_gpr_imm5
- inst_sllv_gpr_gpr_gpr
- inst_slt_gpr_gpr_gpr
- inst_slti_gpr_gpr_imm16
- inst_sltiu_gpr_gpr_imm16
- inst_sltu_gpr_gpr_gpr
- inst_slv_vr_vmem
- inst_spv_vr_vmem
- inst_sqv_vr_vmem
- inst_sra_gpr_gpr_imm5
- inst_srav_gpr_gpr_gpr
- inst_srl_gpr_gpr_imm5
- inst_srlv_gpr_gpr_gpr
- inst_srv_vr_vmem
- inst_ssv_vr_vmem
- inst_stv_vr_vmem
- inst_sub_gpr_gpr_gpr
- inst_subu_gpr_gpr_gpr
- inst_suv_vr_vmem
- inst_sw_gpr_mem
- inst_swv_vr_vmem
- inst_v_v_v
- inst_v_vmem
- inst_vabs_vr_vr_vr
- inst_vadd_vr_vr_vr
- inst_vaddc_vr_vr_vr
- inst_vand_vr_vr_vr
- inst_vch_vr_vr_vr
- inst_vcl_vr_vr_vr
- inst_vcr_vr_vr_vr
- inst_veq_vr_vr_vr
- inst_vge_vr_vr_vr
- inst_vlt_vr_vr_vr
- inst_vmacf_vr_vr_vr
- inst_vmacu_vr_vr_vr
- inst_vmadh_vr_vr_vr
- inst_vmadl_vr_vr_vr
- inst_vmadm_vr_vr_vr
- inst_vmadn_vr_vr_vr
- inst_vmov_vr_vr
- inst_vmrg_vr_vr_vr
- inst_vmudh_vr_vr_vr
- inst_vmudl_vr_vr_vr
- inst_vmudm_vr_vr_vr
- inst_vmudn_vr_vr_vr
- inst_vmulf_vr_vr_vr
- inst_vmulu_vr_vr_vr
- inst_vnand_vr_vr_vr
- inst_vne_vr_vr_vr
- inst_vnop_none
- inst_vnor_vr_vr_vr
- inst_vnxor_vr_vr_vr
- inst_vor_vr_vr_vr
- inst_vrcp_vr_vr_vr
- inst_vrcph_vr_vr_vr
- inst_vrcpl_vr_vr_vr
- inst_vrsq_vr_vr_vr
- inst_vrsqh_vr_vr_vr
- inst_vrsql_vr_vr_vr
- inst_vsar_vr_vr_vr
- inst_vsub_vr_vr_vr
- inst_vsubc_vr_vr_vr
- inst_vxor_vr_vr_vr
- inst_xor_gpr_gpr_gpr
- inst_xori_gpr_gpr_imm16
Label_Map ¶
Label_Map :: rexcode_isa.Label_Map
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, }
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) }
Print_Options ¶
Print_Options :: rexcode_isa.Print_Options
Related Procedures With Parameters
Related Constants
Print_Result ¶
Print_Result :: rexcode_isa.Print_Result
Register ¶
Register :: distinct u16
Related Procedures With Parameters
- emit_add_gpr_gpr_gpr
- emit_addi_gpr_gpr_imm16
- emit_addiu_gpr_gpr_imm16
- emit_addu_gpr_gpr_gpr
- emit_and_gpr_gpr_gpr
- emit_andi_gpr_gpr_imm16
- emit_beq_gpr_gpr_rel
- emit_bgez_gpr_rel
- emit_bgezal_gpr_rel
- emit_bgtz_gpr_rel
- emit_blez_gpr_rel
- emit_bltz_gpr_rel
- emit_bltzal_gpr_rel
- emit_bne_gpr_gpr_rel
- emit_cfc2_gpr_cp2
- emit_ctc2_gpr_cp2
- emit_jalr_gpr_gpr
- emit_jr_gpr
- emit_lb_gpr_mem
- emit_lbu_gpr_mem
- emit_lbv_vr_vmem
- emit_ldv_vr_vmem
- emit_lfv_vr_vmem
- emit_lh_gpr_mem
- emit_lhu_gpr_mem
- emit_lhv_vr_vmem
- emit_llv_vr_vmem
- emit_lpv_vr_vmem
- emit_lqv_vr_vmem
- emit_lrv_vr_vmem
- emit_lsv_vr_vmem
- emit_ltv_vr_vmem
- emit_lui_gpr_imm16
- emit_luv_vr_vmem
- emit_lw_gpr_mem
- emit_lwv_vr_vmem
- emit_mfc0_gpr_cp0
- emit_mfc2_gpr_vr
- emit_mtc0_gpr_cp0
- emit_mtc2_gpr_vr
- emit_nor_gpr_gpr_gpr
- emit_or_gpr_gpr_gpr
- emit_ori_gpr_gpr_imm16
- emit_sb_gpr_mem
- emit_sbv_vr_vmem
- emit_sdv_vr_vmem
- emit_sfv_vr_vmem
- emit_sh_gpr_mem
- emit_shv_vr_vmem
- emit_sll_gpr_gpr_imm5
- emit_sllv_gpr_gpr_gpr
- emit_slt_gpr_gpr_gpr
- emit_slti_gpr_gpr_imm16
- emit_sltiu_gpr_gpr_imm16
- emit_sltu_gpr_gpr_gpr
- emit_slv_vr_vmem
- emit_spv_vr_vmem
- emit_sqv_vr_vmem
- emit_sra_gpr_gpr_imm5
- emit_srav_gpr_gpr_gpr
- emit_srl_gpr_gpr_imm5
- emit_srlv_gpr_gpr_gpr
- emit_srv_vr_vmem
- emit_ssv_vr_vmem
- emit_stv_vr_vmem
- emit_sub_gpr_gpr_gpr
- emit_subu_gpr_gpr_gpr
- emit_suv_vr_vmem
- emit_sw_gpr_mem
- emit_swv_vr_vmem
- emit_vabs_vr_vr_vr
- emit_vadd_vr_vr_vr
- emit_vaddc_vr_vr_vr
- emit_vand_vr_vr_vr
- emit_vch_vr_vr_vr
- emit_vcl_vr_vr_vr
- emit_vcr_vr_vr_vr
- emit_veq_vr_vr_vr
- emit_vge_vr_vr_vr
- emit_vlt_vr_vr_vr
- emit_vmacf_vr_vr_vr
- emit_vmacu_vr_vr_vr
- emit_vmadh_vr_vr_vr
- emit_vmadl_vr_vr_vr
- emit_vmadm_vr_vr_vr
- emit_vmadn_vr_vr_vr
- emit_vmov_vr_vr
- emit_vmrg_vr_vr_vr
- emit_vmudh_vr_vr_vr
- emit_vmudl_vr_vr_vr
- emit_vmudm_vr_vr_vr
- emit_vmudn_vr_vr_vr
- emit_vmulf_vr_vr_vr
- emit_vmulu_vr_vr_vr
- emit_vnand_vr_vr_vr
- emit_vne_vr_vr_vr
- emit_vnor_vr_vr_vr
- emit_vnxor_vr_vr_vr
- emit_vor_vr_vr_vr
- emit_vrcp_vr_vr_vr
- emit_vrcph_vr_vr_vr
- emit_vrcpl_vr_vr_vr
- emit_vrsq_vr_vr_vr
- emit_vrsqh_vr_vr_vr
- emit_vrsql_vr_vr_vr
- emit_vsar_vr_vr_vr
- emit_vsub_vr_vr_vr
- emit_vsubc_vr_vr_vr
- emit_vxor_vr_vr_vr
- emit_xor_gpr_gpr_gpr
- emit_xori_gpr_gpr_imm16
- inst_add_gpr_gpr_gpr
- inst_addi_gpr_gpr_imm16
- inst_addiu_gpr_gpr_imm16
- inst_addu_gpr_gpr_gpr
- inst_and_gpr_gpr_gpr
- inst_andi_gpr_gpr_imm16
- inst_beq_gpr_gpr_rel
- inst_bgez_gpr_rel
- inst_bgezal_gpr_rel
- inst_bgtz_gpr_rel
- inst_blez_gpr_rel
- inst_bltz_gpr_rel
- inst_bltzal_gpr_rel
- inst_bne_gpr_gpr_rel
- inst_branch1
- inst_branch2
- inst_cfc2_gpr_cp2
- inst_ctc2_gpr_cp2
- inst_jalr_gpr_gpr
- inst_jr_gpr
- inst_lb_gpr_mem
- inst_lbu_gpr_mem
- inst_lbv_vr_vmem
- inst_ldv_vr_vmem
- inst_lfv_vr_vmem
- inst_lh_gpr_mem
- inst_lhu_gpr_mem
- inst_lhv_vr_vmem
- inst_llv_vr_vmem
- inst_lpv_vr_vmem
- inst_lqv_vr_vmem
- inst_lrv_vr_vmem
- inst_lsv_vr_vmem
- inst_ltv_vr_vmem
- inst_lui_gpr_imm16
- inst_luv_vr_vmem
- inst_lw_gpr_mem
- inst_lwv_vr_vmem
- inst_mfc0_gpr_cp0
- inst_mfc2_gpr_vr
- inst_mtc0_gpr_cp0
- inst_mtc2_gpr_vr
- inst_nor_gpr_gpr_gpr
- inst_or_gpr_gpr_gpr
- inst_ori_gpr_gpr_imm16
- inst_r
- inst_r_i
- inst_r_m
- inst_r_r
- inst_r_r_i
- inst_r_r_r
- inst_sb_gpr_mem
- inst_sbv_vr_vmem
- inst_sdv_vr_vmem
- inst_sfv_vr_vmem
- inst_sh_gpr_mem
- inst_shv_vr_vmem
- inst_sll_gpr_gpr_imm5
- inst_sllv_gpr_gpr_gpr
- inst_slt_gpr_gpr_gpr
- inst_slti_gpr_gpr_imm16
- inst_sltiu_gpr_gpr_imm16
- inst_sltu_gpr_gpr_gpr
- inst_slv_vr_vmem
- inst_spv_vr_vmem
- inst_sqv_vr_vmem
- inst_sra_gpr_gpr_imm5
- inst_srav_gpr_gpr_gpr
- inst_srl_gpr_gpr_imm5
- inst_srlv_gpr_gpr_gpr
- inst_srv_vr_vmem
- inst_ssv_vr_vmem
- inst_stv_vr_vmem
- inst_sub_gpr_gpr_gpr
- inst_subu_gpr_gpr_gpr
- inst_suv_vr_vmem
- inst_sw_gpr_mem
- inst_swv_vr_vmem
- inst_v_v_v
- inst_v_vmem
- inst_vabs_vr_vr_vr
- inst_vadd_vr_vr_vr
- inst_vaddc_vr_vr_vr
- inst_vand_vr_vr_vr
- inst_vch_vr_vr_vr
- inst_vcl_vr_vr_vr
- inst_vcr_vr_vr_vr
- inst_veq_vr_vr_vr
- inst_vge_vr_vr_vr
- inst_vlt_vr_vr_vr
- inst_vmacf_vr_vr_vr
- inst_vmacu_vr_vr_vr
- inst_vmadh_vr_vr_vr
- inst_vmadl_vr_vr_vr
- inst_vmadm_vr_vr_vr
- inst_vmadn_vr_vr_vr
- inst_vmov_vr_vr
- inst_vmrg_vr_vr_vr
- inst_vmudh_vr_vr_vr
- inst_vmudl_vr_vr_vr
- inst_vmudm_vr_vr_vr
- inst_vmudn_vr_vr_vr
- inst_vmulf_vr_vr_vr
- inst_vmulu_vr_vr_vr
- inst_vnand_vr_vr_vr
- inst_vne_vr_vr_vr
- inst_vnor_vr_vr_vr
- inst_vnxor_vr_vr_vr
- inst_vor_vr_vr_vr
- inst_vrcp_vr_vr_vr
- inst_vrcph_vr_vr_vr
- inst_vrcpl_vr_vr_vr
- inst_vrsq_vr_vr_vr
- inst_vrsqh_vr_vr_vr
- inst_vrsql_vr_vr_vr
- inst_vsar_vr_vr_vr
- inst_vsub_vr_vr_vr
- inst_vsubc_vr_vr_vr
- inst_vxor_vr_vr_vr
- inst_xor_gpr_gpr_gpr
- inst_xori_gpr_gpr_imm16
- mem
- op_reg
- op_vr
- reg_class
- reg_hw
- register_name
- vmem
Related Procedures With Returns
Related Constants
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) }
Token_Kind ¶
Token_Kind :: rexcode_isa.Token_Kind
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, }
Vector_Mem ¶
Vector_Mem :: struct #packed { base: Register, // GPR base element: u8, // element selector (0-15; restricted by op) _: u8, offset: i32, }
Related Procedures With Parameters
- emit_lbv_vr_vmem
- emit_ldv_vr_vmem
- emit_lfv_vr_vmem
- emit_lhv_vr_vmem
- emit_llv_vr_vmem
- emit_lpv_vr_vmem
- emit_lqv_vr_vmem
- emit_lrv_vr_vmem
- emit_lsv_vr_vmem
- emit_ltv_vr_vmem
- emit_luv_vr_vmem
- emit_lwv_vr_vmem
- emit_sbv_vr_vmem
- emit_sdv_vr_vmem
- emit_sfv_vr_vmem
- emit_shv_vr_vmem
- emit_slv_vr_vmem
- emit_spv_vr_vmem
- emit_sqv_vr_vmem
- emit_srv_vr_vmem
- emit_ssv_vr_vmem
- emit_stv_vr_vmem
- emit_suv_vr_vmem
- emit_swv_vr_vmem
- inst_lbv_vr_vmem
- inst_ldv_vr_vmem
- inst_lfv_vr_vmem
- inst_lhv_vr_vmem
- inst_llv_vr_vmem
- inst_lpv_vr_vmem
- inst_lqv_vr_vmem
- inst_lrv_vr_vmem
- inst_lsv_vr_vmem
- inst_ltv_vr_vmem
- inst_luv_vr_vmem
- inst_lwv_vr_vmem
- inst_sbv_vr_vmem
- inst_sdv_vr_vmem
- inst_sfv_vr_vmem
- inst_shv_vr_vmem
- inst_slv_vr_vmem
- inst_spv_vr_vmem
- inst_sqv_vr_vmem
- inst_srv_vr_vmem
- inst_ssv_vr_vmem
- inst_stv_vr_vmem
- inst_suv_vr_vmem
- inst_swv_vr_vmem
- inst_v_vmem
- op_vmem
Related Procedures With Returns
Constants
DEFAULT_PRINT_OPTIONS ¶
DEFAULT_PRINT_OPTIONS: rexcode_isa.Print_Options : isa.DEFAULT_PRINT_OPTIONS
LABEL_UNDEFINED ¶
LABEL_UNDEFINED: rexcode_isa.Label_Definition : isa.LABEL_UNDEFINED
MASK_FUNCT ¶
MASK_FUNCT :: u32(0x0000003F)
MASK_OPCODE ¶
MASK_OPCODE :: u32(0xFC000000)
MASK_SHAMT ¶
MASK_SHAMT :: u32(0x000007C0)
MAX_INST_SIZE ¶
MAX_INST_SIZE :: 4
REG_NONE ¶
REG_NONE :: 0x0000
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
aprint ¶
aprint :: proc( 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[u32]string = nil, allocator := context.allocator, ) -> string {…}
aprintln ¶
aprintln :: proc( 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[u32]string = nil, allocator := context.allocator, ) -> string {…}
bprint ¶
bprint :: proc( 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[u32]string = nil, ) -> string {…}
bprintln ¶
bprintln :: proc( 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[u32]string = nil, ) -> string {…}
decode ¶
decode :: proc( 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 ¶
Typical-case estimate of the instruction count for data.
decode_max_instruction_count ¶
Instruction-count ceiling for data (RSP instructions are 4 bytes).
decode_reserve ¶
decode_reserve :: proc(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).
emit_add ¶
emit_add :: emit_add_gpr_gpr_gpr
emit_add_gpr_gpr_gpr ¶
emit_add_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_addi ¶
emit_addi :: emit_addi_gpr_gpr_imm16
emit_addi_gpr_gpr_imm16 ¶
emit_addi_gpr_gpr_imm16 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64) {…}
emit_addiu ¶
emit_addiu :: emit_addiu_gpr_gpr_imm16
emit_addiu_gpr_gpr_imm16 ¶
emit_addiu_gpr_gpr_imm16 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64) {…}
emit_addu ¶
emit_addu :: emit_addu_gpr_gpr_gpr
emit_addu_gpr_gpr_gpr ¶
emit_addu_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_and ¶
emit_and :: emit_and_gpr_gpr_gpr
emit_and_gpr_gpr_gpr ¶
emit_and_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_andi ¶
emit_andi :: emit_andi_gpr_gpr_imm16
emit_andi_gpr_gpr_imm16 ¶
emit_andi_gpr_gpr_imm16 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64) {…}
emit_beq ¶
emit_beq :: emit_beq_gpr_gpr_rel
emit_beq_gpr_gpr_rel ¶
emit_beq_gpr_gpr_rel :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, label_id: u32) {…}
emit_bgez ¶
emit_bgez :: emit_bgez_gpr_rel
emit_bgez_gpr_rel ¶
emit_bgez_gpr_rel :: proc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32) {…}
emit_bgezal ¶
emit_bgezal :: emit_bgezal_gpr_rel
emit_bgezal_gpr_rel ¶
emit_bgezal_gpr_rel :: proc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32) {…}
emit_bgtz ¶
emit_bgtz :: emit_bgtz_gpr_rel
emit_bgtz_gpr_rel ¶
emit_bgtz_gpr_rel :: proc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32) {…}
emit_blez ¶
emit_blez :: emit_blez_gpr_rel
emit_blez_gpr_rel ¶
emit_blez_gpr_rel :: proc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32) {…}
emit_bltz ¶
emit_bltz :: emit_bltz_gpr_rel
emit_bltz_gpr_rel ¶
emit_bltz_gpr_rel :: proc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32) {…}
emit_bltzal ¶
emit_bltzal :: emit_bltzal_gpr_rel
emit_bltzal_gpr_rel ¶
emit_bltzal_gpr_rel :: proc(instructions: ^[dynamic]Instruction, a: Register, label_id: u32) {…}
emit_bne ¶
emit_bne :: emit_bne_gpr_gpr_rel
emit_bne_gpr_gpr_rel ¶
emit_bne_gpr_gpr_rel :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, label_id: u32) {…}
emit_break ¶
emit_break :: emit_break_imm20
emit_break_imm20 ¶
emit_break_imm20 :: proc(instructions: ^[dynamic]Instruction, imm: i64) {…}
emit_cfc2 ¶
emit_cfc2 :: emit_cfc2_gpr_cp2
emit_cfc2_gpr_cp2 ¶
emit_cfc2_gpr_cp2 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register) {…}
emit_ctc2 ¶
emit_ctc2 :: emit_ctc2_gpr_cp2
emit_ctc2_gpr_cp2 ¶
emit_ctc2_gpr_cp2 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register) {…}
emit_j ¶
emit_j :: emit_j_rel
emit_j_rel ¶
emit_j_rel :: proc(instructions: ^[dynamic]Instruction, label_id: u32) {…}
emit_jal ¶
emit_jal :: emit_jal_rel
emit_jal_rel ¶
emit_jal_rel :: proc(instructions: ^[dynamic]Instruction, label_id: u32) {…}
emit_jalr ¶
emit_jalr :: emit_jalr_gpr_gpr
emit_jalr_gpr_gpr ¶
emit_jalr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register) {…}
emit_jr ¶
emit_jr :: emit_jr_gpr
emit_jr_gpr ¶
emit_jr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register) {…}
emit_lb ¶
emit_lb :: emit_lb_gpr_mem
emit_lb_gpr_mem ¶
emit_lb_gpr_mem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Memory) {…}
emit_lbu ¶
emit_lbu :: emit_lbu_gpr_mem
emit_lbu_gpr_mem ¶
emit_lbu_gpr_mem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Memory) {…}
emit_lbv ¶
emit_lbv :: emit_lbv_vr_vmem
emit_lbv_vr_vmem ¶
emit_lbv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_ldv ¶
emit_ldv :: emit_ldv_vr_vmem
emit_ldv_vr_vmem ¶
emit_ldv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_lfv ¶
emit_lfv :: emit_lfv_vr_vmem
emit_lfv_vr_vmem ¶
emit_lfv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_lh ¶
emit_lh :: emit_lh_gpr_mem
emit_lh_gpr_mem ¶
emit_lh_gpr_mem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Memory) {…}
emit_lhu ¶
emit_lhu :: emit_lhu_gpr_mem
emit_lhu_gpr_mem ¶
emit_lhu_gpr_mem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Memory) {…}
emit_lhv ¶
emit_lhv :: emit_lhv_vr_vmem
emit_lhv_vr_vmem ¶
emit_lhv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_llv ¶
emit_llv :: emit_llv_vr_vmem
emit_llv_vr_vmem ¶
emit_llv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_lpv ¶
emit_lpv :: emit_lpv_vr_vmem
emit_lpv_vr_vmem ¶
emit_lpv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_lqv ¶
emit_lqv :: emit_lqv_vr_vmem
emit_lqv_vr_vmem ¶
emit_lqv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_lrv ¶
emit_lrv :: emit_lrv_vr_vmem
emit_lrv_vr_vmem ¶
emit_lrv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_lsv ¶
emit_lsv :: emit_lsv_vr_vmem
emit_lsv_vr_vmem ¶
emit_lsv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_ltv ¶
emit_ltv :: emit_ltv_vr_vmem
emit_ltv_vr_vmem ¶
emit_ltv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_lui ¶
emit_lui :: emit_lui_gpr_imm16
emit_lui_gpr_imm16 ¶
emit_lui_gpr_imm16 :: proc(instructions: ^[dynamic]Instruction, a: Register, imm: i64) {…}
emit_luv ¶
emit_luv :: emit_luv_vr_vmem
emit_luv_vr_vmem ¶
emit_luv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_lw ¶
emit_lw :: emit_lw_gpr_mem
emit_lw_gpr_mem ¶
emit_lw_gpr_mem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Memory) {…}
emit_lwv ¶
emit_lwv :: emit_lwv_vr_vmem
emit_lwv_vr_vmem ¶
emit_lwv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_mfc0 ¶
emit_mfc0 :: emit_mfc0_gpr_cp0
emit_mfc0_gpr_cp0 ¶
emit_mfc0_gpr_cp0 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register) {…}
emit_mfc2 ¶
emit_mfc2 :: emit_mfc2_gpr_vr
emit_mfc2_gpr_vr ¶
emit_mfc2_gpr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register) {…}
emit_mtc0 ¶
emit_mtc0 :: emit_mtc0_gpr_cp0
emit_mtc0_gpr_cp0 ¶
emit_mtc0_gpr_cp0 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register) {…}
emit_mtc2 ¶
emit_mtc2 :: emit_mtc2_gpr_vr
emit_mtc2_gpr_vr ¶
emit_mtc2_gpr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register) {…}
emit_nop ¶
emit_nop :: emit_nop_none
emit_nop_none ¶
emit_nop_none :: proc(instructions: ^[dynamic]Instruction) {…}
emit_nor ¶
emit_nor :: emit_nor_gpr_gpr_gpr
emit_nor_gpr_gpr_gpr ¶
emit_nor_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_or ¶
emit_or :: emit_or_gpr_gpr_gpr
emit_or_gpr_gpr_gpr ¶
emit_or_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_ori ¶
emit_ori :: emit_ori_gpr_gpr_imm16
emit_ori_gpr_gpr_imm16 ¶
emit_ori_gpr_gpr_imm16 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64) {…}
emit_sb ¶
emit_sb :: emit_sb_gpr_mem
emit_sb_gpr_mem ¶
emit_sb_gpr_mem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Memory) {…}
emit_sbv ¶
emit_sbv :: emit_sbv_vr_vmem
emit_sbv_vr_vmem ¶
emit_sbv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_sdv ¶
emit_sdv :: emit_sdv_vr_vmem
emit_sdv_vr_vmem ¶
emit_sdv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_sfv ¶
emit_sfv :: emit_sfv_vr_vmem
emit_sfv_vr_vmem ¶
emit_sfv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_sh ¶
emit_sh :: emit_sh_gpr_mem
emit_sh_gpr_mem ¶
emit_sh_gpr_mem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Memory) {…}
emit_shv ¶
emit_shv :: emit_shv_vr_vmem
emit_shv_vr_vmem ¶
emit_shv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_sll ¶
emit_sll :: emit_sll_gpr_gpr_imm5
emit_sll_gpr_gpr_imm5 ¶
emit_sll_gpr_gpr_imm5 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64) {…}
emit_sllv ¶
emit_sllv :: emit_sllv_gpr_gpr_gpr
emit_sllv_gpr_gpr_gpr ¶
emit_sllv_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_slt ¶
emit_slt :: emit_slt_gpr_gpr_gpr
emit_slt_gpr_gpr_gpr ¶
emit_slt_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_slti ¶
emit_slti :: emit_slti_gpr_gpr_imm16
emit_slti_gpr_gpr_imm16 ¶
emit_slti_gpr_gpr_imm16 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64) {…}
emit_sltiu ¶
emit_sltiu :: emit_sltiu_gpr_gpr_imm16
emit_sltiu_gpr_gpr_imm16 ¶
emit_sltiu_gpr_gpr_imm16 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64) {…}
emit_sltu ¶
emit_sltu :: emit_sltu_gpr_gpr_gpr
emit_sltu_gpr_gpr_gpr ¶
emit_sltu_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_slv ¶
emit_slv :: emit_slv_vr_vmem
emit_slv_vr_vmem ¶
emit_slv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_spv ¶
emit_spv :: emit_spv_vr_vmem
emit_spv_vr_vmem ¶
emit_spv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_sqv ¶
emit_sqv :: emit_sqv_vr_vmem
emit_sqv_vr_vmem ¶
emit_sqv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_sra ¶
emit_sra :: emit_sra_gpr_gpr_imm5
emit_sra_gpr_gpr_imm5 ¶
emit_sra_gpr_gpr_imm5 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64) {…}
emit_srav ¶
emit_srav :: emit_srav_gpr_gpr_gpr
emit_srav_gpr_gpr_gpr ¶
emit_srav_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_srl ¶
emit_srl :: emit_srl_gpr_gpr_imm5
emit_srl_gpr_gpr_imm5 ¶
emit_srl_gpr_gpr_imm5 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64) {…}
emit_srlv ¶
emit_srlv :: emit_srlv_gpr_gpr_gpr
emit_srlv_gpr_gpr_gpr ¶
emit_srlv_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_srv ¶
emit_srv :: emit_srv_vr_vmem
emit_srv_vr_vmem ¶
emit_srv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_ssv ¶
emit_ssv :: emit_ssv_vr_vmem
emit_ssv_vr_vmem ¶
emit_ssv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_stv ¶
emit_stv :: emit_stv_vr_vmem
emit_stv_vr_vmem ¶
emit_stv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_sub ¶
emit_sub :: emit_sub_gpr_gpr_gpr
emit_sub_gpr_gpr_gpr ¶
emit_sub_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_subu ¶
emit_subu :: emit_subu_gpr_gpr_gpr
emit_subu_gpr_gpr_gpr ¶
emit_subu_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_suv ¶
emit_suv :: emit_suv_vr_vmem
emit_suv_vr_vmem ¶
emit_suv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_sw ¶
emit_sw :: emit_sw_gpr_mem
emit_sw_gpr_mem ¶
emit_sw_gpr_mem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Memory) {…}
emit_swv ¶
emit_swv :: emit_swv_vr_vmem
emit_swv_vr_vmem ¶
emit_swv_vr_vmem :: proc(instructions: ^[dynamic]Instruction, a: Register, m: Vector_Mem) {…}
emit_vabs ¶
emit_vabs :: emit_vabs_vr_vr_vr
emit_vabs_vr_vr_vr ¶
emit_vabs_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vadd ¶
emit_vadd :: emit_vadd_vr_vr_vr
emit_vadd_vr_vr_vr ¶
emit_vadd_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vaddc ¶
emit_vaddc :: emit_vaddc_vr_vr_vr
emit_vaddc_vr_vr_vr ¶
emit_vaddc_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vand ¶
emit_vand :: emit_vand_vr_vr_vr
emit_vand_vr_vr_vr ¶
emit_vand_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vch ¶
emit_vch :: emit_vch_vr_vr_vr
emit_vch_vr_vr_vr ¶
emit_vch_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vcl ¶
emit_vcl :: emit_vcl_vr_vr_vr
emit_vcl_vr_vr_vr ¶
emit_vcl_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vcr ¶
emit_vcr :: emit_vcr_vr_vr_vr
emit_vcr_vr_vr_vr ¶
emit_vcr_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_veq ¶
emit_veq :: emit_veq_vr_vr_vr
emit_veq_vr_vr_vr ¶
emit_veq_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vge ¶
emit_vge :: emit_vge_vr_vr_vr
emit_vge_vr_vr_vr ¶
emit_vge_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vlt ¶
emit_vlt :: emit_vlt_vr_vr_vr
emit_vlt_vr_vr_vr ¶
emit_vlt_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmacf ¶
emit_vmacf :: emit_vmacf_vr_vr_vr
emit_vmacf_vr_vr_vr ¶
emit_vmacf_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmacu ¶
emit_vmacu :: emit_vmacu_vr_vr_vr
emit_vmacu_vr_vr_vr ¶
emit_vmacu_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmadh ¶
emit_vmadh :: emit_vmadh_vr_vr_vr
emit_vmadh_vr_vr_vr ¶
emit_vmadh_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmadl ¶
emit_vmadl :: emit_vmadl_vr_vr_vr
emit_vmadl_vr_vr_vr ¶
emit_vmadl_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmadm ¶
emit_vmadm :: emit_vmadm_vr_vr_vr
emit_vmadm_vr_vr_vr ¶
emit_vmadm_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmadn ¶
emit_vmadn :: emit_vmadn_vr_vr_vr
emit_vmadn_vr_vr_vr ¶
emit_vmadn_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmov ¶
emit_vmov :: emit_vmov_vr_vr
emit_vmov_vr_vr ¶
emit_vmov_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, element: u8 = 0) {…}
emit_vmrg ¶
emit_vmrg :: emit_vmrg_vr_vr_vr
emit_vmrg_vr_vr_vr ¶
emit_vmrg_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmudh ¶
emit_vmudh :: emit_vmudh_vr_vr_vr
emit_vmudh_vr_vr_vr ¶
emit_vmudh_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmudl ¶
emit_vmudl :: emit_vmudl_vr_vr_vr
emit_vmudl_vr_vr_vr ¶
emit_vmudl_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmudm ¶
emit_vmudm :: emit_vmudm_vr_vr_vr
emit_vmudm_vr_vr_vr ¶
emit_vmudm_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmudn ¶
emit_vmudn :: emit_vmudn_vr_vr_vr
emit_vmudn_vr_vr_vr ¶
emit_vmudn_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmulf ¶
emit_vmulf :: emit_vmulf_vr_vr_vr
emit_vmulf_vr_vr_vr ¶
emit_vmulf_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vmulu ¶
emit_vmulu :: emit_vmulu_vr_vr_vr
emit_vmulu_vr_vr_vr ¶
emit_vmulu_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vnand ¶
emit_vnand :: emit_vnand_vr_vr_vr
emit_vnand_vr_vr_vr ¶
emit_vnand_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vne ¶
emit_vne :: emit_vne_vr_vr_vr
emit_vne_vr_vr_vr ¶
emit_vne_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vnop ¶
emit_vnop :: emit_vnop_none
emit_vnop_none ¶
emit_vnop_none :: proc(instructions: ^[dynamic]Instruction) {…}
emit_vnor ¶
emit_vnor :: emit_vnor_vr_vr_vr
emit_vnor_vr_vr_vr ¶
emit_vnor_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vnxor ¶
emit_vnxor :: emit_vnxor_vr_vr_vr
emit_vnxor_vr_vr_vr ¶
emit_vnxor_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vor ¶
emit_vor :: emit_vor_vr_vr_vr
emit_vor_vr_vr_vr ¶
emit_vor_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vrcp ¶
emit_vrcp :: emit_vrcp_vr_vr_vr
emit_vrcp_vr_vr_vr ¶
emit_vrcp_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vrcph ¶
emit_vrcph :: emit_vrcph_vr_vr_vr
emit_vrcph_vr_vr_vr ¶
emit_vrcph_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vrcpl ¶
emit_vrcpl :: emit_vrcpl_vr_vr_vr
emit_vrcpl_vr_vr_vr ¶
emit_vrcpl_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vrsq ¶
emit_vrsq :: emit_vrsq_vr_vr_vr
emit_vrsq_vr_vr_vr ¶
emit_vrsq_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vrsqh ¶
emit_vrsqh :: emit_vrsqh_vr_vr_vr
emit_vrsqh_vr_vr_vr ¶
emit_vrsqh_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vrsql ¶
emit_vrsql :: emit_vrsql_vr_vr_vr
emit_vrsql_vr_vr_vr ¶
emit_vrsql_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vsar ¶
emit_vsar :: emit_vsar_vr_vr_vr
emit_vsar_vr_vr_vr ¶
emit_vsar_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vsub ¶
emit_vsub :: emit_vsub_vr_vr_vr
emit_vsub_vr_vr_vr ¶
emit_vsub_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vsubc ¶
emit_vsubc :: emit_vsubc_vr_vr_vr
emit_vsubc_vr_vr_vr ¶
emit_vsubc_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_vxor ¶
emit_vxor :: emit_vxor_vr_vr_vr
emit_vxor_vr_vr_vr ¶
emit_vxor_vr_vr_vr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register, element: u8 = 0) {…}
emit_xor ¶
emit_xor :: emit_xor_gpr_gpr_gpr
emit_xor_gpr_gpr_gpr ¶
emit_xor_gpr_gpr_gpr :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, c: Register) {…}
emit_xori ¶
emit_xori :: emit_xori_gpr_gpr_imm16
emit_xori_gpr_gpr_imm16 ¶
emit_xori_gpr_gpr_imm16 :: proc(instructions: ^[dynamic]Instruction, a: Register, b: Register, imm: i64) {…}
encode ¶
encode :: proc( 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 ¶
encode_max_code_size :: proc "contextless" (instructions: []Instruction) -> int {…}
encode_max_relocation_count ¶
encode_max_relocation_count :: proc "contextless" (instructions: []Instruction) -> int {…}
encode_reserve ¶
encode_reserve :: proc(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 reallocates. Allocates no new buffers; pass nil to skip either array.
fprint ¶
fprint :: proc( 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[u32]string = nil, ) {…}
fprintln ¶
fprintln :: proc( 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[u32]string = nil, ) {…}
inst_add ¶
inst_add :: inst_add_gpr_gpr_gpr
inst_add_gpr_gpr_gpr ¶
inst_add_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_addi ¶
inst_addi :: inst_addi_gpr_gpr_imm16
inst_addi_gpr_gpr_imm16 ¶
inst_addi_gpr_gpr_imm16 :: proc "contextless" (a: Register, b: Register, imm: i64) -> Instruction {…}
inst_addiu ¶
inst_addiu :: inst_addiu_gpr_gpr_imm16
inst_addiu_gpr_gpr_imm16 ¶
inst_addiu_gpr_gpr_imm16 :: proc "contextless" (a: Register, b: Register, imm: i64) -> Instruction {…}
inst_addu ¶
inst_addu :: inst_addu_gpr_gpr_gpr
inst_addu_gpr_gpr_gpr ¶
inst_addu_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_and ¶
inst_and :: inst_and_gpr_gpr_gpr
inst_and_gpr_gpr_gpr ¶
inst_and_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_andi ¶
inst_andi :: inst_andi_gpr_gpr_imm16
inst_andi_gpr_gpr_imm16 ¶
inst_andi_gpr_gpr_imm16 :: proc "contextless" (a: Register, b: Register, imm: i64) -> Instruction {…}
inst_beq ¶
inst_beq :: inst_beq_gpr_gpr_rel
inst_beq_gpr_gpr_rel ¶
inst_beq_gpr_gpr_rel :: proc "contextless" (a: Register, b: Register, label_id: u32) -> Instruction {…}
inst_bgez ¶
inst_bgez :: inst_bgez_gpr_rel
inst_bgez_gpr_rel ¶
inst_bgez_gpr_rel :: proc "contextless" (a: Register, label_id: u32) -> Instruction {…}
inst_bgezal ¶
inst_bgezal :: inst_bgezal_gpr_rel
inst_bgezal_gpr_rel ¶
inst_bgezal_gpr_rel :: proc "contextless" (a: Register, label_id: u32) -> Instruction {…}
inst_bgtz ¶
inst_bgtz :: inst_bgtz_gpr_rel
inst_bgtz_gpr_rel ¶
inst_bgtz_gpr_rel :: proc "contextless" (a: Register, label_id: u32) -> Instruction {…}
inst_blez ¶
inst_blez :: inst_blez_gpr_rel
inst_blez_gpr_rel ¶
inst_blez_gpr_rel :: proc "contextless" (a: Register, label_id: u32) -> Instruction {…}
inst_bltz ¶
inst_bltz :: inst_bltz_gpr_rel
inst_bltz_gpr_rel ¶
inst_bltz_gpr_rel :: proc "contextless" (a: Register, label_id: u32) -> Instruction {…}
inst_bltzal ¶
inst_bltzal :: inst_bltzal_gpr_rel
inst_bltzal_gpr_rel ¶
inst_bltzal_gpr_rel :: proc "contextless" (a: Register, label_id: u32) -> Instruction {…}
inst_bne ¶
inst_bne :: inst_bne_gpr_gpr_rel
inst_bne_gpr_gpr_rel ¶
inst_bne_gpr_gpr_rel :: proc "contextless" (a: Register, b: Register, label_id: u32) -> Instruction {…}
inst_branch1 ¶
inst_branch1 :: proc "contextless" (m: Mnemonic, rs: Register, label_id: u32) -> Instruction {…}
Branch helpers
inst_branch2 ¶
inst_branch2 :: proc "contextless" (m: Mnemonic, rs, rt: Register, label_id: u32) -> Instruction {…}
inst_break ¶
inst_break :: inst_break_imm20
inst_break_imm20 ¶
inst_break_imm20 :: proc "contextless" (imm: i64) -> Instruction {…}
inst_cfc2 ¶
inst_cfc2 :: inst_cfc2_gpr_cp2
inst_cfc2_gpr_cp2 ¶
inst_cfc2_gpr_cp2 :: proc "contextless" (a: Register, b: Register) -> Instruction {…}
inst_ctc2 ¶
inst_ctc2 :: inst_ctc2_gpr_cp2
inst_ctc2_gpr_cp2 ¶
inst_ctc2_gpr_cp2 :: proc "contextless" (a: Register, b: Register) -> Instruction {…}
inst_j ¶
inst_j :: inst_j_rel
inst_j_rel ¶
inst_j_rel :: proc "contextless" (label_id: u32) -> Instruction {…}
inst_jal ¶
inst_jal :: inst_jal_rel
inst_jal_rel ¶
inst_jal_rel :: proc "contextless" (label_id: u32) -> Instruction {…}
inst_jalr ¶
inst_jalr :: inst_jalr_gpr_gpr
inst_jalr_gpr_gpr ¶
inst_jalr_gpr_gpr :: proc "contextless" (a: Register, b: Register) -> Instruction {…}
inst_jr ¶
inst_jr :: inst_jr_gpr
inst_jr_gpr ¶
inst_jr_gpr :: proc "contextless" (a: Register) -> Instruction {…}
inst_jump ¶
inst_jump :: proc "contextless" (m: Mnemonic, label_id: u32) -> Instruction {…}
inst_lb ¶
inst_lb :: inst_lb_gpr_mem
inst_lb_gpr_mem ¶
inst_lb_gpr_mem :: proc "contextless" (a: Register, m: Memory) -> Instruction {…}
inst_lbu ¶
inst_lbu :: inst_lbu_gpr_mem
inst_lbu_gpr_mem ¶
inst_lbu_gpr_mem :: proc "contextless" (a: Register, m: Memory) -> Instruction {…}
inst_lbv ¶
inst_lbv :: inst_lbv_vr_vmem
inst_lbv_vr_vmem ¶
inst_lbv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_ldv ¶
inst_ldv :: inst_ldv_vr_vmem
inst_ldv_vr_vmem ¶
inst_ldv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_lfv ¶
inst_lfv :: inst_lfv_vr_vmem
inst_lfv_vr_vmem ¶
inst_lfv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_lh ¶
inst_lh :: inst_lh_gpr_mem
inst_lh_gpr_mem ¶
inst_lh_gpr_mem :: proc "contextless" (a: Register, m: Memory) -> Instruction {…}
inst_lhu ¶
inst_lhu :: inst_lhu_gpr_mem
inst_lhu_gpr_mem ¶
inst_lhu_gpr_mem :: proc "contextless" (a: Register, m: Memory) -> Instruction {…}
inst_lhv ¶
inst_lhv :: inst_lhv_vr_vmem
inst_lhv_vr_vmem ¶
inst_lhv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_llv ¶
inst_llv :: inst_llv_vr_vmem
inst_llv_vr_vmem ¶
inst_llv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_lpv ¶
inst_lpv :: inst_lpv_vr_vmem
inst_lpv_vr_vmem ¶
inst_lpv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_lqv ¶
inst_lqv :: inst_lqv_vr_vmem
inst_lqv_vr_vmem ¶
inst_lqv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_lrv ¶
inst_lrv :: inst_lrv_vr_vmem
inst_lrv_vr_vmem ¶
inst_lrv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_lsv ¶
inst_lsv :: inst_lsv_vr_vmem
inst_lsv_vr_vmem ¶
inst_lsv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_ltv ¶
inst_ltv :: inst_ltv_vr_vmem
inst_ltv_vr_vmem ¶
inst_ltv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_lui ¶
inst_lui :: inst_lui_gpr_imm16
inst_lui_gpr_imm16 ¶
inst_lui_gpr_imm16 :: proc "contextless" (a: Register, imm: i64) -> Instruction {…}
inst_luv ¶
inst_luv :: inst_luv_vr_vmem
inst_luv_vr_vmem ¶
inst_luv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_lw ¶
inst_lw :: inst_lw_gpr_mem
inst_lw_gpr_mem ¶
inst_lw_gpr_mem :: proc "contextless" (a: Register, m: Memory) -> Instruction {…}
inst_lwv ¶
inst_lwv :: inst_lwv_vr_vmem
inst_lwv_vr_vmem ¶
inst_lwv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_mfc0 ¶
inst_mfc0 :: inst_mfc0_gpr_cp0
inst_mfc0_gpr_cp0 ¶
inst_mfc0_gpr_cp0 :: proc "contextless" (a: Register, b: Register) -> Instruction {…}
inst_mfc2 ¶
inst_mfc2 :: inst_mfc2_gpr_vr
inst_mfc2_gpr_vr ¶
inst_mfc2_gpr_vr :: proc "contextless" (a: Register, b: Register) -> Instruction {…}
inst_mtc0 ¶
inst_mtc0 :: inst_mtc0_gpr_cp0
inst_mtc0_gpr_cp0 ¶
inst_mtc0_gpr_cp0 :: proc "contextless" (a: Register, b: Register) -> Instruction {…}
inst_mtc2 ¶
inst_mtc2 :: inst_mtc2_gpr_vr
inst_mtc2_gpr_vr ¶
inst_mtc2_gpr_vr :: proc "contextless" (a: Register, b: Register) -> Instruction {…}
inst_none ¶
inst_none :: proc "contextless" (m: Mnemonic) -> Instruction {…}
inst_nop ¶
inst_nop :: inst_nop_none
inst_nop_none ¶
inst_nop_none :: proc "contextless" () -> Instruction {…}
inst_nor ¶
inst_nor :: inst_nor_gpr_gpr_gpr
inst_nor_gpr_gpr_gpr ¶
inst_nor_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_or ¶
inst_or :: inst_or_gpr_gpr_gpr
inst_or_gpr_gpr_gpr ¶
inst_or_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_ori ¶
inst_ori :: inst_ori_gpr_gpr_imm16
inst_ori_gpr_gpr_imm16 ¶
inst_ori_gpr_gpr_imm16 :: proc "contextless" (a: Register, b: Register, imm: i64) -> Instruction {…}
inst_r ¶
inst_r :: proc "contextless" (m: Mnemonic, a: Register) -> Instruction {…}
inst_r_i ¶
inst_r_i :: proc "contextless" (m: Mnemonic, rt: Register, imm: i64) -> Instruction {…}
inst_r_m ¶
inst_r_m :: proc "contextless" (m: Mnemonic, r: Register, mm: Memory, size: u8 = 4) -> Instruction {…}
inst_r_r ¶
inst_r_r :: proc "contextless" (m: Mnemonic, d, s: Register) -> Instruction {…}
inst_r_r_i ¶
inst_r_r_i :: proc "contextless" (m: Mnemonic, rt, rs: Register, imm: i64) -> Instruction {…}
inst_r_r_r ¶
inst_r_r_r :: proc "contextless" (m: Mnemonic, d, s1, s2: Register) -> Instruction {…}
inst_sb ¶
inst_sb :: inst_sb_gpr_mem
inst_sb_gpr_mem ¶
inst_sb_gpr_mem :: proc "contextless" (a: Register, m: Memory) -> Instruction {…}
inst_sbv ¶
inst_sbv :: inst_sbv_vr_vmem
inst_sbv_vr_vmem ¶
inst_sbv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_sdv ¶
inst_sdv :: inst_sdv_vr_vmem
inst_sdv_vr_vmem ¶
inst_sdv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_sfv ¶
inst_sfv :: inst_sfv_vr_vmem
inst_sfv_vr_vmem ¶
inst_sfv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_sh ¶
inst_sh :: inst_sh_gpr_mem
inst_sh_gpr_mem ¶
inst_sh_gpr_mem :: proc "contextless" (a: Register, m: Memory) -> Instruction {…}
inst_shv ¶
inst_shv :: inst_shv_vr_vmem
inst_shv_vr_vmem ¶
inst_shv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_sll ¶
inst_sll :: inst_sll_gpr_gpr_imm5
inst_sll_gpr_gpr_imm5 ¶
inst_sll_gpr_gpr_imm5 :: proc "contextless" (a: Register, b: Register, imm: i64) -> Instruction {…}
inst_sllv ¶
inst_sllv :: inst_sllv_gpr_gpr_gpr
inst_sllv_gpr_gpr_gpr ¶
inst_sllv_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_slt ¶
inst_slt :: inst_slt_gpr_gpr_gpr
inst_slt_gpr_gpr_gpr ¶
inst_slt_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_slti ¶
inst_slti :: inst_slti_gpr_gpr_imm16
inst_slti_gpr_gpr_imm16 ¶
inst_slti_gpr_gpr_imm16 :: proc "contextless" (a: Register, b: Register, imm: i64) -> Instruction {…}
inst_sltiu ¶
inst_sltiu :: inst_sltiu_gpr_gpr_imm16
inst_sltiu_gpr_gpr_imm16 ¶
inst_sltiu_gpr_gpr_imm16 :: proc "contextless" (a: Register, b: Register, imm: i64) -> Instruction {…}
inst_sltu ¶
inst_sltu :: inst_sltu_gpr_gpr_gpr
inst_sltu_gpr_gpr_gpr ¶
inst_sltu_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_slv ¶
inst_slv :: inst_slv_vr_vmem
inst_slv_vr_vmem ¶
inst_slv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_spv ¶
inst_spv :: inst_spv_vr_vmem
inst_spv_vr_vmem ¶
inst_spv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_sqv ¶
inst_sqv :: inst_sqv_vr_vmem
inst_sqv_vr_vmem ¶
inst_sqv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_sra ¶
inst_sra :: inst_sra_gpr_gpr_imm5
inst_sra_gpr_gpr_imm5 ¶
inst_sra_gpr_gpr_imm5 :: proc "contextless" (a: Register, b: Register, imm: i64) -> Instruction {…}
inst_srav ¶
inst_srav :: inst_srav_gpr_gpr_gpr
inst_srav_gpr_gpr_gpr ¶
inst_srav_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_srl ¶
inst_srl :: inst_srl_gpr_gpr_imm5
inst_srl_gpr_gpr_imm5 ¶
inst_srl_gpr_gpr_imm5 :: proc "contextless" (a: Register, b: Register, imm: i64) -> Instruction {…}
inst_srlv ¶
inst_srlv :: inst_srlv_gpr_gpr_gpr
inst_srlv_gpr_gpr_gpr ¶
inst_srlv_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_srv ¶
inst_srv :: inst_srv_vr_vmem
inst_srv_vr_vmem ¶
inst_srv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_ssv ¶
inst_ssv :: inst_ssv_vr_vmem
inst_ssv_vr_vmem ¶
inst_ssv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_stv ¶
inst_stv :: inst_stv_vr_vmem
inst_stv_vr_vmem ¶
inst_stv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_sub ¶
inst_sub :: inst_sub_gpr_gpr_gpr
inst_sub_gpr_gpr_gpr ¶
inst_sub_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_subu ¶
inst_subu :: inst_subu_gpr_gpr_gpr
inst_subu_gpr_gpr_gpr ¶
inst_subu_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_suv ¶
inst_suv :: inst_suv_vr_vmem
inst_suv_vr_vmem ¶
inst_suv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_sw ¶
inst_sw :: inst_sw_gpr_mem
inst_sw_gpr_mem ¶
inst_sw_gpr_mem :: proc "contextless" (a: Register, m: Memory) -> Instruction {…}
inst_swv ¶
inst_swv :: inst_swv_vr_vmem
inst_swv_vr_vmem ¶
inst_swv_vr_vmem :: proc "contextless" (a: Register, m: Vector_Mem) -> Instruction {…}
inst_v_v_v ¶
inst_v_v_v :: proc "contextless" (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 ¶
inst_v_vmem :: proc "contextless" (m: Mnemonic, vt: Register, vmem_op: Vector_Mem) -> Instruction {…}
Vector load/store: $vt[element], offset(base).
inst_vabs ¶
inst_vabs :: inst_vabs_vr_vr_vr
inst_vabs_vr_vr_vr ¶
inst_vabs_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vadd ¶
inst_vadd :: inst_vadd_vr_vr_vr
inst_vadd_vr_vr_vr ¶
inst_vadd_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vaddc ¶
inst_vaddc :: inst_vaddc_vr_vr_vr
inst_vaddc_vr_vr_vr ¶
inst_vaddc_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vand ¶
inst_vand :: inst_vand_vr_vr_vr
inst_vand_vr_vr_vr ¶
inst_vand_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vch ¶
inst_vch :: inst_vch_vr_vr_vr
inst_vch_vr_vr_vr ¶
inst_vch_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vcl ¶
inst_vcl :: inst_vcl_vr_vr_vr
inst_vcl_vr_vr_vr ¶
inst_vcl_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vcr ¶
inst_vcr :: inst_vcr_vr_vr_vr
inst_vcr_vr_vr_vr ¶
inst_vcr_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_veq ¶
inst_veq :: inst_veq_vr_vr_vr
inst_veq_vr_vr_vr ¶
inst_veq_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vge ¶
inst_vge :: inst_vge_vr_vr_vr
inst_vge_vr_vr_vr ¶
inst_vge_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vlt ¶
inst_vlt :: inst_vlt_vr_vr_vr
inst_vlt_vr_vr_vr ¶
inst_vlt_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmacf ¶
inst_vmacf :: inst_vmacf_vr_vr_vr
inst_vmacf_vr_vr_vr ¶
inst_vmacf_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmacu ¶
inst_vmacu :: inst_vmacu_vr_vr_vr
inst_vmacu_vr_vr_vr ¶
inst_vmacu_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmadh ¶
inst_vmadh :: inst_vmadh_vr_vr_vr
inst_vmadh_vr_vr_vr ¶
inst_vmadh_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmadl ¶
inst_vmadl :: inst_vmadl_vr_vr_vr
inst_vmadl_vr_vr_vr ¶
inst_vmadl_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmadm ¶
inst_vmadm :: inst_vmadm_vr_vr_vr
inst_vmadm_vr_vr_vr ¶
inst_vmadm_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmadn ¶
inst_vmadn :: inst_vmadn_vr_vr_vr
inst_vmadn_vr_vr_vr ¶
inst_vmadn_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmov ¶
inst_vmov :: inst_vmov_vr_vr
inst_vmov_vr_vr ¶
inst_vmov_vr_vr :: proc "contextless" (a: Register, b: Register, element: u8 = 0) -> Instruction {…}
inst_vmrg ¶
inst_vmrg :: inst_vmrg_vr_vr_vr
inst_vmrg_vr_vr_vr ¶
inst_vmrg_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmudh ¶
inst_vmudh :: inst_vmudh_vr_vr_vr
inst_vmudh_vr_vr_vr ¶
inst_vmudh_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmudl ¶
inst_vmudl :: inst_vmudl_vr_vr_vr
inst_vmudl_vr_vr_vr ¶
inst_vmudl_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmudm ¶
inst_vmudm :: inst_vmudm_vr_vr_vr
inst_vmudm_vr_vr_vr ¶
inst_vmudm_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmudn ¶
inst_vmudn :: inst_vmudn_vr_vr_vr
inst_vmudn_vr_vr_vr ¶
inst_vmudn_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmulf ¶
inst_vmulf :: inst_vmulf_vr_vr_vr
inst_vmulf_vr_vr_vr ¶
inst_vmulf_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vmulu ¶
inst_vmulu :: inst_vmulu_vr_vr_vr
inst_vmulu_vr_vr_vr ¶
inst_vmulu_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vnand ¶
inst_vnand :: inst_vnand_vr_vr_vr
inst_vnand_vr_vr_vr ¶
inst_vnand_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vne ¶
inst_vne :: inst_vne_vr_vr_vr
inst_vne_vr_vr_vr ¶
inst_vne_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vnop ¶
inst_vnop :: inst_vnop_none
inst_vnop_none ¶
inst_vnop_none :: proc "contextless" () -> Instruction {…}
inst_vnor ¶
inst_vnor :: inst_vnor_vr_vr_vr
inst_vnor_vr_vr_vr ¶
inst_vnor_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vnxor ¶
inst_vnxor :: inst_vnxor_vr_vr_vr
inst_vnxor_vr_vr_vr ¶
inst_vnxor_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vor ¶
inst_vor :: inst_vor_vr_vr_vr
inst_vor_vr_vr_vr ¶
inst_vor_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vrcp ¶
inst_vrcp :: inst_vrcp_vr_vr_vr
inst_vrcp_vr_vr_vr ¶
inst_vrcp_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vrcph ¶
inst_vrcph :: inst_vrcph_vr_vr_vr
inst_vrcph_vr_vr_vr ¶
inst_vrcph_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vrcpl ¶
inst_vrcpl :: inst_vrcpl_vr_vr_vr
inst_vrcpl_vr_vr_vr ¶
inst_vrcpl_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vrsq ¶
inst_vrsq :: inst_vrsq_vr_vr_vr
inst_vrsq_vr_vr_vr ¶
inst_vrsq_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vrsqh ¶
inst_vrsqh :: inst_vrsqh_vr_vr_vr
inst_vrsqh_vr_vr_vr ¶
inst_vrsqh_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vrsql ¶
inst_vrsql :: inst_vrsql_vr_vr_vr
inst_vrsql_vr_vr_vr ¶
inst_vrsql_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vsar ¶
inst_vsar :: inst_vsar_vr_vr_vr
inst_vsar_vr_vr_vr ¶
inst_vsar_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vsub ¶
inst_vsub :: inst_vsub_vr_vr_vr
inst_vsub_vr_vr_vr ¶
inst_vsub_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vsubc ¶
inst_vsubc :: inst_vsubc_vr_vr_vr
inst_vsubc_vr_vr_vr ¶
inst_vsubc_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_vxor ¶
inst_vxor :: inst_vxor_vr_vr_vr
inst_vxor_vr_vr_vr ¶
inst_vxor_vr_vr_vr :: proc "contextless" (a: Register, b: Register, c: Register, element: u8 = 0) -> Instruction {…}
inst_xor ¶
inst_xor :: inst_xor_gpr_gpr_gpr
inst_xor_gpr_gpr_gpr ¶
inst_xor_gpr_gpr_gpr :: proc "contextless" (a: Register, b: Register, c: Register) -> Instruction {…}
inst_xori ¶
inst_xori :: inst_xori_gpr_gpr_imm16
inst_xori_gpr_gpr_imm16 ¶
inst_xori_gpr_gpr_imm16 :: proc "contextless" (a: Register, b: Register, imm: i64) -> Instruction {…}
mnemonic_to_string ¶
mnemonic_to_string :: proc(m: Mnemonic, lowercase: bool = true, allocator := context.temp_allocator) -> string {…}
op_vmem ¶
op_vmem :: proc "contextless" (m: Vector_Mem, size: u8) -> Operand {…}
print ¶
print :: proc( 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[u32]string = nil, ) {…}
println ¶
println :: proc( 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[u32]string = nil, ) {…}
read_u32 ¶
read_u32 :: proc "contextless" (code: []u8, offset: u32, endianness: Endianness) -> u32 {…}
register_name ¶
register_name :: proc(r: Register, lowercase: bool = true, allocator := context.temp_allocator) -> string {…}
sbprint ¶
sbprint :: proc( 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[u32]string = nil, ) {…}
sbprintln ¶
sbprintln :: proc( 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[u32]string = nil, ) {…}
tprint ¶
tprint :: proc( 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[u32]string = nil, ) -> string {…}
tprintln ¶
tprintln :: proc( 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[u32]string = nil, ) -> string {…}
vmem ¶
vmem :: proc "contextless" (base: Register, element: u8, offset: i32) -> Vector_Mem {…}
wprint ¶
wprint :: proc( 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[u32]string = nil, ) {…}
wprintln ¶
wprintln :: proc( 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[u32]string = nil, ) {…}
write_u32 ¶
write_u32 :: proc "contextless" (code: []u8, offset: u32, word: u32, endianness: Endianness) {…}
Procedure Groups
This section is empty.
Source Files
- decoder.odin
- encoder.odin
- encoding_types.odin
- instructions.odin
- mnemonic_builders.odin
- mnemonics.odin
- operands.odin
- printer.odin
- registers.odin
- reloc.odin
- tables.odin
Generation Information
Generated with odin version dev-2026-07 (vendor "odin") Windows_amd64 @ 2026-07-20 21:55:41.563334400 +0000 UTC