diff options
author | Dave.Wen <dave.wen@sifive.com> | 2019-04-01 17:28:27 -0700 |
---|---|---|
committer | Dave.Wen <dave.wen@sifive.com> | 2019-04-01 17:28:27 -0700 |
commit | b1bff4882ba4575b9b941641c5bb959b79992dfc (patch) | |
tree | 8e3069d0a928a1e2c834438e5412316792ff372b /riscv | |
parent | e92b76f5bbc8b2bd4567cb0075ace89897c07d61 (diff) | |
download | spike-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.h | 19 |
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; }) |