From 45b9b9c2940704c6e2d77f04450abb2155dbb8b7 Mon Sep 17 00:00:00 2001 From: Weiwei Li Date: Fri, 1 Jul 2022 22:06:58 +0800 Subject: add isa string parser for smstateen --- riscv/isa_parser.cc | 2 ++ 1 file changed, 2 insertions(+) (limited to 'riscv/isa_parser.cc') diff --git a/riscv/isa_parser.cc b/riscv/isa_parser.cc index 0adec2c..0f9eb06 100644 --- a/riscv/isa_parser.cc +++ b/riscv/isa_parser.cc @@ -164,6 +164,8 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) } else if (ext_str == "zkr") { extension_table[EXT_ZKR] = true; } else if (ext_str == "zkt") { + } else if (ext_str == "smstateen") { + extension_table[EXT_SMSTATEEN] = true; } else if (ext_str == "svnapot") { extension_table[EXT_SVNAPOT] = true; } else if (ext_str == "svpbmt") { -- cgit v1.1 From c4a5f54094fc925f96b93f3d24b20f79de1dc5fd Mon Sep 17 00:00:00 2001 From: YenHaoChen Date: Wed, 13 Jul 2022 09:14:28 +0800 Subject: add isa string parser for smepmp --- riscv/isa_parser.cc | 2 ++ 1 file changed, 2 insertions(+) (limited to 'riscv/isa_parser.cc') diff --git a/riscv/isa_parser.cc b/riscv/isa_parser.cc index 0f9eb06..040840a 100644 --- a/riscv/isa_parser.cc +++ b/riscv/isa_parser.cc @@ -164,6 +164,8 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) } else if (ext_str == "zkr") { extension_table[EXT_ZKR] = true; } else if (ext_str == "zkt") { + } else if (ext_str == "smepmp") { + extension_table[EXT_SMEPMP] = true; } else if (ext_str == "smstateen") { extension_table[EXT_SMSTATEEN] = true; } else if (ext_str == "svnapot") { -- cgit v1.1 From 5eada616d48e1e0f1f9f5add53dfca76dc29de68 Mon Sep 17 00:00:00 2001 From: liweiwei90 <34847211+liweiwei90@users.noreply.github.com> Date: Thu, 14 Jul 2022 09:39:30 +0800 Subject: add check for H extension requires S mode (#1042) --- riscv/isa_parser.cc | 3 +++ 1 file changed, 3 insertions(+) (limited to 'riscv/isa_parser.cc') diff --git a/riscv/isa_parser.cc b/riscv/isa_parser.cc index 0f9eb06..720f373 100644 --- a/riscv/isa_parser.cc +++ b/riscv/isa_parser.cc @@ -246,4 +246,7 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) max_isa |= reg_t(supervisor) << ('s' - 'a'); extension_table['S'] = true; } + + if (((max_isa >> ('h' - 'a')) & 1) && !supervisor) + bad_isa_string(str, "'H' extension requires S mode"); } -- cgit v1.1 From 5672c4a41ad7a9af011d385962c175a5a6012fd9 Mon Sep 17 00:00:00 2001 From: i2h2 <110197402+i2h2@users.noreply.github.com> Date: Wed, 3 Aug 2022 16:01:57 -0600 Subject: Add Sstc support. (#1057) --- riscv/isa_parser.cc | 2 ++ 1 file changed, 2 insertions(+) (limited to 'riscv/isa_parser.cc') diff --git a/riscv/isa_parser.cc b/riscv/isa_parser.cc index 81b770c..6ac146b 100644 --- a/riscv/isa_parser.cc +++ b/riscv/isa_parser.cc @@ -181,6 +181,8 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) } else if (ext_str == "zicbop") { } else if (ext_str == "zicntr") { } else if (ext_str == "zihpm") { + } else if (ext_str == "sstc") { + extension_table[EXT_SSTC] = true; } else if (ext_str[0] == 'x') { max_isa |= 1L << ('x' - 'a'); extension_table[toupper('x')] = true; -- cgit v1.1 From 7812b01154c6a2f19e0d4bc9f00e5d5fcb9aec22 Mon Sep 17 00:00:00 2001 From: liweiwei Date: Thu, 14 Oct 2021 09:44:54 +0800 Subject: Add flags for Zfinx/Zdinx/Zhinx{min} Hardwire mstatus_fs to zero when enable ZFinx --- riscv/isa_parser.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'riscv/isa_parser.cc') diff --git a/riscv/isa_parser.cc b/riscv/isa_parser.cc index 6ac146b..ddb98c9 100644 --- a/riscv/isa_parser.cc +++ b/riscv/isa_parser.cc @@ -130,6 +130,18 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) extension_table[EXT_ZBKC] = true; } else if (ext_str == "zbkx") { extension_table[EXT_ZBKX] = true; + } else if (ext_str == "zdinx") { + extension_table[EXT_ZFINX] = true; + extension_table[EXT_ZDINX] = true; + } else if (ext_str == "zfinx") { + extension_table[EXT_ZFINX] = true; + } else if (ext_str == "zhinx") { + extension_table[EXT_ZFINX] = true; + extension_table[EXT_ZHINX] = true; + extension_table[EXT_ZHINXMIN] = true; + } else if (ext_str == "zhinxmin") { + extension_table[EXT_ZFINX] = true; + extension_table[EXT_ZHINXMIN] = true; } else if (ext_str == "zk") { extension_table[EXT_ZBKB] = true; extension_table[EXT_ZBKC] = true; @@ -229,6 +241,10 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) bad_isa_string(str, ("can't parse: " + std::string(p)).c_str()); } + if (extension_table[EXT_ZFINX] && ((max_isa >> ('f' - 'a')) & 1)) { + bad_isa_string(str, ("Zfinx/ZDinx/Zhinx{min} extensions conflict with Base 'F/D/Q/Zfh{min}' extensions")); + } + std::string lowercase = strtolower(priv); bool user = false, supervisor = false; -- cgit v1.1 From ba10686fd18f3fbb036ca04b906deb57e7d1fe54 Mon Sep 17 00:00:00 2001 From: Weiwei Li Date: Mon, 4 Jul 2022 21:31:09 +0800 Subject: add support for sscofpmf extension v0.5.2 since spike doesn't truly support counting of hardware performance events, only csr related read/write functions is supported currently --- riscv/isa_parser.cc | 2 ++ 1 file changed, 2 insertions(+) (limited to 'riscv/isa_parser.cc') diff --git a/riscv/isa_parser.cc b/riscv/isa_parser.cc index 6ac146b..ed1295e 100644 --- a/riscv/isa_parser.cc +++ b/riscv/isa_parser.cc @@ -168,6 +168,8 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) extension_table[EXT_SMEPMP] = true; } else if (ext_str == "smstateen") { extension_table[EXT_SMSTATEEN] = true; + } else if (ext_str == "sscofpmf") { + extension_table[EXT_SSCOFPMF] = true; } else if (ext_str == "svnapot") { extension_table[EXT_SVNAPOT] = true; } else if (ext_str == "svpbmt") { -- cgit v1.1 From 25f2e61d0e178890c0fd46d6a5a288c33d7c6fc8 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Mon, 22 Aug 2022 13:53:44 -0700 Subject: "Implement" Zihintntl extension (#1071) These are just HINTs, so Spike only needs ISA-parser support. --- riscv/isa_parser.cc | 2 ++ 1 file changed, 2 insertions(+) (limited to 'riscv/isa_parser.cc') diff --git a/riscv/isa_parser.cc b/riscv/isa_parser.cc index ddb98c9..0869bf3 100644 --- a/riscv/isa_parser.cc +++ b/riscv/isa_parser.cc @@ -114,6 +114,8 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv) // unconditionally include FENCE.I, so Zifencei adds nothing more. } else if (ext_str == "zihintpause") { // HINTs encoded in base-ISA instructions are always present. + } else if (ext_str == "zihintntl") { + // HINTs encoded in base-ISA instructions are always present. } else if (ext_str == "zmmul") { extension_table[EXT_ZMMUL] = true; } else if (ext_str == "zba") { -- cgit v1.1