aboutsummaryrefslogtreecommitdiff
path: root/riscv/isa_parser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/isa_parser.cc')
-rw-r--r--riscv/isa_parser.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/riscv/isa_parser.cc b/riscv/isa_parser.cc
index 6fb29ae..59472a4 100644
--- a/riscv/isa_parser.cc
+++ b/riscv/isa_parser.cc
@@ -361,7 +361,15 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
(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");
}
-
+#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] ||
+ extension_table[EXT_ZVKSED] || extension_table[EXT_ZVKSH]) {
+ bad_isa_string(str,
+ "'Zvkg', 'Zvkned', 'Zvknha', 'Zvknhb', 'Zvksed', and 'Zvksh' "
+ "extensions are incompatible with WORDS_BIGENDIAN setups.");
+ }
+#endif
std::string lowercase = strtolower(priv);
bool user = false, supervisor = false;