diff --git a/riscv/isa_parser.cc b/riscv/isa_parser.cc index f0cf2748..efb00d64 100644 --- a/riscv/isa_parser.cc +++ b/riscv/isa_parser.cc @@ -106,6 +106,17 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) extension_table[EXT_ZFHMIN] = true; if (ext_str == "zfh") extension_table[EXT_ZFH] = true; + } else if (ext_str == "zvfh" || ext_str == "zvfhmin") { + if (!((max_isa >> ('v' - 'a')) & 1)) + bad_isa_string(str, ("'" + ext_str + "' extension requires 'V'").c_str()); + + extension_table[EXT_ZVFHMIN] = true; + + if (ext_str == "zvfh") { + extension_table[EXT_ZVFH] = true; + // Zvfh implies Zfhmin + extension_table[EXT_ZFHMIN] = true; + } } else if (ext_str == "zicsr") { // Spike necessarily has Zicsr, because // Zicsr is implied by the privileged architecture diff --git a/riscv/isa_parser.h b/riscv/isa_parser.h index f7a8bc80..56f3f655 100644 --- a/riscv/isa_parser.h +++ b/riscv/isa_parser.h @@ -31,6 +31,8 @@ typedef enum { EXT_ZBPBO, EXT_ZPN, EXT_ZPSFOPERAND, + EXT_ZVFH, + EXT_ZVFHMIN, EXT_SMEPMP, EXT_SMSTATEEN, EXT_SSCOFPMF,