aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiao Zeng <zengxiao@eswincomputing.com>2024-09-27 17:30:36 +0800
committerXiao Zeng <zengxiao@eswincomputing.com>2024-10-08 09:02:31 +0800
commitc01e3aaae79ecd439ad35063db3dee9775f3aefa (patch)
treee66f55320ee6d2d6d685aff0f29839cce301902c
parent14870c1f8636feaa45eac1133ce5b9228225d8bd (diff)
downloadgcc-c01e3aaae79ecd439ad35063db3dee9775f3aefa.zip
gcc-c01e3aaae79ecd439ad35063db3dee9775f3aefa.tar.gz
gcc-c01e3aaae79ecd439ad35063db3dee9775f3aefa.tar.bz2
RISC-V: Add an implicit dependency for Zawrs
There is a description in <https://github.com/riscv/riscv-isa-manual/blob/main/src/zawrs.adoc>: "The instructions in the Zawrs extension are only useful in conjunction with the LR instruction, which is provided by the Zalrsc component of the A extension." It can be concluded that: zawrs -> zalrsc. gcc/ChangeLog: * common/config/riscv/riscv-common.cc: zawrs -> zalrsc. gcc/testsuite/ChangeLog: * gcc.target/riscv/predef-38.c: New test. * gcc.target/riscv/predef-39.c: New test. Signed-off-by: Xiao Zeng <zengxiao@eswincomputing.com>
-rw-r--r--gcc/common/config/riscv/riscv-common.cc1
-rw-r--r--gcc/testsuite/gcc.target/riscv/predef-38.c31
-rw-r--r--gcc/testsuite/gcc.target/riscv/predef-39.c31
3 files changed, 63 insertions, 0 deletions
diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc
index bd42fd0..a6abd90 100644
--- a/gcc/common/config/riscv/riscv-common.cc
+++ b/gcc/common/config/riscv/riscv-common.cc
@@ -96,6 +96,7 @@ static const riscv_implied_info_t riscv_implied_info[] =
{"zabha", "zaamo"},
{"zacas", "zaamo"},
+ {"zawrs", "zalrsc"},
{"zcmop", "zca"},
diff --git a/gcc/testsuite/gcc.target/riscv/predef-38.c b/gcc/testsuite/gcc.target/riscv/predef-38.c
new file mode 100644
index 0000000..986c02b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/predef-38.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=rv32i_zawrs -mabi=ilp32 -mcmodel=medlow -misa-spec=20191213" } */
+
+int main () {
+
+#ifndef __riscv_arch_test
+#error "__riscv_arch_test"
+#endif
+
+#if __riscv_xlen != 32
+#error "__riscv_xlen"
+#endif
+
+#if !defined(__riscv_i)
+#error "__riscv_i"
+#endif
+
+#if !defined(__riscv_zawrs)
+#error "__riscv_zawrs"
+#endif
+
+#if !defined(__riscv_zalrsc)
+#error "__riscv_zalrsc"
+#endif
+
+#if defined(__riscv_a)
+#error "__riscv_a"
+#endif
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/riscv/predef-39.c b/gcc/testsuite/gcc.target/riscv/predef-39.c
new file mode 100644
index 0000000..558164d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/predef-39.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=rv64i_zawrs -mabi=lp64 -mcmodel=medlow -misa-spec=20191213" } */
+
+int main () {
+
+#ifndef __riscv_arch_test
+#error "__riscv_arch_test"
+#endif
+
+#if __riscv_xlen != 64
+#error "__riscv_xlen"
+#endif
+
+#if !defined(__riscv_i)
+#error "__riscv_i"
+#endif
+
+#if !defined(__riscv_zawrs)
+#error "__riscv_zawrs"
+#endif
+
+#if !defined(__riscv_zalrsc)
+#error "__riscv_zalrsc"
+#endif
+
+#if defined(__riscv_a)
+#error "__riscv_a"
+#endif
+
+ return 0;
+}