aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilal Sakhawat <63648044+bilalsakhawat-10xe@users.noreply.github.com>2022-01-20 00:14:23 +0500
committerGitHub <noreply@github.com>2022-01-19 19:14:23 +0000
commit56125e6fe6fbceacda0134da3e699a601986abc5 (patch)
tree7bfdbf7422d6d6cd363175b477eaca02153dcf99
parentb2d56b70adf2f62f2fc9ed9f6e49493e22903aaa (diff)
downloadsail-riscv-56125e6fe6fbceacda0134da3e699a601986abc5.zip
sail-riscv-56125e6fe6fbceacda0134da3e699a601986abc5.tar.gz
sail-riscv-56125e6fe6fbceacda0134da3e699a601986abc5.tar.bz2
Add support for Zmmul (#122)
-rw-r--r--model/riscv_insts_mext.sail4
-rw-r--r--model/riscv_sys_regs.sail2
2 files changed, 4 insertions, 2 deletions
diff --git a/model/riscv_insts_mext.sail b/model/riscv_insts_mext.sail
index 6ab6ed2..c6bb91f 100644
--- a/model/riscv_insts_mext.sail
+++ b/model/riscv_insts_mext.sail
@@ -85,7 +85,7 @@ mapping clause encdec = MUL(rs2, rs1, rd, high, signed1, signed2)
<-> 0b0000001 @ rs2 @ rs1 @ encdec_mul_op(high, signed1, signed2) : bits(3) @ rd @ 0b0110011
function clause execute (MUL(rs2, rs1, rd, high, signed1, signed2)) = {
- if haveMulDiv() then {
+ if haveMulDiv() | haveZmmul() then {
let rs1_val = X(rs1);
let rs2_val = X(rs2);
let rs1_int : int = if signed1 then signed(rs1_val) else unsigned(rs1_val);
@@ -177,7 +177,7 @@ mapping clause encdec = MULW(rs2, rs1, rd)
if sizeof(xlen) == 64
function clause execute (MULW(rs2, rs1, rd)) = {
- if haveMulDiv() then {
+ if haveMulDiv() | haveZmmul() then {
let rs1_val = X(rs1)[31..0];
let rs2_val = X(rs2)[31..0];
let rs1_int : int = signed(rs1_val);
diff --git a/model/riscv_sys_regs.sail b/model/riscv_sys_regs.sail
index 98e5019..91e70c0 100644
--- a/model/riscv_sys_regs.sail
+++ b/model/riscv_sys_regs.sail
@@ -198,6 +198,8 @@ function haveZknh() -> bool = true
function haveZkne() -> bool = true
function haveZknd() -> bool = true
+function haveZmmul() -> bool = true
+
bitfield Mstatush : bits(32) = {
MBE : 5,
SBE : 4