diff --git a/disasm/isa_parser.cc b/disasm/isa_parser.cc index b0d14fa1..6dd572eb 100644 --- a/disasm/isa_parser.cc +++ b/disasm/isa_parser.cc @@ -383,7 +383,7 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) vlen = std::max(vlen, new_vlen); } else if (ext_str.substr(0, 3) == "zve") { if (ext_str.size() != 6) { - bad_isa_string(str, ("Invalid Zve string: " + ext_str).c_str()); + bad_isa_string(str, ("Invalid Zve string: " + ext_str).c_str()); } reg_t new_elen; try { @@ -403,6 +403,7 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) if (new_elen != 32 && new_elen != 64) bad_isa_string(str, ("Invalid Zve string: " + ext_str).c_str()); elen = std::max(elen, new_elen); + vlen = std::max(vlen, new_elen); } else if (ext_str == "ssdbltrp") { extension_table[EXT_SSDBLTRP] = true; } else if (ext_str == "smdbltrp") { @@ -531,11 +532,7 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) #endif if (vlen > 4096) { - bad_isa_string(str, "Spike does not currently support VLEN > 4096b"); - } - - if ((vlen != 0) ^ (elen != 0) || vlen < elen) { - bad_isa_string(str, "Invalid Zvl/Zve configuration"); + bad_isa_string(str, "Spike does not support VLEN > 4096"); } if (extension_table[EXT_ZVFHMIN] && (vlen == 0 || elen == 0 || !zvf)) {