Browse Source

Have V imply extensions rather than erroring if not present

pull/2223/head
Andrew Waterman 2 months ago
parent
commit
ac939da203
Failed to extract signature
  1. 16
      disasm/isa_parser.cc

16
disasm/isa_parser.cc

@ -366,9 +366,13 @@ void isa_parser_t::add_extension(const std::string& ext_str, const char* str)
new_elen = 0;
}
if (ext_str.substr(5) == "d") {
zvd |= true; zvf |= true;
zvd |= true;
zvf |= true;
extension_table['F'] = true;
extension_table['D'] = true;
} else if (ext_str.substr(5) == "f") {
zvf |= true;
extension_table['F'] = true;
} else if (ext_str.substr(5) == "x") {
/* do nothing */
} else {
@ -451,7 +455,7 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
}
switch (*p) {
case 'v': vlen = 128; elen = 64; zvf = true; zvd = true;
case 'v': add_extension("zve64d", str); vlen = 128;
[[fallthrough]];
case 'q': extension_table['D'] = true;
[[fallthrough]];
@ -565,14 +569,6 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
bad_isa_string(str, "Spike does not support VLEN > 4096");
}
if (zvd && !extension_table['D'] && elen < 64) {
bad_isa_string(str, "'ZveXXd' extension requires D");
}
if (zvf && !extension_table['F']) {
bad_isa_string(str, "'ZveXXf' extension requires F");
}
std::string lowercase = strtolower(priv);
bool user = false, supervisor = false;

Loading…
Cancel
Save