[PATCH v2 2/3] RISC-V: Imply 'Zicsr' from 'Zkr'

Tsukasa OI research_trasio@irq.a4lg.com
Wed Sep 7 06:21:50 GMT 2022


Because the 'Zkr' extension implements a CSR, seed, it requires 'Zicsr' as
a prerequisite.  On such cases, it's natural to imply required extension.

This commit adds Zkr -> Zicsr to the extension implication list.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_implicit_subsets): Imply 'Zicsr' from 'Zkr'.

gas/ChangeLog:

	* testsuite/gas/riscv/zkr.s: Separate test for the 'Zkr' extension.
	* testsuite/gas/riscv/zkr.d: Likewise.
---
 bfd/elfxx-riscv.c             |  1 +
 gas/testsuite/gas/riscv/zkr.d | 10 ++++++++++
 gas/testsuite/gas/riscv/zkr.s |  2 ++
 3 files changed, 13 insertions(+)
 create mode 100644 gas/testsuite/gas/riscv/zkr.d
 create mode 100644 gas/testsuite/gas/riscv/zkr.s

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index fb742dc9272..2e91963bbfb 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1092,6 +1092,7 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
   {"zkn", "zkne",	check_implicit_always},
   {"zkn", "zknd",	check_implicit_always},
   {"zkn", "zknh",	check_implicit_always},
+  {"zkr", "zicsr",	check_implicit_always},
   {"zks", "zbkb",	check_implicit_always},
   {"zks", "zbkc",	check_implicit_always},
   {"zks", "zbkx",	check_implicit_always},
diff --git a/gas/testsuite/gas/riscv/zkr.d b/gas/testsuite/gas/riscv/zkr.d
new file mode 100644
index 00000000000..4c0471835a1
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zkr.d
@@ -0,0 +1,10 @@
+#as: -march=rv32i_zkr -mcsr-check
+#objdump: -d
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <target>:
+[ 	]+[0-9a-f]+:[ 	]+01502573[ 	]+csrr[ 	]+a0,seed
diff --git a/gas/testsuite/gas/riscv/zkr.s b/gas/testsuite/gas/riscv/zkr.s
new file mode 100644
index 00000000000..96a38fbf49f
--- /dev/null
+++ b/gas/testsuite/gas/riscv/zkr.s
@@ -0,0 +1,2 @@
+target:
+	csrr	a0, seed
-- 
2.34.1



More information about the Binutils mailing list