diff options
author | Andrew Waterman <andrew@sifive.com> | 2025-08-28 16:37:08 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-28 16:37:08 -0700 |
commit | 9c190a07c6838f6392bafa4ad83acea462c7f759 (patch) | |
tree | f4d4a66c4aea7980ca7b8b0d9236bec449c3571c | |
parent | 9a46080b52b40c7df6dc85aed730c31b077049e3 (diff) | |
parent | dcb5f0c784045f0ad43f0f5505677352209eb64a (diff) | |
download | riscv-isa-sim-master.zip riscv-isa-sim-master.tar.gz riscv-isa-sim-master.tar.bz2 |
Fix BFloat16 vector extension dependencies and requirements
-rw-r--r-- | disasm/isa_parser.cc | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/disasm/isa_parser.cc b/disasm/isa_parser.cc index 5fe8280..48df33e 100644 --- a/disasm/isa_parser.cc +++ b/disasm/isa_parser.cc @@ -456,16 +456,20 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) bad_isa_string(str, "'Zclsd' extension requires 'Zca' and 'Zilsd' extensions"); } - if (extension_table[EXT_ZFBFMIN] && !extension_table['F']) { + if (extension_table[EXT_ZFBFMIN] || extension_table[EXT_ZFHMIN]) { + extension_table[EXT_INTERNAL_ZFH_MOVE] = true; + } + + if (extension_table[EXT_ZFBFMIN] && (!extension_table['F'])) { bad_isa_string(str, "'Zfbfmin' extension requires 'F' extension"); } - if ((extension_table[EXT_ZVFBFMIN] || extension_table[EXT_ZVFBFWMA]) && !extension_table['V']) { - bad_isa_string(str, "'Zvfbfmin/Zvfbfwma' extension requires 'V' extension"); + if (extension_table[EXT_ZVFBFMIN] && (vlen == 0 || !zvf)) { + bad_isa_string(str, "'Zvfbfmin' extension requires 'Zve32f' extension"); } - if (extension_table[EXT_ZFBFMIN] || extension_table[EXT_ZVFBFMIN] || extension_table[EXT_ZFHMIN]) { - extension_table[EXT_INTERNAL_ZFH_MOVE] = true; + if (extension_table[EXT_ZVFBFWMA] && (!extension_table[EXT_ZFBFMIN] || !extension_table[EXT_ZVFBFMIN])) { + bad_isa_string(str, "'Zvfbfwma' extension requires 'Zfbfmin' and 'Zvfbfmin' extensions"); } if (extension_table[EXT_ZFINX] && extension_table['F']) { |