package rexcode_riscv // ============================================================================= // GENERATED FILE - DO NOT EDIT // ============================================================================= // // Generated by tools/gen_decode_tables.odin from ENCODING_TABLE. // Regenerate with: cd riscv && odin run tools/gen_decode_tables.odin -file // Decode_Entry :: struct #packed { mnemonic: Mnemonic, ops: [4]Operand_Type, enc: [4]Operand_Encoding, bits: u32, mask: u32, feature: Feature, flags: Encoding_Flags, } #assert(size_of(Decode_Entry) == 20) Decode_Index :: struct #packed { start: u16, count: u16, } #assert(size_of(Decode_Index) == 4) @(rodata) DECODE_ENTRIES := [194]Decode_Entry{ {.LB, {.GPR, .MEM, .NONE, .NONE}, {.RD, .OFFSET_BASE_I, .NONE, .NONE}, 0x00000003, 0x0000707F, .I, {}}, {.LH, {.GPR, .MEM, .NONE, .NONE}, {.RD, .OFFSET_BASE_I, .NONE, .NONE}, 0x00001003, 0x0000707F, .I, {}}, {.LW, {.GPR, .MEM, .NONE, .NONE}, {.RD, .OFFSET_BASE_I, .NONE, .NONE}, 0x00002003, 0x0000707F, .I, {}}, {.LBU, {.GPR, .MEM, .NONE, .NONE}, {.RD, .OFFSET_BASE_I, .NONE, .NONE}, 0x00004003, 0x0000707F, .I, {}}, {.LHU, {.GPR, .MEM, .NONE, .NONE}, {.RD, .OFFSET_BASE_I, .NONE, .NONE}, 0x00005003, 0x0000707F, .I, {}}, {.LWU, {.GPR, .MEM, .NONE, .NONE}, {.RD, .OFFSET_BASE_I, .NONE, .NONE}, 0x00006003, 0x0000707F, .I, {rv64_only=true}}, {.LD, {.GPR, .MEM, .NONE, .NONE}, {.RD, .OFFSET_BASE_I, .NONE, .NONE}, 0x00003003, 0x0000707F, .I, {rv64_only=true}}, {.FLW, {.FPR, .MEM, .NONE, .NONE}, {.RD, .OFFSET_BASE_I, .NONE, .NONE}, 0x00002007, 0x0000707F, .F, {}}, {.FLD, {.FPR, .MEM, .NONE, .NONE}, {.RD, .OFFSET_BASE_I, .NONE, .NONE}, 0x00003007, 0x0000707F, .D, {}}, {.FENCE_I, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0x0000100F, 0xFFFFFFFF, .ZIFENCEI, {}}, {.FENCE, {.FENCE_FLAGS, .FENCE_FLAGS, .NONE, .NONE}, {.FENCE_PRED, .FENCE_SUCC, .NONE, .NONE}, 0x0000000F, 0x0000707F, .I, {}}, {.SLLI, {.GPR, .GPR, .IMM6, .NONE}, {.RD, .RS1, .SHAMT6, .NONE}, 0x00001013, 0xFC00707F, .I, {}}, {.SRLI, {.GPR, .GPR, .IMM6, .NONE}, {.RD, .RS1, .SHAMT6, .NONE}, 0x00005013, 0xFC00707F, .I, {}}, {.SRAI, {.GPR, .GPR, .IMM6, .NONE}, {.RD, .RS1, .SHAMT6, .NONE}, 0x40005013, 0xFC00707F, .I, {}}, {.ADDI, {.GPR, .GPR, .IMM12, .NONE}, {.RD, .RS1, .IMM_I, .NONE}, 0x00000013, 0x0000707F, .I, {}}, {.SLTI, {.GPR, .GPR, .IMM12, .NONE}, {.RD, .RS1, .IMM_I, .NONE}, 0x00002013, 0x0000707F, .I, {}}, {.SLTIU, {.GPR, .GPR, .IMM12, .NONE}, {.RD, .RS1, .IMM_I, .NONE}, 0x00003013, 0x0000707F, .I, {}}, {.XORI, {.GPR, .GPR, .IMM12, .NONE}, {.RD, .RS1, .IMM_I, .NONE}, 0x00004013, 0x0000707F, .I, {}}, {.ORI, {.GPR, .GPR, .IMM12, .NONE}, {.RD, .RS1, .IMM_I, .NONE}, 0x00006013, 0x0000707F, .I, {}}, {.ANDI, {.GPR, .GPR, .IMM12, .NONE}, {.RD, .RS1, .IMM_I, .NONE}, 0x00007013, 0x0000707F, .I, {}}, {.AUIPC, {.GPR, .IMM20, .NONE, .NONE}, {.RD, .IMM_U, .NONE, .NONE}, 0x00000017, 0x0000007F, .I, {}}, {.SLLIW, {.GPR, .GPR, .IMM5, .NONE}, {.RD, .RS1, .SHAMT5, .NONE}, 0x0000101B, 0xFE00707F, .I, {rv64_only=true}}, {.SRLIW, {.GPR, .GPR, .IMM5, .NONE}, {.RD, .RS1, .SHAMT5, .NONE}, 0x0000501B, 0xFE00707F, .I, {rv64_only=true}}, {.SRAIW, {.GPR, .GPR, .IMM5, .NONE}, {.RD, .RS1, .SHAMT5, .NONE}, 0x4000501B, 0xFE00707F, .I, {rv64_only=true}}, {.ADDIW, {.GPR, .GPR, .IMM12, .NONE}, {.RD, .RS1, .IMM_I, .NONE}, 0x0000001B, 0x0000707F, .I, {rv64_only=true}}, {.SB, {.GPR, .MEM, .NONE, .NONE}, {.RS2, .OFFSET_BASE_S, .NONE, .NONE}, 0x00000023, 0x0000707F, .I, {}}, {.SH, {.GPR, .MEM, .NONE, .NONE}, {.RS2, .OFFSET_BASE_S, .NONE, .NONE}, 0x00001023, 0x0000707F, .I, {}}, {.SW, {.GPR, .MEM, .NONE, .NONE}, {.RS2, .OFFSET_BASE_S, .NONE, .NONE}, 0x00002023, 0x0000707F, .I, {}}, {.SD, {.GPR, .MEM, .NONE, .NONE}, {.RS2, .OFFSET_BASE_S, .NONE, .NONE}, 0x00003023, 0x0000707F, .I, {rv64_only=true}}, {.FSW, {.FPR, .MEM, .NONE, .NONE}, {.RS2, .OFFSET_BASE_S, .NONE, .NONE}, 0x00002027, 0x0000707F, .F, {}}, {.FSD, {.FPR, .MEM, .NONE, .NONE}, {.RS2, .OFFSET_BASE_S, .NONE, .NONE}, 0x00003027, 0x0000707F, .D, {}}, {.LR_W, {.GPR, .MEM, .NONE, .NONE}, {.RD, .OFFSET_BASE_A, .NONE, .NONE}, 0x1000202F, 0xF9F0707F, .A, {}}, {.LR_D, {.GPR, .MEM, .NONE, .NONE}, {.RD, .OFFSET_BASE_A, .NONE, .NONE}, 0x1000302F, 0xF9F0707F, .A, {rv64_only=true}}, {.SC_W, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x1800202F, 0xF800707F, .A, {}}, {.AMOSWAP_W, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x0800202F, 0xF800707F, .A, {}}, {.AMOADD_W, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x0000202F, 0xF800707F, .A, {}}, {.AMOXOR_W, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x2000202F, 0xF800707F, .A, {}}, {.AMOAND_W, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x6000202F, 0xF800707F, .A, {}}, {.AMOOR_W, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x4000202F, 0xF800707F, .A, {}}, {.AMOMIN_W, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x8000202F, 0xF800707F, .A, {}}, {.AMOMAX_W, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0xA000202F, 0xF800707F, .A, {}}, {.AMOMINU_W, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0xC000202F, 0xF800707F, .A, {}}, {.AMOMAXU_W, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0xE000202F, 0xF800707F, .A, {}}, {.SC_D, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x1800302F, 0xF800707F, .A, {rv64_only=true}}, {.AMOSWAP_D, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x0800302F, 0xF800707F, .A, {rv64_only=true}}, {.AMOADD_D, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x0000302F, 0xF800707F, .A, {rv64_only=true}}, {.AMOXOR_D, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x2000302F, 0xF800707F, .A, {rv64_only=true}}, {.AMOAND_D, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x6000302F, 0xF800707F, .A, {rv64_only=true}}, {.AMOOR_D, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x4000302F, 0xF800707F, .A, {rv64_only=true}}, {.AMOMIN_D, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0x8000302F, 0xF800707F, .A, {rv64_only=true}}, {.AMOMAX_D, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0xA000302F, 0xF800707F, .A, {rv64_only=true}}, {.AMOMINU_D, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0xC000302F, 0xF800707F, .A, {rv64_only=true}}, {.AMOMAXU_D, {.GPR, .GPR, .MEM, .NONE}, {.RD, .RS2, .OFFSET_BASE_A, .NONE}, 0xE000302F, 0xF800707F, .A, {rv64_only=true}}, {.ADD, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x00000033, 0xFE00707F, .I, {}}, {.SUB, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x40000033, 0xFE00707F, .I, {}}, {.SLL, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x00001033, 0xFE00707F, .I, {}}, {.SLT, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x00002033, 0xFE00707F, .I, {}}, {.SLTU, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x00003033, 0xFE00707F, .I, {}}, {.XOR, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x00004033, 0xFE00707F, .I, {}}, {.SRL, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x00005033, 0xFE00707F, .I, {}}, {.SRA, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x40005033, 0xFE00707F, .I, {}}, {.OR, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x00006033, 0xFE00707F, .I, {}}, {.AND, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x00007033, 0xFE00707F, .I, {}}, {.MUL, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x02000033, 0xFE00707F, .M, {}}, {.MULH, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x02001033, 0xFE00707F, .M, {}}, {.MULHSU, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x02002033, 0xFE00707F, .M, {}}, {.MULHU, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x02003033, 0xFE00707F, .M, {}}, {.DIV, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x02004033, 0xFE00707F, .M, {}}, {.DIVU, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x02005033, 0xFE00707F, .M, {}}, {.REM, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x02006033, 0xFE00707F, .M, {}}, {.REMU, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x02007033, 0xFE00707F, .M, {}}, {.LUI, {.GPR, .IMM20, .NONE, .NONE}, {.RD, .IMM_U, .NONE, .NONE}, 0x00000037, 0x0000007F, .I, {}}, {.ADDW, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x0000003B, 0xFE00707F, .I, {rv64_only=true}}, {.SUBW, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x4000003B, 0xFE00707F, .I, {rv64_only=true}}, {.SLLW, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x0000103B, 0xFE00707F, .I, {rv64_only=true}}, {.SRLW, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x0000503B, 0xFE00707F, .I, {rv64_only=true}}, {.SRAW, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x4000503B, 0xFE00707F, .I, {rv64_only=true}}, {.MULW, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x0200003B, 0xFE00707F, .M, {rv64_only=true}}, {.DIVW, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x0200403B, 0xFE00707F, .M, {rv64_only=true}}, {.DIVUW, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x0200503B, 0xFE00707F, .M, {rv64_only=true}}, {.REMW, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x0200603B, 0xFE00707F, .M, {rv64_only=true}}, {.REMUW, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x0200703B, 0xFE00707F, .M, {rv64_only=true}}, {.FMADD_S, {.FPR, .FPR, .FPR, .FPR}, {.RD, .RS1, .RS2, .RS3}, 0x00000043, 0x0600007F, .F, {fp_round=true}}, {.FMADD_D, {.FPR, .FPR, .FPR, .FPR}, {.RD, .RS1, .RS2, .RS3}, 0x02000043, 0x0600007F, .D, {fp_round=true}}, {.FMSUB_S, {.FPR, .FPR, .FPR, .FPR}, {.RD, .RS1, .RS2, .RS3}, 0x00000047, 0x0600007F, .F, {fp_round=true}}, {.FMSUB_D, {.FPR, .FPR, .FPR, .FPR}, {.RD, .RS1, .RS2, .RS3}, 0x02000047, 0x0600007F, .D, {fp_round=true}}, {.FNMSUB_S, {.FPR, .FPR, .FPR, .FPR}, {.RD, .RS1, .RS2, .RS3}, 0x0000004B, 0x0600007F, .F, {fp_round=true}}, {.FNMSUB_D, {.FPR, .FPR, .FPR, .FPR}, {.RD, .RS1, .RS2, .RS3}, 0x0200004B, 0x0600007F, .D, {fp_round=true}}, {.FNMADD_S, {.FPR, .FPR, .FPR, .FPR}, {.RD, .RS1, .RS2, .RS3}, 0x0000004F, 0x0600007F, .F, {fp_round=true}}, {.FNMADD_D, {.FPR, .FPR, .FPR, .FPR}, {.RD, .RS1, .RS2, .RS3}, 0x0200004F, 0x0600007F, .D, {fp_round=true}}, {.FADD_S, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x00000053, 0xFE00007F, .F, {fp_round=true}}, {.FADD_D, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x02000053, 0xFE00007F, .D, {fp_round=true}}, {.FSUB_S, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x08000053, 0xFE00007F, .F, {fp_round=true}}, {.FSUB_D, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x0A000053, 0xFE00007F, .D, {fp_round=true}}, {.FMUL_S, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x10000053, 0xFE00007F, .F, {fp_round=true}}, {.FMUL_D, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x12000053, 0xFE00007F, .D, {fp_round=true}}, {.FDIV_S, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x18000053, 0xFE00007F, .F, {fp_round=true}}, {.FDIV_D, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x1A000053, 0xFE00007F, .D, {fp_round=true}}, {.FSGNJ_S, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x20000053, 0xFE00707F, .F, {}}, {.FSGNJN_S, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x20001053, 0xFE00707F, .F, {}}, {.FSGNJX_S, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x20002053, 0xFE00707F, .F, {}}, {.FSGNJ_D, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x22000053, 0xFE00707F, .D, {}}, {.FSGNJN_D, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x22001053, 0xFE00707F, .D, {}}, {.FSGNJX_D, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x22002053, 0xFE00707F, .D, {}}, {.FMIN_S, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x28000053, 0xFE00707F, .F, {}}, {.FMAX_S, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x28001053, 0xFE00707F, .F, {}}, {.FMIN_D, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x2A000053, 0xFE00707F, .D, {}}, {.FMAX_D, {.FPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0x2A001053, 0xFE00707F, .D, {}}, {.FCVT_S_D, {.FPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0x40100053, 0xFFF0007F, .D, {fp_round=true}}, {.FCVT_D_S, {.FPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0x42000053, 0xFFF0007F, .D, {fp_round=true}}, {.FSQRT_S, {.FPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0x58000053, 0xFFF0007F, .F, {fp_round=true}}, {.FSQRT_D, {.FPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0x5A000053, 0xFFF0007F, .D, {fp_round=true}}, {.FEQ_S, {.GPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0xA0002053, 0xFE00707F, .F, {}}, {.FLT_S, {.GPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0xA0001053, 0xFE00707F, .F, {}}, {.FLE_S, {.GPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0xA0000053, 0xFE00707F, .F, {}}, {.FEQ_D, {.GPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0xA2002053, 0xFE00707F, .D, {}}, {.FLT_D, {.GPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0xA2001053, 0xFE00707F, .D, {}}, {.FLE_D, {.GPR, .FPR, .FPR, .NONE}, {.RD, .RS1, .RS2, .NONE}, 0xA2000053, 0xFE00707F, .D, {}}, {.FCVT_W_S, {.GPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xC0000053, 0xFFF0007F, .F, {fp_round=true}}, {.FCVT_WU_S, {.GPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xC0100053, 0xFFF0007F, .F, {fp_round=true}}, {.FCVT_L_S, {.GPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xC0200053, 0xFFF0007F, .F, {rv64_only=true, fp_round=true}}, {.FCVT_LU_S, {.GPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xC0300053, 0xFFF0007F, .F, {rv64_only=true, fp_round=true}}, {.FCVT_W_D, {.GPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xC2000053, 0xFFF0007F, .D, {fp_round=true}}, {.FCVT_WU_D, {.GPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xC2100053, 0xFFF0007F, .D, {fp_round=true}}, {.FCVT_L_D, {.GPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xC2200053, 0xFFF0007F, .D, {rv64_only=true, fp_round=true}}, {.FCVT_LU_D, {.GPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xC2300053, 0xFFF0007F, .D, {rv64_only=true, fp_round=true}}, {.FCVT_S_W, {.FPR, .GPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xD0000053, 0xFFF0007F, .F, {fp_round=true}}, {.FCVT_S_WU, {.FPR, .GPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xD0100053, 0xFFF0007F, .F, {fp_round=true}}, {.FCVT_S_L, {.FPR, .GPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xD0200053, 0xFFF0007F, .F, {rv64_only=true, fp_round=true}}, {.FCVT_S_LU, {.FPR, .GPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xD0300053, 0xFFF0007F, .F, {rv64_only=true, fp_round=true}}, {.FCVT_D_W, {.FPR, .GPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xD2000053, 0xFFF0007F, .D, {fp_round=true}}, {.FCVT_D_WU, {.FPR, .GPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xD2100053, 0xFFF0007F, .D, {fp_round=true}}, {.FCVT_D_L, {.FPR, .GPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xD2200053, 0xFFF0007F, .D, {rv64_only=true, fp_round=true}}, {.FCVT_D_LU, {.FPR, .GPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xD2300053, 0xFFF0007F, .D, {rv64_only=true, fp_round=true}}, {.FMV_X_W, {.GPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xE0000053, 0xFFF0707F, .F, {}}, {.FCLASS_S, {.GPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xE0001053, 0xFFF0707F, .F, {}}, {.FCLASS_D, {.GPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xE2001053, 0xFFF0707F, .D, {}}, {.FMV_X_D, {.GPR, .FPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xE2000053, 0xFFF0707F, .D, {rv64_only=true}}, {.FMV_W_X, {.FPR, .GPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xF0000053, 0xFFF0707F, .F, {}}, {.FMV_D_X, {.FPR, .GPR, .NONE, .NONE}, {.RD, .RS1, .NONE, .NONE}, 0xF2000053, 0xFFF0707F, .D, {rv64_only=true}}, {.BEQ, {.GPR, .GPR, .REL13, .NONE}, {.RS1, .RS2, .IMM_B, .NONE}, 0x00000063, 0x0000707F, .I, {branch=true}}, {.BNE, {.GPR, .GPR, .REL13, .NONE}, {.RS1, .RS2, .IMM_B, .NONE}, 0x00001063, 0x0000707F, .I, {branch=true}}, {.BLT, {.GPR, .GPR, .REL13, .NONE}, {.RS1, .RS2, .IMM_B, .NONE}, 0x00004063, 0x0000707F, .I, {branch=true}}, {.BGE, {.GPR, .GPR, .REL13, .NONE}, {.RS1, .RS2, .IMM_B, .NONE}, 0x00005063, 0x0000707F, .I, {branch=true}}, {.BLTU, {.GPR, .GPR, .REL13, .NONE}, {.RS1, .RS2, .IMM_B, .NONE}, 0x00006063, 0x0000707F, .I, {branch=true}}, {.BGEU, {.GPR, .GPR, .REL13, .NONE}, {.RS1, .RS2, .IMM_B, .NONE}, 0x00007063, 0x0000707F, .I, {branch=true}}, {.JALR, {.GPR, .GPR, .IMM12, .NONE}, {.RD, .RS1, .IMM_I, .NONE}, 0x00000067, 0x0000707F, .I, {branch=true}}, {.JAL, {.GPR, .REL21, .NONE, .NONE}, {.RD, .IMM_J, .NONE, .NONE}, 0x0000006F, 0x0000007F, .I, {branch=true}}, {.ECALL, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0x00000073, 0xFFFFFFFF, .I, {branch=true}}, {.EBREAK, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0x00100073, 0xFFFFFFFF, .I, {branch=true}}, {.CSRRW, {.GPR, .CSR, .GPR, .NONE}, {.RD, .CSR_FIELD, .RS1, .NONE}, 0x00001073, 0x0000707F, .ZICSR, {}}, {.CSRRS, {.GPR, .CSR, .GPR, .NONE}, {.RD, .CSR_FIELD, .RS1, .NONE}, 0x00002073, 0x0000707F, .ZICSR, {}}, {.CSRRC, {.GPR, .CSR, .GPR, .NONE}, {.RD, .CSR_FIELD, .RS1, .NONE}, 0x00003073, 0x0000707F, .ZICSR, {}}, {.CSRRWI, {.GPR, .CSR, .ZIMM5, .NONE}, {.RD, .CSR_FIELD, .ZIMM_FIELD, .NONE}, 0x00005073, 0x0000707F, .ZICSR, {}}, {.CSRRSI, {.GPR, .CSR, .ZIMM5, .NONE}, {.RD, .CSR_FIELD, .ZIMM_FIELD, .NONE}, 0x00006073, 0x0000707F, .ZICSR, {}}, {.CSRRCI, {.GPR, .CSR, .ZIMM5, .NONE}, {.RD, .CSR_FIELD, .ZIMM_FIELD, .NONE}, 0x00007073, 0x0000707F, .ZICSR, {}}, {.C_ADDI4SPN, {.GPR_C, .GPR_SP, .IMM_C8U, .NONE}, {.C_RD_PRIMED, .NONE, .C_IMM_CIW, .NONE}, 0x00000000, 0x0000E003, .C, {}}, {.C_NOP, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0x00000001, 0x0000FFFF, .C, {}}, {.C_ADDI, {.GPR_NONZERO, .IMM_C6S, .NONE, .NONE}, {.C_RD_RS1, .C_IMM_CI_S, .NONE, .NONE}, 0x00000001, 0x0000E003, .C, {}}, {.C_SLLI, {.GPR_NONZERO, .IMM_C6U, .NONE, .NONE}, {.C_RD_RS1, .C_IMM_CI_U, .NONE, .NONE}, 0x00000002, 0x0000E003, .C, {}}, {.C_FLD, {.FPR_C, .MEM_C_D, .NONE, .NONE}, {.C_RD_PRIMED, .C_OFFSET_BASE_D, .NONE, .NONE}, 0x00002000, 0x0000E003, .D, {}}, {.C_ADDIW, {.GPR_NONZERO, .IMM_C6S, .NONE, .NONE}, {.C_RD_RS1, .C_IMM_CI_S, .NONE, .NONE}, 0x00002001, 0x0000E003, .C, {rv64_only=true}}, {.C_JAL, {.REL12, .NONE, .NONE, .NONE}, {.C_BRANCH12, .NONE, .NONE, .NONE}, 0x00002001, 0x0000E003, .C, {rv32_only=true, branch=true}}, {.C_FLDSP, {.FPR, .MEM_C_SP_D, .NONE, .NONE}, {.C_RD_RS1, .C_SP_OFFSET_D, .NONE, .NONE}, 0x00002002, 0x0000E003, .D, {}}, {.C_LW, {.GPR_C, .MEM_C_W, .NONE, .NONE}, {.C_RD_PRIMED, .C_OFFSET_BASE_W, .NONE, .NONE}, 0x00004000, 0x0000E003, .C, {}}, {.C_LI, {.GPR_NONZERO, .IMM_C6S, .NONE, .NONE}, {.C_RD_RS1, .C_IMM_CI_S, .NONE, .NONE}, 0x00004001, 0x0000E003, .C, {}}, {.C_LWSP, {.GPR_NONZERO, .MEM_C_SP_W, .NONE, .NONE}, {.C_RD_RS1, .C_SP_OFFSET_W, .NONE, .NONE}, 0x00004002, 0x0000E003, .C, {}}, {.C_LD, {.GPR_C, .MEM_C_D, .NONE, .NONE}, {.C_RD_PRIMED, .C_OFFSET_BASE_D, .NONE, .NONE}, 0x00006000, 0x0000E003, .C, {rv64_only=true}}, {.C_ADDI16SP, {.GPR_SP, .IMM_C10S, .NONE, .NONE}, {.NONE, .C_IMM_ADDI16SP, .NONE, .NONE}, 0x00006101, 0x0000EF83, .C, {}}, {.C_LUI, {.GPR_NONZERO, .IMM_C18S, .NONE, .NONE}, {.C_RD_RS1, .C_IMM_LUI, .NONE, .NONE}, 0x00006001, 0x0000E003, .C, {}}, {.C_LDSP, {.GPR_NONZERO, .MEM_C_SP_D, .NONE, .NONE}, {.C_RD_RS1, .C_SP_OFFSET_D, .NONE, .NONE}, 0x00006002, 0x0000E003, .C, {rv64_only=true}}, {.C_SUB, {.GPR_C, .GPR_C, .NONE, .NONE}, {.C_RD_RS1_PRIMED, .C_RS2_PRIMED, .NONE, .NONE}, 0x00008C01, 0x0000FC63, .C, {}}, {.C_XOR, {.GPR_C, .GPR_C, .NONE, .NONE}, {.C_RD_RS1_PRIMED, .C_RS2_PRIMED, .NONE, .NONE}, 0x00008C21, 0x0000FC63, .C, {}}, {.C_OR, {.GPR_C, .GPR_C, .NONE, .NONE}, {.C_RD_RS1_PRIMED, .C_RS2_PRIMED, .NONE, .NONE}, 0x00008C41, 0x0000FC63, .C, {}}, {.C_AND, {.GPR_C, .GPR_C, .NONE, .NONE}, {.C_RD_RS1_PRIMED, .C_RS2_PRIMED, .NONE, .NONE}, 0x00008C61, 0x0000FC63, .C, {}}, {.C_SUBW, {.GPR_C, .GPR_C, .NONE, .NONE}, {.C_RD_RS1_PRIMED, .C_RS2_PRIMED, .NONE, .NONE}, 0x00009C01, 0x0000FC63, .C, {rv64_only=true}}, {.C_ADDW, {.GPR_C, .GPR_C, .NONE, .NONE}, {.C_RD_RS1_PRIMED, .C_RS2_PRIMED, .NONE, .NONE}, 0x00009C21, 0x0000FC63, .C, {rv64_only=true}}, {.C_SRLI, {.GPR_C, .IMM_C6U, .NONE, .NONE}, {.C_RD_RS1_PRIMED, .C_IMM_CI_U, .NONE, .NONE}, 0x00008001, 0x0000EC03, .C, {}}, {.C_SRAI, {.GPR_C, .IMM_C6U, .NONE, .NONE}, {.C_RD_RS1_PRIMED, .C_IMM_CI_U, .NONE, .NONE}, 0x00008401, 0x0000EC03, .C, {}}, {.C_ANDI, {.GPR_C, .IMM_C6S, .NONE, .NONE}, {.C_RD_RS1_PRIMED, .C_IMM_CI_S, .NONE, .NONE}, 0x00008801, 0x0000EC03, .C, {}}, {.C_EBREAK, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0x00009002, 0x0000FFFF, .C, {}}, {.C_JR, {.GPR_NONZERO, .NONE, .NONE, .NONE}, {.C_RD_RS1, .NONE, .NONE, .NONE}, 0x00008002, 0x0000F07F, .C, {branch=true}}, {.C_JALR, {.GPR_NONZERO, .NONE, .NONE, .NONE}, {.C_RD_RS1, .NONE, .NONE, .NONE}, 0x00009002, 0x0000F07F, .C, {branch=true}}, {.C_MV, {.GPR_NONZERO, .GPR_NONZERO, .NONE, .NONE}, {.C_RD_RS1, .C_RS2, .NONE, .NONE}, 0x00008002, 0x0000F003, .C, {}}, {.C_ADD, {.GPR_NONZERO, .GPR_NONZERO, .NONE, .NONE}, {.C_RD_RS1, .C_RS2, .NONE, .NONE}, 0x00009002, 0x0000F003, .C, {}}, {.C_FSD, {.FPR_C, .MEM_C_D, .NONE, .NONE}, {.C_RS2_PRIMED, .C_OFFSET_BASE_D, .NONE, .NONE}, 0x0000A000, 0x0000E003, .D, {}}, {.C_J, {.REL12, .NONE, .NONE, .NONE}, {.C_BRANCH12, .NONE, .NONE, .NONE}, 0x0000A001, 0x0000E003, .C, {branch=true}}, {.C_FSDSP, {.FPR, .MEM_C_SP_D, .NONE, .NONE}, {.C_RS2, .C_IMM_CSS_D, .NONE, .NONE}, 0x0000A002, 0x0000E003, .D, {}}, {.C_SW, {.GPR_C, .MEM_C_W, .NONE, .NONE}, {.C_RS2_PRIMED, .C_OFFSET_BASE_W, .NONE, .NONE}, 0x0000C000, 0x0000E003, .C, {}}, {.C_BEQZ, {.GPR_C, .REL9, .NONE, .NONE}, {.C_RS1_PRIMED, .C_BRANCH9, .NONE, .NONE}, 0x0000C001, 0x0000E003, .C, {branch=true}}, {.C_SWSP, {.GPR, .MEM_C_SP_W, .NONE, .NONE}, {.C_RS2, .C_IMM_CSS_W, .NONE, .NONE}, 0x0000C002, 0x0000E003, .C, {}}, {.C_SD, {.GPR_C, .MEM_C_D, .NONE, .NONE}, {.C_RS2_PRIMED, .C_OFFSET_BASE_D, .NONE, .NONE}, 0x0000E000, 0x0000E003, .C, {rv64_only=true}}, {.C_BNEZ, {.GPR_C, .REL9, .NONE, .NONE}, {.C_RS1_PRIMED, .C_BRANCH9, .NONE, .NONE}, 0x0000E001, 0x0000E003, .C, {branch=true}}, {.C_SDSP, {.GPR, .MEM_C_SP_D, .NONE, .NONE}, {.C_RS2, .C_IMM_CSS_D, .NONE, .NONE}, 0x0000E002, 0x0000E003, .C, {rv64_only=true}}, } @(rodata) DECODE_INDEX_OPCODE := [128]Decode_Index{ 0x03 = {0, 7}, 0x07 = {7, 2}, 0x0F = {9, 2}, 0x13 = {11, 9}, 0x17 = {20, 1}, 0x1B = {21, 4}, 0x23 = {25, 4}, 0x27 = {29, 2}, 0x2F = {31, 22}, 0x33 = {53, 18}, 0x37 = {71, 1}, 0x3B = {72, 10}, 0x43 = {82, 2}, 0x47 = {84, 2}, 0x4B = {86, 2}, 0x4F = {88, 2}, 0x53 = {90, 50}, 0x63 = {140, 6}, 0x67 = {146, 1}, 0x6F = {147, 1}, 0x73 = {148, 8}, } @(rodata) DECODE_INDEX_OP_FP := [128]Decode_Index{ 0x00 = {90, 1}, 0x01 = {91, 1}, 0x04 = {92, 1}, 0x05 = {93, 1}, 0x08 = {94, 1}, 0x09 = {95, 1}, 0x0C = {96, 1}, 0x0D = {97, 1}, 0x10 = {98, 3}, 0x11 = {101, 3}, 0x14 = {104, 2}, 0x15 = {106, 2}, 0x20 = {108, 1}, 0x21 = {109, 1}, 0x2C = {110, 1}, 0x2D = {111, 1}, 0x50 = {112, 3}, 0x51 = {115, 3}, 0x60 = {118, 4}, 0x61 = {122, 4}, 0x68 = {126, 4}, 0x69 = {130, 4}, 0x70 = {134, 2}, 0x71 = {136, 2}, 0x78 = {138, 1}, 0x79 = {139, 1}, } @(rodata) DECODE_INDEX_RVC := [32]Decode_Index{ 0x00 = {156, 1}, 0x01 = {157, 2}, 0x02 = {159, 1}, 0x04 = {160, 1}, 0x05 = {161, 2}, 0x06 = {163, 1}, 0x08 = {164, 1}, 0x09 = {165, 1}, 0x0A = {166, 1}, 0x0C = {167, 1}, 0x0D = {168, 2}, 0x0E = {170, 1}, 0x11 = {171, 9}, 0x12 = {180, 5}, 0x14 = {185, 1}, 0x15 = {186, 1}, 0x16 = {187, 1}, 0x18 = {188, 1}, 0x19 = {189, 1}, 0x1A = {190, 1}, 0x1C = {191, 1}, 0x1D = {192, 1}, 0x1E = {193, 1}, }