|
|
|
@ -70,10 +70,6 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) |
|
|
|
} |
|
|
|
|
|
|
|
switch (*p) { |
|
|
|
case 'p': extension_table[EXT_ZBPBO] = true; |
|
|
|
extension_table[EXT_ZPN] = true; |
|
|
|
extension_table[EXT_ZPSFOPERAND] = true; |
|
|
|
extension_table[EXT_ZMMUL] = true; break; |
|
|
|
case 'v': // even rv32iv implies double float
|
|
|
|
case 'q': extension_table['D'] = true; |
|
|
|
// Fall through
|
|
|
|
@ -390,16 +386,6 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) |
|
|
|
bad_isa_string(str, "'Zabha' extension requires either the 'A' or the 'Zaamo' extension"); |
|
|
|
} |
|
|
|
|
|
|
|
// Zpn conflicts with Zvknha/Zvknhb in both rv32 and rv64
|
|
|
|
if (extension_table[EXT_ZPN] && (extension_table[EXT_ZVKNHA] || extension_table[EXT_ZVKNHB])) { |
|
|
|
bad_isa_string(str, "'Zvkna' and 'Zvknhb' extensions are incompatible with 'Zpn' extension"); |
|
|
|
} |
|
|
|
// In rv64 only, Zpn (rv64_zpn) conflicts with Zvkg/Zvkned/Zvksh
|
|
|
|
if (max_xlen == 64 && extension_table[EXT_ZPN] && |
|
|
|
(extension_table[EXT_ZVKG] || extension_table[EXT_ZVKNED] || extension_table[EXT_ZVKSH])) { |
|
|
|
bad_isa_string(str, "'Zvkg', 'Zvkned', and 'Zvksh' extensions are incompatible with 'Zpn' extension in rv64"); |
|
|
|
} |
|
|
|
|
|
|
|
// 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"); |
|
|
|
|