aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/vfwcvt_rtz_xu_f_v.h
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/insns/vfwcvt_rtz_xu_f_v.h')
-rw-r--r--riscv/insns/vfwcvt_rtz_xu_f_v.h17
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)