The augmented hypervisor series extensions 'sha'[1] is a new profile-defined
extension series that captures the full set of features that are mandated to
be supported along with the 'H' extension.

[1] 
https://github.com/riscv/riscv-profiles/blob/main/src/rva23-profile.adoc#rva23s64-profile

gcc/ChangeLog:

        * common/config/riscv/riscv-common.cc: New extensions.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/arch-55.c: New test.

---
 gcc/common/config/riscv/riscv-common.cc  | 17 +++++++++++++++++
 gcc/testsuite/gcc.target/riscv/arch-55.c |  9 +++++++++
 2 files changed, 26 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/riscv/arch-55.c

diff --git a/gcc/common/config/riscv/riscv-common.cc 
b/gcc/common/config/riscv/riscv-common.cc
index d3240f79240..8a2e22a1d57 100644
--- a/gcc/common/config/riscv/riscv-common.cc
+++ b/gcc/common/config/riscv/riscv-common.cc
@@ -254,6 +254,15 @@ static const riscv_implied_info_t riscv_implied_info[] =
      return false;
    }},
 
+  {"sha", "h"},
+  {"sha", "shcounterenw"},
+  {"sha", "shgatpa"},
+  {"sha", "shtvala"},
+  {"sha", "shvstvala"},
+  {"sha", "shvstvecd"},
+  {"sha", "shvsatpa"},
+  {"sha", "ssstateen"},
+
   {"smaia", "ssaia"},
   {"smstateen", "ssstateen"},
   {"smepmp", "zicsr"},
@@ -451,6 +460,14 @@ static const struct riscv_ext_version 
riscv_ext_version_table[] =
 
   {"sdtrig",  ISA_SPEC_CLASS_NONE, 1, 0},
 
+  {"sha",  ISA_SPEC_CLASS_NONE, 1, 0},
+  {"shcounterenw",  ISA_SPEC_CLASS_NONE, 1, 0},
+  {"shgatpa",  ISA_SPEC_CLASS_NONE, 1, 0},
+  {"shtvala",  ISA_SPEC_CLASS_NONE, 1, 0},
+  {"shvsatpa",  ISA_SPEC_CLASS_NONE, 1, 0},
+  {"shvstvala",  ISA_SPEC_CLASS_NONE, 1, 0},
+  {"shvstvecd",  ISA_SPEC_CLASS_NONE, 1, 0},
+
   {"smaia",     ISA_SPEC_CLASS_NONE, 1, 0},
   {"smepmp",    ISA_SPEC_CLASS_NONE, 1, 0},
   {"smstateen", ISA_SPEC_CLASS_NONE, 1, 0},
diff --git a/gcc/testsuite/gcc.target/riscv/arch-55.c 
b/gcc/testsuite/gcc.target/riscv/arch-55.c
new file mode 100644
index 00000000000..50461f33946
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/arch-55.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv64g_sha -mabi=lp64d" } */
+
+void foo(){}
+
+/* { dg-final { scan-assembler ".attribute arch, \"rv64i2p1_m2p0_a2p1_f2p2"
+"_d2p2_h1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_sha1p0"
+"_shcounterenw1p0_shgatpa1p0_shtvala1p0_shvsatpa1p0_shvstvala1p0_shvstvecd1p0"
+"_ssstateen1p0_a1p0\"" } } */
-- 
2.43.0

Reply via email to