Skip to content

Commit 6fb4362

Browse files
authored
Merge pull request #1702 from riscv-software-src/fix-1696
In isa_parser, move extensionology code before error-checking code
2 parents 5e7928a + c6cb05c commit 6fb4362

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

disasm/isa_parser.cc

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -330,26 +330,6 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
330330
bad_isa_string(str, ("can't parse: " + std::string(p)).c_str());
331331
}
332332

333-
if (extension_table[EXT_ZCMLSD] && extension_table[EXT_ZCF]) {
334-
bad_isa_string(str, "'Zcmlsd' extension conflicts with 'Zcf' extensions");
335-
}
336-
337-
if (extension_table[EXT_ZCMLSD] && (!extension_table[EXT_ZCA] || !extension_table[EXT_ZILSD])) {
338-
bad_isa_string(str, "'Zcmlsd' extension requires 'Zca' and 'Zilsd' extensions");
339-
}
340-
341-
if (extension_table[EXT_ZFBFMIN] && !extension_table['F']) {
342-
bad_isa_string(str, "'Zfbfmin' extension requires 'F' extension");
343-
}
344-
345-
if ((extension_table[EXT_ZVFBFMIN] || extension_table[EXT_ZVFBFWMA]) && !extension_table['V']) {
346-
bad_isa_string(str, "'Zvfbfmin/Zvfbfwma' extension requires 'V' extension");
347-
}
348-
349-
if (extension_table[EXT_ZFBFMIN] || extension_table[EXT_ZVFBFMIN] || extension_table[EXT_ZFHMIN]) {
350-
extension_table[EXT_INTERNAL_ZFH_MOVE] = true;
351-
}
352-
353333
if (extension_table['A']) {
354334
extension_table[EXT_ZAAMO] = true;
355335
extension_table[EXT_ZALRSC] = true;
@@ -373,6 +353,26 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
373353
extension_table[EXT_ZCD] = true;
374354
}
375355

356+
if (extension_table[EXT_ZCMLSD] && extension_table[EXT_ZCF]) {
357+
bad_isa_string(str, "'Zcmlsd' extension conflicts with 'Zcf' extensions");
358+
}
359+
360+
if (extension_table[EXT_ZCMLSD] && (!extension_table[EXT_ZCA] || !extension_table[EXT_ZILSD])) {
361+
bad_isa_string(str, "'Zcmlsd' extension requires 'Zca' and 'Zilsd' extensions");
362+
}
363+
364+
if (extension_table[EXT_ZFBFMIN] && !extension_table['F']) {
365+
bad_isa_string(str, "'Zfbfmin' extension requires 'F' extension");
366+
}
367+
368+
if ((extension_table[EXT_ZVFBFMIN] || extension_table[EXT_ZVFBFWMA]) && !extension_table['V']) {
369+
bad_isa_string(str, "'Zvfbfmin/Zvfbfwma' extension requires 'V' extension");
370+
}
371+
372+
if (extension_table[EXT_ZFBFMIN] || extension_table[EXT_ZVFBFMIN] || extension_table[EXT_ZFHMIN]) {
373+
extension_table[EXT_INTERNAL_ZFH_MOVE] = true;
374+
}
375+
376376
if (extension_table[EXT_ZFINX] && extension_table['F']) {
377377
bad_isa_string(str, ("Zfinx/Zdinx/Zhinx{min} extensions conflict with 'F/D/Q/Zfh{min}' extensions"));
378378
}

0 commit comments

Comments
 (0)