mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-20 09:02:32 +00:00
Every mnemonic with an encode form now has a generated inst_<mnem>/emit_<mnem> overload group. The per-arch generators map ALL operand types — nothing is skipped: arm64 gains shifted/extended registers (multi-param via op_shifted/op_extended), SVE Z-regs + predicates, SME tile/slice, NEON arrangements/lanes, bitmask/sysreg/pattern immediates and condition codes (427 -> 777 mnemonics); arm32 gains shifted/register-shifted regs, register lists, NEON lanes and all encoded-immediate subclasses (479 -> 592); x86 gains m80 and descriptor-table memory operands — FBLD/FBSTP, LGDT/SGDT/LIDT/SIDT, FLD/FSTP, far-indirect JMP/CALL, BOUND (1167 -> 1175). Mnemonic-specific builders are now fully generated, not hand-written: deleted the hand-written helpers the generated groups collided with — riscv inst_jal/inst_jalr, arm64 inst_b_cond/inst_cbz/inst_tbz/inst_csel, mos6502 inst_tst — and let the generators own those names (arm64 also gains inst_cbnz/tbnz/csinc/csinv/csneg). Updated the affected test call-sites. The generic operand-shape helpers (inst_r_r, inst_r_r_i, inst_ldst, ...) remain as delegation targets. Decode-only mnemonics with no encode form are correctly left without builders. ppc/ppc_vle/rsp/mos65816 were already complete. All 10 ISAs: structure + compile + tests pass; generators idempotent.
804 lines
100 KiB
Odin
804 lines
100 KiB
Odin
// rexcode · Brendan Punsky (dotbmp@github), original author
|
|
|
|
package rexcode_riscv
|
|
|
|
// =============================================================================
|
|
// GENERATED FILE - DO NOT EDIT
|
|
// =============================================================================
|
|
//
|
|
// Generated by gen_mnemonic_builders.odin from ENCODE_RUNS / ENCODE_FORMS.
|
|
// Regenerate with: odin run riscv/tools/gen_mnemonic_builders.odin -file
|
|
//
|
|
// Typed mnemonic builder procedures with overloading. Each mnemonic has one or
|
|
// more overloaded variants for its operand shapes. inst_<mnem> returns an
|
|
// Instruction; emit_<mnem> appends it to a ^[dynamic]Instruction.
|
|
//
|
|
// Register operands take the typed GPR / FPR enums (registers.odin); immediates
|
|
// take i64; PC-relative targets take a u32 label id; memory takes Memory.
|
|
|
|
// =============================================================================
|
|
// Individual Typed Builder Procedures
|
|
// =============================================================================
|
|
|
|
inst_lui_gpr_imm20 :: #force_inline proc "contextless" (rd: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .LUI, operand_count = 2, length = 4, ops = {op_gpr(rd), op_imm(imm, 4), {}, {}}} }
|
|
emit_lui_gpr_imm20 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64) { append(instructions, inst_lui_gpr_imm20(rd, imm)) }
|
|
inst_auipc_gpr_imm20 :: #force_inline proc "contextless" (rd: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .AUIPC, operand_count = 2, length = 4, ops = {op_gpr(rd), op_imm(imm, 4), {}, {}}} }
|
|
emit_auipc_gpr_imm20 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64) { append(instructions, inst_auipc_gpr_imm20(rd, imm)) }
|
|
inst_jal_gpr_label :: #force_inline proc "contextless" (rd: GPR, label: u32) -> Instruction { return Instruction{mnemonic = .JAL, operand_count = 2, length = 4, ops = {op_gpr(rd), op_label(label, 4), {}, {}}} }
|
|
emit_jal_gpr_label :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, label: u32) { append(instructions, inst_jal_gpr_label(rd, label)) }
|
|
inst_jalr_gpr_gpr_imm12 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .JALR, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 2), {}}} }
|
|
emit_jalr_gpr_gpr_imm12 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_jalr_gpr_gpr_imm12(rd, rs1, imm)) }
|
|
inst_beq_gpr_gpr_label :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, label: u32) -> Instruction { return Instruction{mnemonic = .BEQ, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_label(label, 2), {}}} }
|
|
emit_beq_gpr_gpr_label :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, label: u32) { append(instructions, inst_beq_gpr_gpr_label(rd, rs1, label)) }
|
|
inst_bne_gpr_gpr_label :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, label: u32) -> Instruction { return Instruction{mnemonic = .BNE, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_label(label, 2), {}}} }
|
|
emit_bne_gpr_gpr_label :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, label: u32) { append(instructions, inst_bne_gpr_gpr_label(rd, rs1, label)) }
|
|
inst_blt_gpr_gpr_label :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, label: u32) -> Instruction { return Instruction{mnemonic = .BLT, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_label(label, 2), {}}} }
|
|
emit_blt_gpr_gpr_label :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, label: u32) { append(instructions, inst_blt_gpr_gpr_label(rd, rs1, label)) }
|
|
inst_bge_gpr_gpr_label :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, label: u32) -> Instruction { return Instruction{mnemonic = .BGE, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_label(label, 2), {}}} }
|
|
emit_bge_gpr_gpr_label :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, label: u32) { append(instructions, inst_bge_gpr_gpr_label(rd, rs1, label)) }
|
|
inst_bltu_gpr_gpr_label :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, label: u32) -> Instruction { return Instruction{mnemonic = .BLTU, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_label(label, 2), {}}} }
|
|
emit_bltu_gpr_gpr_label :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, label: u32) { append(instructions, inst_bltu_gpr_gpr_label(rd, rs1, label)) }
|
|
inst_bgeu_gpr_gpr_label :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, label: u32) -> Instruction { return Instruction{mnemonic = .BGEU, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_label(label, 2), {}}} }
|
|
emit_bgeu_gpr_gpr_label :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, label: u32) { append(instructions, inst_bgeu_gpr_gpr_label(rd, rs1, label)) }
|
|
inst_lb_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .LB, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_lb_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_lb_gpr_mem(rd, mem)) }
|
|
inst_lh_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .LH, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_lh_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_lh_gpr_mem(rd, mem)) }
|
|
inst_lw_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .LW, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_lw_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_lw_gpr_mem(rd, mem)) }
|
|
inst_lbu_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .LBU, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_lbu_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_lbu_gpr_mem(rd, mem)) }
|
|
inst_lhu_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .LHU, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_lhu_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_lhu_gpr_mem(rd, mem)) }
|
|
inst_sb_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .SB, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_sb_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_sb_gpr_mem(rd, mem)) }
|
|
inst_sh_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .SH, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_sh_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_sh_gpr_mem(rd, mem)) }
|
|
inst_sw_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .SW, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_sw_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_sw_gpr_mem(rd, mem)) }
|
|
inst_lwu_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .LWU, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_lwu_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_lwu_gpr_mem(rd, mem)) }
|
|
inst_ld_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .LD, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_ld_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_ld_gpr_mem(rd, mem)) }
|
|
inst_sd_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .SD, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_sd_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_sd_gpr_mem(rd, mem)) }
|
|
inst_addi_gpr_gpr_imm12 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .ADDI, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 2), {}}} }
|
|
emit_addi_gpr_gpr_imm12 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_addi_gpr_gpr_imm12(rd, rs1, imm)) }
|
|
inst_slti_gpr_gpr_imm12 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SLTI, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 2), {}}} }
|
|
emit_slti_gpr_gpr_imm12 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_slti_gpr_gpr_imm12(rd, rs1, imm)) }
|
|
inst_sltiu_gpr_gpr_imm12 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SLTIU, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 2), {}}} }
|
|
emit_sltiu_gpr_gpr_imm12 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_sltiu_gpr_gpr_imm12(rd, rs1, imm)) }
|
|
inst_xori_gpr_gpr_imm12 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .XORI, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 2), {}}} }
|
|
emit_xori_gpr_gpr_imm12 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_xori_gpr_gpr_imm12(rd, rs1, imm)) }
|
|
inst_ori_gpr_gpr_imm12 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .ORI, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 2), {}}} }
|
|
emit_ori_gpr_gpr_imm12 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_ori_gpr_gpr_imm12(rd, rs1, imm)) }
|
|
inst_andi_gpr_gpr_imm12 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .ANDI, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 2), {}}} }
|
|
emit_andi_gpr_gpr_imm12 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_andi_gpr_gpr_imm12(rd, rs1, imm)) }
|
|
inst_slli_gpr_gpr_imm6 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SLLI, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 1), {}}} }
|
|
emit_slli_gpr_gpr_imm6 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_slli_gpr_gpr_imm6(rd, rs1, imm)) }
|
|
inst_srli_gpr_gpr_imm6 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SRLI, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 1), {}}} }
|
|
emit_srli_gpr_gpr_imm6 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_srli_gpr_gpr_imm6(rd, rs1, imm)) }
|
|
inst_srai_gpr_gpr_imm6 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SRAI, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 1), {}}} }
|
|
emit_srai_gpr_gpr_imm6 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_srai_gpr_gpr_imm6(rd, rs1, imm)) }
|
|
inst_addiw_gpr_gpr_imm12 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .ADDIW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 2), {}}} }
|
|
emit_addiw_gpr_gpr_imm12 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_addiw_gpr_gpr_imm12(rd, rs1, imm)) }
|
|
inst_slliw_gpr_gpr_imm5 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SLLIW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 1), {}}} }
|
|
emit_slliw_gpr_gpr_imm5 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_slliw_gpr_gpr_imm5(rd, rs1, imm)) }
|
|
inst_srliw_gpr_gpr_imm5 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SRLIW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 1), {}}} }
|
|
emit_srliw_gpr_gpr_imm5 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_srliw_gpr_gpr_imm5(rd, rs1, imm)) }
|
|
inst_sraiw_gpr_gpr_imm5 :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SRAIW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 1), {}}} }
|
|
emit_sraiw_gpr_gpr_imm5 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_sraiw_gpr_gpr_imm5(rd, rs1, imm)) }
|
|
inst_add_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .ADD, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_add_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_add_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_sub_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .SUB, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_sub_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_sub_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_sll_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .SLL, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_sll_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_sll_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_slt_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .SLT, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_slt_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_slt_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_sltu_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .SLTU, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_sltu_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_sltu_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_xor_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .XOR, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_xor_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_xor_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_srl_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .SRL, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_srl_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_srl_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_sra_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .SRA, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_sra_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_sra_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_or_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .OR, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_or_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_or_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_and_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .AND, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_and_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_and_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_addw_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .ADDW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_addw_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_addw_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_subw_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .SUBW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_subw_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_subw_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_sllw_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .SLLW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_sllw_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_sllw_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_srlw_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .SRLW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_srlw_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_srlw_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_sraw_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .SRAW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_sraw_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_sraw_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_fence_fence_fence :: #force_inline proc "contextless" (imm: i64, imm2: i64) -> Instruction { return Instruction{mnemonic = .FENCE, operand_count = 2, length = 4, ops = {op_imm(imm, 1), op_imm(imm2, 1), {}, {}}} }
|
|
emit_fence_fence_fence :: #force_inline proc(instructions: ^[dynamic]Instruction, imm: i64, imm2: i64) { append(instructions, inst_fence_fence_fence(imm, imm2)) }
|
|
inst_fence_i_none :: #force_inline proc "contextless" () -> Instruction { return inst_none(.FENCE_I) }
|
|
emit_fence_i_none :: #force_inline proc(instructions: ^[dynamic]Instruction) { append(instructions, inst_fence_i_none()) }
|
|
inst_ecall_none :: #force_inline proc "contextless" () -> Instruction { return inst_none(.ECALL) }
|
|
emit_ecall_none :: #force_inline proc(instructions: ^[dynamic]Instruction) { append(instructions, inst_ecall_none()) }
|
|
inst_ebreak_none :: #force_inline proc "contextless" () -> Instruction { return inst_none(.EBREAK) }
|
|
emit_ebreak_none :: #force_inline proc(instructions: ^[dynamic]Instruction) { append(instructions, inst_ebreak_none()) }
|
|
inst_csrrw_gpr_csr_gpr :: #force_inline proc "contextless" (rd: GPR, imm: i64, rs1: GPR) -> Instruction { return Instruction{mnemonic = .CSRRW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_imm(imm, 2), op_gpr(rs1), {}}} }
|
|
emit_csrrw_gpr_csr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64, rs1: GPR) { append(instructions, inst_csrrw_gpr_csr_gpr(rd, imm, rs1)) }
|
|
inst_csrrs_gpr_csr_gpr :: #force_inline proc "contextless" (rd: GPR, imm: i64, rs1: GPR) -> Instruction { return Instruction{mnemonic = .CSRRS, operand_count = 3, length = 4, ops = {op_gpr(rd), op_imm(imm, 2), op_gpr(rs1), {}}} }
|
|
emit_csrrs_gpr_csr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64, rs1: GPR) { append(instructions, inst_csrrs_gpr_csr_gpr(rd, imm, rs1)) }
|
|
inst_csrrc_gpr_csr_gpr :: #force_inline proc "contextless" (rd: GPR, imm: i64, rs1: GPR) -> Instruction { return Instruction{mnemonic = .CSRRC, operand_count = 3, length = 4, ops = {op_gpr(rd), op_imm(imm, 2), op_gpr(rs1), {}}} }
|
|
emit_csrrc_gpr_csr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64, rs1: GPR) { append(instructions, inst_csrrc_gpr_csr_gpr(rd, imm, rs1)) }
|
|
inst_csrrwi_gpr_csr_zimm5 :: #force_inline proc "contextless" (rd: GPR, imm: i64, imm2: i64) -> Instruction { return Instruction{mnemonic = .CSRRWI, operand_count = 3, length = 4, ops = {op_gpr(rd), op_imm(imm, 2), op_imm(imm2, 1), {}}} }
|
|
emit_csrrwi_gpr_csr_zimm5 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64, imm2: i64) { append(instructions, inst_csrrwi_gpr_csr_zimm5(rd, imm, imm2)) }
|
|
inst_csrrsi_gpr_csr_zimm5 :: #force_inline proc "contextless" (rd: GPR, imm: i64, imm2: i64) -> Instruction { return Instruction{mnemonic = .CSRRSI, operand_count = 3, length = 4, ops = {op_gpr(rd), op_imm(imm, 2), op_imm(imm2, 1), {}}} }
|
|
emit_csrrsi_gpr_csr_zimm5 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64, imm2: i64) { append(instructions, inst_csrrsi_gpr_csr_zimm5(rd, imm, imm2)) }
|
|
inst_csrrci_gpr_csr_zimm5 :: #force_inline proc "contextless" (rd: GPR, imm: i64, imm2: i64) -> Instruction { return Instruction{mnemonic = .CSRRCI, operand_count = 3, length = 4, ops = {op_gpr(rd), op_imm(imm, 2), op_imm(imm2, 1), {}}} }
|
|
emit_csrrci_gpr_csr_zimm5 :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64, imm2: i64) { append(instructions, inst_csrrci_gpr_csr_zimm5(rd, imm, imm2)) }
|
|
inst_mul_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .MUL, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_mul_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_mul_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_mulh_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .MULH, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_mulh_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_mulh_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_mulhsu_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .MULHSU, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_mulhsu_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_mulhsu_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_mulhu_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .MULHU, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_mulhu_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_mulhu_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_div_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .DIV, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_div_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_div_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_divu_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .DIVU, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_divu_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_divu_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_rem_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .REM, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_rem_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_rem_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_remu_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .REMU, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_remu_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_remu_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_mulw_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .MULW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_mulw_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_mulw_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_divw_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .DIVW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_divw_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_divw_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_divuw_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .DIVUW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_divuw_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_divuw_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_remw_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .REMW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_remw_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_remw_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_remuw_gpr_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, rs2: GPR) -> Instruction { return Instruction{mnemonic = .REMUW, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_gpr(rs2), {}}} }
|
|
emit_remuw_gpr_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, rs2: GPR) { append(instructions, inst_remuw_gpr_gpr_gpr(rd, rs1, rs2)) }
|
|
inst_lr_w_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .LR_W, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_lr_w_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_lr_w_gpr_mem(rd, mem)) }
|
|
inst_sc_w_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .SC_W, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_sc_w_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_sc_w_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amoswap_w_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOSWAP_W, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amoswap_w_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amoswap_w_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amoadd_w_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOADD_W, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amoadd_w_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amoadd_w_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amoxor_w_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOXOR_W, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amoxor_w_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amoxor_w_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amoand_w_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOAND_W, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amoand_w_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amoand_w_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amoor_w_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOOR_W, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amoor_w_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amoor_w_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amomin_w_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOMIN_W, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amomin_w_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amomin_w_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amomax_w_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOMAX_W, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amomax_w_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amomax_w_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amominu_w_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOMINU_W, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amominu_w_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amominu_w_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amomaxu_w_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOMAXU_W, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amomaxu_w_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amomaxu_w_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_lr_d_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .LR_D, operand_count = 2, length = 4, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_lr_d_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_lr_d_gpr_mem(rd, mem)) }
|
|
inst_sc_d_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .SC_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_sc_d_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_sc_d_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amoswap_d_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOSWAP_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amoswap_d_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amoswap_d_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amoadd_d_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOADD_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amoadd_d_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amoadd_d_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amoxor_d_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOXOR_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amoxor_d_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amoxor_d_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amoand_d_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOAND_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amoand_d_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amoand_d_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amoor_d_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOOR_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amoor_d_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amoor_d_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amomin_d_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOMIN_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amomin_d_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amomin_d_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amomax_d_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOMAX_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amomax_d_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amomax_d_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amominu_d_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOMINU_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amominu_d_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amominu_d_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_amomaxu_d_gpr_gpr_mem :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .AMOMAXU_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_gpr(rs1), op_mem(mem), {}}} }
|
|
emit_amomaxu_d_gpr_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, mem: Memory) { append(instructions, inst_amomaxu_d_gpr_gpr_mem(rd, rs1, mem)) }
|
|
inst_flw_fpr_mem :: #force_inline proc "contextless" (rd: FPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .FLW, operand_count = 2, length = 4, ops = {op_fpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_flw_fpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, mem: Memory) { append(instructions, inst_flw_fpr_mem(rd, mem)) }
|
|
inst_fsw_fpr_mem :: #force_inline proc "contextless" (rd: FPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .FSW, operand_count = 2, length = 4, ops = {op_fpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_fsw_fpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, mem: Memory) { append(instructions, inst_fsw_fpr_mem(rd, mem)) }
|
|
inst_fmadd_s_fpr_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) -> Instruction { return Instruction{mnemonic = .FMADD_S, operand_count = 4, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), op_fpr(rs3)}} }
|
|
emit_fmadd_s_fpr_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) { append(instructions, inst_fmadd_s_fpr_fpr_fpr_fpr(rd, rs1, rs2, rs3)) }
|
|
inst_fmsub_s_fpr_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) -> Instruction { return Instruction{mnemonic = .FMSUB_S, operand_count = 4, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), op_fpr(rs3)}} }
|
|
emit_fmsub_s_fpr_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) { append(instructions, inst_fmsub_s_fpr_fpr_fpr_fpr(rd, rs1, rs2, rs3)) }
|
|
inst_fnmsub_s_fpr_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) -> Instruction { return Instruction{mnemonic = .FNMSUB_S, operand_count = 4, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), op_fpr(rs3)}} }
|
|
emit_fnmsub_s_fpr_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) { append(instructions, inst_fnmsub_s_fpr_fpr_fpr_fpr(rd, rs1, rs2, rs3)) }
|
|
inst_fnmadd_s_fpr_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) -> Instruction { return Instruction{mnemonic = .FNMADD_S, operand_count = 4, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), op_fpr(rs3)}} }
|
|
emit_fnmadd_s_fpr_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) { append(instructions, inst_fnmadd_s_fpr_fpr_fpr_fpr(rd, rs1, rs2, rs3)) }
|
|
inst_fadd_s_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FADD_S, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fadd_s_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fadd_s_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fsub_s_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FSUB_S, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fsub_s_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fsub_s_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fmul_s_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FMUL_S, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fmul_s_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fmul_s_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fdiv_s_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FDIV_S, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fdiv_s_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fdiv_s_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fsqrt_s_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FSQRT_S, operand_count = 2, length = 4, ops = {op_fpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fsqrt_s_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR) { append(instructions, inst_fsqrt_s_fpr_fpr(rd, rs1)) }
|
|
inst_fsgnj_s_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FSGNJ_S, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fsgnj_s_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fsgnj_s_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fsgnjn_s_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FSGNJN_S, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fsgnjn_s_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fsgnjn_s_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fsgnjx_s_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FSGNJX_S, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fsgnjx_s_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fsgnjx_s_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fmin_s_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FMIN_S, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fmin_s_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fmin_s_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fmax_s_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FMAX_S, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fmax_s_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fmax_s_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fcvt_w_s_gpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FCVT_W_S, operand_count = 2, length = 4, ops = {op_gpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fcvt_w_s_gpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR) { append(instructions, inst_fcvt_w_s_gpr_fpr(rd, rs1)) }
|
|
inst_fcvt_wu_s_gpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FCVT_WU_S, operand_count = 2, length = 4, ops = {op_gpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fcvt_wu_s_gpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR) { append(instructions, inst_fcvt_wu_s_gpr_fpr(rd, rs1)) }
|
|
inst_fmv_x_w_gpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FMV_X_W, operand_count = 2, length = 4, ops = {op_gpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fmv_x_w_gpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR) { append(instructions, inst_fmv_x_w_gpr_fpr(rd, rs1)) }
|
|
inst_feq_s_gpr_fpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FEQ_S, operand_count = 3, length = 4, ops = {op_gpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_feq_s_gpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR, rs2: FPR) { append(instructions, inst_feq_s_gpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_flt_s_gpr_fpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FLT_S, operand_count = 3, length = 4, ops = {op_gpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_flt_s_gpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR, rs2: FPR) { append(instructions, inst_flt_s_gpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fle_s_gpr_fpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FLE_S, operand_count = 3, length = 4, ops = {op_gpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fle_s_gpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fle_s_gpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fclass_s_gpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FCLASS_S, operand_count = 2, length = 4, ops = {op_gpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fclass_s_gpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR) { append(instructions, inst_fclass_s_gpr_fpr(rd, rs1)) }
|
|
inst_fcvt_s_w_fpr_gpr :: #force_inline proc "contextless" (rd: FPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .FCVT_S_W, operand_count = 2, length = 4, ops = {op_fpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_fcvt_s_w_fpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: GPR) { append(instructions, inst_fcvt_s_w_fpr_gpr(rd, rs1)) }
|
|
inst_fcvt_s_wu_fpr_gpr :: #force_inline proc "contextless" (rd: FPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .FCVT_S_WU, operand_count = 2, length = 4, ops = {op_fpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_fcvt_s_wu_fpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: GPR) { append(instructions, inst_fcvt_s_wu_fpr_gpr(rd, rs1)) }
|
|
inst_fmv_w_x_fpr_gpr :: #force_inline proc "contextless" (rd: FPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .FMV_W_X, operand_count = 2, length = 4, ops = {op_fpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_fmv_w_x_fpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: GPR) { append(instructions, inst_fmv_w_x_fpr_gpr(rd, rs1)) }
|
|
inst_fcvt_l_s_gpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FCVT_L_S, operand_count = 2, length = 4, ops = {op_gpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fcvt_l_s_gpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR) { append(instructions, inst_fcvt_l_s_gpr_fpr(rd, rs1)) }
|
|
inst_fcvt_lu_s_gpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FCVT_LU_S, operand_count = 2, length = 4, ops = {op_gpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fcvt_lu_s_gpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR) { append(instructions, inst_fcvt_lu_s_gpr_fpr(rd, rs1)) }
|
|
inst_fcvt_s_l_fpr_gpr :: #force_inline proc "contextless" (rd: FPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .FCVT_S_L, operand_count = 2, length = 4, ops = {op_fpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_fcvt_s_l_fpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: GPR) { append(instructions, inst_fcvt_s_l_fpr_gpr(rd, rs1)) }
|
|
inst_fcvt_s_lu_fpr_gpr :: #force_inline proc "contextless" (rd: FPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .FCVT_S_LU, operand_count = 2, length = 4, ops = {op_fpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_fcvt_s_lu_fpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: GPR) { append(instructions, inst_fcvt_s_lu_fpr_gpr(rd, rs1)) }
|
|
inst_fld_fpr_mem :: #force_inline proc "contextless" (rd: FPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .FLD, operand_count = 2, length = 4, ops = {op_fpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_fld_fpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, mem: Memory) { append(instructions, inst_fld_fpr_mem(rd, mem)) }
|
|
inst_fsd_fpr_mem :: #force_inline proc "contextless" (rd: FPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .FSD, operand_count = 2, length = 4, ops = {op_fpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_fsd_fpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, mem: Memory) { append(instructions, inst_fsd_fpr_mem(rd, mem)) }
|
|
inst_fmadd_d_fpr_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) -> Instruction { return Instruction{mnemonic = .FMADD_D, operand_count = 4, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), op_fpr(rs3)}} }
|
|
emit_fmadd_d_fpr_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) { append(instructions, inst_fmadd_d_fpr_fpr_fpr_fpr(rd, rs1, rs2, rs3)) }
|
|
inst_fmsub_d_fpr_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) -> Instruction { return Instruction{mnemonic = .FMSUB_D, operand_count = 4, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), op_fpr(rs3)}} }
|
|
emit_fmsub_d_fpr_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) { append(instructions, inst_fmsub_d_fpr_fpr_fpr_fpr(rd, rs1, rs2, rs3)) }
|
|
inst_fnmsub_d_fpr_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) -> Instruction { return Instruction{mnemonic = .FNMSUB_D, operand_count = 4, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), op_fpr(rs3)}} }
|
|
emit_fnmsub_d_fpr_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) { append(instructions, inst_fnmsub_d_fpr_fpr_fpr_fpr(rd, rs1, rs2, rs3)) }
|
|
inst_fnmadd_d_fpr_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) -> Instruction { return Instruction{mnemonic = .FNMADD_D, operand_count = 4, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), op_fpr(rs3)}} }
|
|
emit_fnmadd_d_fpr_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR, rs3: FPR) { append(instructions, inst_fnmadd_d_fpr_fpr_fpr_fpr(rd, rs1, rs2, rs3)) }
|
|
inst_fadd_d_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FADD_D, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fadd_d_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fadd_d_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fsub_d_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FSUB_D, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fsub_d_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fsub_d_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fmul_d_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FMUL_D, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fmul_d_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fmul_d_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fdiv_d_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FDIV_D, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fdiv_d_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fdiv_d_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fsqrt_d_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FSQRT_D, operand_count = 2, length = 4, ops = {op_fpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fsqrt_d_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR) { append(instructions, inst_fsqrt_d_fpr_fpr(rd, rs1)) }
|
|
inst_fsgnj_d_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FSGNJ_D, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fsgnj_d_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fsgnj_d_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fsgnjn_d_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FSGNJN_D, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fsgnjn_d_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fsgnjn_d_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fsgnjx_d_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FSGNJX_D, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fsgnjx_d_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fsgnjx_d_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fmin_d_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FMIN_D, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fmin_d_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fmin_d_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fmax_d_fpr_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FMAX_D, operand_count = 3, length = 4, ops = {op_fpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fmax_d_fpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fmax_d_fpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fcvt_s_d_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FCVT_S_D, operand_count = 2, length = 4, ops = {op_fpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fcvt_s_d_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR) { append(instructions, inst_fcvt_s_d_fpr_fpr(rd, rs1)) }
|
|
inst_fcvt_d_s_fpr_fpr :: #force_inline proc "contextless" (rd: FPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FCVT_D_S, operand_count = 2, length = 4, ops = {op_fpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fcvt_d_s_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: FPR) { append(instructions, inst_fcvt_d_s_fpr_fpr(rd, rs1)) }
|
|
inst_feq_d_gpr_fpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FEQ_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_feq_d_gpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR, rs2: FPR) { append(instructions, inst_feq_d_gpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_flt_d_gpr_fpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FLT_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_flt_d_gpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR, rs2: FPR) { append(instructions, inst_flt_d_gpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fle_d_gpr_fpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR, rs2: FPR) -> Instruction { return Instruction{mnemonic = .FLE_D, operand_count = 3, length = 4, ops = {op_gpr(rd), op_fpr(rs1), op_fpr(rs2), {}}} }
|
|
emit_fle_d_gpr_fpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR, rs2: FPR) { append(instructions, inst_fle_d_gpr_fpr_fpr(rd, rs1, rs2)) }
|
|
inst_fclass_d_gpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FCLASS_D, operand_count = 2, length = 4, ops = {op_gpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fclass_d_gpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR) { append(instructions, inst_fclass_d_gpr_fpr(rd, rs1)) }
|
|
inst_fcvt_w_d_gpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FCVT_W_D, operand_count = 2, length = 4, ops = {op_gpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fcvt_w_d_gpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR) { append(instructions, inst_fcvt_w_d_gpr_fpr(rd, rs1)) }
|
|
inst_fcvt_wu_d_gpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FCVT_WU_D, operand_count = 2, length = 4, ops = {op_gpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fcvt_wu_d_gpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR) { append(instructions, inst_fcvt_wu_d_gpr_fpr(rd, rs1)) }
|
|
inst_fcvt_d_w_fpr_gpr :: #force_inline proc "contextless" (rd: FPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .FCVT_D_W, operand_count = 2, length = 4, ops = {op_fpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_fcvt_d_w_fpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: GPR) { append(instructions, inst_fcvt_d_w_fpr_gpr(rd, rs1)) }
|
|
inst_fcvt_d_wu_fpr_gpr :: #force_inline proc "contextless" (rd: FPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .FCVT_D_WU, operand_count = 2, length = 4, ops = {op_fpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_fcvt_d_wu_fpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: GPR) { append(instructions, inst_fcvt_d_wu_fpr_gpr(rd, rs1)) }
|
|
inst_fcvt_l_d_gpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FCVT_L_D, operand_count = 2, length = 4, ops = {op_gpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fcvt_l_d_gpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR) { append(instructions, inst_fcvt_l_d_gpr_fpr(rd, rs1)) }
|
|
inst_fcvt_lu_d_gpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FCVT_LU_D, operand_count = 2, length = 4, ops = {op_gpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fcvt_lu_d_gpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR) { append(instructions, inst_fcvt_lu_d_gpr_fpr(rd, rs1)) }
|
|
inst_fcvt_d_l_fpr_gpr :: #force_inline proc "contextless" (rd: FPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .FCVT_D_L, operand_count = 2, length = 4, ops = {op_fpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_fcvt_d_l_fpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: GPR) { append(instructions, inst_fcvt_d_l_fpr_gpr(rd, rs1)) }
|
|
inst_fcvt_d_lu_fpr_gpr :: #force_inline proc "contextless" (rd: FPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .FCVT_D_LU, operand_count = 2, length = 4, ops = {op_fpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_fcvt_d_lu_fpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: GPR) { append(instructions, inst_fcvt_d_lu_fpr_gpr(rd, rs1)) }
|
|
inst_fmv_x_d_gpr_fpr :: #force_inline proc "contextless" (rd: GPR, rs1: FPR) -> Instruction { return Instruction{mnemonic = .FMV_X_D, operand_count = 2, length = 4, ops = {op_gpr(rd), op_fpr(rs1), {}, {}}} }
|
|
emit_fmv_x_d_gpr_fpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: FPR) { append(instructions, inst_fmv_x_d_gpr_fpr(rd, rs1)) }
|
|
inst_fmv_d_x_fpr_gpr :: #force_inline proc "contextless" (rd: FPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .FMV_D_X, operand_count = 2, length = 4, ops = {op_fpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_fmv_d_x_fpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, rs1: GPR) { append(instructions, inst_fmv_d_x_fpr_gpr(rd, rs1)) }
|
|
inst_c_nop_none :: #force_inline proc "contextless" () -> Instruction { return Instruction{mnemonic = .C_NOP, operand_count = 0, length = 2} }
|
|
emit_c_nop_none :: #force_inline proc(instructions: ^[dynamic]Instruction) { append(instructions, inst_c_nop_none()) }
|
|
inst_c_ebreak_none :: #force_inline proc "contextless" () -> Instruction { return Instruction{mnemonic = .C_EBREAK, operand_count = 0, length = 2} }
|
|
emit_c_ebreak_none :: #force_inline proc(instructions: ^[dynamic]Instruction) { append(instructions, inst_c_ebreak_none()) }
|
|
inst_c_addi4spn_gpr_gpr_imm8u :: #force_inline proc "contextless" (rd: GPR, rs1: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .C_ADDI4SPN, operand_count = 3, length = 2, ops = {op_gpr(rd), op_gpr(rs1), op_imm(imm, 2), {}}} }
|
|
emit_c_addi4spn_gpr_gpr_imm8u :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR, imm: i64) { append(instructions, inst_c_addi4spn_gpr_gpr_imm8u(rd, rs1, imm)) }
|
|
inst_c_lw_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .C_LW, operand_count = 2, length = 2, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_c_lw_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_c_lw_gpr_mem(rd, mem)) }
|
|
inst_c_ld_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .C_LD, operand_count = 2, length = 2, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_c_ld_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_c_ld_gpr_mem(rd, mem)) }
|
|
inst_c_sw_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .C_SW, operand_count = 2, length = 2, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_c_sw_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_c_sw_gpr_mem(rd, mem)) }
|
|
inst_c_sd_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .C_SD, operand_count = 2, length = 2, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_c_sd_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_c_sd_gpr_mem(rd, mem)) }
|
|
inst_c_fld_fpr_mem :: #force_inline proc "contextless" (rd: FPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .C_FLD, operand_count = 2, length = 2, ops = {op_fpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_c_fld_fpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, mem: Memory) { append(instructions, inst_c_fld_fpr_mem(rd, mem)) }
|
|
inst_c_fsd_fpr_mem :: #force_inline proc "contextless" (rd: FPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .C_FSD, operand_count = 2, length = 2, ops = {op_fpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_c_fsd_fpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, mem: Memory) { append(instructions, inst_c_fsd_fpr_mem(rd, mem)) }
|
|
inst_c_addi_gpr_imm6s :: #force_inline proc "contextless" (rd: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .C_ADDI, operand_count = 2, length = 2, ops = {op_gpr(rd), op_imm(imm, 2), {}, {}}} }
|
|
emit_c_addi_gpr_imm6s :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64) { append(instructions, inst_c_addi_gpr_imm6s(rd, imm)) }
|
|
inst_c_addiw_gpr_imm6s :: #force_inline proc "contextless" (rd: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .C_ADDIW, operand_count = 2, length = 2, ops = {op_gpr(rd), op_imm(imm, 2), {}, {}}} }
|
|
emit_c_addiw_gpr_imm6s :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64) { append(instructions, inst_c_addiw_gpr_imm6s(rd, imm)) }
|
|
inst_c_li_gpr_imm6s :: #force_inline proc "contextless" (rd: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .C_LI, operand_count = 2, length = 2, ops = {op_gpr(rd), op_imm(imm, 2), {}, {}}} }
|
|
emit_c_li_gpr_imm6s :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64) { append(instructions, inst_c_li_gpr_imm6s(rd, imm)) }
|
|
inst_c_lui_gpr_imm18s :: #force_inline proc "contextless" (rd: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .C_LUI, operand_count = 2, length = 2, ops = {op_gpr(rd), op_imm(imm, 2), {}, {}}} }
|
|
emit_c_lui_gpr_imm18s :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64) { append(instructions, inst_c_lui_gpr_imm18s(rd, imm)) }
|
|
inst_c_addi16sp_gpr_imm10s :: #force_inline proc "contextless" (rd: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .C_ADDI16SP, operand_count = 2, length = 2, ops = {op_gpr(rd), op_imm(imm, 2), {}, {}}} }
|
|
emit_c_addi16sp_gpr_imm10s :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64) { append(instructions, inst_c_addi16sp_gpr_imm10s(rd, imm)) }
|
|
inst_c_srli_gpr_imm6u :: #force_inline proc "contextless" (rd: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .C_SRLI, operand_count = 2, length = 2, ops = {op_gpr(rd), op_imm(imm, 2), {}, {}}} }
|
|
emit_c_srli_gpr_imm6u :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64) { append(instructions, inst_c_srli_gpr_imm6u(rd, imm)) }
|
|
inst_c_srai_gpr_imm6u :: #force_inline proc "contextless" (rd: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .C_SRAI, operand_count = 2, length = 2, ops = {op_gpr(rd), op_imm(imm, 2), {}, {}}} }
|
|
emit_c_srai_gpr_imm6u :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64) { append(instructions, inst_c_srai_gpr_imm6u(rd, imm)) }
|
|
inst_c_andi_gpr_imm6s :: #force_inline proc "contextless" (rd: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .C_ANDI, operand_count = 2, length = 2, ops = {op_gpr(rd), op_imm(imm, 2), {}, {}}} }
|
|
emit_c_andi_gpr_imm6s :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64) { append(instructions, inst_c_andi_gpr_imm6s(rd, imm)) }
|
|
inst_c_sub_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .C_SUB, operand_count = 2, length = 2, ops = {op_gpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_c_sub_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR) { append(instructions, inst_c_sub_gpr_gpr(rd, rs1)) }
|
|
inst_c_xor_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .C_XOR, operand_count = 2, length = 2, ops = {op_gpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_c_xor_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR) { append(instructions, inst_c_xor_gpr_gpr(rd, rs1)) }
|
|
inst_c_or_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .C_OR, operand_count = 2, length = 2, ops = {op_gpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_c_or_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR) { append(instructions, inst_c_or_gpr_gpr(rd, rs1)) }
|
|
inst_c_and_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .C_AND, operand_count = 2, length = 2, ops = {op_gpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_c_and_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR) { append(instructions, inst_c_and_gpr_gpr(rd, rs1)) }
|
|
inst_c_subw_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .C_SUBW, operand_count = 2, length = 2, ops = {op_gpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_c_subw_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR) { append(instructions, inst_c_subw_gpr_gpr(rd, rs1)) }
|
|
inst_c_addw_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .C_ADDW, operand_count = 2, length = 2, ops = {op_gpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_c_addw_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR) { append(instructions, inst_c_addw_gpr_gpr(rd, rs1)) }
|
|
inst_c_j_label :: #force_inline proc "contextless" (label: u32) -> Instruction { return Instruction{mnemonic = .C_J, operand_count = 1, length = 2, ops = {op_label(label, 4), {}, {}, {}}} }
|
|
emit_c_j_label :: #force_inline proc(instructions: ^[dynamic]Instruction, label: u32) { append(instructions, inst_c_j_label(label)) }
|
|
inst_c_jal_label :: #force_inline proc "contextless" (label: u32) -> Instruction { return Instruction{mnemonic = .C_JAL, operand_count = 1, length = 2, ops = {op_label(label, 4), {}, {}, {}}} }
|
|
emit_c_jal_label :: #force_inline proc(instructions: ^[dynamic]Instruction, label: u32) { append(instructions, inst_c_jal_label(label)) }
|
|
inst_c_beqz_gpr_label :: #force_inline proc "contextless" (rd: GPR, label: u32) -> Instruction { return Instruction{mnemonic = .C_BEQZ, operand_count = 2, length = 2, ops = {op_gpr(rd), op_label(label, 2), {}, {}}} }
|
|
emit_c_beqz_gpr_label :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, label: u32) { append(instructions, inst_c_beqz_gpr_label(rd, label)) }
|
|
inst_c_bnez_gpr_label :: #force_inline proc "contextless" (rd: GPR, label: u32) -> Instruction { return Instruction{mnemonic = .C_BNEZ, operand_count = 2, length = 2, ops = {op_gpr(rd), op_label(label, 2), {}, {}}} }
|
|
emit_c_bnez_gpr_label :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, label: u32) { append(instructions, inst_c_bnez_gpr_label(rd, label)) }
|
|
inst_c_slli_gpr_imm6u :: #force_inline proc "contextless" (rd: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .C_SLLI, operand_count = 2, length = 2, ops = {op_gpr(rd), op_imm(imm, 2), {}, {}}} }
|
|
emit_c_slli_gpr_imm6u :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, imm: i64) { append(instructions, inst_c_slli_gpr_imm6u(rd, imm)) }
|
|
inst_c_lwsp_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .C_LWSP, operand_count = 2, length = 2, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_c_lwsp_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_c_lwsp_gpr_mem(rd, mem)) }
|
|
inst_c_ldsp_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .C_LDSP, operand_count = 2, length = 2, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_c_ldsp_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_c_ldsp_gpr_mem(rd, mem)) }
|
|
inst_c_swsp_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .C_SWSP, operand_count = 2, length = 2, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_c_swsp_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_c_swsp_gpr_mem(rd, mem)) }
|
|
inst_c_sdsp_gpr_mem :: #force_inline proc "contextless" (rd: GPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .C_SDSP, operand_count = 2, length = 2, ops = {op_gpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_c_sdsp_gpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, mem: Memory) { append(instructions, inst_c_sdsp_gpr_mem(rd, mem)) }
|
|
inst_c_fldsp_fpr_mem :: #force_inline proc "contextless" (rd: FPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .C_FLDSP, operand_count = 2, length = 2, ops = {op_fpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_c_fldsp_fpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, mem: Memory) { append(instructions, inst_c_fldsp_fpr_mem(rd, mem)) }
|
|
inst_c_fsdsp_fpr_mem :: #force_inline proc "contextless" (rd: FPR, mem: Memory) -> Instruction { return Instruction{mnemonic = .C_FSDSP, operand_count = 2, length = 2, ops = {op_fpr(rd), op_mem(mem), {}, {}}} }
|
|
emit_c_fsdsp_fpr_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: FPR, mem: Memory) { append(instructions, inst_c_fsdsp_fpr_mem(rd, mem)) }
|
|
inst_c_jr_gpr :: #force_inline proc "contextless" (rd: GPR) -> Instruction { return Instruction{mnemonic = .C_JR, operand_count = 1, length = 2, ops = {op_gpr(rd), {}, {}, {}}} }
|
|
emit_c_jr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR) { append(instructions, inst_c_jr_gpr(rd)) }
|
|
inst_c_jalr_gpr :: #force_inline proc "contextless" (rd: GPR) -> Instruction { return Instruction{mnemonic = .C_JALR, operand_count = 1, length = 2, ops = {op_gpr(rd), {}, {}, {}}} }
|
|
emit_c_jalr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR) { append(instructions, inst_c_jalr_gpr(rd)) }
|
|
inst_c_mv_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .C_MV, operand_count = 2, length = 2, ops = {op_gpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_c_mv_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR) { append(instructions, inst_c_mv_gpr_gpr(rd, rs1)) }
|
|
inst_c_add_gpr_gpr :: #force_inline proc "contextless" (rd: GPR, rs1: GPR) -> Instruction { return Instruction{mnemonic = .C_ADD, operand_count = 2, length = 2, ops = {op_gpr(rd), op_gpr(rs1), {}, {}}} }
|
|
emit_c_add_gpr_gpr :: #force_inline proc(instructions: ^[dynamic]Instruction, rd: GPR, rs1: GPR) { append(instructions, inst_c_add_gpr_gpr(rd, rs1)) }
|
|
|
|
// =============================================================================
|
|
// Overload Groups
|
|
// =============================================================================
|
|
|
|
inst_lui :: inst_lui_gpr_imm20
|
|
emit_lui :: emit_lui_gpr_imm20
|
|
inst_auipc :: inst_auipc_gpr_imm20
|
|
emit_auipc :: emit_auipc_gpr_imm20
|
|
inst_jal :: inst_jal_gpr_label
|
|
emit_jal :: emit_jal_gpr_label
|
|
inst_jalr :: inst_jalr_gpr_gpr_imm12
|
|
emit_jalr :: emit_jalr_gpr_gpr_imm12
|
|
inst_beq :: inst_beq_gpr_gpr_label
|
|
emit_beq :: emit_beq_gpr_gpr_label
|
|
inst_bne :: inst_bne_gpr_gpr_label
|
|
emit_bne :: emit_bne_gpr_gpr_label
|
|
inst_blt :: inst_blt_gpr_gpr_label
|
|
emit_blt :: emit_blt_gpr_gpr_label
|
|
inst_bge :: inst_bge_gpr_gpr_label
|
|
emit_bge :: emit_bge_gpr_gpr_label
|
|
inst_bltu :: inst_bltu_gpr_gpr_label
|
|
emit_bltu :: emit_bltu_gpr_gpr_label
|
|
inst_bgeu :: inst_bgeu_gpr_gpr_label
|
|
emit_bgeu :: emit_bgeu_gpr_gpr_label
|
|
inst_lb :: inst_lb_gpr_mem
|
|
emit_lb :: emit_lb_gpr_mem
|
|
inst_lh :: inst_lh_gpr_mem
|
|
emit_lh :: emit_lh_gpr_mem
|
|
inst_lw :: inst_lw_gpr_mem
|
|
emit_lw :: emit_lw_gpr_mem
|
|
inst_lbu :: inst_lbu_gpr_mem
|
|
emit_lbu :: emit_lbu_gpr_mem
|
|
inst_lhu :: inst_lhu_gpr_mem
|
|
emit_lhu :: emit_lhu_gpr_mem
|
|
inst_sb :: inst_sb_gpr_mem
|
|
emit_sb :: emit_sb_gpr_mem
|
|
inst_sh :: inst_sh_gpr_mem
|
|
emit_sh :: emit_sh_gpr_mem
|
|
inst_sw :: inst_sw_gpr_mem
|
|
emit_sw :: emit_sw_gpr_mem
|
|
inst_lwu :: inst_lwu_gpr_mem
|
|
emit_lwu :: emit_lwu_gpr_mem
|
|
inst_ld :: inst_ld_gpr_mem
|
|
emit_ld :: emit_ld_gpr_mem
|
|
inst_sd :: inst_sd_gpr_mem
|
|
emit_sd :: emit_sd_gpr_mem
|
|
inst_addi :: inst_addi_gpr_gpr_imm12
|
|
emit_addi :: emit_addi_gpr_gpr_imm12
|
|
inst_slti :: inst_slti_gpr_gpr_imm12
|
|
emit_slti :: emit_slti_gpr_gpr_imm12
|
|
inst_sltiu :: inst_sltiu_gpr_gpr_imm12
|
|
emit_sltiu :: emit_sltiu_gpr_gpr_imm12
|
|
inst_xori :: inst_xori_gpr_gpr_imm12
|
|
emit_xori :: emit_xori_gpr_gpr_imm12
|
|
inst_ori :: inst_ori_gpr_gpr_imm12
|
|
emit_ori :: emit_ori_gpr_gpr_imm12
|
|
inst_andi :: inst_andi_gpr_gpr_imm12
|
|
emit_andi :: emit_andi_gpr_gpr_imm12
|
|
inst_slli :: inst_slli_gpr_gpr_imm6
|
|
emit_slli :: emit_slli_gpr_gpr_imm6
|
|
inst_srli :: inst_srli_gpr_gpr_imm6
|
|
emit_srli :: emit_srli_gpr_gpr_imm6
|
|
inst_srai :: inst_srai_gpr_gpr_imm6
|
|
emit_srai :: emit_srai_gpr_gpr_imm6
|
|
inst_addiw :: inst_addiw_gpr_gpr_imm12
|
|
emit_addiw :: emit_addiw_gpr_gpr_imm12
|
|
inst_slliw :: inst_slliw_gpr_gpr_imm5
|
|
emit_slliw :: emit_slliw_gpr_gpr_imm5
|
|
inst_srliw :: inst_srliw_gpr_gpr_imm5
|
|
emit_srliw :: emit_srliw_gpr_gpr_imm5
|
|
inst_sraiw :: inst_sraiw_gpr_gpr_imm5
|
|
emit_sraiw :: emit_sraiw_gpr_gpr_imm5
|
|
inst_add :: inst_add_gpr_gpr_gpr
|
|
emit_add :: emit_add_gpr_gpr_gpr
|
|
inst_sub :: inst_sub_gpr_gpr_gpr
|
|
emit_sub :: emit_sub_gpr_gpr_gpr
|
|
inst_sll :: inst_sll_gpr_gpr_gpr
|
|
emit_sll :: emit_sll_gpr_gpr_gpr
|
|
inst_slt :: inst_slt_gpr_gpr_gpr
|
|
emit_slt :: emit_slt_gpr_gpr_gpr
|
|
inst_sltu :: inst_sltu_gpr_gpr_gpr
|
|
emit_sltu :: emit_sltu_gpr_gpr_gpr
|
|
inst_xor :: inst_xor_gpr_gpr_gpr
|
|
emit_xor :: emit_xor_gpr_gpr_gpr
|
|
inst_srl :: inst_srl_gpr_gpr_gpr
|
|
emit_srl :: emit_srl_gpr_gpr_gpr
|
|
inst_sra :: inst_sra_gpr_gpr_gpr
|
|
emit_sra :: emit_sra_gpr_gpr_gpr
|
|
inst_or :: inst_or_gpr_gpr_gpr
|
|
emit_or :: emit_or_gpr_gpr_gpr
|
|
inst_and :: inst_and_gpr_gpr_gpr
|
|
emit_and :: emit_and_gpr_gpr_gpr
|
|
inst_addw :: inst_addw_gpr_gpr_gpr
|
|
emit_addw :: emit_addw_gpr_gpr_gpr
|
|
inst_subw :: inst_subw_gpr_gpr_gpr
|
|
emit_subw :: emit_subw_gpr_gpr_gpr
|
|
inst_sllw :: inst_sllw_gpr_gpr_gpr
|
|
emit_sllw :: emit_sllw_gpr_gpr_gpr
|
|
inst_srlw :: inst_srlw_gpr_gpr_gpr
|
|
emit_srlw :: emit_srlw_gpr_gpr_gpr
|
|
inst_sraw :: inst_sraw_gpr_gpr_gpr
|
|
emit_sraw :: emit_sraw_gpr_gpr_gpr
|
|
inst_fence :: inst_fence_fence_fence
|
|
emit_fence :: emit_fence_fence_fence
|
|
inst_fence_i :: inst_fence_i_none
|
|
emit_fence_i :: emit_fence_i_none
|
|
inst_ecall :: inst_ecall_none
|
|
emit_ecall :: emit_ecall_none
|
|
inst_ebreak :: inst_ebreak_none
|
|
emit_ebreak :: emit_ebreak_none
|
|
inst_csrrw :: inst_csrrw_gpr_csr_gpr
|
|
emit_csrrw :: emit_csrrw_gpr_csr_gpr
|
|
inst_csrrs :: inst_csrrs_gpr_csr_gpr
|
|
emit_csrrs :: emit_csrrs_gpr_csr_gpr
|
|
inst_csrrc :: inst_csrrc_gpr_csr_gpr
|
|
emit_csrrc :: emit_csrrc_gpr_csr_gpr
|
|
inst_csrrwi :: inst_csrrwi_gpr_csr_zimm5
|
|
emit_csrrwi :: emit_csrrwi_gpr_csr_zimm5
|
|
inst_csrrsi :: inst_csrrsi_gpr_csr_zimm5
|
|
emit_csrrsi :: emit_csrrsi_gpr_csr_zimm5
|
|
inst_csrrci :: inst_csrrci_gpr_csr_zimm5
|
|
emit_csrrci :: emit_csrrci_gpr_csr_zimm5
|
|
inst_mul :: inst_mul_gpr_gpr_gpr
|
|
emit_mul :: emit_mul_gpr_gpr_gpr
|
|
inst_mulh :: inst_mulh_gpr_gpr_gpr
|
|
emit_mulh :: emit_mulh_gpr_gpr_gpr
|
|
inst_mulhsu :: inst_mulhsu_gpr_gpr_gpr
|
|
emit_mulhsu :: emit_mulhsu_gpr_gpr_gpr
|
|
inst_mulhu :: inst_mulhu_gpr_gpr_gpr
|
|
emit_mulhu :: emit_mulhu_gpr_gpr_gpr
|
|
inst_div :: inst_div_gpr_gpr_gpr
|
|
emit_div :: emit_div_gpr_gpr_gpr
|
|
inst_divu :: inst_divu_gpr_gpr_gpr
|
|
emit_divu :: emit_divu_gpr_gpr_gpr
|
|
inst_rem :: inst_rem_gpr_gpr_gpr
|
|
emit_rem :: emit_rem_gpr_gpr_gpr
|
|
inst_remu :: inst_remu_gpr_gpr_gpr
|
|
emit_remu :: emit_remu_gpr_gpr_gpr
|
|
inst_mulw :: inst_mulw_gpr_gpr_gpr
|
|
emit_mulw :: emit_mulw_gpr_gpr_gpr
|
|
inst_divw :: inst_divw_gpr_gpr_gpr
|
|
emit_divw :: emit_divw_gpr_gpr_gpr
|
|
inst_divuw :: inst_divuw_gpr_gpr_gpr
|
|
emit_divuw :: emit_divuw_gpr_gpr_gpr
|
|
inst_remw :: inst_remw_gpr_gpr_gpr
|
|
emit_remw :: emit_remw_gpr_gpr_gpr
|
|
inst_remuw :: inst_remuw_gpr_gpr_gpr
|
|
emit_remuw :: emit_remuw_gpr_gpr_gpr
|
|
inst_lr_w :: inst_lr_w_gpr_mem
|
|
emit_lr_w :: emit_lr_w_gpr_mem
|
|
inst_sc_w :: inst_sc_w_gpr_gpr_mem
|
|
emit_sc_w :: emit_sc_w_gpr_gpr_mem
|
|
inst_amoswap_w :: inst_amoswap_w_gpr_gpr_mem
|
|
emit_amoswap_w :: emit_amoswap_w_gpr_gpr_mem
|
|
inst_amoadd_w :: inst_amoadd_w_gpr_gpr_mem
|
|
emit_amoadd_w :: emit_amoadd_w_gpr_gpr_mem
|
|
inst_amoxor_w :: inst_amoxor_w_gpr_gpr_mem
|
|
emit_amoxor_w :: emit_amoxor_w_gpr_gpr_mem
|
|
inst_amoand_w :: inst_amoand_w_gpr_gpr_mem
|
|
emit_amoand_w :: emit_amoand_w_gpr_gpr_mem
|
|
inst_amoor_w :: inst_amoor_w_gpr_gpr_mem
|
|
emit_amoor_w :: emit_amoor_w_gpr_gpr_mem
|
|
inst_amomin_w :: inst_amomin_w_gpr_gpr_mem
|
|
emit_amomin_w :: emit_amomin_w_gpr_gpr_mem
|
|
inst_amomax_w :: inst_amomax_w_gpr_gpr_mem
|
|
emit_amomax_w :: emit_amomax_w_gpr_gpr_mem
|
|
inst_amominu_w :: inst_amominu_w_gpr_gpr_mem
|
|
emit_amominu_w :: emit_amominu_w_gpr_gpr_mem
|
|
inst_amomaxu_w :: inst_amomaxu_w_gpr_gpr_mem
|
|
emit_amomaxu_w :: emit_amomaxu_w_gpr_gpr_mem
|
|
inst_lr_d :: inst_lr_d_gpr_mem
|
|
emit_lr_d :: emit_lr_d_gpr_mem
|
|
inst_sc_d :: inst_sc_d_gpr_gpr_mem
|
|
emit_sc_d :: emit_sc_d_gpr_gpr_mem
|
|
inst_amoswap_d :: inst_amoswap_d_gpr_gpr_mem
|
|
emit_amoswap_d :: emit_amoswap_d_gpr_gpr_mem
|
|
inst_amoadd_d :: inst_amoadd_d_gpr_gpr_mem
|
|
emit_amoadd_d :: emit_amoadd_d_gpr_gpr_mem
|
|
inst_amoxor_d :: inst_amoxor_d_gpr_gpr_mem
|
|
emit_amoxor_d :: emit_amoxor_d_gpr_gpr_mem
|
|
inst_amoand_d :: inst_amoand_d_gpr_gpr_mem
|
|
emit_amoand_d :: emit_amoand_d_gpr_gpr_mem
|
|
inst_amoor_d :: inst_amoor_d_gpr_gpr_mem
|
|
emit_amoor_d :: emit_amoor_d_gpr_gpr_mem
|
|
inst_amomin_d :: inst_amomin_d_gpr_gpr_mem
|
|
emit_amomin_d :: emit_amomin_d_gpr_gpr_mem
|
|
inst_amomax_d :: inst_amomax_d_gpr_gpr_mem
|
|
emit_amomax_d :: emit_amomax_d_gpr_gpr_mem
|
|
inst_amominu_d :: inst_amominu_d_gpr_gpr_mem
|
|
emit_amominu_d :: emit_amominu_d_gpr_gpr_mem
|
|
inst_amomaxu_d :: inst_amomaxu_d_gpr_gpr_mem
|
|
emit_amomaxu_d :: emit_amomaxu_d_gpr_gpr_mem
|
|
inst_flw :: inst_flw_fpr_mem
|
|
emit_flw :: emit_flw_fpr_mem
|
|
inst_fsw :: inst_fsw_fpr_mem
|
|
emit_fsw :: emit_fsw_fpr_mem
|
|
inst_fmadd_s :: inst_fmadd_s_fpr_fpr_fpr_fpr
|
|
emit_fmadd_s :: emit_fmadd_s_fpr_fpr_fpr_fpr
|
|
inst_fmsub_s :: inst_fmsub_s_fpr_fpr_fpr_fpr
|
|
emit_fmsub_s :: emit_fmsub_s_fpr_fpr_fpr_fpr
|
|
inst_fnmsub_s :: inst_fnmsub_s_fpr_fpr_fpr_fpr
|
|
emit_fnmsub_s :: emit_fnmsub_s_fpr_fpr_fpr_fpr
|
|
inst_fnmadd_s :: inst_fnmadd_s_fpr_fpr_fpr_fpr
|
|
emit_fnmadd_s :: emit_fnmadd_s_fpr_fpr_fpr_fpr
|
|
inst_fadd_s :: inst_fadd_s_fpr_fpr_fpr
|
|
emit_fadd_s :: emit_fadd_s_fpr_fpr_fpr
|
|
inst_fsub_s :: inst_fsub_s_fpr_fpr_fpr
|
|
emit_fsub_s :: emit_fsub_s_fpr_fpr_fpr
|
|
inst_fmul_s :: inst_fmul_s_fpr_fpr_fpr
|
|
emit_fmul_s :: emit_fmul_s_fpr_fpr_fpr
|
|
inst_fdiv_s :: inst_fdiv_s_fpr_fpr_fpr
|
|
emit_fdiv_s :: emit_fdiv_s_fpr_fpr_fpr
|
|
inst_fsqrt_s :: inst_fsqrt_s_fpr_fpr
|
|
emit_fsqrt_s :: emit_fsqrt_s_fpr_fpr
|
|
inst_fsgnj_s :: inst_fsgnj_s_fpr_fpr_fpr
|
|
emit_fsgnj_s :: emit_fsgnj_s_fpr_fpr_fpr
|
|
inst_fsgnjn_s :: inst_fsgnjn_s_fpr_fpr_fpr
|
|
emit_fsgnjn_s :: emit_fsgnjn_s_fpr_fpr_fpr
|
|
inst_fsgnjx_s :: inst_fsgnjx_s_fpr_fpr_fpr
|
|
emit_fsgnjx_s :: emit_fsgnjx_s_fpr_fpr_fpr
|
|
inst_fmin_s :: inst_fmin_s_fpr_fpr_fpr
|
|
emit_fmin_s :: emit_fmin_s_fpr_fpr_fpr
|
|
inst_fmax_s :: inst_fmax_s_fpr_fpr_fpr
|
|
emit_fmax_s :: emit_fmax_s_fpr_fpr_fpr
|
|
inst_fcvt_w_s :: inst_fcvt_w_s_gpr_fpr
|
|
emit_fcvt_w_s :: emit_fcvt_w_s_gpr_fpr
|
|
inst_fcvt_wu_s :: inst_fcvt_wu_s_gpr_fpr
|
|
emit_fcvt_wu_s :: emit_fcvt_wu_s_gpr_fpr
|
|
inst_fmv_x_w :: inst_fmv_x_w_gpr_fpr
|
|
emit_fmv_x_w :: emit_fmv_x_w_gpr_fpr
|
|
inst_feq_s :: inst_feq_s_gpr_fpr_fpr
|
|
emit_feq_s :: emit_feq_s_gpr_fpr_fpr
|
|
inst_flt_s :: inst_flt_s_gpr_fpr_fpr
|
|
emit_flt_s :: emit_flt_s_gpr_fpr_fpr
|
|
inst_fle_s :: inst_fle_s_gpr_fpr_fpr
|
|
emit_fle_s :: emit_fle_s_gpr_fpr_fpr
|
|
inst_fclass_s :: inst_fclass_s_gpr_fpr
|
|
emit_fclass_s :: emit_fclass_s_gpr_fpr
|
|
inst_fcvt_s_w :: inst_fcvt_s_w_fpr_gpr
|
|
emit_fcvt_s_w :: emit_fcvt_s_w_fpr_gpr
|
|
inst_fcvt_s_wu :: inst_fcvt_s_wu_fpr_gpr
|
|
emit_fcvt_s_wu :: emit_fcvt_s_wu_fpr_gpr
|
|
inst_fmv_w_x :: inst_fmv_w_x_fpr_gpr
|
|
emit_fmv_w_x :: emit_fmv_w_x_fpr_gpr
|
|
inst_fcvt_l_s :: inst_fcvt_l_s_gpr_fpr
|
|
emit_fcvt_l_s :: emit_fcvt_l_s_gpr_fpr
|
|
inst_fcvt_lu_s :: inst_fcvt_lu_s_gpr_fpr
|
|
emit_fcvt_lu_s :: emit_fcvt_lu_s_gpr_fpr
|
|
inst_fcvt_s_l :: inst_fcvt_s_l_fpr_gpr
|
|
emit_fcvt_s_l :: emit_fcvt_s_l_fpr_gpr
|
|
inst_fcvt_s_lu :: inst_fcvt_s_lu_fpr_gpr
|
|
emit_fcvt_s_lu :: emit_fcvt_s_lu_fpr_gpr
|
|
inst_fld :: inst_fld_fpr_mem
|
|
emit_fld :: emit_fld_fpr_mem
|
|
inst_fsd :: inst_fsd_fpr_mem
|
|
emit_fsd :: emit_fsd_fpr_mem
|
|
inst_fmadd_d :: inst_fmadd_d_fpr_fpr_fpr_fpr
|
|
emit_fmadd_d :: emit_fmadd_d_fpr_fpr_fpr_fpr
|
|
inst_fmsub_d :: inst_fmsub_d_fpr_fpr_fpr_fpr
|
|
emit_fmsub_d :: emit_fmsub_d_fpr_fpr_fpr_fpr
|
|
inst_fnmsub_d :: inst_fnmsub_d_fpr_fpr_fpr_fpr
|
|
emit_fnmsub_d :: emit_fnmsub_d_fpr_fpr_fpr_fpr
|
|
inst_fnmadd_d :: inst_fnmadd_d_fpr_fpr_fpr_fpr
|
|
emit_fnmadd_d :: emit_fnmadd_d_fpr_fpr_fpr_fpr
|
|
inst_fadd_d :: inst_fadd_d_fpr_fpr_fpr
|
|
emit_fadd_d :: emit_fadd_d_fpr_fpr_fpr
|
|
inst_fsub_d :: inst_fsub_d_fpr_fpr_fpr
|
|
emit_fsub_d :: emit_fsub_d_fpr_fpr_fpr
|
|
inst_fmul_d :: inst_fmul_d_fpr_fpr_fpr
|
|
emit_fmul_d :: emit_fmul_d_fpr_fpr_fpr
|
|
inst_fdiv_d :: inst_fdiv_d_fpr_fpr_fpr
|
|
emit_fdiv_d :: emit_fdiv_d_fpr_fpr_fpr
|
|
inst_fsqrt_d :: inst_fsqrt_d_fpr_fpr
|
|
emit_fsqrt_d :: emit_fsqrt_d_fpr_fpr
|
|
inst_fsgnj_d :: inst_fsgnj_d_fpr_fpr_fpr
|
|
emit_fsgnj_d :: emit_fsgnj_d_fpr_fpr_fpr
|
|
inst_fsgnjn_d :: inst_fsgnjn_d_fpr_fpr_fpr
|
|
emit_fsgnjn_d :: emit_fsgnjn_d_fpr_fpr_fpr
|
|
inst_fsgnjx_d :: inst_fsgnjx_d_fpr_fpr_fpr
|
|
emit_fsgnjx_d :: emit_fsgnjx_d_fpr_fpr_fpr
|
|
inst_fmin_d :: inst_fmin_d_fpr_fpr_fpr
|
|
emit_fmin_d :: emit_fmin_d_fpr_fpr_fpr
|
|
inst_fmax_d :: inst_fmax_d_fpr_fpr_fpr
|
|
emit_fmax_d :: emit_fmax_d_fpr_fpr_fpr
|
|
inst_fcvt_s_d :: inst_fcvt_s_d_fpr_fpr
|
|
emit_fcvt_s_d :: emit_fcvt_s_d_fpr_fpr
|
|
inst_fcvt_d_s :: inst_fcvt_d_s_fpr_fpr
|
|
emit_fcvt_d_s :: emit_fcvt_d_s_fpr_fpr
|
|
inst_feq_d :: inst_feq_d_gpr_fpr_fpr
|
|
emit_feq_d :: emit_feq_d_gpr_fpr_fpr
|
|
inst_flt_d :: inst_flt_d_gpr_fpr_fpr
|
|
emit_flt_d :: emit_flt_d_gpr_fpr_fpr
|
|
inst_fle_d :: inst_fle_d_gpr_fpr_fpr
|
|
emit_fle_d :: emit_fle_d_gpr_fpr_fpr
|
|
inst_fclass_d :: inst_fclass_d_gpr_fpr
|
|
emit_fclass_d :: emit_fclass_d_gpr_fpr
|
|
inst_fcvt_w_d :: inst_fcvt_w_d_gpr_fpr
|
|
emit_fcvt_w_d :: emit_fcvt_w_d_gpr_fpr
|
|
inst_fcvt_wu_d :: inst_fcvt_wu_d_gpr_fpr
|
|
emit_fcvt_wu_d :: emit_fcvt_wu_d_gpr_fpr
|
|
inst_fcvt_d_w :: inst_fcvt_d_w_fpr_gpr
|
|
emit_fcvt_d_w :: emit_fcvt_d_w_fpr_gpr
|
|
inst_fcvt_d_wu :: inst_fcvt_d_wu_fpr_gpr
|
|
emit_fcvt_d_wu :: emit_fcvt_d_wu_fpr_gpr
|
|
inst_fcvt_l_d :: inst_fcvt_l_d_gpr_fpr
|
|
emit_fcvt_l_d :: emit_fcvt_l_d_gpr_fpr
|
|
inst_fcvt_lu_d :: inst_fcvt_lu_d_gpr_fpr
|
|
emit_fcvt_lu_d :: emit_fcvt_lu_d_gpr_fpr
|
|
inst_fcvt_d_l :: inst_fcvt_d_l_fpr_gpr
|
|
emit_fcvt_d_l :: emit_fcvt_d_l_fpr_gpr
|
|
inst_fcvt_d_lu :: inst_fcvt_d_lu_fpr_gpr
|
|
emit_fcvt_d_lu :: emit_fcvt_d_lu_fpr_gpr
|
|
inst_fmv_x_d :: inst_fmv_x_d_gpr_fpr
|
|
emit_fmv_x_d :: emit_fmv_x_d_gpr_fpr
|
|
inst_fmv_d_x :: inst_fmv_d_x_fpr_gpr
|
|
emit_fmv_d_x :: emit_fmv_d_x_fpr_gpr
|
|
inst_c_nop :: inst_c_nop_none
|
|
emit_c_nop :: emit_c_nop_none
|
|
inst_c_ebreak :: inst_c_ebreak_none
|
|
emit_c_ebreak :: emit_c_ebreak_none
|
|
inst_c_addi4spn :: inst_c_addi4spn_gpr_gpr_imm8u
|
|
emit_c_addi4spn :: emit_c_addi4spn_gpr_gpr_imm8u
|
|
inst_c_lw :: inst_c_lw_gpr_mem
|
|
emit_c_lw :: emit_c_lw_gpr_mem
|
|
inst_c_ld :: inst_c_ld_gpr_mem
|
|
emit_c_ld :: emit_c_ld_gpr_mem
|
|
inst_c_sw :: inst_c_sw_gpr_mem
|
|
emit_c_sw :: emit_c_sw_gpr_mem
|
|
inst_c_sd :: inst_c_sd_gpr_mem
|
|
emit_c_sd :: emit_c_sd_gpr_mem
|
|
inst_c_fld :: inst_c_fld_fpr_mem
|
|
emit_c_fld :: emit_c_fld_fpr_mem
|
|
inst_c_fsd :: inst_c_fsd_fpr_mem
|
|
emit_c_fsd :: emit_c_fsd_fpr_mem
|
|
inst_c_addi :: inst_c_addi_gpr_imm6s
|
|
emit_c_addi :: emit_c_addi_gpr_imm6s
|
|
inst_c_addiw :: inst_c_addiw_gpr_imm6s
|
|
emit_c_addiw :: emit_c_addiw_gpr_imm6s
|
|
inst_c_li :: inst_c_li_gpr_imm6s
|
|
emit_c_li :: emit_c_li_gpr_imm6s
|
|
inst_c_lui :: inst_c_lui_gpr_imm18s
|
|
emit_c_lui :: emit_c_lui_gpr_imm18s
|
|
inst_c_addi16sp :: inst_c_addi16sp_gpr_imm10s
|
|
emit_c_addi16sp :: emit_c_addi16sp_gpr_imm10s
|
|
inst_c_srli :: inst_c_srli_gpr_imm6u
|
|
emit_c_srli :: emit_c_srli_gpr_imm6u
|
|
inst_c_srai :: inst_c_srai_gpr_imm6u
|
|
emit_c_srai :: emit_c_srai_gpr_imm6u
|
|
inst_c_andi :: inst_c_andi_gpr_imm6s
|
|
emit_c_andi :: emit_c_andi_gpr_imm6s
|
|
inst_c_sub :: inst_c_sub_gpr_gpr
|
|
emit_c_sub :: emit_c_sub_gpr_gpr
|
|
inst_c_xor :: inst_c_xor_gpr_gpr
|
|
emit_c_xor :: emit_c_xor_gpr_gpr
|
|
inst_c_or :: inst_c_or_gpr_gpr
|
|
emit_c_or :: emit_c_or_gpr_gpr
|
|
inst_c_and :: inst_c_and_gpr_gpr
|
|
emit_c_and :: emit_c_and_gpr_gpr
|
|
inst_c_subw :: inst_c_subw_gpr_gpr
|
|
emit_c_subw :: emit_c_subw_gpr_gpr
|
|
inst_c_addw :: inst_c_addw_gpr_gpr
|
|
emit_c_addw :: emit_c_addw_gpr_gpr
|
|
inst_c_j :: inst_c_j_label
|
|
emit_c_j :: emit_c_j_label
|
|
inst_c_jal :: inst_c_jal_label
|
|
emit_c_jal :: emit_c_jal_label
|
|
inst_c_beqz :: inst_c_beqz_gpr_label
|
|
emit_c_beqz :: emit_c_beqz_gpr_label
|
|
inst_c_bnez :: inst_c_bnez_gpr_label
|
|
emit_c_bnez :: emit_c_bnez_gpr_label
|
|
inst_c_slli :: inst_c_slli_gpr_imm6u
|
|
emit_c_slli :: emit_c_slli_gpr_imm6u
|
|
inst_c_lwsp :: inst_c_lwsp_gpr_mem
|
|
emit_c_lwsp :: emit_c_lwsp_gpr_mem
|
|
inst_c_ldsp :: inst_c_ldsp_gpr_mem
|
|
emit_c_ldsp :: emit_c_ldsp_gpr_mem
|
|
inst_c_swsp :: inst_c_swsp_gpr_mem
|
|
emit_c_swsp :: emit_c_swsp_gpr_mem
|
|
inst_c_sdsp :: inst_c_sdsp_gpr_mem
|
|
emit_c_sdsp :: emit_c_sdsp_gpr_mem
|
|
inst_c_fldsp :: inst_c_fldsp_fpr_mem
|
|
emit_c_fldsp :: emit_c_fldsp_fpr_mem
|
|
inst_c_fsdsp :: inst_c_fsdsp_fpr_mem
|
|
emit_c_fsdsp :: emit_c_fsdsp_fpr_mem
|
|
inst_c_jr :: inst_c_jr_gpr
|
|
emit_c_jr :: emit_c_jr_gpr
|
|
inst_c_jalr :: inst_c_jalr_gpr
|
|
emit_c_jalr :: emit_c_jalr_gpr
|
|
inst_c_mv :: inst_c_mv_gpr_gpr
|
|
emit_c_mv :: emit_c_mv_gpr_gpr
|
|
inst_c_add :: inst_c_add_gpr_gpr
|
|
emit_c_add :: emit_c_add_gpr_gpr
|