aboutsummaryrefslogtreecommitdiff
path: root/riscv
diff options
context:
space:
mode:
authorDave.Wen <dave.wen@sifive.com>2019-04-01 17:28:27 -0700
committerDave.Wen <dave.wen@sifive.com>2019-04-01 17:28:27 -0700
commitb1bff4882ba4575b9b941641c5bb959b79992dfc (patch)
tree8e3069d0a928a1e2c834438e5412316792ff372b /riscv
parente92b76f5bbc8b2bd4567cb0075ace89897c07d61 (diff)
downloadspike-b1bff4882ba4575b9b941641c5bb959b79992dfc.zip
spike-b1bff4882ba4575b9b941641c5bb959b79992dfc.tar.gz
spike-b1bff4882ba4575b9b941641c5bb959b79992dfc.tar.bz2
rvv: add vfredosum_vs.h
Diffstat (limited to 'riscv')
-rw-r--r--riscv/insns/vfredosum_vs.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/riscv/insns/vfredosum_vs.h b/riscv/insns/vfredosum_vs.h
index 1257c85..3122b64 100644
--- a/riscv/insns/vfredosum_vs.h
+++ b/riscv/insns/vfredosum_vs.h
@@ -1,5 +1,20 @@
-// vfredosum
+// vfredosum: vd[0] = sum( vs2[*] , vs1[0] )
+softfloat_roundingMode = STATE.VU.vxrm;
+float32_t sum;
+float32_t vs1_0;
VFP_VV_LOOP
({
- // NOT IMPLEMENTED YET
+ if(i == 0){
+ vs1_0 = vs1;
+ }
+ switch(STATE.VU.vsew){
+ case e32:
+ sum = f32_add(sum, f32_add(vs2, vs1_0));
+ break;
+ case e16:
+ case e8:
+ default:
+ softfloat_exceptionFlags = 1;
+ };
+ vd = sum;
})