diff options
Diffstat (limited to 'riscv/insns/vfwcvt_rtz_xu_f_v.h')
-rw-r--r-- | riscv/insns/vfwcvt_rtz_xu_f_v.h | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/riscv/insns/vfwcvt_rtz_xu_f_v.h b/riscv/insns/vfwcvt_rtz_xu_f_v.h index d6bbc48..894582d 100644 --- a/riscv/insns/vfwcvt_rtz_xu_f_v.h +++ b/riscv/insns/vfwcvt_rtz_xu_f_v.h @@ -1,11 +1,12 @@ -// vfwcvt.xu.f.v vd, vs2, vm -VI_CHECK_DSS(false); -if (P.VU.vsew == e32) - require(p->supports_extension('D')); - -VI_VFP_LOOP_BASE +// vfwcvt.rtz,xu.f.v vd, vs2, vm +VI_VFP_CVT_SCALE +({ + softfloat_roundingMode = softfloat_round_minMag; + auto vs2 = P.VU.elt<float16_t>(rs2_num, i); + P.VU.elt<uint32_t>(rd_num, i, true) = f16_to_ui32(vs2, STATE.frm, true); +}, +{ softfloat_roundingMode = softfloat_round_minMag; auto vs2 = P.VU.elt<float32_t>(rs2_num, i); P.VU.elt<uint64_t>(rd_num, i, true) = f32_to_ui64(vs2, STATE.frm, true); - set_fp_exceptions; -VI_VFP_LOOP_WIDE_END +}, true) |