return sv_reg_t(data, xlen, bitwidth);
}
+sv_freg_t sv_proc_t::get_fpreg(reg_spec_t const&spec)
+{
+ freg_t data = READ_FREG(spec);
+ uint8_t bitwidth = _insn->src_bitwidth;
+ return sv_freg_t(data, xlen, bitwidth);
+}
+
#define GET_REG(name) \
sv_reg_t sv_proc_t::get_##name() \
{ \
return get_intreg({X_SP, _insn->get_sp_offs()});
}
-sv_freg_t sv_proc_t::get_frs1()
-{
- reg_spec_t spec = _insn->rs1();
- return READ_FREG(spec);
-}
-
-sv_freg_t sv_proc_t::get_frs3()
-{
- return READ_FREG(_insn->rs3());
-}
-
-sv_freg_t sv_proc_t::get_frs2()
-{
- return READ_FREG(_insn->rs2());
-}
-
-sv_freg_t sv_proc_t::get_rvc_frs2s()
-{
- return READ_FREG(_insn->rvc_rs2s());
-}
+#define GET_FPREG(name, getter) \
+ sv_freg_t sv_proc_t::get_##name() \
+ { \
+ reg_spec_t reg = _insn->getter (); \
+ return get_fpreg(reg); \
+ }
-sv_freg_t sv_proc_t::get_rvc_frs2()
-{
- return READ_FREG(_insn->rvc_rs2());
-}
+GET_FPREG(frs1, rs1)
+GET_FPREG(frs2, rs2)
+GET_FPREG(frs3, rs3)
+GET_FPREG(rvc_frs2, rvc_rs2)
+GET_FPREG(rvc_frs2s, rvc_rs2s)
sv_reg_t sv_proc_t::get_shamt()
{