Browse Source

Relax VLEN/ELEN checking

We should allow ISA strings like rv64gc_zve32f.  Per the spec, the
various Zve extensions imply a minimum VLEN, so rv64gc_zve32f
is unambiguously equivalent to rv64gc_zve32f_zvl32b. Similarly,
rv64gc_zve64x, rv64gc_zve64x_zvl64b, and rv64gc_zve64x_zvl32b are
all unambiguously equivalent.
pull/2069/head
Andrew Waterman 7 months ago
parent
commit
1d56b556b5
  1. 5
      disasm/isa_parser.cc

5
disasm/isa_parser.cc

@ -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") {
@ -534,10 +535,6 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
bad_isa_string(str, "Spike does not support VLEN > 4096");
}
if ((vlen != 0) ^ (elen != 0) || vlen < elen) {
bad_isa_string(str, "Invalid Zvl/Zve configuration");
}
if (extension_table[EXT_ZVFHMIN] && (vlen == 0 || elen == 0 || !zvf)) {
bad_isa_string(str, "'Zvfhmin' extension requires Zve32f");
}

Loading…
Cancel
Save