X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=spike_main%2Fdisasm.cc;h=49f4de2ed802256e14c4d97e446e16a8544846a6;hb=f8a83a80525264761a982cdb4074cb09ac72d7de;hp=56c6fe62d5d1fbeec86523f4d0123ad7f5784eb1;hpb=b3caeee9858b3417d4110b921305c441d3c87653;p=riscv-isa-sim.git diff --git a/spike_main/disasm.cc b/spike_main/disasm.cc index 56c6fe6..49f4de2 100644 --- a/spike_main/disasm.cc +++ b/spike_main/disasm.cc @@ -336,9 +336,11 @@ disassembler_t::disassembler_t(int xlen) DEFINE_FLOAD(flw) DEFINE_FLOAD(fld) + DEFINE_FLOAD(flq) DEFINE_FSTORE(fsw) DEFINE_FSTORE(fsd) + DEFINE_FSTORE(fsq) add_insn(new disasm_insn_t("j", match_jal, mask_jal | mask_rd, {&jump_target})); add_insn(new disasm_insn_t("jal", match_jal | match_rd_ra, mask_jal | mask_rd, {&jump_target})); @@ -451,6 +453,7 @@ disassembler_t::disassembler_t(int xlen) DEFINE_FRTYPE(fsgnjn_s); DEFINE_FRTYPE(fsgnjx_s); DEFINE_FR1TYPE(fcvt_s_d); + DEFINE_FR1TYPE(fcvt_s_q); DEFINE_XFTYPE(fcvt_s_l); DEFINE_XFTYPE(fcvt_s_lu); DEFINE_XFTYPE(fcvt_s_w); @@ -482,6 +485,7 @@ disassembler_t::disassembler_t(int xlen) DEFINE_FRTYPE(fsgnjn_d); DEFINE_FRTYPE(fsgnjx_d); DEFINE_FR1TYPE(fcvt_d_s); + DEFINE_FR1TYPE(fcvt_d_q); DEFINE_XFTYPE(fcvt_d_l); DEFINE_XFTYPE(fcvt_d_lu); DEFINE_XFTYPE(fcvt_d_w); @@ -498,10 +502,42 @@ disassembler_t::disassembler_t(int xlen) DEFINE_FXTYPE(flt_d); DEFINE_FXTYPE(fle_d); + DEFINE_FRTYPE(fadd_q); + DEFINE_FRTYPE(fsub_q); + DEFINE_FRTYPE(fmul_q); + DEFINE_FRTYPE(fdiv_q); + DEFINE_FR1TYPE(fsqrt_q); + DEFINE_FRTYPE(fmin_q); + DEFINE_FRTYPE(fmax_q); + DEFINE_FR3TYPE(fmadd_q); + DEFINE_FR3TYPE(fmsub_q); + DEFINE_FR3TYPE(fnmadd_q); + DEFINE_FR3TYPE(fnmsub_q); + DEFINE_FRTYPE(fsgnj_q); + DEFINE_FRTYPE(fsgnjn_q); + DEFINE_FRTYPE(fsgnjx_q); + DEFINE_FR1TYPE(fcvt_q_s); + DEFINE_FR1TYPE(fcvt_q_d); + DEFINE_XFTYPE(fcvt_q_l); + DEFINE_XFTYPE(fcvt_q_lu); + DEFINE_XFTYPE(fcvt_q_w); + DEFINE_XFTYPE(fcvt_q_wu); + DEFINE_XFTYPE(fcvt_q_wu); + DEFINE_XFTYPE(fmv_q_x); + DEFINE_FXTYPE(fcvt_l_q); + DEFINE_FXTYPE(fcvt_lu_q); + DEFINE_FXTYPE(fcvt_w_q); + DEFINE_FXTYPE(fcvt_wu_q); + DEFINE_FXTYPE(fclass_q); + DEFINE_FXTYPE(fmv_x_q); + DEFINE_FXTYPE(feq_q); + DEFINE_FXTYPE(flt_q); + DEFINE_FXTYPE(fle_q); + DISASM_INSN("ebreak", c_add, mask_rd | mask_rvc_rs2, {}); - add_insn(new disasm_insn_t("ret", match_c_li | match_rd_ra, mask_c_li | mask_rd | mask_rvc_imm, {})); - DISASM_INSN("jr", c_li, mask_rvc_imm, {&rvc_rs1}); - DISASM_INSN("jalr", c_lui, mask_rvc_imm, {&rvc_rs1}); + add_insn(new disasm_insn_t("ret", match_c_jr | match_rd_ra, mask_c_jr | mask_rd | mask_rvc_imm, {})); + DISASM_INSN("jr", c_jr, mask_rvc_imm, {&rvc_rs1}); + DISASM_INSN("jalr", c_jalr, mask_rvc_imm, {&rvc_rs1}); DISASM_INSN("nop", c_addi, mask_rd | mask_rvc_imm, {}); DISASM_INSN("addi", c_addi16sp, mask_rd, {&rvc_sp, &rvc_sp, &rvc_addi16sp_imm}); DISASM_INSN("addi", c_addi4spn, 0, {&rvc_rs1s, &rvc_sp, &rvc_addi4spn_imm});