|
|
|
@ -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] || |
|
|
|
|