aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/vmulh_vx.h
diff options
context:
space:
mode:
authorDave.Wen <dave.wen@sifive.com>2019-04-08 18:45:19 -0700
committerDave.Wen <dave.wen@sifive.com>2019-04-08 18:45:19 -0700
commit92e9732e10a11f967aad6ba73f061d8af92a80a2 (patch)
tree32f311838ad852738021d753111c965a0f417200 /riscv/insns/vmulh_vx.h
parent24b18623b2fddfdd633a337b2d9e23caea9f4c89 (diff)
downloadspike-92e9732e10a11f967aad6ba73f061d8af92a80a2.zip
spike-92e9732e10a11f967aad6ba73f061d8af92a80a2.tar.gz
spike-92e9732e10a11f967aad6ba73f061d8af92a80a2.tar.bz2
fixed: xext, vmulh[u]_v[vx], vsne_vi
Diffstat (limited to 'riscv/insns/vmulh_vx.h')
-rw-r--r--riscv/insns/vmulh_vx.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/riscv/insns/vmulh_vx.h b/riscv/insns/vmulh_vx.h
index a7bf7aa..1898950 100644
--- a/riscv/insns/vmulh_vx.h
+++ b/riscv/insns/vmulh_vx.h
@@ -1,5 +1,9 @@
// vmulh
+reg_t vsew = STATE.VU.vsew;
+uint64_t lo_mask = ((uint64_t)1 << vsew) - 1;
+
VI_VX_LOOP
({
- vd = vsext((rs1 * vs2) >> (sew/2), sew);
+ int64_t result = (int64_t)rs1 * (int64_t)vs2;
+ vd = (result >> sew) & lo_mask;
})