From 8b802199fb83b3b45978782c6cae5506b6e7cd78 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 22 Jan 2026 18:26:06 -0800 Subject: [PATCH] Have Zabha imply extensions rather than erroring if not present --- disasm/isa_parser.cc | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/disasm/isa_parser.cc b/disasm/isa_parser.cc index 22d00ff6..448b4684 100644 --- a/disasm/isa_parser.cc +++ b/disasm/isa_parser.cc @@ -93,10 +93,13 @@ void isa_parser_t::add_extension(const std::string& ext_str, const char* str) extension_table[EXT_ZALRSC] = true; } else if (ext_str == "zacas") { extension_table[EXT_ZACAS] = true; + extension_table[EXT_ZAAMO] = true; } else if (ext_str == "zabha") { extension_table[EXT_ZABHA] = true; + extension_table[EXT_ZAAMO] = true; } else if (ext_str == "zawrs") { extension_table[EXT_ZAWRS] = true; + extension_table[EXT_ZALRSC] = true; } else if (ext_str == "zmmul") { extension_table[EXT_ZMMUL] = true; } else if (ext_str == "zba") { @@ -534,18 +537,6 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) if ((extension_table[EXT_ZCMP] || extension_table[EXT_ZCMT]) && extension_table[EXT_ZCD]) { bad_isa_string(str, "Zcmp' and 'Zcmt' extensions are incompatible with 'Zcd' extension"); } - - if (extension_table[EXT_ZACAS] && !extension_table[EXT_ZAAMO]) { - bad_isa_string(str, "'Zacas' extension requires either the 'A' or the 'Zaamo' extension"); - } - - if (extension_table[EXT_ZABHA] && !extension_table[EXT_ZAAMO]) { - bad_isa_string(str, "'Zabha' extension requires either the 'A' or the 'Zaamo' extension"); - } - - if (extension_table[EXT_ZAWRS] && !extension_table[EXT_ZALRSC]) { - bad_isa_string(str, "'Zawrs' extension requires either the 'A' or the 'Zalrsc' extension"); - } #ifdef WORDS_BIGENDIAN // 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] ||