Browse Source

Have Zicfiss imply extensions rather than erroring if not present

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

14
disasm/isa_parser.cc

@ -395,6 +395,7 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
} else if (ext_str == "zicfiss") { } else if (ext_str == "zicfiss") {
extension_table[EXT_ZICFISS] = true; extension_table[EXT_ZICFISS] = true;
extension_table[EXT_ZAAMO] = true; extension_table[EXT_ZAAMO] = true;
extension_table[EXT_ZIMOP] = true;
} else if (ext_str == "smmpm") { } else if (ext_str == "smmpm") {
extension_table[EXT_SMMPM] = true; extension_table[EXT_SMMPM] = true;
} else if (ext_str == "smnpm") { } else if (ext_str == "smnpm") {
@ -485,6 +486,9 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
extension_table[EXT_ZCD] = true; extension_table[EXT_ZCD] = true;
} }
if (extension_table[EXT_ZICFISS] && extension_table[EXT_ZCA])
extension_table[EXT_ZCMOP] = true;
if (extension_table[EXT_ZCLSD] && extension_table[EXT_ZCF]) { if (extension_table[EXT_ZCLSD] && extension_table[EXT_ZCF]) {
bad_isa_string(str, "'Zclsd' extension conflicts with 'Zcf' extensions"); bad_isa_string(str, "'Zclsd' extension conflicts with 'Zcf' extensions");
} }
@ -553,16 +557,6 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
if (extension_table[EXT_ZAWRS] && !extension_table[EXT_ZALRSC]) { if (extension_table[EXT_ZAWRS] && !extension_table[EXT_ZALRSC]) {
bad_isa_string(str, "'Zawrs' extension requires either the 'A' or the 'Zalrsc' extension"); bad_isa_string(str, "'Zawrs' extension requires either the 'A' or the 'Zalrsc' extension");
} }
// When SSE is 0, Zicfiss behavior is defined by Zicmop
if (extension_table[EXT_ZICFISS] && !extension_table[EXT_ZIMOP]) {
bad_isa_string(str, "'Zicfiss' extension requires 'Zimop' extension");
}
if (extension_table[EXT_ZICFISS] && extension_table[EXT_ZCA] &&
!extension_table[EXT_ZCMOP]) {
bad_isa_string(str, "'Zicfiss' extension requires 'Zcmop' extension when `Zca` is supported");
}
#ifdef WORDS_BIGENDIAN #ifdef WORDS_BIGENDIAN
// Access to the vector registers as element groups is unimplemented on big-endian setups. // Access to the vector registers as element groups is unimplemented on big-endian setups.
if (extension_table[EXT_ZVKG] || extension_table[EXT_ZVKNHA] || extension_table[EXT_ZVKNHB] || if (extension_table[EXT_ZVKG] || extension_table[EXT_ZVKNHA] || extension_table[EXT_ZVKNHB] ||

Loading…
Cancel
Save