aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWeiwei Li <liweiwei@iscas.ac.cn>2023-04-14 22:36:39 +0800
committerWeiwei Li <liweiwei@iscas.ac.cn>2023-05-29 09:01:21 +0800
commitfecdad2b62cbc4a6baa51d301f0a49d89b81d675 (patch)
tree8199d54d7547a317dbccce3248e9bd0f3735c3cb
parentafe3987685f11058b28988ac9d7e484368246937 (diff)
downloadriscv-isa-sim-fecdad2b62cbc4a6baa51d301f0a49d89b81d675.zip
riscv-isa-sim-fecdad2b62cbc4a6baa51d301f0a49d89b81d675.tar.gz
riscv-isa-sim-fecdad2b62cbc4a6baa51d301f0a49d89b81d675.tar.bz2
Add isa string support for Zfbfmin/Zvfbfmin/Zvfbfwma
-rw-r--r--riscv/isa_parser.cc14
-rw-r--r--riscv/isa_parser.h3
2 files changed, 17 insertions, 0 deletions
diff --git a/riscv/isa_parser.cc b/riscv/isa_parser.cc
index 7335a14..be5e51b 100644
--- a/riscv/isa_parser.cc
+++ b/riscv/isa_parser.cc
@@ -139,6 +139,8 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
} else if (ext_str == "zdinx") {
extension_table[EXT_ZFINX] = true;
extension_table[EXT_ZDINX] = true;
+ } else if (ext_str == "zfbfmin") {
+ extension_table[EXT_ZFBFMIN] = true;
} else if (ext_str == "zfinx") {
extension_table[EXT_ZFINX] = true;
} else if (ext_str == "zhinx") {
@@ -232,6 +234,10 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
extension_table[EXT_ZICOND] = true;
} else if (ext_str == "zihpm") {
extension_table[EXT_ZIHPM] = true;
+ } else if (ext_str == "zvfbfmin") {
+ extension_table[EXT_ZVFBFMIN] = true;
+ } else if (ext_str == "zvfbfwma") {
+ extension_table[EXT_ZVFBFWMA] = true;
} else if (ext_str == "sstc") {
extension_table[EXT_SSTC] = true;
} else if (ext_str[0] == 'x') {
@@ -279,6 +285,14 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
bad_isa_string(str, ("can't parse: " + std::string(p)).c_str());
}
+ if (extension_table[EXT_ZFBFMIN] && !extension_table['F']) {
+ bad_isa_string(str, "'Zfbfmin' extension requires 'F' extension");
+ }
+
+ if ((extension_table[EXT_ZVFBFMIN] || extension_table[EXT_ZVFBFWMA]) && !extension_table['V']) {
+ bad_isa_string(str, "'Zvfbfmin/Zvfbfwma' extension requires 'V' extension");
+ }
+
if (extension_table['C']) {
extension_table[EXT_ZCA] = true;
if (extension_table['F'] && max_xlen == 32)
diff --git a/riscv/isa_parser.h b/riscv/isa_parser.h
index 9effd16..04859b6 100644
--- a/riscv/isa_parser.h
+++ b/riscv/isa_parser.h
@@ -49,6 +49,7 @@ typedef enum {
EXT_SVINVAL,
EXT_ZDINX,
EXT_ZFA,
+ EXT_ZFBFMIN,
EXT_ZFINX,
EXT_ZHINX,
EXT_ZHINXMIN,
@@ -57,6 +58,8 @@ typedef enum {
EXT_ZICNTR,
EXT_ZICOND,
EXT_ZIHPM,
+ EXT_ZVFBFMIN,
+ EXT_ZVFBFWMA,
EXT_XZBP,
EXT_XZBS,
EXT_XZBE,