diff options
author | Weiwei Li <liweiwei@iscas.ac.cn> | 2023-04-14 22:36:39 +0800 |
---|---|---|
committer | Weiwei Li <liweiwei@iscas.ac.cn> | 2023-05-29 09:01:21 +0800 |
commit | fecdad2b62cbc4a6baa51d301f0a49d89b81d675 (patch) | |
tree | 8199d54d7547a317dbccce3248e9bd0f3735c3cb | |
parent | afe3987685f11058b28988ac9d7e484368246937 (diff) | |
download | riscv-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.cc | 14 | ||||
-rw-r--r-- | riscv/isa_parser.h | 3 |
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, |