public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
@ 2022-08-25 14:54 Christoph Muellner
  2022-08-25 14:54 ` Christoph Muellner
  2022-08-25 15:16 ` Christoph Müllner
  0 siblings, 2 replies; 19+ messages in thread
From: Christoph Muellner @ 2022-08-25 14:54 UTC (permalink / raw)
  To: binutils, Nelson Chu, Kito Cheng, Jim Wilson, Philipp Tomsich,
	Palmer Dabbelt, Anup Patel
  Cc: Christoph Müllner

From: Christoph Müllner <christoph.muellner@vrull.eu>

This commit adds the AIA extensions (Smaia and Ssaia).

bfd/ChangeLog:

	* elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
	of known standard extensions.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class):
	(riscv_csr_address): Add CSR classes for Smaia/Ssaia.
	* testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
	* testsuite/gas/riscv/csr-version-1p10.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p10.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p11.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p11.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p12.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p12.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
	* testsuite/gas/riscv/csr.s: Likewise.

include/ChangeLog:

	* opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
	(CSR_MIREG): Likewise.
	(CSR_MTOPEI): Likewise.
	(CSR_MTOPI): Likewise.
	(CSR_MVIEN): Likewise.
	(CSR_MVIP): Likewise.
	(CSR_MIDELEGH): Likewise.
	(CSR_MIEH): Likewise.
	(CSR_MVIENH): Likewise.
	(CSR_MVIPH): Likewise.
	(CSR_MIPH): Likewise.
	(CSR_SISELECT): Likewise.
	(CSR_SIREG): Likewise.
	(CSR_STOPEI): Likewise.
	(CSR_STOPI): Likewise.
	(CSR_SIEH): Likewise.
	(CSR_SIPH): Likewise.
	(DECLARE_CSR): Likewise.
---
 bfd/elfxx-riscv.c                           |  2 +
 gas/config/tc-riscv.c                       | 16 ++++++-
 gas/testsuite/gas/riscv/csr-dw-regnums.d    | 17 +++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    | 21 +++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 34 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 50 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 34 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 50 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 34 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 50 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 34 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 50 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               | 21 +++++++++
 include/opcode/riscv-opc.h                  | 38 ++++++++++++++++
 14 files changed, 450 insertions(+), 1 deletion(-)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index c9636bcbdc8..34ae84e18bd 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1207,7 +1207,9 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
 
 static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
+  {"smaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"ssaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"sstc",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 34ce68e8252..42d23bb200a 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -68,10 +68,14 @@ enum riscv_csr_class
   CSR_CLASS_DEBUG,	/* debug CSR */
   CSR_CLASS_H,		/* hypervisor */
   CSR_CLASS_H_32,	/* hypervisor, rv32 only */
+  CSR_CLASS_SMAIA,		/* Smaia */
+  CSR_CLASS_SMAIA_32,		/* Smaia, rv32 only */
   CSR_CLASS_SMSTATEEN,		/* Smstateen only */
   CSR_CLASS_SMSTATEEN_AND_H,	/* Smstateen only (with H) */
   CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
   CSR_CLASS_SMSTATEEN_AND_H_32,	/* Smstateen RV32 only (with H) */
+  CSR_CLASS_SSAIA,		/* Ssaia */
+  CSR_CLASS_SSAIA_32,		/* Ssaia, rv32 only */
   CSR_CLASS_SSCOFPMF,		/* Sscofpmf only */
   CSR_CLASS_SSCOFPMF_32,	/* Sscofpmf RV32 only */
   CSR_CLASS_SSTC,		/* Sstc only */
@@ -937,6 +941,11 @@ riscv_csr_address (const char *csr_name,
     case CSR_CLASS_V:
       extension = "v";
       break;
+    case CSR_CLASS_SMAIA:
+    case CSR_CLASS_SMAIA_32:
+      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32);
+      extension = "smaia";
+      break;
     case CSR_CLASS_SMSTATEEN:
     case CSR_CLASS_SMSTATEEN_AND_H:
     case CSR_CLASS_SMSTATEEN_32:
@@ -947,7 +956,12 @@ riscv_csr_address (const char *csr_name,
 		      || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
       extension = "smstateen";
       break;
-    case CSR_CLASS_SSCOFPMF_32:
+    case CSR_CLASS_SSAIA:
+    case CSR_CLASS_SSAIA_32:
+      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32);
+      extension = "ssaia";
+      break;
+     case CSR_CLASS_SSCOFPMF_32:
       is_rv32_only = true;
       /* Fall through.  */
     case CSR_CLASS_SSCOFPMF:
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index b4b3806a085..0c9386dfd18 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -313,6 +313,17 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
   DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
   DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
+  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
+  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
+  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
+  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
+  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
+  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
+  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
+  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
+  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
+  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
+  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
   DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
   DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
   DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
@@ -333,6 +344,12 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
   DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
   DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
+  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
+  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
+  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
+  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
+  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
+  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
   DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
   DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
   DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 6cfa415ebc2..c57825a961d 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -1,6 +1,8 @@
 # Check that CFI directives can accept all of the CSR names (including
 # aliases).  The results for this test also ensures that the DWARF
 # register numbers for the CSRs shouldn't change.
+# The register numbers are specified to be CSR-ID + 4096 (see psABI spec).
+# The CFI offsets in this file are CSR-ID x 4.
 
 	.text
 	.global _start
@@ -307,6 +309,18 @@ _start:
 	.cfi_offset vstval, 2316
 	.cfi_offset vsip, 2320
 	.cfi_offset vsatp, 2560
+	# Smaia extension
+	.cfi_offset miselect, 3392
+	.cfi_offset mireg, 3396
+	.cfi_offset mtopei, 3440
+	.cfi_offset mtopi, 16064
+	.cfi_offset mvien, 3104
+	.cfi_offset mvip, 3108
+	.cfi_offset midelegh, 3148
+	.cfi_offset mieh, 3152
+	.cfi_offset mvienh, 3168
+	.cfi_offset mviph, 3172
+	.cfi_offset miph, 3408
 	# Smstateen extension
 	.cfi_offset mstateen0, 3120
 	.cfi_offset mstateen1, 3124
@@ -328,6 +342,13 @@ _start:
 	.cfi_offset hstateen1h, 6260
 	.cfi_offset hstateen2h, 6264
 	.cfi_offset hstateen3h, 6268
+	# Ssaia extension
+	.cfi_offset siselect, 1344
+	.cfi_offset sireg, 1348
+	.cfi_offset stopei, 1392
+	.cfi_offset stopi, 14016
+	.cfi_offset sieh, 1104
+	.cfi_offset siph, 1360
 	# Sscofpmf extension
 	.cfi_offset scountovf, 13952
 	.cfi_offset mhpmevent3h, 7308
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index bd8b10302e3..ab6ace32846 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -601,6 +601,28 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
+[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
+[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
+[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
+[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
+[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
+[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
+[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
+[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
+[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
+[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
+[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
+[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
+[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
+[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
+[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
+[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
+[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
+[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
+[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
 [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
 [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
 [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
@@ -641,6 +663,18 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
+[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
+[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
+[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
+[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
+[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
+[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
+[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
+[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
+[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
+[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
+[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
 [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
 [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
 [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index b778453b556..b4d12541b49 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -411,6 +411,39 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: read-only CSR is written `csrw mtopi,a1'
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
@@ -483,6 +516,23 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw stopi,a1'
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index 5d6333884f1..95ca52d6dc3 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -601,6 +601,28 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
+[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
+[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
+[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
+[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
+[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
+[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
+[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
+[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
+[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
+[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
+[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
+[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
+[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
+[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
+[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
+[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
+[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
+[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
+[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
 [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
 [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
 [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
@@ -641,6 +663,18 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
+[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
+[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
+[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
+[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
+[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
+[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
+[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
+[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
+[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
+[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
+[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
 [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
 [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
 [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 78bae817470..96079a2937b 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -409,6 +409,39 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: read-only CSR is written `csrw mtopi,a1'
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
@@ -481,6 +514,23 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw stopi,a1'
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 728e647c552..8d82c00471f 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -601,6 +601,28 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
+[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
+[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
+[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
+[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
+[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
+[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
+[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
+[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
+[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
+[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
+[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
+[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
+[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
+[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
+[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
+[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
+[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
+[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
+[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
 [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
 [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
 [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
@@ -641,6 +663,18 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
+[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
+[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
+[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
+[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
+[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
+[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
+[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
+[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
+[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
+[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
+[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
 [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
 [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
 [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index cb026bb55e0..34d6e004f37 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -271,6 +271,39 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: read-only CSR is written `csrw mtopi,a1'
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
@@ -343,6 +376,23 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw stopi,a1'
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index a34b99f4632..24a277142fa 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -601,6 +601,28 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
+[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
+[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
+[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
+[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
+[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
+[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
+[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
+[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
+[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
+[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
+[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
+[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
+[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
+[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
+[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
+[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
+[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
+[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
+[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
 [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
 [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
 [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
@@ -641,6 +663,18 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
+[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
+[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
+[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
+[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
+[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
+[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
+[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
+[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
+[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
+[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
+[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
 [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
 [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
 [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 4fac40fb589..7d4e097a3e8 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -461,6 +461,39 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: read-only CSR is written `csrw mtopi,a1'
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
@@ -533,6 +566,23 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw stopi,a1'
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 128aeb83a04..bf37afa06e0 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -337,6 +337,19 @@
 	csr vsip
 	csr vsatp
 
+	# Smaia
+	csr miselect
+	csr mireg
+	csr mtopei
+	csr mtopi
+	csr mvien
+	csr mvip
+	csr midelegh
+	csr mieh
+	csr mvienh
+	csr mviph
+	csr miph
+
 	# Smstateen extension
 	csr mstateen0
 	csr mstateen1
@@ -359,6 +372,14 @@
 	csr hstateen2h
 	csr hstateen3h
 
+	# Ssaia
+	csr siselect
+	csr sireg
+	csr stopei
+	csr stopi
+	csr sieh
+	csr siph
+
 	# Sscofpmf extension
 	csr scountovf
 	csr mhpmevent3h
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index 88b8d7ff595..d56ab88696d 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2432,6 +2432,18 @@
 #define CSR_UIP 0x44
 #define CSR_SEDELEG 0x102
 #define CSR_SIDELEG 0x103
+/* Smaia extension */
+#define CSR_MISELECT 0x350
+#define CSR_MIREG    0x351
+#define CSR_MTOPEI   0x35c
+#define CSR_MTOPI    0xfb0
+#define CSR_MVIEN    0x308
+#define CSR_MVIP     0x309
+#define CSR_MIDELEGH 0x313
+#define CSR_MIEH     0x314
+#define CSR_MVIENH   0x318
+#define CSR_MVIPH    0x319
+#define CSR_MIPH     0x354
 /* Smstateen extension */
 #define CSR_MSTATEEN0 0x30c
 #define CSR_MSTATEEN1 0x30d
@@ -2453,6 +2465,13 @@
 #define CSR_HSTATEEN1H 0x61d
 #define CSR_HSTATEEN2H 0x61e
 #define CSR_HSTATEEN3H 0x61f
+/* Ssaia extension */
+#define CSR_SISELECT 0x150
+#define CSR_SIREG    0x151
+#define CSR_STOPEI   0x15c
+#define CSR_STOPI    0xdb0
+#define CSR_SIEH     0x114
+#define CSR_SIPH     0x154
 /* Sscofpmf extension */
 #define CSR_SCOUNTOVF 0xda0
 #define CSR_MHPMEVENT3H 0x723
@@ -3154,6 +3173,18 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
 DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+/* Smaia extension */
+DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 /* Smstateen extension */
 DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
@@ -3175,6 +3206,13 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
 DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+/* Ssstateen extension */
+DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 /* Sscofpmf extension */
 DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-- 
2.37.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-08-25 14:54 [PATCH] riscv: Add AIA extension support (Smaia, Ssaia) Christoph Muellner
@ 2022-08-25 14:54 ` Christoph Muellner
  2022-08-25 15:16 ` Christoph Müllner
  1 sibling, 0 replies; 19+ messages in thread
From: Christoph Muellner @ 2022-08-25 14:54 UTC (permalink / raw)
  To: binutils, Nelson Chu, Kito Cheng, Jim Wilson, Philipp Tomsich,
	Palmer Dabbelt, Anup Patel

From: Christoph Müllner <christoph.muellner@vrull.eu>

This commit adds the AIA extensions (Smaia and Ssaia).

bfd/ChangeLog:

	* elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
	of known standard extensions.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class):
	(riscv_csr_address): Add CSR classes for Smaia/Ssaia.
	* testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
	* testsuite/gas/riscv/csr-version-1p10.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p10.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p11.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p11.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p12.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p12.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
	* testsuite/gas/riscv/csr.s: Likewise.

include/ChangeLog:

	* opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
	(CSR_MIREG): Likewise.
	(CSR_MTOPEI): Likewise.
	(CSR_MTOPI): Likewise.
	(CSR_MVIEN): Likewise.
	(CSR_MVIP): Likewise.
	(CSR_MIDELEGH): Likewise.
	(CSR_MIEH): Likewise.
	(CSR_MVIENH): Likewise.
	(CSR_MVIPH): Likewise.
	(CSR_MIPH): Likewise.
	(CSR_SISELECT): Likewise.
	(CSR_SIREG): Likewise.
	(CSR_STOPEI): Likewise.
	(CSR_STOPI): Likewise.
	(CSR_SIEH): Likewise.
	(CSR_SIPH): Likewise.
	(DECLARE_CSR): Likewise.
---
 bfd/elfxx-riscv.c                           |  2 +
 gas/config/tc-riscv.c                       | 16 ++++++-
 gas/testsuite/gas/riscv/csr-dw-regnums.d    | 17 +++++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    | 21 +++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  | 34 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 50 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  | 34 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 50 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  | 34 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 50 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d | 34 ++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 50 +++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               | 21 +++++++++
 include/opcode/riscv-opc.h                  | 38 ++++++++++++++++
 14 files changed, 450 insertions(+), 1 deletion(-)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index c9636bcbdc8..34ae84e18bd 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1207,7 +1207,9 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
 
 static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
+  {"smaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"ssaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"sstc",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 34ce68e8252..42d23bb200a 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -68,10 +68,14 @@ enum riscv_csr_class
   CSR_CLASS_DEBUG,	/* debug CSR */
   CSR_CLASS_H,		/* hypervisor */
   CSR_CLASS_H_32,	/* hypervisor, rv32 only */
+  CSR_CLASS_SMAIA,		/* Smaia */
+  CSR_CLASS_SMAIA_32,		/* Smaia, rv32 only */
   CSR_CLASS_SMSTATEEN,		/* Smstateen only */
   CSR_CLASS_SMSTATEEN_AND_H,	/* Smstateen only (with H) */
   CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
   CSR_CLASS_SMSTATEEN_AND_H_32,	/* Smstateen RV32 only (with H) */
+  CSR_CLASS_SSAIA,		/* Ssaia */
+  CSR_CLASS_SSAIA_32,		/* Ssaia, rv32 only */
   CSR_CLASS_SSCOFPMF,		/* Sscofpmf only */
   CSR_CLASS_SSCOFPMF_32,	/* Sscofpmf RV32 only */
   CSR_CLASS_SSTC,		/* Sstc only */
@@ -937,6 +941,11 @@ riscv_csr_address (const char *csr_name,
     case CSR_CLASS_V:
       extension = "v";
       break;
+    case CSR_CLASS_SMAIA:
+    case CSR_CLASS_SMAIA_32:
+      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32);
+      extension = "smaia";
+      break;
     case CSR_CLASS_SMSTATEEN:
     case CSR_CLASS_SMSTATEEN_AND_H:
     case CSR_CLASS_SMSTATEEN_32:
@@ -947,7 +956,12 @@ riscv_csr_address (const char *csr_name,
 		      || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
       extension = "smstateen";
       break;
-    case CSR_CLASS_SSCOFPMF_32:
+    case CSR_CLASS_SSAIA:
+    case CSR_CLASS_SSAIA_32:
+      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32);
+      extension = "ssaia";
+      break;
+     case CSR_CLASS_SSCOFPMF_32:
       is_rv32_only = true;
       /* Fall through.  */
     case CSR_CLASS_SSCOFPMF:
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index b4b3806a085..0c9386dfd18 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -313,6 +313,17 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
   DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
   DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
+  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
+  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
+  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
+  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
+  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
+  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
+  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
+  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
+  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
+  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
+  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
   DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
   DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
   DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
@@ -333,6 +344,12 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
   DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
   DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
+  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
+  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
+  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
+  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
+  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
+  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
   DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
   DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
   DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 6cfa415ebc2..c57825a961d 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -1,6 +1,8 @@
 # Check that CFI directives can accept all of the CSR names (including
 # aliases).  The results for this test also ensures that the DWARF
 # register numbers for the CSRs shouldn't change.
+# The register numbers are specified to be CSR-ID + 4096 (see psABI spec).
+# The CFI offsets in this file are CSR-ID x 4.
 
 	.text
 	.global _start
@@ -307,6 +309,18 @@ _start:
 	.cfi_offset vstval, 2316
 	.cfi_offset vsip, 2320
 	.cfi_offset vsatp, 2560
+	# Smaia extension
+	.cfi_offset miselect, 3392
+	.cfi_offset mireg, 3396
+	.cfi_offset mtopei, 3440
+	.cfi_offset mtopi, 16064
+	.cfi_offset mvien, 3104
+	.cfi_offset mvip, 3108
+	.cfi_offset midelegh, 3148
+	.cfi_offset mieh, 3152
+	.cfi_offset mvienh, 3168
+	.cfi_offset mviph, 3172
+	.cfi_offset miph, 3408
 	# Smstateen extension
 	.cfi_offset mstateen0, 3120
 	.cfi_offset mstateen1, 3124
@@ -328,6 +342,13 @@ _start:
 	.cfi_offset hstateen1h, 6260
 	.cfi_offset hstateen2h, 6264
 	.cfi_offset hstateen3h, 6268
+	# Ssaia extension
+	.cfi_offset siselect, 1344
+	.cfi_offset sireg, 1348
+	.cfi_offset stopei, 1392
+	.cfi_offset stopi, 14016
+	.cfi_offset sieh, 1104
+	.cfi_offset siph, 1360
 	# Sscofpmf extension
 	.cfi_offset scountovf, 13952
 	.cfi_offset mhpmevent3h, 7308
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index bd8b10302e3..ab6ace32846 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -601,6 +601,28 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
+[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
+[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
+[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
+[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
+[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
+[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
+[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
+[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
+[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
+[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
+[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
+[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
+[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
+[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
+[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
+[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
+[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
+[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
+[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
 [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
 [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
 [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
@@ -641,6 +663,18 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
+[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
+[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
+[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
+[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
+[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
+[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
+[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
+[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
+[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
+[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
+[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
 [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
 [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
 [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index b778453b556..b4d12541b49 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -411,6 +411,39 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: read-only CSR is written `csrw mtopi,a1'
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
@@ -483,6 +516,23 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw stopi,a1'
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index 5d6333884f1..95ca52d6dc3 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -601,6 +601,28 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
+[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
+[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
+[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
+[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
+[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
+[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
+[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
+[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
+[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
+[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
+[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
+[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
+[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
+[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
+[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
+[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
+[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
+[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
+[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
 [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
 [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
 [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
@@ -641,6 +663,18 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
+[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
+[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
+[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
+[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
+[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
+[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
+[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
+[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
+[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
+[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
+[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
 [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
 [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
 [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 78bae817470..96079a2937b 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -409,6 +409,39 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: read-only CSR is written `csrw mtopi,a1'
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
@@ -481,6 +514,23 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw stopi,a1'
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 728e647c552..8d82c00471f 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -601,6 +601,28 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
+[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
+[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
+[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
+[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
+[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
+[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
+[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
+[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
+[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
+[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
+[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
+[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
+[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
+[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
+[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
+[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
+[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
+[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
+[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
 [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
 [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
 [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
@@ -641,6 +663,18 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
+[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
+[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
+[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
+[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
+[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
+[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
+[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
+[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
+[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
+[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
+[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
 [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
 [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
 [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index cb026bb55e0..34d6e004f37 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -271,6 +271,39 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: read-only CSR is written `csrw mtopi,a1'
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
@@ -343,6 +376,23 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw stopi,a1'
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index a34b99f4632..24a277142fa 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -601,6 +601,28 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
+[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
+[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
+[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
+[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
+[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
+[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
+[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
+[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
+[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
+[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
+[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
+[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
+[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
+[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
+[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
+[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
+[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
+[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
+[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
 [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
 [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
 [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
@@ -641,6 +663,18 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
+[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
+[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
+[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
+[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
+[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
+[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
+[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
+[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
+[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
+[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
+[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
 [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
 [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
 [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 4fac40fb589..7d4e097a3e8 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -461,6 +461,39 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: read-only CSR is written `csrw mtopi,a1'
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
@@ -533,6 +566,23 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw stopi,a1'
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 128aeb83a04..bf37afa06e0 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -337,6 +337,19 @@
 	csr vsip
 	csr vsatp
 
+	# Smaia
+	csr miselect
+	csr mireg
+	csr mtopei
+	csr mtopi
+	csr mvien
+	csr mvip
+	csr midelegh
+	csr mieh
+	csr mvienh
+	csr mviph
+	csr miph
+
 	# Smstateen extension
 	csr mstateen0
 	csr mstateen1
@@ -359,6 +372,14 @@
 	csr hstateen2h
 	csr hstateen3h
 
+	# Ssaia
+	csr siselect
+	csr sireg
+	csr stopei
+	csr stopi
+	csr sieh
+	csr siph
+
 	# Sscofpmf extension
 	csr scountovf
 	csr mhpmevent3h
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index 88b8d7ff595..d56ab88696d 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2432,6 +2432,18 @@
 #define CSR_UIP 0x44
 #define CSR_SEDELEG 0x102
 #define CSR_SIDELEG 0x103
+/* Smaia extension */
+#define CSR_MISELECT 0x350
+#define CSR_MIREG    0x351
+#define CSR_MTOPEI   0x35c
+#define CSR_MTOPI    0xfb0
+#define CSR_MVIEN    0x308
+#define CSR_MVIP     0x309
+#define CSR_MIDELEGH 0x313
+#define CSR_MIEH     0x314
+#define CSR_MVIENH   0x318
+#define CSR_MVIPH    0x319
+#define CSR_MIPH     0x354
 /* Smstateen extension */
 #define CSR_MSTATEEN0 0x30c
 #define CSR_MSTATEEN1 0x30d
@@ -2453,6 +2465,13 @@
 #define CSR_HSTATEEN1H 0x61d
 #define CSR_HSTATEEN2H 0x61e
 #define CSR_HSTATEEN3H 0x61f
+/* Ssaia extension */
+#define CSR_SISELECT 0x150
+#define CSR_SIREG    0x151
+#define CSR_STOPEI   0x15c
+#define CSR_STOPI    0xdb0
+#define CSR_SIEH     0x114
+#define CSR_SIPH     0x154
 /* Sscofpmf extension */
 #define CSR_SCOUNTOVF 0xda0
 #define CSR_MHPMEVENT3H 0x723
@@ -3154,6 +3173,18 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
 DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+/* Smaia extension */
+DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 /* Smstateen extension */
 DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
@@ -3175,6 +3206,13 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
 DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+/* Ssstateen extension */
+DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 /* Sscofpmf extension */
 DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-- 
2.37.2


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-08-25 14:54 [PATCH] riscv: Add AIA extension support (Smaia, Ssaia) Christoph Muellner
  2022-08-25 14:54 ` Christoph Muellner
@ 2022-08-25 15:16 ` Christoph Müllner
  2022-08-25 18:05   ` Palmer Dabbelt
  1 sibling, 1 reply; 19+ messages in thread
From: Christoph Müllner @ 2022-08-25 15:16 UTC (permalink / raw)
  To: binutils, Kito Cheng, Jim Wilson, Philipp Tomsich,
	Palmer Dabbelt, Anup Patel, Nelson Chu

Forwarding to Nelson's new email address.

On Thu, Aug 25, 2022 at 4:54 PM Christoph Muellner
<christoph.muellner@vrull.eu> wrote:
>
> From: Christoph Müllner <christoph.muellner@vrull.eu>
>
> This commit adds the AIA extensions (Smaia and Ssaia).
>
> bfd/ChangeLog:
>
>         * elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
>         of known standard extensions.
>
> gas/ChangeLog:
>
>         * config/tc-riscv.c (enum riscv_csr_class):
>         (riscv_csr_address): Add CSR classes for Smaia/Ssaia.
>         * testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
>         * testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
>         * testsuite/gas/riscv/csr-version-1p10.d: Likewise.
>         * testsuite/gas/riscv/csr-version-1p10.l: Likewise.
>         * testsuite/gas/riscv/csr-version-1p11.d: Likewise.
>         * testsuite/gas/riscv/csr-version-1p11.l: Likewise.
>         * testsuite/gas/riscv/csr-version-1p12.d: Likewise.
>         * testsuite/gas/riscv/csr-version-1p12.l: Likewise.
>         * testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
>         * testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
>         * testsuite/gas/riscv/csr.s: Likewise.
>
> include/ChangeLog:
>
>         * opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
>         (CSR_MIREG): Likewise.
>         (CSR_MTOPEI): Likewise.
>         (CSR_MTOPI): Likewise.
>         (CSR_MVIEN): Likewise.
>         (CSR_MVIP): Likewise.
>         (CSR_MIDELEGH): Likewise.
>         (CSR_MIEH): Likewise.
>         (CSR_MVIENH): Likewise.
>         (CSR_MVIPH): Likewise.
>         (CSR_MIPH): Likewise.
>         (CSR_SISELECT): Likewise.
>         (CSR_SIREG): Likewise.
>         (CSR_STOPEI): Likewise.
>         (CSR_STOPI): Likewise.
>         (CSR_SIEH): Likewise.
>         (CSR_SIPH): Likewise.
>         (DECLARE_CSR): Likewise.
> ---
>  bfd/elfxx-riscv.c                           |  2 +
>  gas/config/tc-riscv.c                       | 16 ++++++-
>  gas/testsuite/gas/riscv/csr-dw-regnums.d    | 17 +++++++
>  gas/testsuite/gas/riscv/csr-dw-regnums.s    | 21 +++++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.d  | 34 ++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 50 +++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.d  | 34 ++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 50 +++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.d  | 34 ++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 50 +++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.d | 34 ++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 50 +++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr.s               | 21 +++++++++
>  include/opcode/riscv-opc.h                  | 38 ++++++++++++++++
>  14 files changed, 450 insertions(+), 1 deletion(-)
>
> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> index c9636bcbdc8..34ae84e18bd 100644
> --- a/bfd/elfxx-riscv.c
> +++ b/bfd/elfxx-riscv.c
> @@ -1207,7 +1207,9 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
>
>  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
>  {
> +  {"smaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>    {"smstateen",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> +  {"ssaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>    {"sscofpmf",         ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>    {"sstc",             ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>    {"svinval",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> index 34ce68e8252..42d23bb200a 100644
> --- a/gas/config/tc-riscv.c
> +++ b/gas/config/tc-riscv.c
> @@ -68,10 +68,14 @@ enum riscv_csr_class
>    CSR_CLASS_DEBUG,     /* debug CSR */
>    CSR_CLASS_H,         /* hypervisor */
>    CSR_CLASS_H_32,      /* hypervisor, rv32 only */
> +  CSR_CLASS_SMAIA,             /* Smaia */
> +  CSR_CLASS_SMAIA_32,          /* Smaia, rv32 only */
>    CSR_CLASS_SMSTATEEN,         /* Smstateen only */
>    CSR_CLASS_SMSTATEEN_AND_H,   /* Smstateen only (with H) */
>    CSR_CLASS_SMSTATEEN_32,      /* Smstateen RV32 only */
>    CSR_CLASS_SMSTATEEN_AND_H_32,        /* Smstateen RV32 only (with H) */
> +  CSR_CLASS_SSAIA,             /* Ssaia */
> +  CSR_CLASS_SSAIA_32,          /* Ssaia, rv32 only */
>    CSR_CLASS_SSCOFPMF,          /* Sscofpmf only */
>    CSR_CLASS_SSCOFPMF_32,       /* Sscofpmf RV32 only */
>    CSR_CLASS_SSTC,              /* Sstc only */
> @@ -937,6 +941,11 @@ riscv_csr_address (const char *csr_name,
>      case CSR_CLASS_V:
>        extension = "v";
>        break;
> +    case CSR_CLASS_SMAIA:
> +    case CSR_CLASS_SMAIA_32:
> +      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32);
> +      extension = "smaia";
> +      break;
>      case CSR_CLASS_SMSTATEEN:
>      case CSR_CLASS_SMSTATEEN_AND_H:
>      case CSR_CLASS_SMSTATEEN_32:
> @@ -947,7 +956,12 @@ riscv_csr_address (const char *csr_name,
>                       || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
>        extension = "smstateen";
>        break;
> -    case CSR_CLASS_SSCOFPMF_32:
> +    case CSR_CLASS_SSAIA:
> +    case CSR_CLASS_SSAIA_32:
> +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32);
> +      extension = "ssaia";
> +      break;
> +     case CSR_CLASS_SSCOFPMF_32:
>        is_rv32_only = true;
>        /* Fall through.  */
>      case CSR_CLASS_SSCOFPMF:
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> index b4b3806a085..0c9386dfd18 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> @@ -313,6 +313,17 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
>    DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
>    DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
> +  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
> +  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
> +  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
> +  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
> +  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
> +  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
> +  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
> +  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
> +  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
> +  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
> +  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
>    DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
>    DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
>    DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
> @@ -333,6 +344,12 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
>    DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
>    DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
> +  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
> +  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
> +  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
> +  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
> +  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
> +  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
>    DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
>    DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
>    DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> index 6cfa415ebc2..c57825a961d 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> @@ -1,6 +1,8 @@
>  # Check that CFI directives can accept all of the CSR names (including
>  # aliases).  The results for this test also ensures that the DWARF
>  # register numbers for the CSRs shouldn't change.
> +# The register numbers are specified to be CSR-ID + 4096 (see psABI spec).
> +# The CFI offsets in this file are CSR-ID x 4.
>
>         .text
>         .global _start
> @@ -307,6 +309,18 @@ _start:
>         .cfi_offset vstval, 2316
>         .cfi_offset vsip, 2320
>         .cfi_offset vsatp, 2560
> +       # Smaia extension
> +       .cfi_offset miselect, 3392
> +       .cfi_offset mireg, 3396
> +       .cfi_offset mtopei, 3440
> +       .cfi_offset mtopi, 16064
> +       .cfi_offset mvien, 3104
> +       .cfi_offset mvip, 3108
> +       .cfi_offset midelegh, 3148
> +       .cfi_offset mieh, 3152
> +       .cfi_offset mvienh, 3168
> +       .cfi_offset mviph, 3172
> +       .cfi_offset miph, 3408
>         # Smstateen extension
>         .cfi_offset mstateen0, 3120
>         .cfi_offset mstateen1, 3124
> @@ -328,6 +342,13 @@ _start:
>         .cfi_offset hstateen1h, 6260
>         .cfi_offset hstateen2h, 6264
>         .cfi_offset hstateen3h, 6268
> +       # Ssaia extension
> +       .cfi_offset siselect, 1344
> +       .cfi_offset sireg, 1348
> +       .cfi_offset stopei, 1392
> +       .cfi_offset stopi, 14016
> +       .cfi_offset sieh, 1104
> +       .cfi_offset siph, 1360
>         # Sscofpmf extension
>         .cfi_offset scountovf, 13952
>         .cfi_offset mhpmevent3h, 7308
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
> index bd8b10302e3..ab6ace32846 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
> @@ -601,6 +601,28 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> @@ -641,6 +663,18 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
> index b778453b556..b4d12541b49 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
> @@ -411,6 +411,39 @@
>  .*Warning: invalid CSR `vsip', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> @@ -483,6 +516,23 @@
>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw stopi,a1'
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
> index 5d6333884f1..95ca52d6dc3 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
> @@ -601,6 +601,28 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> @@ -641,6 +663,18 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
> index 78bae817470..96079a2937b 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
> @@ -409,6 +409,39 @@
>  .*Warning: invalid CSR `vsip', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> @@ -481,6 +514,23 @@
>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw stopi,a1'
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
> index 728e647c552..8d82c00471f 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
> @@ -601,6 +601,28 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> @@ -641,6 +663,18 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
> index cb026bb55e0..34d6e004f37 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
> @@ -271,6 +271,39 @@
>  .*Warning: invalid CSR `vsip', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> @@ -343,6 +376,23 @@
>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw stopi,a1'
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> index a34b99f4632..24a277142fa 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> @@ -601,6 +601,28 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> @@ -641,6 +663,18 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> index 4fac40fb589..7d4e097a3e8 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> @@ -461,6 +461,39 @@
>  .*Warning: invalid CSR `vsip', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> @@ -533,6 +566,23 @@
>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw stopi,a1'
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
> index 128aeb83a04..bf37afa06e0 100644
> --- a/gas/testsuite/gas/riscv/csr.s
> +++ b/gas/testsuite/gas/riscv/csr.s
> @@ -337,6 +337,19 @@
>         csr vsip
>         csr vsatp
>
> +       # Smaia
> +       csr miselect
> +       csr mireg
> +       csr mtopei
> +       csr mtopi
> +       csr mvien
> +       csr mvip
> +       csr midelegh
> +       csr mieh
> +       csr mvienh
> +       csr mviph
> +       csr miph
> +
>         # Smstateen extension
>         csr mstateen0
>         csr mstateen1
> @@ -359,6 +372,14 @@
>         csr hstateen2h
>         csr hstateen3h
>
> +       # Ssaia
> +       csr siselect
> +       csr sireg
> +       csr stopei
> +       csr stopi
> +       csr sieh
> +       csr siph
> +
>         # Sscofpmf extension
>         csr scountovf
>         csr mhpmevent3h
> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
> index 88b8d7ff595..d56ab88696d 100644
> --- a/include/opcode/riscv-opc.h
> +++ b/include/opcode/riscv-opc.h
> @@ -2432,6 +2432,18 @@
>  #define CSR_UIP 0x44
>  #define CSR_SEDELEG 0x102
>  #define CSR_SIDELEG 0x103
> +/* Smaia extension */
> +#define CSR_MISELECT 0x350
> +#define CSR_MIREG    0x351
> +#define CSR_MTOPEI   0x35c
> +#define CSR_MTOPI    0xfb0
> +#define CSR_MVIEN    0x308
> +#define CSR_MVIP     0x309
> +#define CSR_MIDELEGH 0x313
> +#define CSR_MIEH     0x314
> +#define CSR_MVIENH   0x318
> +#define CSR_MVIPH    0x319
> +#define CSR_MIPH     0x354
>  /* Smstateen extension */
>  #define CSR_MSTATEEN0 0x30c
>  #define CSR_MSTATEEN1 0x30d
> @@ -2453,6 +2465,13 @@
>  #define CSR_HSTATEEN1H 0x61d
>  #define CSR_HSTATEEN2H 0x61e
>  #define CSR_HSTATEEN3H 0x61f
> +/* Ssaia extension */
> +#define CSR_SISELECT 0x150
> +#define CSR_SIREG    0x151
> +#define CSR_STOPEI   0x15c
> +#define CSR_STOPI    0xdb0
> +#define CSR_SIEH     0x114
> +#define CSR_SIPH     0x154
>  /* Sscofpmf extension */
>  #define CSR_SCOUNTOVF 0xda0
>  #define CSR_MHPMEVENT3H 0x723
> @@ -3154,6 +3173,18 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
>  DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +/* Smaia extension */
> +DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  /* Smstateen extension */
>  DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> @@ -3175,6 +3206,13 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
>  DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +/* Ssstateen extension */
> +DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  /* Sscofpmf extension */
>  DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> --
> 2.37.2
>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-08-25 15:16 ` Christoph Müllner
@ 2022-08-25 18:05   ` Palmer Dabbelt
  2022-08-25 19:11     ` Christoph Müllner
  0 siblings, 1 reply; 19+ messages in thread
From: Palmer Dabbelt @ 2022-08-25 18:05 UTC (permalink / raw)
  To: christoph.muellner
  Cc: binutils, kito.cheng, Jim Wilson, philipp.tomsich, apatel, nelson

On Thu, 25 Aug 2022 08:16:37 PDT (-0700), christoph.muellner@vrull.eu wrote:
> Forwarding to Nelson's new email address.
>
> On Thu, Aug 25, 2022 at 4:54 PM Christoph Muellner
> <christoph.muellner@vrull.eu> wrote:
>>
>> From: Christoph Müllner <christoph.muellner@vrull.eu>
>>
>> This commit adds the AIA extensions (Smaia and Ssaia).
>>
>> bfd/ChangeLog:
>>
>>         * elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
>>         of known standard extensions.
>>
>> gas/ChangeLog:
>>
>>         * config/tc-riscv.c (enum riscv_csr_class):
>>         (riscv_csr_address): Add CSR classes for Smaia/Ssaia.
>>         * testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
>>         * testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
>>         * testsuite/gas/riscv/csr-version-1p10.d: Likewise.
>>         * testsuite/gas/riscv/csr-version-1p10.l: Likewise.
>>         * testsuite/gas/riscv/csr-version-1p11.d: Likewise.
>>         * testsuite/gas/riscv/csr-version-1p11.l: Likewise.
>>         * testsuite/gas/riscv/csr-version-1p12.d: Likewise.
>>         * testsuite/gas/riscv/csr-version-1p12.l: Likewise.
>>         * testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
>>         * testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
>>         * testsuite/gas/riscv/csr.s: Likewise.
>>
>> include/ChangeLog:
>>
>>         * opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
>>         (CSR_MIREG): Likewise.
>>         (CSR_MTOPEI): Likewise.
>>         (CSR_MTOPI): Likewise.
>>         (CSR_MVIEN): Likewise.
>>         (CSR_MVIP): Likewise.
>>         (CSR_MIDELEGH): Likewise.
>>         (CSR_MIEH): Likewise.
>>         (CSR_MVIENH): Likewise.
>>         (CSR_MVIPH): Likewise.
>>         (CSR_MIPH): Likewise.
>>         (CSR_SISELECT): Likewise.
>>         (CSR_SIREG): Likewise.
>>         (CSR_STOPEI): Likewise.
>>         (CSR_STOPI): Likewise.
>>         (CSR_SIEH): Likewise.
>>         (CSR_SIPH): Likewise.
>>         (DECLARE_CSR): Likewise.
>> ---
>>  bfd/elfxx-riscv.c                           |  2 +
>>  gas/config/tc-riscv.c                       | 16 ++++++-
>>  gas/testsuite/gas/riscv/csr-dw-regnums.d    | 17 +++++++
>>  gas/testsuite/gas/riscv/csr-dw-regnums.s    | 21 +++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p10.d  | 34 ++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 50 +++++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p11.d  | 34 ++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 50 +++++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p12.d  | 34 ++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 50 +++++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p9p1.d | 34 ++++++++++++++
>>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 50 +++++++++++++++++++++
>>  gas/testsuite/gas/riscv/csr.s               | 21 +++++++++
>>  include/opcode/riscv-opc.h                  | 38 ++++++++++++++++
>>  14 files changed, 450 insertions(+), 1 deletion(-)
>>
>> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
>> index c9636bcbdc8..34ae84e18bd 100644
>> --- a/bfd/elfxx-riscv.c
>> +++ b/bfd/elfxx-riscv.c
>> @@ -1207,7 +1207,9 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
>>
>>  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
>>  {
>> +  {"smaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>>    {"smstateen",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>> +  {"ssaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },

The latest AIA spec release I can find is "0.3.1-draft.32" 
<https://github.com/riscv/riscv-aia/releases/tag/0.3.1-draft.32>, which 
lists a handful of subsets as "stable" but other as "draft".  Is there a 
frozen version of this somewhere?  The "stable" designation in RISC-V 
land doesn't really mean anything.

>>    {"sscofpmf",         ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>>    {"sstc",             ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>>    {"svinval",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
>> index 34ce68e8252..42d23bb200a 100644
>> --- a/gas/config/tc-riscv.c
>> +++ b/gas/config/tc-riscv.c
>> @@ -68,10 +68,14 @@ enum riscv_csr_class
>>    CSR_CLASS_DEBUG,     /* debug CSR */
>>    CSR_CLASS_H,         /* hypervisor */
>>    CSR_CLASS_H_32,      /* hypervisor, rv32 only */
>> +  CSR_CLASS_SMAIA,             /* Smaia */
>> +  CSR_CLASS_SMAIA_32,          /* Smaia, rv32 only */
>>    CSR_CLASS_SMSTATEEN,         /* Smstateen only */
>>    CSR_CLASS_SMSTATEEN_AND_H,   /* Smstateen only (with H) */
>>    CSR_CLASS_SMSTATEEN_32,      /* Smstateen RV32 only */
>>    CSR_CLASS_SMSTATEEN_AND_H_32,        /* Smstateen RV32 only (with H) */
>> +  CSR_CLASS_SSAIA,             /* Ssaia */
>> +  CSR_CLASS_SSAIA_32,          /* Ssaia, rv32 only */
>>    CSR_CLASS_SSCOFPMF,          /* Sscofpmf only */
>>    CSR_CLASS_SSCOFPMF_32,       /* Sscofpmf RV32 only */
>>    CSR_CLASS_SSTC,              /* Sstc only */
>> @@ -937,6 +941,11 @@ riscv_csr_address (const char *csr_name,
>>      case CSR_CLASS_V:
>>        extension = "v";
>>        break;
>> +    case CSR_CLASS_SMAIA:
>> +    case CSR_CLASS_SMAIA_32:
>> +      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32);
>> +      extension = "smaia";
>> +      break;
>>      case CSR_CLASS_SMSTATEEN:
>>      case CSR_CLASS_SMSTATEEN_AND_H:
>>      case CSR_CLASS_SMSTATEEN_32:
>> @@ -947,7 +956,12 @@ riscv_csr_address (const char *csr_name,
>>                       || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
>>        extension = "smstateen";
>>        break;
>> -    case CSR_CLASS_SSCOFPMF_32:
>> +    case CSR_CLASS_SSAIA:
>> +    case CSR_CLASS_SSAIA_32:
>> +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32);
>> +      extension = "ssaia";
>> +      break;
>> +     case CSR_CLASS_SSCOFPMF_32:
>>        is_rv32_only = true;
>>        /* Fall through.  */
>>      case CSR_CLASS_SSCOFPMF:
>> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
>> index b4b3806a085..0c9386dfd18 100644
>> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
>> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
>> @@ -313,6 +313,17 @@ Contents of the .* section:
>>    DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
>>    DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
>>    DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
>> +  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
>> +  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
>> +  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
>> +  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
>> +  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
>> +  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
>> +  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
>> +  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
>> +  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
>> +  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
>> +  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
>>    DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
>>    DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
>>    DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
>> @@ -333,6 +344,12 @@ Contents of the .* section:
>>    DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
>>    DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
>>    DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
>> +  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
>> +  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
>> +  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
>> +  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
>> +  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
>> +  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
>>    DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
>>    DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
>>    DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
>> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
>> index 6cfa415ebc2..c57825a961d 100644
>> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
>> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
>> @@ -1,6 +1,8 @@
>>  # Check that CFI directives can accept all of the CSR names (including
>>  # aliases).  The results for this test also ensures that the DWARF
>>  # register numbers for the CSRs shouldn't change.
>> +# The register numbers are specified to be CSR-ID + 4096 (see psABI spec).
>> +# The CFI offsets in this file are CSR-ID x 4.
>>
>>         .text
>>         .global _start
>> @@ -307,6 +309,18 @@ _start:
>>         .cfi_offset vstval, 2316
>>         .cfi_offset vsip, 2320
>>         .cfi_offset vsatp, 2560
>> +       # Smaia extension
>> +       .cfi_offset miselect, 3392
>> +       .cfi_offset mireg, 3396
>> +       .cfi_offset mtopei, 3440
>> +       .cfi_offset mtopi, 16064
>> +       .cfi_offset mvien, 3104
>> +       .cfi_offset mvip, 3108
>> +       .cfi_offset midelegh, 3148
>> +       .cfi_offset mieh, 3152
>> +       .cfi_offset mvienh, 3168
>> +       .cfi_offset mviph, 3172
>> +       .cfi_offset miph, 3408
>>         # Smstateen extension
>>         .cfi_offset mstateen0, 3120
>>         .cfi_offset mstateen1, 3124
>> @@ -328,6 +342,13 @@ _start:
>>         .cfi_offset hstateen1h, 6260
>>         .cfi_offset hstateen2h, 6264
>>         .cfi_offset hstateen3h, 6268
>> +       # Ssaia extension
>> +       .cfi_offset siselect, 1344
>> +       .cfi_offset sireg, 1348
>> +       .cfi_offset stopei, 1392
>> +       .cfi_offset stopi, 14016
>> +       .cfi_offset sieh, 1104
>> +       .cfi_offset siph, 1360
>>         # Sscofpmf extension
>>         .cfi_offset scountovf, 13952
>>         .cfi_offset mhpmevent3h, 7308
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
>> index bd8b10302e3..ab6ace32846 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
>> @@ -601,6 +601,28 @@ Disassembly of section .text:
>>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
>> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
>> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
>> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
>> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
>> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
>> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
>> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
>> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
>> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
>> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
>> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
>> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
>> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
>> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
>> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
>> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
>> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
>> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
>> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
>> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
>> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
>> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
>> @@ -641,6 +663,18 @@ Disassembly of section .text:
>>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
>> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
>> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
>> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
>> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
>> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
>> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
>> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
>> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
>> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
>> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
>> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
>> index b778453b556..b4d12541b49 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
>> @@ -411,6 +411,39 @@
>>  .*Warning: invalid CSR `vsip', needs `h' extension
>>  .*Warning: invalid CSR `vsatp', needs `h' extension
>>  .*Warning: invalid CSR `vsatp', needs `h' extension
>> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> +.*Warning: read-only CSR is written `csrw mtopi,a1'
>> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> +.*Warning: invalid CSR `miph', needs rv32i extension
>> +.*Warning: invalid CSR `miph', needs `smaia' extension
>> +.*Warning: invalid CSR `miph', needs rv32i extension
>> +.*Warning: invalid CSR `miph', needs `smaia' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>> @@ -483,6 +516,23 @@
>>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> +.*Warning: read-only CSR is written `csrw stopi,a1'
>> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> +.*Warning: invalid CSR `siph', needs rv32i extension
>> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>> +.*Warning: invalid CSR `siph', needs rv32i extension
>> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>>  .*Warning: read-only CSR is written `csrw scountovf,a1'
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
>> index 5d6333884f1..95ca52d6dc3 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
>> @@ -601,6 +601,28 @@ Disassembly of section .text:
>>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
>> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
>> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
>> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
>> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
>> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
>> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
>> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
>> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
>> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
>> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
>> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
>> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
>> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
>> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
>> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
>> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
>> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
>> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
>> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
>> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
>> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
>> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
>> @@ -641,6 +663,18 @@ Disassembly of section .text:
>>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
>> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
>> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
>> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
>> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
>> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
>> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
>> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
>> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
>> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
>> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
>> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
>> index 78bae817470..96079a2937b 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
>> @@ -409,6 +409,39 @@
>>  .*Warning: invalid CSR `vsip', needs `h' extension
>>  .*Warning: invalid CSR `vsatp', needs `h' extension
>>  .*Warning: invalid CSR `vsatp', needs `h' extension
>> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> +.*Warning: read-only CSR is written `csrw mtopi,a1'
>> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> +.*Warning: invalid CSR `miph', needs rv32i extension
>> +.*Warning: invalid CSR `miph', needs `smaia' extension
>> +.*Warning: invalid CSR `miph', needs rv32i extension
>> +.*Warning: invalid CSR `miph', needs `smaia' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>> @@ -481,6 +514,23 @@
>>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> +.*Warning: read-only CSR is written `csrw stopi,a1'
>> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> +.*Warning: invalid CSR `siph', needs rv32i extension
>> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>> +.*Warning: invalid CSR `siph', needs rv32i extension
>> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>>  .*Warning: read-only CSR is written `csrw scountovf,a1'
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
>> index 728e647c552..8d82c00471f 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
>> @@ -601,6 +601,28 @@ Disassembly of section .text:
>>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
>> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
>> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
>> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
>> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
>> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
>> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
>> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
>> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
>> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
>> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
>> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
>> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
>> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
>> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
>> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
>> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
>> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
>> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
>> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
>> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
>> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
>> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
>> @@ -641,6 +663,18 @@ Disassembly of section .text:
>>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
>> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
>> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
>> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
>> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
>> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
>> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
>> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
>> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
>> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
>> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
>> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
>> index cb026bb55e0..34d6e004f37 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
>> @@ -271,6 +271,39 @@
>>  .*Warning: invalid CSR `vsip', needs `h' extension
>>  .*Warning: invalid CSR `vsatp', needs `h' extension
>>  .*Warning: invalid CSR `vsatp', needs `h' extension
>> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> +.*Warning: read-only CSR is written `csrw mtopi,a1'
>> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> +.*Warning: invalid CSR `miph', needs rv32i extension
>> +.*Warning: invalid CSR `miph', needs `smaia' extension
>> +.*Warning: invalid CSR `miph', needs rv32i extension
>> +.*Warning: invalid CSR `miph', needs `smaia' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>> @@ -343,6 +376,23 @@
>>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> +.*Warning: read-only CSR is written `csrw stopi,a1'
>> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> +.*Warning: invalid CSR `siph', needs rv32i extension
>> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>> +.*Warning: invalid CSR `siph', needs rv32i extension
>> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>>  .*Warning: read-only CSR is written `csrw scountovf,a1'
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>> index a34b99f4632..24a277142fa 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>> @@ -601,6 +601,28 @@ Disassembly of section .text:
>>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
>> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
>> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
>> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
>> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
>> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
>> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
>> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
>> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
>> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
>> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
>> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
>> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
>> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
>> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
>> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
>> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
>> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
>> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
>> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
>> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
>> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
>> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
>> @@ -641,6 +663,18 @@ Disassembly of section .text:
>>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
>> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
>> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
>> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
>> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
>> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
>> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
>> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
>> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
>> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
>> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
>> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
>> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>> index 4fac40fb589..7d4e097a3e8 100644
>> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>> @@ -461,6 +461,39 @@
>>  .*Warning: invalid CSR `vsip', needs `h' extension
>>  .*Warning: invalid CSR `vsatp', needs `h' extension
>>  .*Warning: invalid CSR `vsatp', needs `h' extension
>> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> +.*Warning: read-only CSR is written `csrw mtopi,a1'
>> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> +.*Warning: invalid CSR `miph', needs rv32i extension
>> +.*Warning: invalid CSR `miph', needs `smaia' extension
>> +.*Warning: invalid CSR `miph', needs rv32i extension
>> +.*Warning: invalid CSR `miph', needs `smaia' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>> @@ -533,6 +566,23 @@
>>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> +.*Warning: read-only CSR is written `csrw stopi,a1'
>> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> +.*Warning: invalid CSR `siph', needs rv32i extension
>> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>> +.*Warning: invalid CSR `siph', needs rv32i extension
>> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>>  .*Warning: read-only CSR is written `csrw scountovf,a1'
>> diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
>> index 128aeb83a04..bf37afa06e0 100644
>> --- a/gas/testsuite/gas/riscv/csr.s
>> +++ b/gas/testsuite/gas/riscv/csr.s
>> @@ -337,6 +337,19 @@
>>         csr vsip
>>         csr vsatp
>>
>> +       # Smaia
>> +       csr miselect
>> +       csr mireg
>> +       csr mtopei
>> +       csr mtopi
>> +       csr mvien
>> +       csr mvip
>> +       csr midelegh
>> +       csr mieh
>> +       csr mvienh
>> +       csr mviph
>> +       csr miph
>> +
>>         # Smstateen extension
>>         csr mstateen0
>>         csr mstateen1
>> @@ -359,6 +372,14 @@
>>         csr hstateen2h
>>         csr hstateen3h
>>
>> +       # Ssaia
>> +       csr siselect
>> +       csr sireg
>> +       csr stopei
>> +       csr stopi
>> +       csr sieh
>> +       csr siph
>> +
>>         # Sscofpmf extension
>>         csr scountovf
>>         csr mhpmevent3h
>> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
>> index 88b8d7ff595..d56ab88696d 100644
>> --- a/include/opcode/riscv-opc.h
>> +++ b/include/opcode/riscv-opc.h
>> @@ -2432,6 +2432,18 @@
>>  #define CSR_UIP 0x44
>>  #define CSR_SEDELEG 0x102
>>  #define CSR_SIDELEG 0x103
>> +/* Smaia extension */
>> +#define CSR_MISELECT 0x350
>> +#define CSR_MIREG    0x351
>> +#define CSR_MTOPEI   0x35c
>> +#define CSR_MTOPI    0xfb0
>> +#define CSR_MVIEN    0x308
>> +#define CSR_MVIP     0x309
>> +#define CSR_MIDELEGH 0x313
>> +#define CSR_MIEH     0x314
>> +#define CSR_MVIENH   0x318
>> +#define CSR_MVIPH    0x319
>> +#define CSR_MIPH     0x354
>>  /* Smstateen extension */
>>  #define CSR_MSTATEEN0 0x30c
>>  #define CSR_MSTATEEN1 0x30d
>> @@ -2453,6 +2465,13 @@
>>  #define CSR_HSTATEEN1H 0x61d
>>  #define CSR_HSTATEEN2H 0x61e
>>  #define CSR_HSTATEEN3H 0x61f
>> +/* Ssaia extension */
>> +#define CSR_SISELECT 0x150
>> +#define CSR_SIREG    0x151
>> +#define CSR_STOPEI   0x15c
>> +#define CSR_STOPI    0xdb0
>> +#define CSR_SIEH     0x114
>> +#define CSR_SIPH     0x154
>>  /* Sscofpmf extension */
>>  #define CSR_SCOUNTOVF 0xda0
>>  #define CSR_MHPMEVENT3H 0x723
>> @@ -3154,6 +3173,18 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
>>  DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>  DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>  DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +/* Smaia extension */
>> +DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>  /* Smstateen extension */
>>  DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>  DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> @@ -3175,6 +3206,13 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
>>  DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>  DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>  DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +/* Ssstateen extension */
>> +DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> +DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>  /* Sscofpmf extension */
>>  DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>  DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> --
>> 2.37.2
>>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-08-25 18:05   ` Palmer Dabbelt
@ 2022-08-25 19:11     ` Christoph Müllner
  2022-08-25 20:49       ` Palmer Dabbelt
  2022-08-26  9:53       ` Nelson Chu
  0 siblings, 2 replies; 19+ messages in thread
From: Christoph Müllner @ 2022-08-25 19:11 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: binutils, kito.cheng, Jim Wilson, philipp.tomsich, apatel, nelson

On Thu, Aug 25, 2022 at 8:05 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>
> On Thu, 25 Aug 2022 08:16:37 PDT (-0700), christoph.muellner@vrull.eu wrote:
> > Forwarding to Nelson's new email address.
> >
> > On Thu, Aug 25, 2022 at 4:54 PM Christoph Muellner
> > <christoph.muellner@vrull.eu> wrote:
> >>
> >> From: Christoph Müllner <christoph.muellner@vrull.eu>
> >>
> >> This commit adds the AIA extensions (Smaia and Ssaia).
> >>
> >> bfd/ChangeLog:
> >>
> >>         * elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
> >>         of known standard extensions.
> >>
> >> gas/ChangeLog:
> >>
> >>         * config/tc-riscv.c (enum riscv_csr_class):
> >>         (riscv_csr_address): Add CSR classes for Smaia/Ssaia.
> >>         * testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
> >>         * testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
> >>         * testsuite/gas/riscv/csr-version-1p10.d: Likewise.
> >>         * testsuite/gas/riscv/csr-version-1p10.l: Likewise.
> >>         * testsuite/gas/riscv/csr-version-1p11.d: Likewise.
> >>         * testsuite/gas/riscv/csr-version-1p11.l: Likewise.
> >>         * testsuite/gas/riscv/csr-version-1p12.d: Likewise.
> >>         * testsuite/gas/riscv/csr-version-1p12.l: Likewise.
> >>         * testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
> >>         * testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
> >>         * testsuite/gas/riscv/csr.s: Likewise.
> >>
> >> include/ChangeLog:
> >>
> >>         * opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
> >>         (CSR_MIREG): Likewise.
> >>         (CSR_MTOPEI): Likewise.
> >>         (CSR_MTOPI): Likewise.
> >>         (CSR_MVIEN): Likewise.
> >>         (CSR_MVIP): Likewise.
> >>         (CSR_MIDELEGH): Likewise.
> >>         (CSR_MIEH): Likewise.
> >>         (CSR_MVIENH): Likewise.
> >>         (CSR_MVIPH): Likewise.
> >>         (CSR_MIPH): Likewise.
> >>         (CSR_SISELECT): Likewise.
> >>         (CSR_SIREG): Likewise.
> >>         (CSR_STOPEI): Likewise.
> >>         (CSR_STOPI): Likewise.
> >>         (CSR_SIEH): Likewise.
> >>         (CSR_SIPH): Likewise.
> >>         (DECLARE_CSR): Likewise.
> >> ---
> >>  bfd/elfxx-riscv.c                           |  2 +
> >>  gas/config/tc-riscv.c                       | 16 ++++++-
> >>  gas/testsuite/gas/riscv/csr-dw-regnums.d    | 17 +++++++
> >>  gas/testsuite/gas/riscv/csr-dw-regnums.s    | 21 +++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p10.d  | 34 ++++++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 50 +++++++++++++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p11.d  | 34 ++++++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 50 +++++++++++++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p12.d  | 34 ++++++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 50 +++++++++++++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p9p1.d | 34 ++++++++++++++
> >>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 50 +++++++++++++++++++++
> >>  gas/testsuite/gas/riscv/csr.s               | 21 +++++++++
> >>  include/opcode/riscv-opc.h                  | 38 ++++++++++++++++
> >>  14 files changed, 450 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> >> index c9636bcbdc8..34ae84e18bd 100644
> >> --- a/bfd/elfxx-riscv.c
> >> +++ b/bfd/elfxx-riscv.c
> >> @@ -1207,7 +1207,9 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
> >>
> >>  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
> >>  {
> >> +  {"smaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >>    {"smstateen",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >> +  {"ssaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
.>
> The latest AIA spec release I can find is "0.3.1-draft.32"
> <https://github.com/riscv/riscv-aia/releases/tag/0.3.1-draft.32>, which
> lists a handful of subsets as "stable" but other as "draft".  Is there a
> frozen version of this somewhere?  The "stable" designation in RISC-V
> land doesn't really mean anything.

The specification states (maintained by the RVI program managers) can
be found here:
  https://wiki.riscv.org/display/HOME/Specification+Status
The AIA specification is in the state "Freeze Arch Review Complete"
with version "0.3.1-draft.32".
However, the public review period has not started yet.
I assume this will happen in the next 1-2 weeks (Anup probably knows better).
Ratification will then happen after the 45 days public review period.
Would the beginning of the public review period be acceptable for merging?

This patch needs a v2 anyway because I missed the Hypervisor and VS CSRs.

BR
Christoph




>
> >>    {"sscofpmf",         ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >>    {"sstc",             ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >>    {"svinval",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> >> index 34ce68e8252..42d23bb200a 100644
> >> --- a/gas/config/tc-riscv.c
> >> +++ b/gas/config/tc-riscv.c
> >> @@ -68,10 +68,14 @@ enum riscv_csr_class
> >>    CSR_CLASS_DEBUG,     /* debug CSR */
> >>    CSR_CLASS_H,         /* hypervisor */
> >>    CSR_CLASS_H_32,      /* hypervisor, rv32 only */
> >> +  CSR_CLASS_SMAIA,             /* Smaia */
> >> +  CSR_CLASS_SMAIA_32,          /* Smaia, rv32 only */
> >>    CSR_CLASS_SMSTATEEN,         /* Smstateen only */
> >>    CSR_CLASS_SMSTATEEN_AND_H,   /* Smstateen only (with H) */
> >>    CSR_CLASS_SMSTATEEN_32,      /* Smstateen RV32 only */
> >>    CSR_CLASS_SMSTATEEN_AND_H_32,        /* Smstateen RV32 only (with H) */
> >> +  CSR_CLASS_SSAIA,             /* Ssaia */
> >> +  CSR_CLASS_SSAIA_32,          /* Ssaia, rv32 only */
> >>    CSR_CLASS_SSCOFPMF,          /* Sscofpmf only */
> >>    CSR_CLASS_SSCOFPMF_32,       /* Sscofpmf RV32 only */
> >>    CSR_CLASS_SSTC,              /* Sstc only */
> >> @@ -937,6 +941,11 @@ riscv_csr_address (const char *csr_name,
> >>      case CSR_CLASS_V:
> >>        extension = "v";
> >>        break;
> >> +    case CSR_CLASS_SMAIA:
> >> +    case CSR_CLASS_SMAIA_32:
> >> +      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32);
> >> +      extension = "smaia";
> >> +      break;
> >>      case CSR_CLASS_SMSTATEEN:
> >>      case CSR_CLASS_SMSTATEEN_AND_H:
> >>      case CSR_CLASS_SMSTATEEN_32:
> >> @@ -947,7 +956,12 @@ riscv_csr_address (const char *csr_name,
> >>                       || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
> >>        extension = "smstateen";
> >>        break;
> >> -    case CSR_CLASS_SSCOFPMF_32:
> >> +    case CSR_CLASS_SSAIA:
> >> +    case CSR_CLASS_SSAIA_32:
> >> +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32);
> >> +      extension = "ssaia";
> >> +      break;
> >> +     case CSR_CLASS_SSCOFPMF_32:
> >>        is_rv32_only = true;
> >>        /* Fall through.  */
> >>      case CSR_CLASS_SSCOFPMF:
> >> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> >> index b4b3806a085..0c9386dfd18 100644
> >> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> >> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> >> @@ -313,6 +313,17 @@ Contents of the .* section:
> >>    DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
> >>    DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
> >>    DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
> >> +  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
> >> +  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
> >> +  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
> >> +  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
> >> +  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
> >> +  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
> >> +  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
> >> +  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
> >> +  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
> >> +  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
> >> +  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
> >>    DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
> >>    DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
> >>    DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
> >> @@ -333,6 +344,12 @@ Contents of the .* section:
> >>    DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
> >>    DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
> >>    DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
> >> +  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
> >> +  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
> >> +  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
> >> +  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
> >> +  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
> >> +  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
> >>    DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
> >>    DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
> >>    DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
> >> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> >> index 6cfa415ebc2..c57825a961d 100644
> >> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> >> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> >> @@ -1,6 +1,8 @@
> >>  # Check that CFI directives can accept all of the CSR names (including
> >>  # aliases).  The results for this test also ensures that the DWARF
> >>  # register numbers for the CSRs shouldn't change.
> >> +# The register numbers are specified to be CSR-ID + 4096 (see psABI spec).
> >> +# The CFI offsets in this file are CSR-ID x 4.
> >>
> >>         .text
> >>         .global _start
> >> @@ -307,6 +309,18 @@ _start:
> >>         .cfi_offset vstval, 2316
> >>         .cfi_offset vsip, 2320
> >>         .cfi_offset vsatp, 2560
> >> +       # Smaia extension
> >> +       .cfi_offset miselect, 3392
> >> +       .cfi_offset mireg, 3396
> >> +       .cfi_offset mtopei, 3440
> >> +       .cfi_offset mtopi, 16064
> >> +       .cfi_offset mvien, 3104
> >> +       .cfi_offset mvip, 3108
> >> +       .cfi_offset midelegh, 3148
> >> +       .cfi_offset mieh, 3152
> >> +       .cfi_offset mvienh, 3168
> >> +       .cfi_offset mviph, 3172
> >> +       .cfi_offset miph, 3408
> >>         # Smstateen extension
> >>         .cfi_offset mstateen0, 3120
> >>         .cfi_offset mstateen1, 3124
> >> @@ -328,6 +342,13 @@ _start:
> >>         .cfi_offset hstateen1h, 6260
> >>         .cfi_offset hstateen2h, 6264
> >>         .cfi_offset hstateen3h, 6268
> >> +       # Ssaia extension
> >> +       .cfi_offset siselect, 1344
> >> +       .cfi_offset sireg, 1348
> >> +       .cfi_offset stopei, 1392
> >> +       .cfi_offset stopi, 14016
> >> +       .cfi_offset sieh, 1104
> >> +       .cfi_offset siph, 1360
> >>         # Sscofpmf extension
> >>         .cfi_offset scountovf, 13952
> >>         .cfi_offset mhpmevent3h, 7308
> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
> >> index bd8b10302e3..ab6ace32846 100644
> >> --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
> >> @@ -601,6 +601,28 @@ Disassembly of section .text:
> >>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> >> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> >> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> >> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> >> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> >> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> >> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> >> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> >> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> >> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> >> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> >> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> >> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> >> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> >> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> >> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> >> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> >> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> >> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> >> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> >> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> >> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> >> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> >>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> >> @@ -641,6 +663,18 @@ Disassembly of section .text:
> >>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> >> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> >> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> >> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> >> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> >> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> >> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> >> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> >> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> >> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> >> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> >> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> >> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> >>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
> >> index b778453b556..b4d12541b49 100644
> >> --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
> >> @@ -411,6 +411,39 @@
> >>  .*Warning: invalid CSR `vsip', needs `h' extension
> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> >> @@ -483,6 +516,23 @@
> >>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> +.*Warning: read-only CSR is written `csrw stopi,a1'
> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
> >> index 5d6333884f1..95ca52d6dc3 100644
> >> --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
> >> @@ -601,6 +601,28 @@ Disassembly of section .text:
> >>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> >> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> >> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> >> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> >> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> >> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> >> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> >> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> >> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> >> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> >> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> >> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> >> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> >> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> >> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> >> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> >> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> >> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> >> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> >> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> >> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> >> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> >> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> >>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> >> @@ -641,6 +663,18 @@ Disassembly of section .text:
> >>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> >> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> >> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> >> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> >> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> >> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> >> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> >> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> >> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> >> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> >> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> >> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> >> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> >>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
> >> index 78bae817470..96079a2937b 100644
> >> --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
> >> @@ -409,6 +409,39 @@
> >>  .*Warning: invalid CSR `vsip', needs `h' extension
> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> >> @@ -481,6 +514,23 @@
> >>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> +.*Warning: read-only CSR is written `csrw stopi,a1'
> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
> >> index 728e647c552..8d82c00471f 100644
> >> --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
> >> @@ -601,6 +601,28 @@ Disassembly of section .text:
> >>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> >> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> >> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> >> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> >> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> >> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> >> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> >> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> >> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> >> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> >> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> >> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> >> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> >> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> >> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> >> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> >> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> >> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> >> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> >> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> >> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> >> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> >> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> >>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> >> @@ -641,6 +663,18 @@ Disassembly of section .text:
> >>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> >> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> >> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> >> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> >> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> >> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> >> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> >> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> >> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> >> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> >> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> >> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> >> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> >>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
> >> index cb026bb55e0..34d6e004f37 100644
> >> --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
> >> @@ -271,6 +271,39 @@
> >>  .*Warning: invalid CSR `vsip', needs `h' extension
> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> >> @@ -343,6 +376,23 @@
> >>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> +.*Warning: read-only CSR is written `csrw stopi,a1'
> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> >> index a34b99f4632..24a277142fa 100644
> >> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> >> @@ -601,6 +601,28 @@ Disassembly of section .text:
> >>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> >> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> >> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> >> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> >> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> >> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> >> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> >> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> >> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> >> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> >> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> >> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> >> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> >> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> >> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> >> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> >> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> >> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> >> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> >> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> >> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> >> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> >> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> >>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> >> @@ -641,6 +663,18 @@ Disassembly of section .text:
> >>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> >> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> >> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> >> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> >> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> >> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> >> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> >> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> >> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> >> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> >> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> >> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> >> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> >>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> >> index 4fac40fb589..7d4e097a3e8 100644
> >> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> >> @@ -461,6 +461,39 @@
> >>  .*Warning: invalid CSR `vsip', needs `h' extension
> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> >> @@ -533,6 +566,23 @@
> >>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> +.*Warning: read-only CSR is written `csrw stopi,a1'
> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> >> diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
> >> index 128aeb83a04..bf37afa06e0 100644
> >> --- a/gas/testsuite/gas/riscv/csr.s
> >> +++ b/gas/testsuite/gas/riscv/csr.s
> >> @@ -337,6 +337,19 @@
> >>         csr vsip
> >>         csr vsatp
> >>
> >> +       # Smaia
> >> +       csr miselect
> >> +       csr mireg
> >> +       csr mtopei
> >> +       csr mtopi
> >> +       csr mvien
> >> +       csr mvip
> >> +       csr midelegh
> >> +       csr mieh
> >> +       csr mvienh
> >> +       csr mviph
> >> +       csr miph
> >> +
> >>         # Smstateen extension
> >>         csr mstateen0
> >>         csr mstateen1
> >> @@ -359,6 +372,14 @@
> >>         csr hstateen2h
> >>         csr hstateen3h
> >>
> >> +       # Ssaia
> >> +       csr siselect
> >> +       csr sireg
> >> +       csr stopei
> >> +       csr stopi
> >> +       csr sieh
> >> +       csr siph
> >> +
> >>         # Sscofpmf extension
> >>         csr scountovf
> >>         csr mhpmevent3h
> >> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
> >> index 88b8d7ff595..d56ab88696d 100644
> >> --- a/include/opcode/riscv-opc.h
> >> +++ b/include/opcode/riscv-opc.h
> >> @@ -2432,6 +2432,18 @@
> >>  #define CSR_UIP 0x44
> >>  #define CSR_SEDELEG 0x102
> >>  #define CSR_SIDELEG 0x103
> >> +/* Smaia extension */
> >> +#define CSR_MISELECT 0x350
> >> +#define CSR_MIREG    0x351
> >> +#define CSR_MTOPEI   0x35c
> >> +#define CSR_MTOPI    0xfb0
> >> +#define CSR_MVIEN    0x308
> >> +#define CSR_MVIP     0x309
> >> +#define CSR_MIDELEGH 0x313
> >> +#define CSR_MIEH     0x314
> >> +#define CSR_MVIENH   0x318
> >> +#define CSR_MVIPH    0x319
> >> +#define CSR_MIPH     0x354
> >>  /* Smstateen extension */
> >>  #define CSR_MSTATEEN0 0x30c
> >>  #define CSR_MSTATEEN1 0x30d
> >> @@ -2453,6 +2465,13 @@
> >>  #define CSR_HSTATEEN1H 0x61d
> >>  #define CSR_HSTATEEN2H 0x61e
> >>  #define CSR_HSTATEEN3H 0x61f
> >> +/* Ssaia extension */
> >> +#define CSR_SISELECT 0x150
> >> +#define CSR_SIREG    0x151
> >> +#define CSR_STOPEI   0x15c
> >> +#define CSR_STOPI    0xdb0
> >> +#define CSR_SIEH     0x114
> >> +#define CSR_SIPH     0x154
> >>  /* Sscofpmf extension */
> >>  #define CSR_SCOUNTOVF 0xda0
> >>  #define CSR_MHPMEVENT3H 0x723
> >> @@ -3154,6 +3173,18 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
> >>  DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >>  DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >>  DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +/* Smaia extension */
> >> +DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >>  /* Smstateen extension */
> >>  DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >>  DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> @@ -3175,6 +3206,13 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
> >>  DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >>  DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >>  DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +/* Ssstateen extension */
> >> +DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> +DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >>  /* Sscofpmf extension */
> >>  DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >>  DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> --
> >> 2.37.2
> >>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-08-25 19:11     ` Christoph Müllner
@ 2022-08-25 20:49       ` Palmer Dabbelt
  2022-08-25 21:49         ` Philipp Tomsich
  2022-08-26  9:53       ` Nelson Chu
  1 sibling, 1 reply; 19+ messages in thread
From: Palmer Dabbelt @ 2022-08-25 20:49 UTC (permalink / raw)
  To: christoph.muellner
  Cc: binutils, kito.cheng, Jim Wilson, philipp.tomsich, apatel, nelson

On Thu, 25 Aug 2022 12:11:42 PDT (-0700), christoph.muellner@vrull.eu wrote:
> On Thu, Aug 25, 2022 at 8:05 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>>
>> On Thu, 25 Aug 2022 08:16:37 PDT (-0700), christoph.muellner@vrull.eu wrote:
>> > Forwarding to Nelson's new email address.
>> >
>> > On Thu, Aug 25, 2022 at 4:54 PM Christoph Muellner
>> > <christoph.muellner@vrull.eu> wrote:
>> >>
>> >> From: Christoph Müllner <christoph.muellner@vrull.eu>
>> >>
>> >> This commit adds the AIA extensions (Smaia and Ssaia).
>> >>
>> >> bfd/ChangeLog:
>> >>
>> >>         * elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
>> >>         of known standard extensions.
>> >>
>> >> gas/ChangeLog:
>> >>
>> >>         * config/tc-riscv.c (enum riscv_csr_class):
>> >>         (riscv_csr_address): Add CSR classes for Smaia/Ssaia.
>> >>         * testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
>> >>         * testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
>> >>         * testsuite/gas/riscv/csr-version-1p10.d: Likewise.
>> >>         * testsuite/gas/riscv/csr-version-1p10.l: Likewise.
>> >>         * testsuite/gas/riscv/csr-version-1p11.d: Likewise.
>> >>         * testsuite/gas/riscv/csr-version-1p11.l: Likewise.
>> >>         * testsuite/gas/riscv/csr-version-1p12.d: Likewise.
>> >>         * testsuite/gas/riscv/csr-version-1p12.l: Likewise.
>> >>         * testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
>> >>         * testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
>> >>         * testsuite/gas/riscv/csr.s: Likewise.
>> >>
>> >> include/ChangeLog:
>> >>
>> >>         * opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
>> >>         (CSR_MIREG): Likewise.
>> >>         (CSR_MTOPEI): Likewise.
>> >>         (CSR_MTOPI): Likewise.
>> >>         (CSR_MVIEN): Likewise.
>> >>         (CSR_MVIP): Likewise.
>> >>         (CSR_MIDELEGH): Likewise.
>> >>         (CSR_MIEH): Likewise.
>> >>         (CSR_MVIENH): Likewise.
>> >>         (CSR_MVIPH): Likewise.
>> >>         (CSR_MIPH): Likewise.
>> >>         (CSR_SISELECT): Likewise.
>> >>         (CSR_SIREG): Likewise.
>> >>         (CSR_STOPEI): Likewise.
>> >>         (CSR_STOPI): Likewise.
>> >>         (CSR_SIEH): Likewise.
>> >>         (CSR_SIPH): Likewise.
>> >>         (DECLARE_CSR): Likewise.
>> >> ---
>> >>  bfd/elfxx-riscv.c                           |  2 +
>> >>  gas/config/tc-riscv.c                       | 16 ++++++-
>> >>  gas/testsuite/gas/riscv/csr-dw-regnums.d    | 17 +++++++
>> >>  gas/testsuite/gas/riscv/csr-dw-regnums.s    | 21 +++++++++
>> >>  gas/testsuite/gas/riscv/csr-version-1p10.d  | 34 ++++++++++++++
>> >>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 50 +++++++++++++++++++++
>> >>  gas/testsuite/gas/riscv/csr-version-1p11.d  | 34 ++++++++++++++
>> >>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 50 +++++++++++++++++++++
>> >>  gas/testsuite/gas/riscv/csr-version-1p12.d  | 34 ++++++++++++++
>> >>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 50 +++++++++++++++++++++
>> >>  gas/testsuite/gas/riscv/csr-version-1p9p1.d | 34 ++++++++++++++
>> >>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 50 +++++++++++++++++++++
>> >>  gas/testsuite/gas/riscv/csr.s               | 21 +++++++++
>> >>  include/opcode/riscv-opc.h                  | 38 ++++++++++++++++
>> >>  14 files changed, 450 insertions(+), 1 deletion(-)
>> >>
>> >> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
>> >> index c9636bcbdc8..34ae84e18bd 100644
>> >> --- a/bfd/elfxx-riscv.c
>> >> +++ b/bfd/elfxx-riscv.c
>> >> @@ -1207,7 +1207,9 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
>> >>
>> >>  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
>> >>  {
>> >> +  {"smaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>> >>    {"smstateen",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>> >> +  {"ssaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> .>
>> The latest AIA spec release I can find is "0.3.1-draft.32"
>> <https://github.com/riscv/riscv-aia/releases/tag/0.3.1-draft.32>, which
>> lists a handful of subsets as "stable" but other as "draft".  Is there a
>> frozen version of this somewhere?  The "stable" designation in RISC-V
>> land doesn't really mean anything.
>
> The specification states (maintained by the RVI program managers) can
> be found here:
>   https://wiki.riscv.org/display/HOME/Specification+Status
> The AIA specification is in the state "Freeze Arch Review Complete"

I'm also seeing a "Waivers Requested" right underneath that, which makes 
it sound like at least something isn't complete for marking this frozen.  
That said, I always end up more confused when trying to read these 
tables than when I started, so I generally just go with what the 
specifications say.

> with version "0.3.1-draft.32".
> However, the public review period has not started yet.
> I assume this will happen in the next 1-2 weeks (Anup probably knows better).
> Ratification will then happen after the 45 days public review period.
> Would the beginning of the public review period be acceptable for merging?

Historically we've just waited for the specifications to be marked as 
frozen, the whole public review / ratification process has been a 
different thing.

> This patch needs a v2 anyway because I missed the Hypervisor and VS CSRs.
>
> BR
> Christoph
>
>
>
>
>>
>> >>    {"sscofpmf",         ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>> >>    {"sstc",             ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>> >>    {"svinval",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>> >> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
>> >> index 34ce68e8252..42d23bb200a 100644
>> >> --- a/gas/config/tc-riscv.c
>> >> +++ b/gas/config/tc-riscv.c
>> >> @@ -68,10 +68,14 @@ enum riscv_csr_class
>> >>    CSR_CLASS_DEBUG,     /* debug CSR */
>> >>    CSR_CLASS_H,         /* hypervisor */
>> >>    CSR_CLASS_H_32,      /* hypervisor, rv32 only */
>> >> +  CSR_CLASS_SMAIA,             /* Smaia */
>> >> +  CSR_CLASS_SMAIA_32,          /* Smaia, rv32 only */
>> >>    CSR_CLASS_SMSTATEEN,         /* Smstateen only */
>> >>    CSR_CLASS_SMSTATEEN_AND_H,   /* Smstateen only (with H) */
>> >>    CSR_CLASS_SMSTATEEN_32,      /* Smstateen RV32 only */
>> >>    CSR_CLASS_SMSTATEEN_AND_H_32,        /* Smstateen RV32 only (with H) */
>> >> +  CSR_CLASS_SSAIA,             /* Ssaia */
>> >> +  CSR_CLASS_SSAIA_32,          /* Ssaia, rv32 only */
>> >>    CSR_CLASS_SSCOFPMF,          /* Sscofpmf only */
>> >>    CSR_CLASS_SSCOFPMF_32,       /* Sscofpmf RV32 only */
>> >>    CSR_CLASS_SSTC,              /* Sstc only */
>> >> @@ -937,6 +941,11 @@ riscv_csr_address (const char *csr_name,
>> >>      case CSR_CLASS_V:
>> >>        extension = "v";
>> >>        break;
>> >> +    case CSR_CLASS_SMAIA:
>> >> +    case CSR_CLASS_SMAIA_32:
>> >> +      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32);
>> >> +      extension = "smaia";
>> >> +      break;
>> >>      case CSR_CLASS_SMSTATEEN:
>> >>      case CSR_CLASS_SMSTATEEN_AND_H:
>> >>      case CSR_CLASS_SMSTATEEN_32:
>> >> @@ -947,7 +956,12 @@ riscv_csr_address (const char *csr_name,
>> >>                       || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
>> >>        extension = "smstateen";
>> >>        break;
>> >> -    case CSR_CLASS_SSCOFPMF_32:
>> >> +    case CSR_CLASS_SSAIA:
>> >> +    case CSR_CLASS_SSAIA_32:
>> >> +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32);
>> >> +      extension = "ssaia";
>> >> +      break;
>> >> +     case CSR_CLASS_SSCOFPMF_32:
>> >>        is_rv32_only = true;
>> >>        /* Fall through.  */
>> >>      case CSR_CLASS_SSCOFPMF:
>> >> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
>> >> index b4b3806a085..0c9386dfd18 100644
>> >> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
>> >> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
>> >> @@ -313,6 +313,17 @@ Contents of the .* section:
>> >>    DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
>> >>    DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
>> >>    DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
>> >> +  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
>> >> +  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
>> >> +  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
>> >> +  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
>> >> +  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
>> >> +  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
>> >> +  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
>> >> +  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
>> >> +  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
>> >> +  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
>> >> +  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
>> >>    DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
>> >>    DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
>> >>    DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
>> >> @@ -333,6 +344,12 @@ Contents of the .* section:
>> >>    DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
>> >>    DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
>> >>    DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
>> >> +  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
>> >> +  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
>> >> +  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
>> >> +  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
>> >> +  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
>> >> +  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
>> >>    DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
>> >>    DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
>> >>    DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
>> >> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
>> >> index 6cfa415ebc2..c57825a961d 100644
>> >> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
>> >> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
>> >> @@ -1,6 +1,8 @@
>> >>  # Check that CFI directives can accept all of the CSR names (including
>> >>  # aliases).  The results for this test also ensures that the DWARF
>> >>  # register numbers for the CSRs shouldn't change.
>> >> +# The register numbers are specified to be CSR-ID + 4096 (see psABI spec).
>> >> +# The CFI offsets in this file are CSR-ID x 4.
>> >>
>> >>         .text
>> >>         .global _start
>> >> @@ -307,6 +309,18 @@ _start:
>> >>         .cfi_offset vstval, 2316
>> >>         .cfi_offset vsip, 2320
>> >>         .cfi_offset vsatp, 2560
>> >> +       # Smaia extension
>> >> +       .cfi_offset miselect, 3392
>> >> +       .cfi_offset mireg, 3396
>> >> +       .cfi_offset mtopei, 3440
>> >> +       .cfi_offset mtopi, 16064
>> >> +       .cfi_offset mvien, 3104
>> >> +       .cfi_offset mvip, 3108
>> >> +       .cfi_offset midelegh, 3148
>> >> +       .cfi_offset mieh, 3152
>> >> +       .cfi_offset mvienh, 3168
>> >> +       .cfi_offset mviph, 3172
>> >> +       .cfi_offset miph, 3408
>> >>         # Smstateen extension
>> >>         .cfi_offset mstateen0, 3120
>> >>         .cfi_offset mstateen1, 3124
>> >> @@ -328,6 +342,13 @@ _start:
>> >>         .cfi_offset hstateen1h, 6260
>> >>         .cfi_offset hstateen2h, 6264
>> >>         .cfi_offset hstateen3h, 6268
>> >> +       # Ssaia extension
>> >> +       .cfi_offset siselect, 1344
>> >> +       .cfi_offset sireg, 1348
>> >> +       .cfi_offset stopei, 1392
>> >> +       .cfi_offset stopi, 14016
>> >> +       .cfi_offset sieh, 1104
>> >> +       .cfi_offset siph, 1360
>> >>         # Sscofpmf extension
>> >>         .cfi_offset scountovf, 13952
>> >>         .cfi_offset mhpmevent3h, 7308
>> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
>> >> index bd8b10302e3..ab6ace32846 100644
>> >> --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
>> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
>> >> @@ -601,6 +601,28 @@ Disassembly of section .text:
>> >>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>> >>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>> >>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
>> >> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
>> >> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
>> >> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
>> >> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
>> >> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
>> >> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
>> >> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
>> >> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
>> >> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
>> >> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
>> >> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
>> >> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
>> >> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
>> >> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>> >>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>> >>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>> >>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
>> >> @@ -641,6 +663,18 @@ Disassembly of section .text:
>> >>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>> >>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>> >>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
>> >> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
>> >> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
>> >> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
>> >> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
>> >> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
>> >> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
>> >> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
>> >> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>> >>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>> >>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>> >>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
>> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
>> >> index b778453b556..b4d12541b49 100644
>> >> --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
>> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
>> >> @@ -411,6 +411,39 @@
>> >>  .*Warning: invalid CSR `vsip', needs `h' extension
>> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
>> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
>> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> >> +.*Warning: read-only CSR is written `csrw mtopi,a1'
>> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> >> +.*Warning: invalid CSR `miph', needs rv32i extension
>> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
>> >> +.*Warning: invalid CSR `miph', needs rv32i extension
>> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
>> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>> >>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>> >> @@ -483,6 +516,23 @@
>> >>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>> >>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>> >>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> >> +.*Warning: read-only CSR is written `csrw stopi,a1'
>> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `siph', needs rv32i extension
>> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `siph', needs rv32i extension
>> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>> >>  .*Warning: read-only CSR is written `csrw scountovf,a1'
>> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
>> >> index 5d6333884f1..95ca52d6dc3 100644
>> >> --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
>> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
>> >> @@ -601,6 +601,28 @@ Disassembly of section .text:
>> >>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>> >>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>> >>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
>> >> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
>> >> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
>> >> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
>> >> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
>> >> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
>> >> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
>> >> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
>> >> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
>> >> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
>> >> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
>> >> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
>> >> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
>> >> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
>> >> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>> >>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>> >>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>> >>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
>> >> @@ -641,6 +663,18 @@ Disassembly of section .text:
>> >>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>> >>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>> >>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
>> >> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
>> >> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
>> >> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
>> >> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
>> >> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
>> >> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
>> >> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
>> >> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>> >>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>> >>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>> >>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
>> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
>> >> index 78bae817470..96079a2937b 100644
>> >> --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
>> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
>> >> @@ -409,6 +409,39 @@
>> >>  .*Warning: invalid CSR `vsip', needs `h' extension
>> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
>> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
>> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> >> +.*Warning: read-only CSR is written `csrw mtopi,a1'
>> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> >> +.*Warning: invalid CSR `miph', needs rv32i extension
>> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
>> >> +.*Warning: invalid CSR `miph', needs rv32i extension
>> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
>> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>> >>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>> >> @@ -481,6 +514,23 @@
>> >>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>> >>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>> >>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> >> +.*Warning: read-only CSR is written `csrw stopi,a1'
>> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `siph', needs rv32i extension
>> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `siph', needs rv32i extension
>> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>> >>  .*Warning: read-only CSR is written `csrw scountovf,a1'
>> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
>> >> index 728e647c552..8d82c00471f 100644
>> >> --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
>> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
>> >> @@ -601,6 +601,28 @@ Disassembly of section .text:
>> >>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>> >>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>> >>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
>> >> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
>> >> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
>> >> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
>> >> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
>> >> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
>> >> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
>> >> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
>> >> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
>> >> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
>> >> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
>> >> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
>> >> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
>> >> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
>> >> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>> >>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>> >>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>> >>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
>> >> @@ -641,6 +663,18 @@ Disassembly of section .text:
>> >>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>> >>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>> >>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
>> >> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
>> >> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
>> >> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
>> >> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
>> >> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
>> >> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
>> >> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
>> >> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>> >>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>> >>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>> >>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
>> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
>> >> index cb026bb55e0..34d6e004f37 100644
>> >> --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
>> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
>> >> @@ -271,6 +271,39 @@
>> >>  .*Warning: invalid CSR `vsip', needs `h' extension
>> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
>> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
>> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> >> +.*Warning: read-only CSR is written `csrw mtopi,a1'
>> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> >> +.*Warning: invalid CSR `miph', needs rv32i extension
>> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
>> >> +.*Warning: invalid CSR `miph', needs rv32i extension
>> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
>> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>> >>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>> >> @@ -343,6 +376,23 @@
>> >>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>> >>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>> >>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> >> +.*Warning: read-only CSR is written `csrw stopi,a1'
>> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `siph', needs rv32i extension
>> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `siph', needs rv32i extension
>> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>> >>  .*Warning: read-only CSR is written `csrw scountovf,a1'
>> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>> >> index a34b99f4632..24a277142fa 100644
>> >> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>> >> @@ -601,6 +601,28 @@ Disassembly of section .text:
>> >>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>> >>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>> >>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
>> >> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
>> >> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
>> >> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
>> >> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
>> >> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
>> >> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
>> >> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
>> >> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
>> >> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
>> >> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
>> >> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
>> >> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
>> >> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
>> >> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
>> >> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>> >>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>> >>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>> >>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
>> >> @@ -641,6 +663,18 @@ Disassembly of section .text:
>> >>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>> >>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>> >>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
>> >> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
>> >> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
>> >> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
>> >> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
>> >> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
>> >> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
>> >> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
>> >> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
>> >> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>> >>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>> >>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>> >>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
>> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>> >> index 4fac40fb589..7d4e097a3e8 100644
>> >> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>> >> @@ -461,6 +461,39 @@
>> >>  .*Warning: invalid CSR `vsip', needs `h' extension
>> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
>> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
>> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>> >> +.*Warning: read-only CSR is written `csrw mtopi,a1'
>> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
>> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
>> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
>> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
>> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
>> >> +.*Warning: invalid CSR `miph', needs rv32i extension
>> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
>> >> +.*Warning: invalid CSR `miph', needs rv32i extension
>> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
>> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>> >>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>> >> @@ -533,6 +566,23 @@
>> >>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>> >>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>> >>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>> >> +.*Warning: read-only CSR is written `csrw stopi,a1'
>> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
>> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `siph', needs rv32i extension
>> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>> >> +.*Warning: invalid CSR `siph', needs rv32i extension
>> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
>> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>> >>  .*Warning: read-only CSR is written `csrw scountovf,a1'
>> >> diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
>> >> index 128aeb83a04..bf37afa06e0 100644
>> >> --- a/gas/testsuite/gas/riscv/csr.s
>> >> +++ b/gas/testsuite/gas/riscv/csr.s
>> >> @@ -337,6 +337,19 @@
>> >>         csr vsip
>> >>         csr vsatp
>> >>
>> >> +       # Smaia
>> >> +       csr miselect
>> >> +       csr mireg
>> >> +       csr mtopei
>> >> +       csr mtopi
>> >> +       csr mvien
>> >> +       csr mvip
>> >> +       csr midelegh
>> >> +       csr mieh
>> >> +       csr mvienh
>> >> +       csr mviph
>> >> +       csr miph
>> >> +
>> >>         # Smstateen extension
>> >>         csr mstateen0
>> >>         csr mstateen1
>> >> @@ -359,6 +372,14 @@
>> >>         csr hstateen2h
>> >>         csr hstateen3h
>> >>
>> >> +       # Ssaia
>> >> +       csr siselect
>> >> +       csr sireg
>> >> +       csr stopei
>> >> +       csr stopi
>> >> +       csr sieh
>> >> +       csr siph
>> >> +
>> >>         # Sscofpmf extension
>> >>         csr scountovf
>> >>         csr mhpmevent3h
>> >> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
>> >> index 88b8d7ff595..d56ab88696d 100644
>> >> --- a/include/opcode/riscv-opc.h
>> >> +++ b/include/opcode/riscv-opc.h
>> >> @@ -2432,6 +2432,18 @@
>> >>  #define CSR_UIP 0x44
>> >>  #define CSR_SEDELEG 0x102
>> >>  #define CSR_SIDELEG 0x103
>> >> +/* Smaia extension */
>> >> +#define CSR_MISELECT 0x350
>> >> +#define CSR_MIREG    0x351
>> >> +#define CSR_MTOPEI   0x35c
>> >> +#define CSR_MTOPI    0xfb0
>> >> +#define CSR_MVIEN    0x308
>> >> +#define CSR_MVIP     0x309
>> >> +#define CSR_MIDELEGH 0x313
>> >> +#define CSR_MIEH     0x314
>> >> +#define CSR_MVIENH   0x318
>> >> +#define CSR_MVIPH    0x319
>> >> +#define CSR_MIPH     0x354
>> >>  /* Smstateen extension */
>> >>  #define CSR_MSTATEEN0 0x30c
>> >>  #define CSR_MSTATEEN1 0x30d
>> >> @@ -2453,6 +2465,13 @@
>> >>  #define CSR_HSTATEEN1H 0x61d
>> >>  #define CSR_HSTATEEN2H 0x61e
>> >>  #define CSR_HSTATEEN3H 0x61f
>> >> +/* Ssaia extension */
>> >> +#define CSR_SISELECT 0x150
>> >> +#define CSR_SIREG    0x151
>> >> +#define CSR_STOPEI   0x15c
>> >> +#define CSR_STOPI    0xdb0
>> >> +#define CSR_SIEH     0x114
>> >> +#define CSR_SIPH     0x154
>> >>  /* Sscofpmf extension */
>> >>  #define CSR_SCOUNTOVF 0xda0
>> >>  #define CSR_MHPMEVENT3H 0x723
>> >> @@ -3154,6 +3173,18 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
>> >>  DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >>  DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >>  DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +/* Smaia extension */
>> >> +DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >>  /* Smstateen extension */
>> >>  DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >>  DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> @@ -3175,6 +3206,13 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
>> >>  DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >>  DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >>  DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +/* Ssstateen extension */
>> >> +DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> +DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >>  /* Sscofpmf extension */
>> >>  DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >>  DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> >> --
>> >> 2.37.2
>> >>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-08-25 20:49       ` Palmer Dabbelt
@ 2022-08-25 21:49         ` Philipp Tomsich
  0 siblings, 0 replies; 19+ messages in thread
From: Philipp Tomsich @ 2022-08-25 21:49 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: christoph.muellner, binutils, kito.cheng, Jim Wilson, apatel, nelson

On Thu, 25 Aug 2022 at 22:49, Palmer Dabbelt <palmer@dabbelt.com> wrote:
>
> On Thu, 25 Aug 2022 12:11:42 PDT (-0700), christoph.muellner@vrull.eu wrote:
> > On Thu, Aug 25, 2022 at 8:05 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
> >>
> >> On Thu, 25 Aug 2022 08:16:37 PDT (-0700), christoph.muellner@vrull.eu wrote:
> >> > Forwarding to Nelson's new email address.
> >> >
> >> > On Thu, Aug 25, 2022 at 4:54 PM Christoph Muellner
> >> > <christoph.muellner@vrull.eu> wrote:
> >> >>
> >> >> From: Christoph Müllner <christoph.muellner@vrull.eu>
> >> >>
> >> >> This commit adds the AIA extensions (Smaia and Ssaia).
> >> >>
> >> >> bfd/ChangeLog:
> >> >>
> >> >>         * elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
> >> >>         of known standard extensions.
> >> >>
> >> >> gas/ChangeLog:
> >> >>
> >> >>         * config/tc-riscv.c (enum riscv_csr_class):
> >> >>         (riscv_csr_address): Add CSR classes for Smaia/Ssaia.
> >> >>         * testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
> >> >>         * testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
> >> >>         * testsuite/gas/riscv/csr-version-1p10.d: Likewise.
> >> >>         * testsuite/gas/riscv/csr-version-1p10.l: Likewise.
> >> >>         * testsuite/gas/riscv/csr-version-1p11.d: Likewise.
> >> >>         * testsuite/gas/riscv/csr-version-1p11.l: Likewise.
> >> >>         * testsuite/gas/riscv/csr-version-1p12.d: Likewise.
> >> >>         * testsuite/gas/riscv/csr-version-1p12.l: Likewise.
> >> >>         * testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
> >> >>         * testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
> >> >>         * testsuite/gas/riscv/csr.s: Likewise.
> >> >>
> >> >> include/ChangeLog:
> >> >>
> >> >>         * opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
> >> >>         (CSR_MIREG): Likewise.
> >> >>         (CSR_MTOPEI): Likewise.
> >> >>         (CSR_MTOPI): Likewise.
> >> >>         (CSR_MVIEN): Likewise.
> >> >>         (CSR_MVIP): Likewise.
> >> >>         (CSR_MIDELEGH): Likewise.
> >> >>         (CSR_MIEH): Likewise.
> >> >>         (CSR_MVIENH): Likewise.
> >> >>         (CSR_MVIPH): Likewise.
> >> >>         (CSR_MIPH): Likewise.
> >> >>         (CSR_SISELECT): Likewise.
> >> >>         (CSR_SIREG): Likewise.
> >> >>         (CSR_STOPEI): Likewise.
> >> >>         (CSR_STOPI): Likewise.
> >> >>         (CSR_SIEH): Likewise.
> >> >>         (CSR_SIPH): Likewise.
> >> >>         (DECLARE_CSR): Likewise.
> >> >> ---
> >> >>  bfd/elfxx-riscv.c                           |  2 +
> >> >>  gas/config/tc-riscv.c                       | 16 ++++++-
> >> >>  gas/testsuite/gas/riscv/csr-dw-regnums.d    | 17 +++++++
> >> >>  gas/testsuite/gas/riscv/csr-dw-regnums.s    | 21 +++++++++
> >> >>  gas/testsuite/gas/riscv/csr-version-1p10.d  | 34 ++++++++++++++
> >> >>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 50 +++++++++++++++++++++
> >> >>  gas/testsuite/gas/riscv/csr-version-1p11.d  | 34 ++++++++++++++
> >> >>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 50 +++++++++++++++++++++
> >> >>  gas/testsuite/gas/riscv/csr-version-1p12.d  | 34 ++++++++++++++
> >> >>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 50 +++++++++++++++++++++
> >> >>  gas/testsuite/gas/riscv/csr-version-1p9p1.d | 34 ++++++++++++++
> >> >>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 50 +++++++++++++++++++++
> >> >>  gas/testsuite/gas/riscv/csr.s               | 21 +++++++++
> >> >>  include/opcode/riscv-opc.h                  | 38 ++++++++++++++++
> >> >>  14 files changed, 450 insertions(+), 1 deletion(-)
> >> >>
> >> >> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> >> >> index c9636bcbdc8..34ae84e18bd 100644
> >> >> --- a/bfd/elfxx-riscv.c
> >> >> +++ b/bfd/elfxx-riscv.c
> >> >> @@ -1207,7 +1207,9 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
> >> >>
> >> >>  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
> >> >>  {
> >> >> +  {"smaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >> >>    {"smstateen",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >> >> +  {"ssaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> > .>
> >> The latest AIA spec release I can find is "0.3.1-draft.32"
> >> <https://github.com/riscv/riscv-aia/releases/tag/0.3.1-draft.32>, which
> >> lists a handful of subsets as "stable" but other as "draft".  Is there a
> >> frozen version of this somewhere?  The "stable" designation in RISC-V
> >> land doesn't really mean anything.
> >
> > The specification states (maintained by the RVI program managers) can
> > be found here:
> >   https://wiki.riscv.org/display/HOME/Specification+Status
> > The AIA specification is in the state "Freeze Arch Review Complete"
>
> I'm also seeing a "Waivers Requested" right underneath that, which makes
> it sound like at least something isn't complete for marking this frozen.
> That said, I always end up more confused when trying to read these
> tables than when I started, so I generally just go with what the
> specifications say.

The waivers are granted together with the freeze vote.  However, I
haven't even received the OpaVote for the Committee Chairs sign-off,
so I would assume that we should expect the freeze milestone not under
4 weeks (2 weeks for the sign-off, 2 weeks for the freeze vote).

> > with version "0.3.1-draft.32".
> > However, the public review period has not started yet.
> > I assume this will happen in the next 1-2 weeks (Anup probably knows better).
> > Ratification will then happen after the 45 days public review period.
> > Would the beginning of the public review period be acceptable for merging?
>
> Historically we've just waited for the specifications to be marked as
> frozen, the whole public review / ratification process has been a
> different thing.

CSR numbers are finalized with the Arch Review.
However, I second the assessment that we should wait for freeze (i.e.,
the start of the 45-day public review) before merging.

Cheers,
Philipp.

>
> > This patch needs a v2 anyway because I missed the Hypervisor and VS CSRs.
> >
> > BR
> > Christoph
> >
> >
> >
> >
> >>
> >> >>    {"sscofpmf",         ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >> >>    {"sstc",             ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >> >>    {"svinval",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >> >> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> >> >> index 34ce68e8252..42d23bb200a 100644
> >> >> --- a/gas/config/tc-riscv.c
> >> >> +++ b/gas/config/tc-riscv.c
> >> >> @@ -68,10 +68,14 @@ enum riscv_csr_class
> >> >>    CSR_CLASS_DEBUG,     /* debug CSR */
> >> >>    CSR_CLASS_H,         /* hypervisor */
> >> >>    CSR_CLASS_H_32,      /* hypervisor, rv32 only */
> >> >> +  CSR_CLASS_SMAIA,             /* Smaia */
> >> >> +  CSR_CLASS_SMAIA_32,          /* Smaia, rv32 only */
> >> >>    CSR_CLASS_SMSTATEEN,         /* Smstateen only */
> >> >>    CSR_CLASS_SMSTATEEN_AND_H,   /* Smstateen only (with H) */
> >> >>    CSR_CLASS_SMSTATEEN_32,      /* Smstateen RV32 only */
> >> >>    CSR_CLASS_SMSTATEEN_AND_H_32,        /* Smstateen RV32 only (with H) */
> >> >> +  CSR_CLASS_SSAIA,             /* Ssaia */
> >> >> +  CSR_CLASS_SSAIA_32,          /* Ssaia, rv32 only */
> >> >>    CSR_CLASS_SSCOFPMF,          /* Sscofpmf only */
> >> >>    CSR_CLASS_SSCOFPMF_32,       /* Sscofpmf RV32 only */
> >> >>    CSR_CLASS_SSTC,              /* Sstc only */
> >> >> @@ -937,6 +941,11 @@ riscv_csr_address (const char *csr_name,
> >> >>      case CSR_CLASS_V:
> >> >>        extension = "v";
> >> >>        break;
> >> >> +    case CSR_CLASS_SMAIA:
> >> >> +    case CSR_CLASS_SMAIA_32:
> >> >> +      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32);
> >> >> +      extension = "smaia";
> >> >> +      break;
> >> >>      case CSR_CLASS_SMSTATEEN:
> >> >>      case CSR_CLASS_SMSTATEEN_AND_H:
> >> >>      case CSR_CLASS_SMSTATEEN_32:
> >> >> @@ -947,7 +956,12 @@ riscv_csr_address (const char *csr_name,
> >> >>                       || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
> >> >>        extension = "smstateen";
> >> >>        break;
> >> >> -    case CSR_CLASS_SSCOFPMF_32:
> >> >> +    case CSR_CLASS_SSAIA:
> >> >> +    case CSR_CLASS_SSAIA_32:
> >> >> +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32);
> >> >> +      extension = "ssaia";
> >> >> +      break;
> >> >> +     case CSR_CLASS_SSCOFPMF_32:
> >> >>        is_rv32_only = true;
> >> >>        /* Fall through.  */
> >> >>      case CSR_CLASS_SSCOFPMF:
> >> >> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> >> >> index b4b3806a085..0c9386dfd18 100644
> >> >> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> >> >> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> >> >> @@ -313,6 +313,17 @@ Contents of the .* section:
> >> >>    DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
> >> >>    DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
> >> >>    DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
> >> >> +  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
> >> >> +  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
> >> >> +  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
> >> >> +  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
> >> >> +  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
> >> >> +  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
> >> >> +  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
> >> >> +  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
> >> >> +  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
> >> >> +  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
> >> >> +  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
> >> >>    DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
> >> >>    DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
> >> >>    DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
> >> >> @@ -333,6 +344,12 @@ Contents of the .* section:
> >> >>    DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
> >> >>    DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
> >> >>    DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
> >> >> +  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
> >> >> +  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
> >> >> +  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
> >> >> +  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
> >> >> +  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
> >> >> +  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
> >> >>    DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
> >> >>    DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
> >> >>    DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
> >> >> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> >> >> index 6cfa415ebc2..c57825a961d 100644
> >> >> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> >> >> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> >> >> @@ -1,6 +1,8 @@
> >> >>  # Check that CFI directives can accept all of the CSR names (including
> >> >>  # aliases).  The results for this test also ensures that the DWARF
> >> >>  # register numbers for the CSRs shouldn't change.
> >> >> +# The register numbers are specified to be CSR-ID + 4096 (see psABI spec).
> >> >> +# The CFI offsets in this file are CSR-ID x 4.
> >> >>
> >> >>         .text
> >> >>         .global _start
> >> >> @@ -307,6 +309,18 @@ _start:
> >> >>         .cfi_offset vstval, 2316
> >> >>         .cfi_offset vsip, 2320
> >> >>         .cfi_offset vsatp, 2560
> >> >> +       # Smaia extension
> >> >> +       .cfi_offset miselect, 3392
> >> >> +       .cfi_offset mireg, 3396
> >> >> +       .cfi_offset mtopei, 3440
> >> >> +       .cfi_offset mtopi, 16064
> >> >> +       .cfi_offset mvien, 3104
> >> >> +       .cfi_offset mvip, 3108
> >> >> +       .cfi_offset midelegh, 3148
> >> >> +       .cfi_offset mieh, 3152
> >> >> +       .cfi_offset mvienh, 3168
> >> >> +       .cfi_offset mviph, 3172
> >> >> +       .cfi_offset miph, 3408
> >> >>         # Smstateen extension
> >> >>         .cfi_offset mstateen0, 3120
> >> >>         .cfi_offset mstateen1, 3124
> >> >> @@ -328,6 +342,13 @@ _start:
> >> >>         .cfi_offset hstateen1h, 6260
> >> >>         .cfi_offset hstateen2h, 6264
> >> >>         .cfi_offset hstateen3h, 6268
> >> >> +       # Ssaia extension
> >> >> +       .cfi_offset siselect, 1344
> >> >> +       .cfi_offset sireg, 1348
> >> >> +       .cfi_offset stopei, 1392
> >> >> +       .cfi_offset stopi, 14016
> >> >> +       .cfi_offset sieh, 1104
> >> >> +       .cfi_offset siph, 1360
> >> >>         # Sscofpmf extension
> >> >>         .cfi_offset scountovf, 13952
> >> >>         .cfi_offset mhpmevent3h, 7308
> >> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
> >> >> index bd8b10302e3..ab6ace32846 100644
> >> >> --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
> >> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
> >> >> @@ -601,6 +601,28 @@ Disassembly of section .text:
> >> >>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >> >>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> >> >> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> >> >> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> >> >> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> >> >> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> >> >> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> >> >> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> >> >> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> >> >> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> >> >> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> >> >> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> >> >> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >> >>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> >> >> @@ -641,6 +663,18 @@ Disassembly of section .text:
> >> >>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >> >>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> >> >> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> >> >> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> >> >> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> >> >> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> >> >> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> >> >> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >> >>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> >> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
> >> >> index b778453b556..b4d12541b49 100644
> >> >> --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
> >> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
> >> >> @@ -411,6 +411,39 @@
> >> >>  .*Warning: invalid CSR `vsip', needs `h' extension
> >> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> >> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> >> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >> >>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> >> >> @@ -483,6 +516,23 @@
> >> >>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >> >>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >> >>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> >> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> >> +.*Warning: read-only CSR is written `csrw stopi,a1'
> >> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >> >>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> >> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
> >> >> index 5d6333884f1..95ca52d6dc3 100644
> >> >> --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
> >> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
> >> >> @@ -601,6 +601,28 @@ Disassembly of section .text:
> >> >>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >> >>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> >> >> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> >> >> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> >> >> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> >> >> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> >> >> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> >> >> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> >> >> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> >> >> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> >> >> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> >> >> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> >> >> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >> >>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> >> >> @@ -641,6 +663,18 @@ Disassembly of section .text:
> >> >>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >> >>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> >> >> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> >> >> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> >> >> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> >> >> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> >> >> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> >> >> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >> >>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> >> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
> >> >> index 78bae817470..96079a2937b 100644
> >> >> --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
> >> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
> >> >> @@ -409,6 +409,39 @@
> >> >>  .*Warning: invalid CSR `vsip', needs `h' extension
> >> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> >> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> >> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >> >>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> >> >> @@ -481,6 +514,23 @@
> >> >>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >> >>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >> >>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> >> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> >> +.*Warning: read-only CSR is written `csrw stopi,a1'
> >> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >> >>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> >> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
> >> >> index 728e647c552..8d82c00471f 100644
> >> >> --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
> >> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
> >> >> @@ -601,6 +601,28 @@ Disassembly of section .text:
> >> >>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >> >>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> >> >> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> >> >> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> >> >> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> >> >> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> >> >> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> >> >> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> >> >> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> >> >> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> >> >> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> >> >> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> >> >> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >> >>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> >> >> @@ -641,6 +663,18 @@ Disassembly of section .text:
> >> >>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >> >>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> >> >> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> >> >> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> >> >> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> >> >> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> >> >> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> >> >> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >> >>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> >> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
> >> >> index cb026bb55e0..34d6e004f37 100644
> >> >> --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
> >> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
> >> >> @@ -271,6 +271,39 @@
> >> >>  .*Warning: invalid CSR `vsip', needs `h' extension
> >> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> >> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> >> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >> >>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> >> >> @@ -343,6 +376,23 @@
> >> >>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >> >>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >> >>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> >> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> >> +.*Warning: read-only CSR is written `csrw stopi,a1'
> >> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >> >>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> >> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> >> >> index a34b99f4632..24a277142fa 100644
> >> >> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> >> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> >> >> @@ -601,6 +601,28 @@ Disassembly of section .text:
> >> >>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >> >>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> >> >> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> >> >> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> >> >> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> >> >> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> >> >> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> >> >> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> >> >> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> >> >> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> >> >> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> >> >> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> >> >> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >> >>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> >> >> @@ -641,6 +663,18 @@ Disassembly of section .text:
> >> >>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >> >>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> >> >> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> >> >> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> >> >> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> >> >> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> >> >> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> >> >> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> >> >> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >> >>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >> >>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> >> >> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> >> >> index 4fac40fb589..7d4e097a3e8 100644
> >> >> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> >> >> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> >> >> @@ -461,6 +461,39 @@
> >> >>  .*Warning: invalid CSR `vsip', needs `h' extension
> >> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >> >>  .*Warning: invalid CSR `vsatp', needs `h' extension
> >> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >> >> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> >> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `mviph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >> >> +.*Warning: invalid CSR `miph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `miph', needs `smaia' extension
> >> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >> >>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >> >>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> >> >> @@ -533,6 +566,23 @@
> >> >>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >> >>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >> >>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> >> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >> >> +.*Warning: read-only CSR is written `csrw stopi,a1'
> >> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `sieh', needs rv32i extension
> >> >> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >> >> +.*Warning: invalid CSR `siph', needs rv32i extension
> >> >> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >> >>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >> >>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> >> >> diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
> >> >> index 128aeb83a04..bf37afa06e0 100644
> >> >> --- a/gas/testsuite/gas/riscv/csr.s
> >> >> +++ b/gas/testsuite/gas/riscv/csr.s
> >> >> @@ -337,6 +337,19 @@
> >> >>         csr vsip
> >> >>         csr vsatp
> >> >>
> >> >> +       # Smaia
> >> >> +       csr miselect
> >> >> +       csr mireg
> >> >> +       csr mtopei
> >> >> +       csr mtopi
> >> >> +       csr mvien
> >> >> +       csr mvip
> >> >> +       csr midelegh
> >> >> +       csr mieh
> >> >> +       csr mvienh
> >> >> +       csr mviph
> >> >> +       csr miph
> >> >> +
> >> >>         # Smstateen extension
> >> >>         csr mstateen0
> >> >>         csr mstateen1
> >> >> @@ -359,6 +372,14 @@
> >> >>         csr hstateen2h
> >> >>         csr hstateen3h
> >> >>
> >> >> +       # Ssaia
> >> >> +       csr siselect
> >> >> +       csr sireg
> >> >> +       csr stopei
> >> >> +       csr stopi
> >> >> +       csr sieh
> >> >> +       csr siph
> >> >> +
> >> >>         # Sscofpmf extension
> >> >>         csr scountovf
> >> >>         csr mhpmevent3h
> >> >> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
> >> >> index 88b8d7ff595..d56ab88696d 100644
> >> >> --- a/include/opcode/riscv-opc.h
> >> >> +++ b/include/opcode/riscv-opc.h
> >> >> @@ -2432,6 +2432,18 @@
> >> >>  #define CSR_UIP 0x44
> >> >>  #define CSR_SEDELEG 0x102
> >> >>  #define CSR_SIDELEG 0x103
> >> >> +/* Smaia extension */
> >> >> +#define CSR_MISELECT 0x350
> >> >> +#define CSR_MIREG    0x351
> >> >> +#define CSR_MTOPEI   0x35c
> >> >> +#define CSR_MTOPI    0xfb0
> >> >> +#define CSR_MVIEN    0x308
> >> >> +#define CSR_MVIP     0x309
> >> >> +#define CSR_MIDELEGH 0x313
> >> >> +#define CSR_MIEH     0x314
> >> >> +#define CSR_MVIENH   0x318
> >> >> +#define CSR_MVIPH    0x319
> >> >> +#define CSR_MIPH     0x354
> >> >>  /* Smstateen extension */
> >> >>  #define CSR_MSTATEEN0 0x30c
> >> >>  #define CSR_MSTATEEN1 0x30d
> >> >> @@ -2453,6 +2465,13 @@
> >> >>  #define CSR_HSTATEEN1H 0x61d
> >> >>  #define CSR_HSTATEEN2H 0x61e
> >> >>  #define CSR_HSTATEEN3H 0x61f
> >> >> +/* Ssaia extension */
> >> >> +#define CSR_SISELECT 0x150
> >> >> +#define CSR_SIREG    0x151
> >> >> +#define CSR_STOPEI   0x15c
> >> >> +#define CSR_STOPI    0xdb0
> >> >> +#define CSR_SIEH     0x114
> >> >> +#define CSR_SIPH     0x154
> >> >>  /* Sscofpmf extension */
> >> >>  #define CSR_SCOUNTOVF 0xda0
> >> >>  #define CSR_MHPMEVENT3H 0x723
> >> >> @@ -3154,6 +3173,18 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
> >> >>  DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >>  DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >>  DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +/* Smaia extension */
> >> >> +DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >>  /* Smstateen extension */
> >> >>  DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >>  DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> @@ -3175,6 +3206,13 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
> >> >>  DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >>  DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >>  DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +/* Ssstateen extension */
> >> >> +DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> +DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >>  /* Sscofpmf extension */
> >> >>  DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >>  DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> >> --
> >> >> 2.37.2
> >> >>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-08-25 19:11     ` Christoph Müllner
  2022-08-25 20:49       ` Palmer Dabbelt
@ 2022-08-26  9:53       ` Nelson Chu
  2022-11-18  0:35         ` Christoph Müllner
  1 sibling, 1 reply; 19+ messages in thread
From: Nelson Chu @ 2022-08-26  9:53 UTC (permalink / raw)
  To: Christoph Müllner
  Cc: Palmer Dabbelt, binutils, kito.cheng, Jim Wilson,
	philipp.tomsich, apatel

On Fri, Aug 26, 2022 at 3:11 AM Christoph Müllner
<christoph.muellner@vrull.eu> wrote:
>
> This patch needs a v2 anyway because I missed the Hypervisor and VS CSRs.

Yeah, reviewed in advance, except the missing Hypervisor AIA CSRs and
the spec frozen issue which mentioned by Palmer, otherwise LGTM.  Just
curious that will we add something like "Shaia" or "Zhaia" for the
Hypervisor and VS AIA CSRs?  If no, then seems like they will belong
to the single h extension directly?  Anyway, this patch just support
Ssaia and Smaia extensions, so missing the hypervisor and VS AIA CSRs
seems reasonable...  Anyway, all of us agree to wait for the AIA spec
frozen before merging, so I think you can just merge this after that
time, since the Ssaia and Smaia don't include the Hypervisor AIA in
fact...

> > >> @@ -947,7 +956,12 @@ riscv_csr_address (const char *csr_name,
> > >>                       || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
> > >>        extension = "smstateen";
> > >>        break;
> > >> -    case CSR_CLASS_SSCOFPMF_32:
> > >> +    case CSR_CLASS_SSAIA:
> > >> +    case CSR_CLASS_SSAIA_32:
> > >> +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32);
> > >> +      extension = "ssaia";
> > >> +      break;
> > >> +     case CSR_CLASS_SSCOFPMF_32:

Here should be a minor indent issue.

Thanks
Nelson

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-08-26  9:53       ` Nelson Chu
@ 2022-11-18  0:35         ` Christoph Müllner
  0 siblings, 0 replies; 19+ messages in thread
From: Christoph Müllner @ 2022-11-18  0:35 UTC (permalink / raw)
  To: Nelson Chu
  Cc: Palmer Dabbelt, binutils, kito.cheng, Jim Wilson,
	philipp.tomsich, apatel

[-- Attachment #1: Type: text/plain, Size: 1729 bytes --]

On Fri, Aug 26, 2022 at 11:53 AM Nelson Chu <nelson@rivosinc.com> wrote:

> On Fri, Aug 26, 2022 at 3:11 AM Christoph Müllner
> <christoph.muellner@vrull.eu> wrote:
> >
> > This patch needs a v2 anyway because I missed the Hypervisor and VS CSRs.
>
> Yeah, reviewed in advance, except the missing Hypervisor AIA CSRs and
> the spec frozen issue which mentioned by Palmer, otherwise LGTM.  Just
> curious that will we add something like "Shaia" or "Zhaia" for the
> Hypervisor and VS AIA CSRs?  If no, then seems like they will belong
> to the single h extension directly?  Anyway, this patch just support
> Ssaia and Smaia extensions, so missing the hypervisor and VS AIA CSRs
> seems reasonable...  Anyway, all of us agree to wait for the AIA spec
> frozen before merging, so I think you can just merge this after that
> time, since the Ssaia and Smaia don't include the Hypervisor AIA in
> fact...
>

AIA spec is now frozen for a few weeks.
Therefore I've sent a v2, that includes the hypervisor and VS CSRs.

See:
  https://sourceware.org/pipermail/binutils/2022-November/124466.html


>
> > > >> @@ -947,7 +956,12 @@ riscv_csr_address (const char *csr_name,
> > > >>                       || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
> > > >>        extension = "smstateen";
> > > >>        break;
> > > >> -    case CSR_CLASS_SSCOFPMF_32:
> > > >> +    case CSR_CLASS_SSAIA:
> > > >> +    case CSR_CLASS_SSAIA_32:
> > > >> +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32);
> > > >> +      extension = "ssaia";
> > > >> +      break;
> > > >> +     case CSR_CLASS_SSCOFPMF_32:
>
> Here should be a minor indent issue.
>

Fixed in v2 as well.


>
> Thanks
> Nelson
>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-11-18  9:34     ` Nelson Chu
@ 2022-11-22  9:51       ` Christoph Müllner
  0 siblings, 0 replies; 19+ messages in thread
From: Christoph Müllner @ 2022-11-22  9:51 UTC (permalink / raw)
  To: Nelson Chu
  Cc: binutils, Andrew Waterman, Palmer Dabbelt, Jim Wilson, Philipp Tomsich

[-- Attachment #1: Type: text/plain, Size: 2060 bytes --]

On Fri, Nov 18, 2022 at 10:34 AM Nelson Chu <nelson@rivosinc.com> wrote:

> On Fri, Nov 18, 2022 at 5:08 PM Christoph Müllner
> <christoph.muellner@vrull.eu> wrote:
> >
> >
> >
> > On Fri, Nov 18, 2022 at 9:12 AM Nelson Chu <nelson@rivosinc.com> wrote:
> >>
> >> > +DECLARE_CSR(hvien, CSR_HVIEN, CSR_CLASS_SMAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> > +DECLARE_CSR(hvictl, CSR_HVICTL, CSR_CLASS_SMAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> > +DECLARE_CSR(hviprio1, CSR_HVIPRIO1, CSR_CLASS_SMAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> > +DECLARE_CSR(hviprio2, CSR_HVIPRIO2, CSR_CLASS_SMAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> > +DECLARE_CSR(hidelegh, CSR_HIDELEGH, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> > +DECLARE_CSR(hvienh, CSR_HVIENH, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> > +DECLARE_CSR(hviph, CSR_HVIPH, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> > +DECLARE_CSR(hviprio1h, CSR_HVIPRIO1H, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >> > +DECLARE_CSR(hviprio2h, CSR_HVIPRIO2H, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >>
> >> Just curious does the spec clarify these belonged to smaia? or should
> >> these just belonged to h?
> >
> >
> > The AIA spec says:
> > "If a hart implements the Privileged Architecture’s hypervisor
> extension, then the hypervisor and
> > VS CSRs listed in Table 2.3 are also added"
> >
> > So I think the way it is modeled is correct.
>
> So if we only enable ssaia and h, then we can only use virtual
> supervisor aia CSRs, but cannot use the hypervisor aia?  If that true,
> then looks good.
>

I double-checked, and that's not the case.
The hypervisor splits S-mode into HS and VS, but this has nothing to do
with Smaia.
Therefore all hypervisor and VS CSRs should be part of Ssaia.
I will fix that in a v3.

Thanks!

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-11-18  9:08   ` Christoph Müllner
  2022-11-18  9:34     ` Nelson Chu
@ 2022-11-19  5:59     ` Tsukasa OI
  1 sibling, 0 replies; 19+ messages in thread
From: Tsukasa OI @ 2022-11-19  5:59 UTC (permalink / raw)
  To: Christoph Müllner, binutils

On 2022/11/18 18:08, Christoph Müllner wrote:
> 
> I would implement this such, that Smaia implies Ssaia.
> Opinions?
> 

I agree that (even though I proposed this resolution) and I even raised
a question in a meeting when 'Zmmul' and 'M' became a problem.
'Smstateen' and 'Ssstateen' dependency is approved by Nelson (in Nov 3,
I committed that today) and I don't find any problems here.

Thanks,
Tsukasa

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-11-18  9:08   ` Christoph Müllner
@ 2022-11-18  9:34     ` Nelson Chu
  2022-11-22  9:51       ` Christoph Müllner
  2022-11-19  5:59     ` Tsukasa OI
  1 sibling, 1 reply; 19+ messages in thread
From: Nelson Chu @ 2022-11-18  9:34 UTC (permalink / raw)
  To: Christoph Müllner
  Cc: binutils, Andrew Waterman, Palmer Dabbelt, Jim Wilson, Philipp Tomsich

On Fri, Nov 18, 2022 at 5:08 PM Christoph Müllner
<christoph.muellner@vrull.eu> wrote:
>
>
>
> On Fri, Nov 18, 2022 at 9:12 AM Nelson Chu <nelson@rivosinc.com> wrote:
>>
>> > +DECLARE_CSR(hvien, CSR_HVIEN, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> > +DECLARE_CSR(hvictl, CSR_HVICTL, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> > +DECLARE_CSR(hviprio1, CSR_HVIPRIO1, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> > +DECLARE_CSR(hviprio2, CSR_HVIPRIO2, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> > +DECLARE_CSR(hidelegh, CSR_HIDELEGH, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> > +DECLARE_CSR(hvienh, CSR_HVIENH, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> > +DECLARE_CSR(hviph, CSR_HVIPH, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> > +DECLARE_CSR(hviprio1h, CSR_HVIPRIO1H, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>> > +DECLARE_CSR(hviprio2h, CSR_HVIPRIO2H, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>>
>> Just curious does the spec clarify these belonged to smaia? or should
>> these just belonged to h?
>
>
> The AIA spec says:
> "If a hart implements the Privileged Architecture’s hypervisor extension, then the hypervisor and
> VS CSRs listed in Table 2.3 are also added"
>
> So I think the way it is modeled is correct.

So if we only enable ssaia and h, then we can only use virtual
supervisor aia CSRs, but cannot use the hypervisor aia?  If that true,
then looks good.

Thanks
Nelson

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-11-18  8:44     ` Tsukasa OI
@ 2022-11-18  9:11       ` Christoph Müllner
  0 siblings, 0 replies; 19+ messages in thread
From: Christoph Müllner @ 2022-11-18  9:11 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Binutils

[-- Attachment #1: Type: text/plain, Size: 88599 bytes --]

On Fri, Nov 18, 2022 at 9:44 AM Tsukasa OI <research_trasio@irq.a4lg.com>
wrote:

> Sorry,
>
> On my Ssstateen patch,
> <https://sourceware.org/pipermail/binutils/2022-November/124156.html>
> I did like the attached patch (Smaia → Ssaia, Ssaia → Zicsr).
>
> I forgot to include Smaia → Ssaia dependency (just like M → Zmmul).
>

Yes, Palmer mentioned this dependency as well.
Thanks!


>
> Thanks,
> Tsukasa
>
> On 2022/11/18 17:33, Christoph Müllner wrote:
> >
> >
> > On Fri, Nov 18, 2022 at 6:07 AM Tsukasa OI <research_trasio@irq.a4lg.com
> > <mailto:research_trasio@irq.a4lg.com>> wrote:
> >
> >     LGTM except it misses riscv_implicit_subsets.  I think all privileged
> >     extensions with either:
> >     *   New CSRs
> >     *   New CSR bits
> >     *   Dependency with use of CSRs
> >     will be required to add 'Zicsr' to its implication.
> >
> >     Quick Background: The privileged architecture itself depends on
> 'Zicsr'
> >     but there's no direct way to detect the privileged architecture
> itself).
> >
> >     The patch attached will make this commit complete.
> >
> >
> > Ok, thx!
> >
> >
> >
> >     Thanks,
> >     Tsukasa
> >
> >     On 2022/11/18 9:32, Christoph Muellner wrote:
> >     > From: Christoph Müllner <christoph.muellner@vrull.eu
> >     <mailto:christoph.muellner@vrull.eu>>
> >     >
> >     > This commit adds the AIA extensions (Smaia and Ssaia) CSRs.
> >     >
> >     > bfd/ChangeLog:
> >     >
> >     >       * elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
> >     >       of known standard extensions.
> >     >
> >     > gas/ChangeLog:
> >     >
> >     >       * config/tc-riscv.c (enum riscv_csr_class):
> >     >       (riscv_csr_address): Add CSR classes for Smaia/Ssaia.
> >     >       * testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
> >     >       * testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
> >     >       * testsuite/gas/riscv/csr-version-1p10.d: Likewise.
> >     >       * testsuite/gas/riscv/csr-version-1p10.l: Likewise.
> >     >       * testsuite/gas/riscv/csr-version-1p11.d: Likewise.
> >     >       * testsuite/gas/riscv/csr-version-1p11.l: Likewise.
> >     >       * testsuite/gas/riscv/csr-version-1p12.d: Likewise.
> >     >       * testsuite/gas/riscv/csr-version-1p12.l: Likewise.
> >     >       * testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
> >     >       * testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
> >     >       * testsuite/gas/riscv/csr.s: Likewise.
> >     >
> >     > include/ChangeLog:
> >     >
> >     >       * opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
> >     >       (CSR_MIREG): Likewise.
> >     >       (CSR_MTOPEI): Likewise.
> >     >       (CSR_MTOPI): Likewise.
> >     >       (CSR_MVIEN): Likewise.
> >     >       (CSR_MVIP): Likewise.
> >     >       (CSR_MIDELEGH): Likewise.
> >     >       (CSR_MIEH): Likewise.
> >     >       (CSR_MVIENH): Likewise.
> >     >       (CSR_MVIPH): Likewise.
> >     >       (CSR_MIPH): Likewise.
> >     >       (CSR_HVIEN): Likewise.
> >     >       (CSR_HVICTL): Likewise.
> >     >       (CSR_HVIPRIO1): Likewise.
> >     >       (CSR_HVIPRIO2): Likewise.
> >     >       (CSR_HIDELEGH): Likewise.
> >     >       (CSR_HVIENH): Likewise.
> >     >       (CSR_HVIPH): Likewise.
> >     >       (CSR_HVIPRIO1H): Likewise.
> >     >       (CSR_HVIPRIO2H): Likewise.
> >     >       (CSR_SISELECT): Likewise.
> >     >       (CSR_SIREG): Likewise.
> >     >       (CSR_STOPEI): Likewise.
> >     >       (CSR_STOPI): Likewise.
> >     >       (CSR_SIEH): Likewise.
> >     >       (CSR_SIPH): Likewise.
> >     >       (CSR_VSISELECT): Likewise.
> >     >       (CSR_VSIREG): Likewise.
> >     >       (CSR_VSTOPEI): Likewise.
> >     >       (CSR_VSTOPI): Likewise.
> >     >       (CSR_VSIEH): Likewise.
> >     >       (CSR_VSIPH): Likewise.
> >     >       (DECLARE_CSR): Add CSRs for Smaia and Ssaia.
> >     >
> >     > Changes for v2:
> >     > - Add hypervisor and VS CSRs
> >     > - Fix whitespace issue
> >     >
> >     > Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu
> >     <mailto:christoph.muellner@vrull.eu>>
> >     > ---
> >     >  bfd/elfxx-riscv.c                           |   2 +
> >     >  gas/config/tc-riscv.c                       |  28 +++++
> >     >  gas/testsuite/gas/riscv/csr-dw-regnums.d    |  32 +++++
> >     >  gas/testsuite/gas/riscv/csr-dw-regnums.s    |  36 ++++++
> >     >  gas/testsuite/gas/riscv/csr-version-1p10.d  |  64 ++++++++++
> >     >  gas/testsuite/gas/riscv/csr-version-1p10.l  | 125
> >     ++++++++++++++++++++
> >     >  gas/testsuite/gas/riscv/csr-version-1p11.d  |  64 ++++++++++
> >     >  gas/testsuite/gas/riscv/csr-version-1p11.l  | 125
> >     ++++++++++++++++++++
> >     >  gas/testsuite/gas/riscv/csr-version-1p12.d  |  64 ++++++++++
> >     >  gas/testsuite/gas/riscv/csr-version-1p12.l  | 125
> >     ++++++++++++++++++++
> >     >  gas/testsuite/gas/riscv/csr-version-1p9p1.d |  64 ++++++++++
> >     >  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 125
> >     ++++++++++++++++++++
> >     >  gas/testsuite/gas/riscv/csr.s               |  36 ++++++
> >     >  include/opcode/riscv-opc.h                  |  68 +++++++++++
> >     >  14 files changed, 958 insertions(+)
> >     >
> >     > diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> >     > index cfec9a6996c..dd75817b1bd 100644
> >     > --- a/bfd/elfxx-riscv.c
> >     > +++ b/bfd/elfxx-riscv.c
> >     > @@ -1216,8 +1216,10 @@ static struct riscv_supported_ext
> >     riscv_supported_std_z_ext[] =
> >     >
> >     >  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
> >     >  {
> >     > +  {"smaia",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >     >    {"smepmp",         ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >     >    {"smstateen",              ISA_SPEC_CLASS_DRAFT,           1,
> >     0, 0 },
> >     > +  {"ssaia",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >     >    {"sscofpmf",               ISA_SPEC_CLASS_DRAFT,           1,
> >     0, 0 },
> >     >    {"sstc",           ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >     >    {"svinval",                ISA_SPEC_CLASS_DRAFT,           1,
> >     0, 0 },
> >     > diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> >     > index 2dc92ecd3c3..78aa15400f8 100644
> >     > --- a/gas/config/tc-riscv.c
> >     > +++ b/gas/config/tc-riscv.c
> >     > @@ -68,10 +68,18 @@ enum riscv_csr_class
> >     >    CSR_CLASS_DEBUG,   /* debug CSR */
> >     >    CSR_CLASS_H,               /* hypervisor */
> >     >    CSR_CLASS_H_32,    /* hypervisor, rv32 only */
> >     > +  CSR_CLASS_SMAIA,           /* Smaia */
> >     > +  CSR_CLASS_SMAIA_AND_H,     /* Smaia with H */
> >     > +  CSR_CLASS_SMAIA_32,                /* Smaia, rv32 only */
> >     > +  CSR_CLASS_SMAIA_AND_H_32,  /* Smaia with H, rv32 only */
> >     >    CSR_CLASS_SMSTATEEN,               /* Smstateen only */
> >     >    CSR_CLASS_SMSTATEEN_AND_H, /* Smstateen only (with H) */
> >     >    CSR_CLASS_SMSTATEEN_32,    /* Smstateen RV32 only */
> >     >    CSR_CLASS_SMSTATEEN_AND_H_32,      /* Smstateen RV32 only (with
> >     H) */
> >     > +  CSR_CLASS_SSAIA,           /* Ssaia */
> >     > +  CSR_CLASS_SSAIA_AND_H,     /* Ssaia with H */
> >     > +  CSR_CLASS_SSAIA_32,                /* Ssaia, rv32 only */
> >     > +  CSR_CLASS_SSAIA_AND_H_32,  /* Ssaia with H, rv32 only */
> >     >    CSR_CLASS_SSCOFPMF,                /* Sscofpmf only */
> >     >    CSR_CLASS_SSCOFPMF_32,     /* Sscofpmf RV32 only */
> >     >    CSR_CLASS_SSTC,            /* Sstc only */
> >     > @@ -1028,6 +1036,16 @@ riscv_csr_address (const char *csr_name,
> >     >      case CSR_CLASS_V:
> >     >        extension = "zve32x";
> >     >        break;
> >     > +    case CSR_CLASS_SMAIA:
> >     > +    case CSR_CLASS_SMAIA_AND_H:
> >     > +    case CSR_CLASS_SMAIA_32:
> >     > +    case CSR_CLASS_SMAIA_AND_H_32:
> >     > +      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32
> >     > +                   || csr_class == CSR_CLASS_SMAIA_AND_H_32);
> >     > +      is_h_required = (csr_class == CSR_CLASS_SMAIA_AND_H
> >     > +                    || csr_class == CSR_CLASS_SMAIA_AND_H_32);
> >     > +      extension = "smaia";
> >     > +      break;
> >     >      case CSR_CLASS_SMSTATEEN:
> >     >      case CSR_CLASS_SMSTATEEN_AND_H:
> >     >      case CSR_CLASS_SMSTATEEN_32:
> >     > @@ -1038,6 +1056,16 @@ riscv_csr_address (const char *csr_name,
> >     >                     || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
> >     >        extension = "smstateen";
> >     >        break;
> >     > +    case CSR_CLASS_SSAIA:
> >     > +    case CSR_CLASS_SSAIA_AND_H:
> >     > +    case CSR_CLASS_SSAIA_32:
> >     > +    case CSR_CLASS_SSAIA_AND_H_32:
> >     > +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32
> >     > +                   || csr_class == CSR_CLASS_SSAIA_AND_H_32);
> >     > +      is_h_required = (csr_class == CSR_CLASS_SSAIA_AND_H
> >     > +                    || csr_class == CSR_CLASS_SSAIA_AND_H_32);
> >     > +      extension = "ssaia";
> >     > +      break;
> >     >      case CSR_CLASS_SSCOFPMF_32:
> >     >        is_rv32_only = true;
> >     >        /* Fall through.  */
> >     > diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> >     b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> >     > index b4b3806a085..dd238cf54a9 100644
> >     > --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> >     > +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> >     > @@ -313,6 +313,26 @@ Contents of the .* section:
> >     >    DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
> >     >    DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
> >     >    DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
> >     > +  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
> >     > +  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
> >     > +  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
> >     > +  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
> >     > +  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
> >     > +  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
> >     > +  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
> >     > +  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
> >     > +  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
> >     > +  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
> >     > +  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
> >     > +  DW_CFA_offset_extended_sf: r5640 \(hvien\) at cfa\+6176
> >     > +  DW_CFA_offset_extended_sf: r5641 \(hvictl\) at cfa\+6180
> >     > +  DW_CFA_offset_extended_sf: r5702 \(hviprio1\) at cfa\+6424
> >     > +  DW_CFA_offset_extended_sf: r5703 \(hviprio2\) at cfa\+6428
> >     > +  DW_CFA_offset_extended_sf: r5651 \(hidelegh\) at cfa\+6220
> >     > +  DW_CFA_offset_extended_sf: r5656 \(hvienh\) at cfa\+6240
> >     > +  DW_CFA_offset_extended_sf: r5717 \(hviph\) at cfa\+6484
> >     > +  DW_CFA_offset_extended_sf: r5718 \(hviprio1h\) at cfa\+6488
> >     > +  DW_CFA_offset_extended_sf: r5719 \(hviprio2h\) at cfa\+6492
> >     >    DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
> >     >    DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
> >     >    DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
> >     > @@ -333,6 +353,18 @@ Contents of the .* section:
> >     >    DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
> >     >    DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
> >     >    DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
> >     > +  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
> >     > +  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
> >     > +  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
> >     > +  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
> >     > +  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
> >     > +  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
> >     > +  DW_CFA_offset_extended_sf: r4688 \(vsiselect\) at cfa\+2368
> >     > +  DW_CFA_offset_extended_sf: r4689 \(vsireg\) at cfa\+2372
> >     > +  DW_CFA_offset_extended_sf: r4700 \(vstopei\) at cfa\+2416
> >     > +  DW_CFA_offset_extended_sf: r7856 \(vstopi\) at cfa\+15040
> >     > +  DW_CFA_offset_extended_sf: r4628 \(vsieh\) at cfa\+2128
> >     > +  DW_CFA_offset_extended_sf: r4692 \(vsiph\) at cfa\+2384
> >     >    DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
> >     >    DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
> >     >    DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
> >     > diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> >     b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> >     > index 6cfa415ebc2..38b1e53dd6c 100644
> >     > --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> >     > +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> >     > @@ -1,6 +1,8 @@
> >     >  # Check that CFI directives can accept all of the CSR names
> >     (including
> >     >  # aliases).  The results for this test also ensures that the DWARF
> >     >  # register numbers for the CSRs shouldn't change.
> >     > +# The register numbers are specified to be CSR-ID + 4096 (see
> >     psABI spec).
> >     > +# The CFI offsets in this file are CSR-ID x 4.
> >     >
> >     >       .text
> >     >       .global _start
> >     > @@ -307,6 +309,27 @@ _start:
> >     >       .cfi_offset vstval, 2316
> >     >       .cfi_offset vsip, 2320
> >     >       .cfi_offset vsatp, 2560
> >     > +     # Smaia extension
> >     > +     .cfi_offset miselect, 3392
> >     > +     .cfi_offset mireg, 3396
> >     > +     .cfi_offset mtopei, 3440
> >     > +     .cfi_offset mtopi, 16064
> >     > +     .cfi_offset mvien, 3104
> >     > +     .cfi_offset mvip, 3108
> >     > +     .cfi_offset midelegh, 3148
> >     > +     .cfi_offset mieh, 3152
> >     > +     .cfi_offset mvienh, 3168
> >     > +     .cfi_offset mviph, 3172
> >     > +     .cfi_offset miph, 3408
> >     > +     .cfi_offset hvien, 6176
> >     > +     .cfi_offset hvictl, 6180
> >     > +     .cfi_offset hviprio1, 6424
> >     > +     .cfi_offset hviprio2, 6428
> >     > +     .cfi_offset hidelegh, 6220
> >     > +     .cfi_offset hvienh, 6240
> >     > +     .cfi_offset hviph, 6484
> >     > +     .cfi_offset hviprio1h, 6488
> >     > +     .cfi_offset hviprio2h, 6492
> >     >       # Smstateen extension
> >     >       .cfi_offset mstateen0, 3120
> >     >       .cfi_offset mstateen1, 3124
> >     > @@ -328,6 +351,19 @@ _start:
> >     >       .cfi_offset hstateen1h, 6260
> >     >       .cfi_offset hstateen2h, 6264
> >     >       .cfi_offset hstateen3h, 6268
> >     > +     # Ssaia extension
> >     > +     .cfi_offset siselect, 1344
> >     > +     .cfi_offset sireg, 1348
> >     > +     .cfi_offset stopei, 1392
> >     > +     .cfi_offset stopi, 14016
> >     > +     .cfi_offset sieh, 1104
> >     > +     .cfi_offset siph, 1360
> >     > +     .cfi_offset vsiselect, 2368
> >     > +     .cfi_offset vsireg, 2372
> >     > +     .cfi_offset vstopei, 2416
> >     > +     .cfi_offset vstopi, 15040
> >     > +     .cfi_offset vsieh, 2128
> >     > +     .cfi_offset vsiph, 2384
> >     >       # Sscofpmf extension
> >     >       .cfi_offset scountovf, 13952
> >     >       .cfi_offset mhpmevent3h, 7308
> >     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d
> >     b/gas/testsuite/gas/riscv/csr-version-1p10.d
> >     > index bd8b10302e3..879c7e8a97d 100644
> >     > --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
> >     > +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
> >     > @@ -601,6 +601,46 @@ Disassembly of section .text:
> >     >  [    ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >     >  [    ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >     >  [    ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> >     > +[    ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> >     > +[    ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> >     > +[    ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> >     > +[    ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> >     > +[    ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> >     > +[    ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> >     > +[    ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> >     > +[    ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> >     > +[    ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> >     > +[    ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> >     > +[    ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> >     > +[    ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> >     > +[    ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> >     > +[    ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> >     > +[    ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> >     > +[    ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> >     > +[    ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> >     > +[    ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> >     > +[    ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> >     > +[    ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> >     > +[    ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> >     > +[    ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> >     > +[    ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> >     > +[    ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> >     > +[    ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[
>  ]+a0,hviprio1h
> >     > +[    ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[
>  ]+hviprio1h,a1
> >     > +[    ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[
>  ]+a0,hviprio2h
> >     > +[    ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[
>  ]+hviprio2h,a1
> >     >  [    ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[
>  ]+a0,mstateen0
> >     >  [    ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[
>  ]+mstateen0,a1
> >     >  [    ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[
>  ]+a0,mstateen1
> >     > @@ -641,6 +681,30 @@ Disassembly of section .text:
> >     >  [    ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[
>  ]+hstateen2h,a1
> >     >  [    ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[
>  ]+a0,hstateen3h
> >     >  [    ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[
>  ]+hstateen3h,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> >     > +[    ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> >     > +[    ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> >     > +[    ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> >     > +[    ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> >     > +[    ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> >     > +[    ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> >     > +[    ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> >     > +[    ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[
>  ]+a0,vsiselect
> >     > +[    ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[
>  ]+vsiselect,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> >     > +[    ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> >     > +[    ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> >     > +[    ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> >     > +[    ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> >     > +[    ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> >     > +[    ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> >     > +[    ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
> >     >  [    ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[
>  ]+a0,scountovf
> >     >  [    ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[
>  ]+scountovf,a1
> >     >  [    ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[
>  ]+a0,mhpmevent3h
> >     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l
> >     b/gas/testsuite/gas/riscv/csr-version-1p10.l
> >     > index 999e9af1520..44499fa4dbe 100644
> >     > --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
> >     > +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
> >     > @@ -411,6 +411,85 @@
> >     >  .*Warning: invalid CSR `vsip', needs `h' extension
> >     >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >     >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >     > +.*Warning: read-only CSR is written `csrw mtopi,a1'
> >     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `miph', needs rv32i extension
> >     > +.*Warning: invalid CSR `miph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `miph', needs rv32i extension
> >     > +.*Warning: invalid CSR `miph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvien', needs `h' extension
> >     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvien', needs `h' extension
> >     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `h' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `h' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hvienh', needs `h' extension
> >     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hvienh', needs `h' extension
> >     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviph', needs `h' extension
> >     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviph', needs `h' extension
> >     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >     >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> >     > @@ -483,6 +562,52 @@
> >     >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >     >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >     >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> >     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >     > +.*Warning: read-only CSR is written `csrw stopi,a1'
> >     > +.*Warning: invalid CSR `sieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `sieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `siph', needs rv32i extension
> >     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `siph', needs rv32i extension
> >     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `h' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `h' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> >     > +.*Warning: read-only CSR is written `csrw vstopi,a1'
> >     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsieh', needs `h' extension
> >     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsieh', needs `h' extension
> >     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsiph', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsiph', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >     >  .*Warning: read-only CSR is written `csrw scountovf,a1'
> >     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d
> >     b/gas/testsuite/gas/riscv/csr-version-1p11.d
> >     > index 5d6333884f1..70397194465 100644
> >     > --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
> >     > +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
> >     > @@ -601,6 +601,46 @@ Disassembly of section .text:
> >     >  [    ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >     >  [    ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >     >  [    ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> >     > +[    ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> >     > +[    ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> >     > +[    ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> >     > +[    ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> >     > +[    ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> >     > +[    ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> >     > +[    ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> >     > +[    ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> >     > +[    ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> >     > +[    ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> >     > +[    ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> >     > +[    ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> >     > +[    ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> >     > +[    ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> >     > +[    ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> >     > +[    ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> >     > +[    ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> >     > +[    ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> >     > +[    ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> >     > +[    ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> >     > +[    ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> >     > +[    ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> >     > +[    ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> >     > +[    ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> >     > +[    ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[
>  ]+a0,hviprio1h
> >     > +[    ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[
>  ]+hviprio1h,a1
> >     > +[    ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[
>  ]+a0,hviprio2h
> >     > +[    ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[
>  ]+hviprio2h,a1
> >     >  [    ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[
>  ]+a0,mstateen0
> >     >  [    ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[
>  ]+mstateen0,a1
> >     >  [    ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[
>  ]+a0,mstateen1
> >     > @@ -641,6 +681,30 @@ Disassembly of section .text:
> >     >  [    ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[
>  ]+hstateen2h,a1
> >     >  [    ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[
>  ]+a0,hstateen3h
> >     >  [    ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[
>  ]+hstateen3h,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> >     > +[    ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> >     > +[    ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> >     > +[    ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> >     > +[    ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> >     > +[    ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> >     > +[    ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> >     > +[    ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> >     > +[    ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[
>  ]+a0,vsiselect
> >     > +[    ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[
>  ]+vsiselect,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> >     > +[    ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> >     > +[    ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> >     > +[    ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> >     > +[    ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> >     > +[    ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> >     > +[    ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> >     > +[    ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
> >     >  [    ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[
>  ]+a0,scountovf
> >     >  [    ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[
>  ]+scountovf,a1
> >     >  [    ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[
>  ]+a0,mhpmevent3h
> >     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l
> >     b/gas/testsuite/gas/riscv/csr-version-1p11.l
> >     > index a099e4ecc93..09a106806d2 100644
> >     > --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
> >     > +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
> >     > @@ -409,6 +409,85 @@
> >     >  .*Warning: invalid CSR `vsip', needs `h' extension
> >     >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >     >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >     > +.*Warning: read-only CSR is written `csrw mtopi,a1'
> >     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `miph', needs rv32i extension
> >     > +.*Warning: invalid CSR `miph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `miph', needs rv32i extension
> >     > +.*Warning: invalid CSR `miph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvien', needs `h' extension
> >     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvien', needs `h' extension
> >     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `h' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `h' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hvienh', needs `h' extension
> >     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hvienh', needs `h' extension
> >     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviph', needs `h' extension
> >     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviph', needs `h' extension
> >     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >     >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> >     > @@ -481,6 +560,52 @@
> >     >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >     >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >     >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> >     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >     > +.*Warning: read-only CSR is written `csrw stopi,a1'
> >     > +.*Warning: invalid CSR `sieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `sieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `siph', needs rv32i extension
> >     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `siph', needs rv32i extension
> >     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `h' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `h' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> >     > +.*Warning: read-only CSR is written `csrw vstopi,a1'
> >     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsieh', needs `h' extension
> >     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsieh', needs `h' extension
> >     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsiph', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsiph', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >     >  .*Warning: read-only CSR is written `csrw scountovf,a1'
> >     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d
> >     b/gas/testsuite/gas/riscv/csr-version-1p12.d
> >     > index 728e647c552..142f60c216c 100644
> >     > --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
> >     > +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
> >     > @@ -601,6 +601,46 @@ Disassembly of section .text:
> >     >  [    ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >     >  [    ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >     >  [    ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> >     > +[    ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> >     > +[    ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> >     > +[    ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> >     > +[    ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> >     > +[    ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> >     > +[    ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> >     > +[    ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> >     > +[    ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> >     > +[    ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> >     > +[    ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> >     > +[    ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> >     > +[    ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> >     > +[    ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> >     > +[    ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> >     > +[    ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> >     > +[    ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> >     > +[    ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> >     > +[    ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> >     > +[    ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> >     > +[    ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> >     > +[    ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> >     > +[    ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> >     > +[    ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> >     > +[    ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> >     > +[    ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[
>  ]+a0,hviprio1h
> >     > +[    ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[
>  ]+hviprio1h,a1
> >     > +[    ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[
>  ]+a0,hviprio2h
> >     > +[    ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[
>  ]+hviprio2h,a1
> >     >  [    ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[
>  ]+a0,mstateen0
> >     >  [    ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[
>  ]+mstateen0,a1
> >     >  [    ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[
>  ]+a0,mstateen1
> >     > @@ -641,6 +681,30 @@ Disassembly of section .text:
> >     >  [    ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[
>  ]+hstateen2h,a1
> >     >  [    ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[
>  ]+a0,hstateen3h
> >     >  [    ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[
>  ]+hstateen3h,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> >     > +[    ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> >     > +[    ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> >     > +[    ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> >     > +[    ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> >     > +[    ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> >     > +[    ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> >     > +[    ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> >     > +[    ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[
>  ]+a0,vsiselect
> >     > +[    ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[
>  ]+vsiselect,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> >     > +[    ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> >     > +[    ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> >     > +[    ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> >     > +[    ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> >     > +[    ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> >     > +[    ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> >     > +[    ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
> >     >  [    ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[
>  ]+a0,scountovf
> >     >  [    ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[
>  ]+scountovf,a1
> >     >  [    ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[
>  ]+a0,mhpmevent3h
> >     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l
> >     b/gas/testsuite/gas/riscv/csr-version-1p12.l
> >     > index cf8f2e25634..7b138244ee1 100644
> >     > --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
> >     > +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
> >     > @@ -271,6 +271,85 @@
> >     >  .*Warning: invalid CSR `vsip', needs `h' extension
> >     >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >     >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >     > +.*Warning: read-only CSR is written `csrw mtopi,a1'
> >     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `miph', needs rv32i extension
> >     > +.*Warning: invalid CSR `miph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `miph', needs rv32i extension
> >     > +.*Warning: invalid CSR `miph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvien', needs `h' extension
> >     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvien', needs `h' extension
> >     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `h' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `h' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hvienh', needs `h' extension
> >     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hvienh', needs `h' extension
> >     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviph', needs `h' extension
> >     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviph', needs `h' extension
> >     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >     >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> >     > @@ -343,6 +422,52 @@
> >     >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >     >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >     >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> >     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >     > +.*Warning: read-only CSR is written `csrw stopi,a1'
> >     > +.*Warning: invalid CSR `sieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `sieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `siph', needs rv32i extension
> >     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `siph', needs rv32i extension
> >     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `h' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `h' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> >     > +.*Warning: read-only CSR is written `csrw vstopi,a1'
> >     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsieh', needs `h' extension
> >     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsieh', needs `h' extension
> >     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsiph', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsiph', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >     >  .*Warning: read-only CSR is written `csrw scountovf,a1'
> >     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> >     b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> >     > index a34b99f4632..fa843727e80 100644
> >     > --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> >     > +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> >     > @@ -601,6 +601,46 @@ Disassembly of section .text:
> >     >  [    ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >     >  [    ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >     >  [    ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> >     > +[    ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> >     > +[    ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> >     > +[    ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> >     > +[    ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> >     > +[    ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> >     > +[    ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> >     > +[    ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> >     > +[    ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> >     > +[    ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> >     > +[    ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> >     > +[    ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> >     > +[    ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> >     > +[    ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> >     > +[    ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> >     > +[    ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> >     > +[    ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> >     > +[    ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> >     > +[    ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> >     > +[    ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> >     > +[    ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> >     > +[    ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> >     > +[    ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> >     > +[    ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> >     > +[    ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> >     > +[    ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[
>  ]+a0,hviprio1h
> >     > +[    ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[
>  ]+hviprio1h,a1
> >     > +[    ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[
>  ]+a0,hviprio2h
> >     > +[    ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[
>  ]+hviprio2h,a1
> >     >  [    ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[
>  ]+a0,mstateen0
> >     >  [    ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[
>  ]+mstateen0,a1
> >     >  [    ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[
>  ]+a0,mstateen1
> >     > @@ -641,6 +681,30 @@ Disassembly of section .text:
> >     >  [    ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[
>  ]+hstateen2h,a1
> >     >  [    ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[
>  ]+a0,hstateen3h
> >     >  [    ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[
>  ]+hstateen3h,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> >     > +[    ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> >     > +[    ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> >     > +[    ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> >     > +[    ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> >     > +[    ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> >     > +[    ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> >     > +[    ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> >     > +[    ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[
>  ]+a0,vsiselect
> >     > +[    ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[
>  ]+vsiselect,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> >     > +[    ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> >     > +[    ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> >     > +[    ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> >     > +[    ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> >     > +[    ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> >     > +[    ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> >     > +[    ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> >     > +[    ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
> >     >  [    ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[
>  ]+a0,scountovf
> >     >  [    ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[
>  ]+scountovf,a1
> >     >  [    ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[
>  ]+a0,mhpmevent3h
> >     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> >     b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> >     > index 5f298c1dda9..e63719ec066 100644
> >     > --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> >     > +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> >     > @@ -461,6 +461,85 @@
> >     >  .*Warning: invalid CSR `vsip', needs `h' extension
> >     >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >     >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> >     > +.*Warning: read-only CSR is written `csrw mtopi,a1'
> >     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> >     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `mviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `miph', needs rv32i extension
> >     > +.*Warning: invalid CSR `miph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `miph', needs rv32i extension
> >     > +.*Warning: invalid CSR `miph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvien', needs `h' extension
> >     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvien', needs `h' extension
> >     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `h' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `h' extension
> >     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> >     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hvienh', needs `h' extension
> >     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> >     > +.*Warning: invalid CSR `hvienh', needs `h' extension
> >     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviph', needs `h' extension
> >     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviph', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviph', needs `h' extension
> >     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> >     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >     >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> >     > @@ -533,6 +612,52 @@
> >     >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >     >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >     >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> >     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> >     > +.*Warning: read-only CSR is written `csrw stopi,a1'
> >     > +.*Warning: invalid CSR `sieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `sieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `siph', needs rv32i extension
> >     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `siph', needs rv32i extension
> >     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `h' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `h' extension
> >     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `h' extension
> >     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> >     > +.*Warning: read-only CSR is written `csrw vstopi,a1'
> >     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsieh', needs `h' extension
> >     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsieh', needs `h' extension
> >     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsiph', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> >     > +.*Warning: invalid CSR `vsiph', needs `h' extension
> >     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >     >  .*Warning: read-only CSR is written `csrw scountovf,a1'
> >     > diff --git a/gas/testsuite/gas/riscv/csr.s
> >     b/gas/testsuite/gas/riscv/csr.s
> >     > index 128aeb83a04..21939b20a6d 100644
> >     > --- a/gas/testsuite/gas/riscv/csr.s
> >     > +++ b/gas/testsuite/gas/riscv/csr.s
> >     > @@ -337,6 +337,28 @@
> >     >       csr vsip
> >     >       csr vsatp
> >     >
> >     > +     # Smaia
> >     > +     csr miselect
> >     > +     csr mireg
> >     > +     csr mtopei
> >     > +     csr mtopi
> >     > +     csr mvien
> >     > +     csr mvip
> >     > +     csr midelegh
> >     > +     csr mieh
> >     > +     csr mvienh
> >     > +     csr mviph
> >     > +     csr miph
> >     > +     csr hvien
> >     > +     csr hvictl
> >     > +     csr hviprio1
> >     > +     csr hviprio2
> >     > +     csr hidelegh
> >     > +     csr hvienh
> >     > +     csr hviph
> >     > +     csr hviprio1h
> >     > +     csr hviprio2h
> >     > +
> >     >       # Smstateen extension
> >     >       csr mstateen0
> >     >       csr mstateen1
> >     > @@ -359,6 +381,20 @@
> >     >       csr hstateen2h
> >     >       csr hstateen3h
> >     >
> >     > +     # Ssaia
> >     > +     csr siselect
> >     > +     csr sireg
> >     > +     csr stopei
> >     > +     csr stopi
> >     > +     csr sieh
> >     > +     csr siph
> >     > +     csr vsiselect
> >     > +     csr vsireg
> >     > +     csr vstopei
> >     > +     csr vstopi
> >     > +     csr vsieh
> >     > +     csr vsiph
> >     > +
> >     >       # Sscofpmf extension
> >     >       csr scountovf
> >     >       csr mhpmevent3h
> >     > diff --git a/include/opcode/riscv-opc.h
> b/include/opcode/riscv-opc.h
> >     > index f36b06dcd6b..8beed0b1b42 100644
> >     > --- a/include/opcode/riscv-opc.h
> >     > +++ b/include/opcode/riscv-opc.h
> >     > @@ -2661,6 +2661,27 @@
> >     >  #define CSR_UIP 0x44
> >     >  #define CSR_SEDELEG 0x102
> >     >  #define CSR_SIDELEG 0x103
> >     > +/* Smaia extension */
> >     > +#define CSR_MISELECT 0x350
> >     > +#define CSR_MIREG    0x351
> >     > +#define CSR_MTOPEI   0x35c
> >     > +#define CSR_MTOPI    0xfb0
> >     > +#define CSR_MVIEN    0x308
> >     > +#define CSR_MVIP     0x309
> >     > +#define CSR_MIDELEGH 0x313
> >     > +#define CSR_MIEH     0x314
> >     > +#define CSR_MVIENH   0x318
> >     > +#define CSR_MVIPH    0x319
> >     > +#define CSR_MIPH     0x354
> >     > +#define CSR_HVIEN     0x608
> >     > +#define CSR_HVICTL    0x609
> >     > +#define CSR_HVIPRIO1  0x646
> >     > +#define CSR_HVIPRIO2  0x647
> >     > +#define CSR_HIDELEGH  0x613
> >     > +#define CSR_HVIENH    0x618
> >     > +#define CSR_HVIPH     0x655
> >     > +#define CSR_HVIPRIO1H 0x656
> >     > +#define CSR_HVIPRIO2H 0x657
> >     >  /* Smstateen extension */
> >     >  #define CSR_MSTATEEN0 0x30c
> >     >  #define CSR_MSTATEEN1 0x30d
> >     > @@ -2682,6 +2703,19 @@
> >     >  #define CSR_HSTATEEN1H 0x61d
> >     >  #define CSR_HSTATEEN2H 0x61e
> >     >  #define CSR_HSTATEEN3H 0x61f
> >     > +/* Ssaia extension */
> >     > +#define CSR_SISELECT 0x150
> >     > +#define CSR_SIREG    0x151
> >     > +#define CSR_STOPEI   0x15c
> >     > +#define CSR_STOPI    0xdb0
> >     > +#define CSR_SIEH     0x114
> >     > +#define CSR_SIPH     0x154
> >     > +#define CSR_VSISELECT 0x250
> >     > +#define CSR_VSIREG    0x251
> >     > +#define CSR_VSTOPEI   0x25c
> >     > +#define CSR_VSTOPI    0xeb0
> >     > +#define CSR_VSIEH     0x214
> >     > +#define CSR_VSIPH     0x254
> >     >  /* Sscofpmf extension */
> >     >  #define CSR_SCOUNTOVF 0xda0
> >     >  #define CSR_MHPMEVENT3H 0x723
> >     > @@ -3504,6 +3538,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE,
> >     CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
> >     >  DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     >  DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE,
> >     PRIV_SPEC_CLASS_NONE)
> >     >  DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE,
> >     PRIV_SPEC_CLASS_NONE)
> >     > +/* Smaia extension */
> >     > +DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(hvien, CSR_HVIEN, CSR_CLASS_SMAIA_AND_H,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(hvictl, CSR_HVICTL, CSR_CLASS_SMAIA_AND_H,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(hviprio1, CSR_HVIPRIO1, CSR_CLASS_SMAIA_AND_H,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(hviprio2, CSR_HVIPRIO2, CSR_CLASS_SMAIA_AND_H,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(hidelegh, CSR_HIDELEGH, CSR_CLASS_SMAIA_AND_H_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(hvienh, CSR_HVIENH, CSR_CLASS_SMAIA_AND_H_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(hviph, CSR_HVIPH, CSR_CLASS_SMAIA_AND_H_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(hviprio1h, CSR_HVIPRIO1H, CSR_CLASS_SMAIA_AND_H_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(hviprio2h, CSR_HVIPRIO2H, CSR_CLASS_SMAIA_AND_H_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     >  /* Smstateen extension */
> >     >  DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     >  DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > @@ -3525,6 +3580,19 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H,
> >     CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
> >     >  DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H,
> >     CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE,
> >     PRIV_SPEC_CLASS_NONE)
> >     >  DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H,
> >     CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE,
> >     PRIV_SPEC_CLASS_NONE)
> >     >  DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H,
> >     CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE,
> >     PRIV_SPEC_CLASS_NONE)
> >     > +/* Ssaia extension */
> >     > +DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(vsiselect, CSR_VSISELECT, CSR_CLASS_SSAIA_AND_H,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(vsireg, CSR_VSIREG, CSR_CLASS_SSAIA_AND_H,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(vstopei, CSR_VSTOPEI, CSR_CLASS_SSAIA_AND_H,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(vstopi, CSR_VSTOPI, CSR_CLASS_SSAIA_AND_H,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(vsieh, CSR_VSIEH, CSR_CLASS_SSAIA_AND_H_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     > +DECLARE_CSR(vsiph, CSR_VSIPH, CSR_CLASS_SSAIA_AND_H_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     >  /* Sscofpmf extension */
> >     >  DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >     >  DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32,
> >     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-11-18  8:12 ` Nelson Chu
@ 2022-11-18  9:08   ` Christoph Müllner
  2022-11-18  9:34     ` Nelson Chu
  2022-11-19  5:59     ` Tsukasa OI
  0 siblings, 2 replies; 19+ messages in thread
From: Christoph Müllner @ 2022-11-18  9:08 UTC (permalink / raw)
  To: Nelson Chu
  Cc: binutils, Andrew Waterman, Palmer Dabbelt, Jim Wilson, Philipp Tomsich

[-- Attachment #1: Type: text/plain, Size: 81211 bytes --]

On Fri, Nov 18, 2022 at 9:12 AM Nelson Chu <nelson@rivosinc.com> wrote:

> On Fri, Nov 18, 2022 at 8:32 AM Christoph Muellner
> <christoph.muellner@vrull.eu> wrote:
> >
> > From: Christoph Müllner <christoph.muellner@vrull.eu>
> >
> > This commit adds the AIA extensions (Smaia and Ssaia) CSRs.
> >
> > bfd/ChangeLog:
> >
> >         * elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
> >         of known standard extensions.
> >
> > gas/ChangeLog:
> >
> >         * config/tc-riscv.c (enum riscv_csr_class):
> >         (riscv_csr_address): Add CSR classes for Smaia/Ssaia.
> >         * testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
> >         * testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
> >         * testsuite/gas/riscv/csr-version-1p10.d: Likewise.
> >         * testsuite/gas/riscv/csr-version-1p10.l: Likewise.
> >         * testsuite/gas/riscv/csr-version-1p11.d: Likewise.
> >         * testsuite/gas/riscv/csr-version-1p11.l: Likewise.
> >         * testsuite/gas/riscv/csr-version-1p12.d: Likewise.
> >         * testsuite/gas/riscv/csr-version-1p12.l: Likewise.
> >         * testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
> >         * testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
> >         * testsuite/gas/riscv/csr.s: Likewise.
> >
> > include/ChangeLog:
> >
> >         * opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
> >         (CSR_MIREG): Likewise.
> >         (CSR_MTOPEI): Likewise.
> >         (CSR_MTOPI): Likewise.
> >         (CSR_MVIEN): Likewise.
> >         (CSR_MVIP): Likewise.
> >         (CSR_MIDELEGH): Likewise.
> >         (CSR_MIEH): Likewise.
> >         (CSR_MVIENH): Likewise.
> >         (CSR_MVIPH): Likewise.
> >         (CSR_MIPH): Likewise.
> >         (CSR_HVIEN): Likewise.
> >         (CSR_HVICTL): Likewise.
> >         (CSR_HVIPRIO1): Likewise.
> >         (CSR_HVIPRIO2): Likewise.
> >         (CSR_HIDELEGH): Likewise.
> >         (CSR_HVIENH): Likewise.
> >         (CSR_HVIPH): Likewise.
> >         (CSR_HVIPRIO1H): Likewise.
> >         (CSR_HVIPRIO2H): Likewise.
> >         (CSR_SISELECT): Likewise.
> >         (CSR_SIREG): Likewise.
> >         (CSR_STOPEI): Likewise.
> >         (CSR_STOPI): Likewise.
> >         (CSR_SIEH): Likewise.
> >         (CSR_SIPH): Likewise.
> >         (CSR_VSISELECT): Likewise.
> >         (CSR_VSIREG): Likewise.
> >         (CSR_VSTOPEI): Likewise.
> >         (CSR_VSTOPI): Likewise.
> >         (CSR_VSIEH): Likewise.
> >         (CSR_VSIPH): Likewise.
> >         (DECLARE_CSR): Add CSRs for Smaia and Ssaia.
> >
> > Changes for v2:
> > - Add hypervisor and VS CSRs
> > - Fix whitespace issue
> >
> > Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
> > ---
> >  bfd/elfxx-riscv.c                           |   2 +
> >  gas/config/tc-riscv.c                       |  28 +++++
> >  gas/testsuite/gas/riscv/csr-dw-regnums.d    |  32 +++++
> >  gas/testsuite/gas/riscv/csr-dw-regnums.s    |  36 ++++++
> >  gas/testsuite/gas/riscv/csr-version-1p10.d  |  64 ++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p10.l  | 125 ++++++++++++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p11.d  |  64 ++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p11.l  | 125 ++++++++++++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p12.d  |  64 ++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p12.l  | 125 ++++++++++++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p9p1.d |  64 ++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 125 ++++++++++++++++++++
> >  gas/testsuite/gas/riscv/csr.s               |  36 ++++++
> >  include/opcode/riscv-opc.h                  |  68 +++++++++++
> >  14 files changed, 958 insertions(+)
> >
> > diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> > index cfec9a6996c..dd75817b1bd 100644
> > --- a/bfd/elfxx-riscv.c
> > +++ b/bfd/elfxx-riscv.c
> > @@ -1216,8 +1216,10 @@ static struct riscv_supported_ext
> riscv_supported_std_z_ext[] =
> >
> >  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
> >  {
> > +  {"smaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >    {"smepmp",           ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >    {"smstateen",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0
> },
> > +  {"ssaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >    {"sscofpmf",         ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >    {"sstc",             ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >    {"svinval",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> > diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> > index 2dc92ecd3c3..78aa15400f8 100644
> > --- a/gas/config/tc-riscv.c
> > +++ b/gas/config/tc-riscv.c
> > @@ -68,10 +68,18 @@ enum riscv_csr_class
> >    CSR_CLASS_DEBUG,     /* debug CSR */
> >    CSR_CLASS_H,         /* hypervisor */
> >    CSR_CLASS_H_32,      /* hypervisor, rv32 only */
> > +  CSR_CLASS_SMAIA,             /* Smaia */
> > +  CSR_CLASS_SMAIA_AND_H,       /* Smaia with H */
> > +  CSR_CLASS_SMAIA_32,          /* Smaia, rv32 only */
> > +  CSR_CLASS_SMAIA_AND_H_32,    /* Smaia with H, rv32 only */
> >    CSR_CLASS_SMSTATEEN,         /* Smstateen only */
> >    CSR_CLASS_SMSTATEEN_AND_H,   /* Smstateen only (with H) */
> >    CSR_CLASS_SMSTATEEN_32,      /* Smstateen RV32 only */
> >    CSR_CLASS_SMSTATEEN_AND_H_32,        /* Smstateen RV32 only (with H)
> */
> > +  CSR_CLASS_SSAIA,             /* Ssaia */
> > +  CSR_CLASS_SSAIA_AND_H,       /* Ssaia with H */
> > +  CSR_CLASS_SSAIA_32,          /* Ssaia, rv32 only */
> > +  CSR_CLASS_SSAIA_AND_H_32,    /* Ssaia with H, rv32 only */
> >    CSR_CLASS_SSCOFPMF,          /* Sscofpmf only */
> >    CSR_CLASS_SSCOFPMF_32,       /* Sscofpmf RV32 only */
> >    CSR_CLASS_SSTC,              /* Sstc only */
> > @@ -1028,6 +1036,16 @@ riscv_csr_address (const char *csr_name,
> >      case CSR_CLASS_V:
> >        extension = "zve32x";
> >        break;
> > +    case CSR_CLASS_SMAIA:
> > +    case CSR_CLASS_SMAIA_AND_H:
> > +    case CSR_CLASS_SMAIA_32:
> > +    case CSR_CLASS_SMAIA_AND_H_32:
> > +      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32
> > +                     || csr_class == CSR_CLASS_SMAIA_AND_H_32);
> > +      is_h_required = (csr_class == CSR_CLASS_SMAIA_AND_H
> > +                      || csr_class == CSR_CLASS_SMAIA_AND_H_32);
> > +      extension = "smaia";
> > +      break;
> >      case CSR_CLASS_SMSTATEEN:
> >      case CSR_CLASS_SMSTATEEN_AND_H:
> >      case CSR_CLASS_SMSTATEEN_32:
> > @@ -1038,6 +1056,16 @@ riscv_csr_address (const char *csr_name,
> >                       || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
> >        extension = "smstateen";
> >        break;
> > +    case CSR_CLASS_SSAIA:
> > +    case CSR_CLASS_SSAIA_AND_H:
> > +    case CSR_CLASS_SSAIA_32:
> > +    case CSR_CLASS_SSAIA_AND_H_32:
> > +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32
> > +                     || csr_class == CSR_CLASS_SSAIA_AND_H_32);
> > +      is_h_required = (csr_class == CSR_CLASS_SSAIA_AND_H
> > +                      || csr_class == CSR_CLASS_SSAIA_AND_H_32);
> > +      extension = "ssaia";
> > +      break;
> >      case CSR_CLASS_SSCOFPMF_32:
> >        is_rv32_only = true;
> >        /* Fall through.  */
> > diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> > index b4b3806a085..dd238cf54a9 100644
> > --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> > +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> > @@ -313,6 +313,26 @@ Contents of the .* section:
> >    DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
> >    DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
> >    DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
> > +  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
> > +  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
> > +  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
> > +  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
> > +  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
> > +  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
> > +  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
> > +  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
> > +  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
> > +  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
> > +  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
> > +  DW_CFA_offset_extended_sf: r5640 \(hvien\) at cfa\+6176
> > +  DW_CFA_offset_extended_sf: r5641 \(hvictl\) at cfa\+6180
> > +  DW_CFA_offset_extended_sf: r5702 \(hviprio1\) at cfa\+6424
> > +  DW_CFA_offset_extended_sf: r5703 \(hviprio2\) at cfa\+6428
> > +  DW_CFA_offset_extended_sf: r5651 \(hidelegh\) at cfa\+6220
> > +  DW_CFA_offset_extended_sf: r5656 \(hvienh\) at cfa\+6240
> > +  DW_CFA_offset_extended_sf: r5717 \(hviph\) at cfa\+6484
> > +  DW_CFA_offset_extended_sf: r5718 \(hviprio1h\) at cfa\+6488
> > +  DW_CFA_offset_extended_sf: r5719 \(hviprio2h\) at cfa\+6492
> >    DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
> >    DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
> >    DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
> > @@ -333,6 +353,18 @@ Contents of the .* section:
> >    DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
> >    DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
> >    DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
> > +  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
> > +  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
> > +  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
> > +  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
> > +  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
> > +  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
> > +  DW_CFA_offset_extended_sf: r4688 \(vsiselect\) at cfa\+2368
> > +  DW_CFA_offset_extended_sf: r4689 \(vsireg\) at cfa\+2372
> > +  DW_CFA_offset_extended_sf: r4700 \(vstopei\) at cfa\+2416
> > +  DW_CFA_offset_extended_sf: r7856 \(vstopi\) at cfa\+15040
> > +  DW_CFA_offset_extended_sf: r4628 \(vsieh\) at cfa\+2128
> > +  DW_CFA_offset_extended_sf: r4692 \(vsiph\) at cfa\+2384
> >    DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
> >    DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
> >    DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
> > diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> > index 6cfa415ebc2..38b1e53dd6c 100644
> > --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> > +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> > @@ -1,6 +1,8 @@
> >  # Check that CFI directives can accept all of the CSR names (including
> >  # aliases).  The results for this test also ensures that the DWARF
> >  # register numbers for the CSRs shouldn't change.
> > +# The register numbers are specified to be CSR-ID + 4096 (see psABI
> spec).
> > +# The CFI offsets in this file are CSR-ID x 4.
> >
> >         .text
> >         .global _start
> > @@ -307,6 +309,27 @@ _start:
> >         .cfi_offset vstval, 2316
> >         .cfi_offset vsip, 2320
> >         .cfi_offset vsatp, 2560
> > +       # Smaia extension
> > +       .cfi_offset miselect, 3392
> > +       .cfi_offset mireg, 3396
> > +       .cfi_offset mtopei, 3440
> > +       .cfi_offset mtopi, 16064
> > +       .cfi_offset mvien, 3104
> > +       .cfi_offset mvip, 3108
> > +       .cfi_offset midelegh, 3148
> > +       .cfi_offset mieh, 3152
> > +       .cfi_offset mvienh, 3168
> > +       .cfi_offset mviph, 3172
> > +       .cfi_offset miph, 3408
> > +       .cfi_offset hvien, 6176
> > +       .cfi_offset hvictl, 6180
> > +       .cfi_offset hviprio1, 6424
> > +       .cfi_offset hviprio2, 6428
> > +       .cfi_offset hidelegh, 6220
> > +       .cfi_offset hvienh, 6240
> > +       .cfi_offset hviph, 6484
> > +       .cfi_offset hviprio1h, 6488
> > +       .cfi_offset hviprio2h, 6492
> >         # Smstateen extension
> >         .cfi_offset mstateen0, 3120
> >         .cfi_offset mstateen1, 3124
> > @@ -328,6 +351,19 @@ _start:
> >         .cfi_offset hstateen1h, 6260
> >         .cfi_offset hstateen2h, 6264
> >         .cfi_offset hstateen3h, 6268
> > +       # Ssaia extension
> > +       .cfi_offset siselect, 1344
> > +       .cfi_offset sireg, 1348
> > +       .cfi_offset stopei, 1392
> > +       .cfi_offset stopi, 14016
> > +       .cfi_offset sieh, 1104
> > +       .cfi_offset siph, 1360
> > +       .cfi_offset vsiselect, 2368
> > +       .cfi_offset vsireg, 2372
> > +       .cfi_offset vstopei, 2416
> > +       .cfi_offset vstopi, 15040
> > +       .cfi_offset vsieh, 2128
> > +       .cfi_offset vsiph, 2384
> >         # Sscofpmf extension
> >         .cfi_offset scountovf, 13952
> >         .cfi_offset mhpmevent3h, 7308
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d
> b/gas/testsuite/gas/riscv/csr-version-1p10.d
> > index bd8b10302e3..879c7e8a97d 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
> > @@ -601,6 +601,46 @@ Disassembly of section .text:
> >  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> > +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> > +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> > +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> > +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> > +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> > +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> > +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> > +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> > +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> > +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> > +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> > +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> > +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> > +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> > +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> > +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> > +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> > +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> > +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> > +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> > +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> > +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> > +[      ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> > +[      ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> > +[      ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> > +[      ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> > +[      ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> > +[      ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> > +[      ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> > +[      ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> > +[      ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> > +[      ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> > +[      ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> > +[      ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> > +[      ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> > +[      ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> > +[      ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
> > +[      ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
> > +[      ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
> > +[      ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
> >  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> > @@ -641,6 +681,30 @@ Disassembly of section .text:
> >  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> > +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> > +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> > +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> > +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> > +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> > +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> > +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> > +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> > +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> > +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> > +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> > +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> > +[      ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
> > +[      ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
> > +[      ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> > +[      ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> > +[      ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> > +[      ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> > +[      ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> > +[      ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> > +[      ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> > +[      ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> > +[      ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> > +[      ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
> >  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l
> b/gas/testsuite/gas/riscv/csr-version-1p10.l
> > index 999e9af1520..44499fa4dbe 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
> > @@ -411,6 +411,85 @@
> >  .*Warning: invalid CSR `vsip', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: read-only CSR is written `csrw mtopi,a1'
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> > @@ -483,6 +562,52 @@
> >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw stopi,a1'
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw vstopi,a1'
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: read-only CSR is written `csrw scountovf,a1'
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d
> b/gas/testsuite/gas/riscv/csr-version-1p11.d
> > index 5d6333884f1..70397194465 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
> > @@ -601,6 +601,46 @@ Disassembly of section .text:
> >  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> > +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> > +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> > +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> > +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> > +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> > +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> > +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> > +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> > +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> > +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> > +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> > +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> > +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> > +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> > +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> > +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> > +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> > +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> > +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> > +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> > +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> > +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> > +[      ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> > +[      ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> > +[      ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> > +[      ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> > +[      ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> > +[      ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> > +[      ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> > +[      ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> > +[      ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> > +[      ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> > +[      ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> > +[      ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> > +[      ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> > +[      ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> > +[      ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
> > +[      ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
> > +[      ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
> > +[      ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
> >  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> > @@ -641,6 +681,30 @@ Disassembly of section .text:
> >  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> > +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> > +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> > +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> > +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> > +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> > +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> > +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> > +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> > +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> > +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> > +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> > +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> > +[      ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
> > +[      ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
> > +[      ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> > +[      ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> > +[      ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> > +[      ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> > +[      ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> > +[      ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> > +[      ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> > +[      ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> > +[      ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> > +[      ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
> >  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l
> b/gas/testsuite/gas/riscv/csr-version-1p11.l
> > index a099e4ecc93..09a106806d2 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
> > @@ -409,6 +409,85 @@
> >  .*Warning: invalid CSR `vsip', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: read-only CSR is written `csrw mtopi,a1'
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> > @@ -481,6 +560,52 @@
> >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw stopi,a1'
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw vstopi,a1'
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: read-only CSR is written `csrw scountovf,a1'
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d
> b/gas/testsuite/gas/riscv/csr-version-1p12.d
> > index 728e647c552..142f60c216c 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
> > @@ -601,6 +601,46 @@ Disassembly of section .text:
> >  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> > +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> > +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> > +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> > +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> > +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> > +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> > +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> > +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> > +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> > +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> > +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> > +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> > +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> > +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> > +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> > +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> > +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> > +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> > +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> > +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> > +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> > +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> > +[      ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> > +[      ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> > +[      ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> > +[      ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> > +[      ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> > +[      ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> > +[      ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> > +[      ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> > +[      ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> > +[      ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> > +[      ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> > +[      ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> > +[      ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> > +[      ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> > +[      ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
> > +[      ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
> > +[      ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
> > +[      ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
> >  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> > @@ -641,6 +681,30 @@ Disassembly of section .text:
> >  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> > +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> > +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> > +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> > +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> > +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> > +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> > +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> > +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> > +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> > +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> > +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> > +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> > +[      ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
> > +[      ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
> > +[      ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> > +[      ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> > +[      ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> > +[      ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> > +[      ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> > +[      ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> > +[      ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> > +[      ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> > +[      ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> > +[      ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
> >  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l
> b/gas/testsuite/gas/riscv/csr-version-1p12.l
> > index cf8f2e25634..7b138244ee1 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
> > @@ -271,6 +271,85 @@
> >  .*Warning: invalid CSR `vsip', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: read-only CSR is written `csrw mtopi,a1'
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> > @@ -343,6 +422,52 @@
> >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw stopi,a1'
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw vstopi,a1'
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: read-only CSR is written `csrw scountovf,a1'
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> > index a34b99f4632..fa843727e80 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> > @@ -601,6 +601,46 @@ Disassembly of section .text:
> >  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> > +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> > +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> > +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> > +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> > +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> > +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> > +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> > +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> > +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> > +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> > +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> > +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> > +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> > +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> > +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> > +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> > +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> > +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> > +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> > +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> > +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> > +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> > +[      ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> > +[      ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> > +[      ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> > +[      ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> > +[      ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> > +[      ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> > +[      ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> > +[      ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> > +[      ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> > +[      ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> > +[      ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> > +[      ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> > +[      ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> > +[      ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> > +[      ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
> > +[      ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
> > +[      ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
> > +[      ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
> >  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> > @@ -641,6 +681,30 @@ Disassembly of section .text:
> >  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> > +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> > +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> > +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> > +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> > +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> > +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> > +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> > +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> > +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> > +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> > +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> > +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> > +[      ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
> > +[      ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
> > +[      ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> > +[      ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> > +[      ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> > +[      ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> > +[      ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> > +[      ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> > +[      ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> > +[      ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> > +[      ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> > +[      ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
> >  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> > index 5f298c1dda9..e63719ec066 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> > @@ -461,6 +461,85 @@
> >  .*Warning: invalid CSR `vsip', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: read-only CSR is written `csrw mtopi,a1'
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> > @@ -533,6 +612,52 @@
> >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw stopi,a1'
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw vstopi,a1'
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: read-only CSR is written `csrw scountovf,a1'
> > diff --git a/gas/testsuite/gas/riscv/csr.s
> b/gas/testsuite/gas/riscv/csr.s
> > index 128aeb83a04..21939b20a6d 100644
> > --- a/gas/testsuite/gas/riscv/csr.s
> > +++ b/gas/testsuite/gas/riscv/csr.s
> > @@ -337,6 +337,28 @@
> >         csr vsip
> >         csr vsatp
> >
> > +       # Smaia
> > +       csr miselect
> > +       csr mireg
> > +       csr mtopei
> > +       csr mtopi
> > +       csr mvien
> > +       csr mvip
> > +       csr midelegh
> > +       csr mieh
> > +       csr mvienh
> > +       csr mviph
> > +       csr miph
> > +       csr hvien
> > +       csr hvictl
> > +       csr hviprio1
> > +       csr hviprio2
> > +       csr hidelegh
> > +       csr hvienh
> > +       csr hviph
> > +       csr hviprio1h
> > +       csr hviprio2h
> > +
> >         # Smstateen extension
> >         csr mstateen0
> >         csr mstateen1
> > @@ -359,6 +381,20 @@
> >         csr hstateen2h
> >         csr hstateen3h
> >
> > +       # Ssaia
> > +       csr siselect
> > +       csr sireg
> > +       csr stopei
> > +       csr stopi
> > +       csr sieh
> > +       csr siph
> > +       csr vsiselect
> > +       csr vsireg
> > +       csr vstopei
> > +       csr vstopi
> > +       csr vsieh
> > +       csr vsiph
> > +
> >         # Sscofpmf extension
> >         csr scountovf
> >         csr mhpmevent3h
> > diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
> > index f36b06dcd6b..8beed0b1b42 100644
> > --- a/include/opcode/riscv-opc.h
> > +++ b/include/opcode/riscv-opc.h
> > @@ -2661,6 +2661,27 @@
> >  #define CSR_UIP 0x44
> >  #define CSR_SEDELEG 0x102
> >  #define CSR_SIDELEG 0x103
> > +/* Smaia extension */
> > +#define CSR_MISELECT 0x350
> > +#define CSR_MIREG    0x351
> > +#define CSR_MTOPEI   0x35c
> > +#define CSR_MTOPI    0xfb0
> > +#define CSR_MVIEN    0x308
> > +#define CSR_MVIP     0x309
> > +#define CSR_MIDELEGH 0x313
> > +#define CSR_MIEH     0x314
> > +#define CSR_MVIENH   0x318
> > +#define CSR_MVIPH    0x319
> > +#define CSR_MIPH     0x354
> > +#define CSR_HVIEN     0x608
> > +#define CSR_HVICTL    0x609
> > +#define CSR_HVIPRIO1  0x646
> > +#define CSR_HVIPRIO2  0x647
> > +#define CSR_HIDELEGH  0x613
> > +#define CSR_HVIENH    0x618
> > +#define CSR_HVIPH     0x655
> > +#define CSR_HVIPRIO1H 0x656
> > +#define CSR_HVIPRIO2H 0x657
> >  /* Smstateen extension */
> >  #define CSR_MSTATEEN0 0x30c
> >  #define CSR_MSTATEEN1 0x30d
> > @@ -2682,6 +2703,19 @@
> >  #define CSR_HSTATEEN1H 0x61d
> >  #define CSR_HSTATEEN2H 0x61e
> >  #define CSR_HSTATEEN3H 0x61f
> > +/* Ssaia extension */
> > +#define CSR_SISELECT 0x150
> > +#define CSR_SIREG    0x151
> > +#define CSR_STOPEI   0x15c
> > +#define CSR_STOPI    0xdb0
> > +#define CSR_SIEH     0x114
> > +#define CSR_SIPH     0x154
> > +#define CSR_VSISELECT 0x250
> > +#define CSR_VSIREG    0x251
> > +#define CSR_VSTOPEI   0x25c
> > +#define CSR_VSTOPI    0xeb0
> > +#define CSR_VSIEH     0x214
> > +#define CSR_VSIPH     0x254
> >  /* Sscofpmf extension */
> >  #define CSR_SCOUNTOVF 0xda0
> >  #define CSR_MHPMEVENT3H 0x723
> > @@ -3504,6 +3538,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
> >  DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> >  DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> >  DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +/* Smaia extension */
> > +DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
>
> > +DECLARE_CSR(hvien, CSR_HVIEN, CSR_CLASS_SMAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hvictl, CSR_HVICTL, CSR_CLASS_SMAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hviprio1, CSR_HVIPRIO1, CSR_CLASS_SMAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hviprio2, CSR_HVIPRIO2, CSR_CLASS_SMAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hidelegh, CSR_HIDELEGH, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hvienh, CSR_HVIENH, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hviph, CSR_HVIPH, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hviprio1h, CSR_HVIPRIO1H, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hviprio2h, CSR_HVIPRIO2H, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>
> Just curious does the spec clarify these belonged to smaia? or should
> these just belonged to h?
>

The AIA spec says:
"If a hart implements the Privileged Architecture’s hypervisor extension,
then the hypervisor and
VS CSRs listed in Table 2.3 are also added"

So I think the way it is modeled is correct.




>
> >  /* Smstateen extension */
> >  DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >  DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > @@ -3525,6 +3580,19 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H,
> CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
> >  DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >  DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >  DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +/* Ssaia extension */
> > +DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
>
> > +DECLARE_CSR(vsiselect, CSR_VSISELECT, CSR_CLASS_SSAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(vsireg, CSR_VSIREG, CSR_CLASS_SSAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(vstopei, CSR_VSTOPEI, CSR_CLASS_SSAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(vstopi, CSR_VSTOPI, CSR_CLASS_SSAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(vsieh, CSR_VSIEH, CSR_CLASS_SSAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(vsiph, CSR_VSIPH, CSR_CLASS_SSAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>
> Similar, should these belonged to only h? or ssaia + h?
>

Ssaia + h (same as above).

Palmer mentioned in response to the GCC patch, that the spec contains the
following:
"For a machine-level environment, extension Smaia encompasses all
added CSRs and all modifications to interrupt response behavior that the
AIA specifies for a hart,
over all privilege levels. For a supervisor-level environment, extension
Ssaia is essentially the same
as Smaia except excluding the machine-level CSRs and behavior not directly
visible to supervisor
level."

I would implement this such, that Smaia implies Ssaia.
Opinions?



>
> Thanks
> Nelson
>
> >  /* Sscofpmf extension */
> >  DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >  DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > --
> > 2.38.1
> >
>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-11-18  8:33   ` Christoph Müllner
@ 2022-11-18  8:44     ` Tsukasa OI
  2022-11-18  9:11       ` Christoph Müllner
  0 siblings, 1 reply; 19+ messages in thread
From: Tsukasa OI @ 2022-11-18  8:44 UTC (permalink / raw)
  To: Christoph Müllner; +Cc: Binutils

[-- Attachment #1: Type: text/plain, Size: 89215 bytes --]

Sorry,

On my Ssstateen patch,
<https://sourceware.org/pipermail/binutils/2022-November/124156.html>
I did like the attached patch (Smaia → Ssaia, Ssaia → Zicsr).

I forgot to include Smaia → Ssaia dependency (just like M → Zmmul).

Thanks,
Tsukasa

On 2022/11/18 17:33, Christoph Müllner wrote:
> 
> 
> On Fri, Nov 18, 2022 at 6:07 AM Tsukasa OI <research_trasio@irq.a4lg.com
> <mailto:research_trasio@irq.a4lg.com>> wrote:
> 
>     LGTM except it misses riscv_implicit_subsets.  I think all privileged
>     extensions with either:
>     *   New CSRs
>     *   New CSR bits
>     *   Dependency with use of CSRs
>     will be required to add 'Zicsr' to its implication.
> 
>     Quick Background: The privileged architecture itself depends on 'Zicsr'
>     but there's no direct way to detect the privileged architecture itself).
> 
>     The patch attached will make this commit complete.
> 
> 
> Ok, thx!
>  
> 
> 
>     Thanks,
>     Tsukasa
> 
>     On 2022/11/18 9:32, Christoph Muellner wrote:
>     > From: Christoph Müllner <christoph.muellner@vrull.eu
>     <mailto:christoph.muellner@vrull.eu>>
>     >
>     > This commit adds the AIA extensions (Smaia and Ssaia) CSRs.
>     >
>     > bfd/ChangeLog:
>     >
>     >       * elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
>     >       of known standard extensions.
>     >
>     > gas/ChangeLog:
>     >
>     >       * config/tc-riscv.c (enum riscv_csr_class):
>     >       (riscv_csr_address): Add CSR classes for Smaia/Ssaia.
>     >       * testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
>     >       * testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
>     >       * testsuite/gas/riscv/csr-version-1p10.d: Likewise.
>     >       * testsuite/gas/riscv/csr-version-1p10.l: Likewise.
>     >       * testsuite/gas/riscv/csr-version-1p11.d: Likewise.
>     >       * testsuite/gas/riscv/csr-version-1p11.l: Likewise.
>     >       * testsuite/gas/riscv/csr-version-1p12.d: Likewise.
>     >       * testsuite/gas/riscv/csr-version-1p12.l: Likewise.
>     >       * testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
>     >       * testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
>     >       * testsuite/gas/riscv/csr.s: Likewise.
>     >
>     > include/ChangeLog:
>     >
>     >       * opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
>     >       (CSR_MIREG): Likewise.
>     >       (CSR_MTOPEI): Likewise.
>     >       (CSR_MTOPI): Likewise.
>     >       (CSR_MVIEN): Likewise.
>     >       (CSR_MVIP): Likewise.
>     >       (CSR_MIDELEGH): Likewise.
>     >       (CSR_MIEH): Likewise.
>     >       (CSR_MVIENH): Likewise.
>     >       (CSR_MVIPH): Likewise.
>     >       (CSR_MIPH): Likewise.
>     >       (CSR_HVIEN): Likewise.
>     >       (CSR_HVICTL): Likewise.
>     >       (CSR_HVIPRIO1): Likewise.
>     >       (CSR_HVIPRIO2): Likewise.
>     >       (CSR_HIDELEGH): Likewise.
>     >       (CSR_HVIENH): Likewise.
>     >       (CSR_HVIPH): Likewise.
>     >       (CSR_HVIPRIO1H): Likewise.
>     >       (CSR_HVIPRIO2H): Likewise.
>     >       (CSR_SISELECT): Likewise.
>     >       (CSR_SIREG): Likewise.
>     >       (CSR_STOPEI): Likewise.
>     >       (CSR_STOPI): Likewise.
>     >       (CSR_SIEH): Likewise.
>     >       (CSR_SIPH): Likewise.
>     >       (CSR_VSISELECT): Likewise.
>     >       (CSR_VSIREG): Likewise.
>     >       (CSR_VSTOPEI): Likewise.
>     >       (CSR_VSTOPI): Likewise.
>     >       (CSR_VSIEH): Likewise.
>     >       (CSR_VSIPH): Likewise.
>     >       (DECLARE_CSR): Add CSRs for Smaia and Ssaia.
>     >
>     > Changes for v2:
>     > - Add hypervisor and VS CSRs
>     > - Fix whitespace issue
>     >
>     > Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu
>     <mailto:christoph.muellner@vrull.eu>>
>     > ---
>     >  bfd/elfxx-riscv.c                           |   2 +
>     >  gas/config/tc-riscv.c                       |  28 +++++
>     >  gas/testsuite/gas/riscv/csr-dw-regnums.d    |  32 +++++
>     >  gas/testsuite/gas/riscv/csr-dw-regnums.s    |  36 ++++++
>     >  gas/testsuite/gas/riscv/csr-version-1p10.d  |  64 ++++++++++
>     >  gas/testsuite/gas/riscv/csr-version-1p10.l  | 125
>     ++++++++++++++++++++
>     >  gas/testsuite/gas/riscv/csr-version-1p11.d  |  64 ++++++++++
>     >  gas/testsuite/gas/riscv/csr-version-1p11.l  | 125
>     ++++++++++++++++++++
>     >  gas/testsuite/gas/riscv/csr-version-1p12.d  |  64 ++++++++++
>     >  gas/testsuite/gas/riscv/csr-version-1p12.l  | 125
>     ++++++++++++++++++++
>     >  gas/testsuite/gas/riscv/csr-version-1p9p1.d |  64 ++++++++++
>     >  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 125
>     ++++++++++++++++++++
>     >  gas/testsuite/gas/riscv/csr.s               |  36 ++++++
>     >  include/opcode/riscv-opc.h                  |  68 +++++++++++
>     >  14 files changed, 958 insertions(+)
>     >
>     > diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
>     > index cfec9a6996c..dd75817b1bd 100644
>     > --- a/bfd/elfxx-riscv.c
>     > +++ b/bfd/elfxx-riscv.c
>     > @@ -1216,8 +1216,10 @@ static struct riscv_supported_ext
>     riscv_supported_std_z_ext[] =
>     > 
>     >  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
>     >  {
>     > +  {"smaia",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>     >    {"smepmp",         ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>     >    {"smstateen",              ISA_SPEC_CLASS_DRAFT,           1,
>     0, 0 },
>     > +  {"ssaia",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>     >    {"sscofpmf",               ISA_SPEC_CLASS_DRAFT,           1,
>     0, 0 },
>     >    {"sstc",           ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>     >    {"svinval",                ISA_SPEC_CLASS_DRAFT,           1,
>     0, 0 },
>     > diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
>     > index 2dc92ecd3c3..78aa15400f8 100644
>     > --- a/gas/config/tc-riscv.c
>     > +++ b/gas/config/tc-riscv.c
>     > @@ -68,10 +68,18 @@ enum riscv_csr_class
>     >    CSR_CLASS_DEBUG,   /* debug CSR */
>     >    CSR_CLASS_H,               /* hypervisor */
>     >    CSR_CLASS_H_32,    /* hypervisor, rv32 only */
>     > +  CSR_CLASS_SMAIA,           /* Smaia */
>     > +  CSR_CLASS_SMAIA_AND_H,     /* Smaia with H */
>     > +  CSR_CLASS_SMAIA_32,                /* Smaia, rv32 only */
>     > +  CSR_CLASS_SMAIA_AND_H_32,  /* Smaia with H, rv32 only */
>     >    CSR_CLASS_SMSTATEEN,               /* Smstateen only */
>     >    CSR_CLASS_SMSTATEEN_AND_H, /* Smstateen only (with H) */
>     >    CSR_CLASS_SMSTATEEN_32,    /* Smstateen RV32 only */
>     >    CSR_CLASS_SMSTATEEN_AND_H_32,      /* Smstateen RV32 only (with
>     H) */
>     > +  CSR_CLASS_SSAIA,           /* Ssaia */
>     > +  CSR_CLASS_SSAIA_AND_H,     /* Ssaia with H */
>     > +  CSR_CLASS_SSAIA_32,                /* Ssaia, rv32 only */
>     > +  CSR_CLASS_SSAIA_AND_H_32,  /* Ssaia with H, rv32 only */
>     >    CSR_CLASS_SSCOFPMF,                /* Sscofpmf only */
>     >    CSR_CLASS_SSCOFPMF_32,     /* Sscofpmf RV32 only */
>     >    CSR_CLASS_SSTC,            /* Sstc only */
>     > @@ -1028,6 +1036,16 @@ riscv_csr_address (const char *csr_name,
>     >      case CSR_CLASS_V:
>     >        extension = "zve32x";
>     >        break;
>     > +    case CSR_CLASS_SMAIA:
>     > +    case CSR_CLASS_SMAIA_AND_H:
>     > +    case CSR_CLASS_SMAIA_32:
>     > +    case CSR_CLASS_SMAIA_AND_H_32:
>     > +      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32
>     > +                   || csr_class == CSR_CLASS_SMAIA_AND_H_32);
>     > +      is_h_required = (csr_class == CSR_CLASS_SMAIA_AND_H
>     > +                    || csr_class == CSR_CLASS_SMAIA_AND_H_32);
>     > +      extension = "smaia";
>     > +      break;
>     >      case CSR_CLASS_SMSTATEEN:
>     >      case CSR_CLASS_SMSTATEEN_AND_H:
>     >      case CSR_CLASS_SMSTATEEN_32:
>     > @@ -1038,6 +1056,16 @@ riscv_csr_address (const char *csr_name,
>     >                     || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
>     >        extension = "smstateen";
>     >        break;
>     > +    case CSR_CLASS_SSAIA:
>     > +    case CSR_CLASS_SSAIA_AND_H:
>     > +    case CSR_CLASS_SSAIA_32:
>     > +    case CSR_CLASS_SSAIA_AND_H_32:
>     > +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32
>     > +                   || csr_class == CSR_CLASS_SSAIA_AND_H_32);
>     > +      is_h_required = (csr_class == CSR_CLASS_SSAIA_AND_H
>     > +                    || csr_class == CSR_CLASS_SSAIA_AND_H_32);
>     > +      extension = "ssaia";
>     > +      break;
>     >      case CSR_CLASS_SSCOFPMF_32:
>     >        is_rv32_only = true;
>     >        /* Fall through.  */
>     > diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d
>     b/gas/testsuite/gas/riscv/csr-dw-regnums.d
>     > index b4b3806a085..dd238cf54a9 100644
>     > --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
>     > +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
>     > @@ -313,6 +313,26 @@ Contents of the .* section:
>     >    DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
>     >    DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
>     >    DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
>     > +  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
>     > +  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
>     > +  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
>     > +  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
>     > +  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
>     > +  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
>     > +  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
>     > +  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
>     > +  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
>     > +  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
>     > +  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
>     > +  DW_CFA_offset_extended_sf: r5640 \(hvien\) at cfa\+6176
>     > +  DW_CFA_offset_extended_sf: r5641 \(hvictl\) at cfa\+6180
>     > +  DW_CFA_offset_extended_sf: r5702 \(hviprio1\) at cfa\+6424
>     > +  DW_CFA_offset_extended_sf: r5703 \(hviprio2\) at cfa\+6428
>     > +  DW_CFA_offset_extended_sf: r5651 \(hidelegh\) at cfa\+6220
>     > +  DW_CFA_offset_extended_sf: r5656 \(hvienh\) at cfa\+6240
>     > +  DW_CFA_offset_extended_sf: r5717 \(hviph\) at cfa\+6484
>     > +  DW_CFA_offset_extended_sf: r5718 \(hviprio1h\) at cfa\+6488
>     > +  DW_CFA_offset_extended_sf: r5719 \(hviprio2h\) at cfa\+6492
>     >    DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
>     >    DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
>     >    DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
>     > @@ -333,6 +353,18 @@ Contents of the .* section:
>     >    DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
>     >    DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
>     >    DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
>     > +  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
>     > +  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
>     > +  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
>     > +  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
>     > +  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
>     > +  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
>     > +  DW_CFA_offset_extended_sf: r4688 \(vsiselect\) at cfa\+2368
>     > +  DW_CFA_offset_extended_sf: r4689 \(vsireg\) at cfa\+2372
>     > +  DW_CFA_offset_extended_sf: r4700 \(vstopei\) at cfa\+2416
>     > +  DW_CFA_offset_extended_sf: r7856 \(vstopi\) at cfa\+15040
>     > +  DW_CFA_offset_extended_sf: r4628 \(vsieh\) at cfa\+2128
>     > +  DW_CFA_offset_extended_sf: r4692 \(vsiph\) at cfa\+2384
>     >    DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
>     >    DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
>     >    DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
>     > diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s
>     b/gas/testsuite/gas/riscv/csr-dw-regnums.s
>     > index 6cfa415ebc2..38b1e53dd6c 100644
>     > --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
>     > +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
>     > @@ -1,6 +1,8 @@
>     >  # Check that CFI directives can accept all of the CSR names
>     (including
>     >  # aliases).  The results for this test also ensures that the DWARF
>     >  # register numbers for the CSRs shouldn't change.
>     > +# The register numbers are specified to be CSR-ID + 4096 (see
>     psABI spec).
>     > +# The CFI offsets in this file are CSR-ID x 4.
>     > 
>     >       .text
>     >       .global _start
>     > @@ -307,6 +309,27 @@ _start:
>     >       .cfi_offset vstval, 2316
>     >       .cfi_offset vsip, 2320
>     >       .cfi_offset vsatp, 2560
>     > +     # Smaia extension
>     > +     .cfi_offset miselect, 3392
>     > +     .cfi_offset mireg, 3396
>     > +     .cfi_offset mtopei, 3440
>     > +     .cfi_offset mtopi, 16064
>     > +     .cfi_offset mvien, 3104
>     > +     .cfi_offset mvip, 3108
>     > +     .cfi_offset midelegh, 3148
>     > +     .cfi_offset mieh, 3152
>     > +     .cfi_offset mvienh, 3168
>     > +     .cfi_offset mviph, 3172
>     > +     .cfi_offset miph, 3408
>     > +     .cfi_offset hvien, 6176
>     > +     .cfi_offset hvictl, 6180
>     > +     .cfi_offset hviprio1, 6424
>     > +     .cfi_offset hviprio2, 6428
>     > +     .cfi_offset hidelegh, 6220
>     > +     .cfi_offset hvienh, 6240
>     > +     .cfi_offset hviph, 6484
>     > +     .cfi_offset hviprio1h, 6488
>     > +     .cfi_offset hviprio2h, 6492
>     >       # Smstateen extension
>     >       .cfi_offset mstateen0, 3120
>     >       .cfi_offset mstateen1, 3124
>     > @@ -328,6 +351,19 @@ _start:
>     >       .cfi_offset hstateen1h, 6260
>     >       .cfi_offset hstateen2h, 6264
>     >       .cfi_offset hstateen3h, 6268
>     > +     # Ssaia extension
>     > +     .cfi_offset siselect, 1344
>     > +     .cfi_offset sireg, 1348
>     > +     .cfi_offset stopei, 1392
>     > +     .cfi_offset stopi, 14016
>     > +     .cfi_offset sieh, 1104
>     > +     .cfi_offset siph, 1360
>     > +     .cfi_offset vsiselect, 2368
>     > +     .cfi_offset vsireg, 2372
>     > +     .cfi_offset vstopei, 2416
>     > +     .cfi_offset vstopi, 15040
>     > +     .cfi_offset vsieh, 2128
>     > +     .cfi_offset vsiph, 2384
>     >       # Sscofpmf extension
>     >       .cfi_offset scountovf, 13952
>     >       .cfi_offset mhpmevent3h, 7308
>     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d
>     b/gas/testsuite/gas/riscv/csr-version-1p10.d
>     > index bd8b10302e3..879c7e8a97d 100644
>     > --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
>     > +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
>     > @@ -601,6 +601,46 @@ Disassembly of section .text:
>     >  [    ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>     >  [    ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>     >  [    ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
>     > +[    ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
>     > +[    ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
>     > +[    ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
>     > +[    ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
>     > +[    ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
>     > +[    ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
>     > +[    ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
>     > +[    ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
>     > +[    ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
>     > +[    ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
>     > +[    ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
>     > +[    ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
>     > +[    ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
>     > +[    ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
>     > +[    ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
>     > +[    ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
>     > +[    ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
>     > +[    ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
>     > +[    ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
>     > +[    ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
>     > +[    ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
>     > +[    ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>     > +[    ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
>     > +[    ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
>     > +[    ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
>     > +[    ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
>     > +[    ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
>     > +[    ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
>     > +[    ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
>     > +[    ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
>     > +[    ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
>     > +[    ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
>     > +[    ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
>     > +[    ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
>     > +[    ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
>     > +[    ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
>     > +[    ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
>     > +[    ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
>     > +[    ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
>     > +[    ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
>     >  [    ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>     >  [    ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>     >  [    ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
>     > @@ -641,6 +681,30 @@ Disassembly of section .text:
>     >  [    ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>     >  [    ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>     >  [    ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>     > +[    ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
>     > +[    ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
>     > +[    ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
>     > +[    ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
>     > +[    ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
>     > +[    ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
>     > +[    ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
>     > +[    ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
>     > +[    ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
>     > +[    ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
>     > +[    ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
>     > +[    ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>     > +[    ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
>     > +[    ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
>     > +[    ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
>     > +[    ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
>     > +[    ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
>     > +[    ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
>     > +[    ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
>     > +[    ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
>     > +[    ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
>     > +[    ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
>     > +[    ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
>     > +[    ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
>     >  [    ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>     >  [    ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>     >  [    ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
>     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l
>     b/gas/testsuite/gas/riscv/csr-version-1p10.l
>     > index 999e9af1520..44499fa4dbe 100644
>     > --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
>     > +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
>     > @@ -411,6 +411,85 @@
>     >  .*Warning: invalid CSR `vsip', needs `h' extension
>     >  .*Warning: invalid CSR `vsatp', needs `h' extension
>     >  .*Warning: invalid CSR `vsatp', needs `h' extension
>     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
>     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
>     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
>     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>     > +.*Warning: read-only CSR is written `csrw mtopi,a1'
>     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
>     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mieh', needs rv32i extension
>     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mieh', needs rv32i extension
>     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mviph', needs rv32i extension
>     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `mviph', needs rv32i extension
>     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `miph', needs rv32i extension
>     > +.*Warning: invalid CSR `miph', needs `smaia' extension
>     > +.*Warning: invalid CSR `miph', needs rv32i extension
>     > +.*Warning: invalid CSR `miph', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvien', needs `h' extension
>     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvien', needs `h' extension
>     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvictl', needs `h' extension
>     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvictl', needs `h' extension
>     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
>     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
>     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
>     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `hvienh', needs `h' extension
>     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `hvienh', needs `h' extension
>     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviph', needs rv32i extension
>     > +.*Warning: invalid CSR `hviph', needs `h' extension
>     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviph', needs rv32i extension
>     > +.*Warning: invalid CSR `hviph', needs `h' extension
>     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>     >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>     > @@ -483,6 +562,52 @@
>     >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>     >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>     >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>     > +.*Warning: read-only CSR is written `csrw stopi,a1'
>     > +.*Warning: invalid CSR `sieh', needs rv32i extension
>     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `sieh', needs rv32i extension
>     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `siph', needs rv32i extension
>     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
>     > +.*Warning: invalid CSR `siph', needs rv32i extension
>     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsireg', needs `h' extension
>     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsireg', needs `h' extension
>     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopei', needs `h' extension
>     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopei', needs `h' extension
>     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopi', needs `h' extension
>     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopi', needs `h' extension
>     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
>     > +.*Warning: read-only CSR is written `csrw vstopi,a1'
>     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
>     > +.*Warning: invalid CSR `vsieh', needs `h' extension
>     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
>     > +.*Warning: invalid CSR `vsieh', needs `h' extension
>     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
>     > +.*Warning: invalid CSR `vsiph', needs `h' extension
>     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
>     > +.*Warning: invalid CSR `vsiph', needs `h' extension
>     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>     >  .*Warning: read-only CSR is written `csrw scountovf,a1'
>     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d
>     b/gas/testsuite/gas/riscv/csr-version-1p11.d
>     > index 5d6333884f1..70397194465 100644
>     > --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
>     > +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
>     > @@ -601,6 +601,46 @@ Disassembly of section .text:
>     >  [    ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>     >  [    ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>     >  [    ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
>     > +[    ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
>     > +[    ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
>     > +[    ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
>     > +[    ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
>     > +[    ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
>     > +[    ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
>     > +[    ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
>     > +[    ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
>     > +[    ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
>     > +[    ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
>     > +[    ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
>     > +[    ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
>     > +[    ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
>     > +[    ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
>     > +[    ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
>     > +[    ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
>     > +[    ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
>     > +[    ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
>     > +[    ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
>     > +[    ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
>     > +[    ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
>     > +[    ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>     > +[    ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
>     > +[    ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
>     > +[    ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
>     > +[    ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
>     > +[    ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
>     > +[    ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
>     > +[    ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
>     > +[    ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
>     > +[    ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
>     > +[    ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
>     > +[    ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
>     > +[    ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
>     > +[    ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
>     > +[    ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
>     > +[    ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
>     > +[    ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
>     > +[    ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
>     > +[    ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
>     >  [    ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>     >  [    ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>     >  [    ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
>     > @@ -641,6 +681,30 @@ Disassembly of section .text:
>     >  [    ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>     >  [    ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>     >  [    ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>     > +[    ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
>     > +[    ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
>     > +[    ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
>     > +[    ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
>     > +[    ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
>     > +[    ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
>     > +[    ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
>     > +[    ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
>     > +[    ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
>     > +[    ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
>     > +[    ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
>     > +[    ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>     > +[    ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
>     > +[    ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
>     > +[    ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
>     > +[    ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
>     > +[    ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
>     > +[    ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
>     > +[    ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
>     > +[    ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
>     > +[    ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
>     > +[    ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
>     > +[    ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
>     > +[    ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
>     >  [    ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>     >  [    ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>     >  [    ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
>     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l
>     b/gas/testsuite/gas/riscv/csr-version-1p11.l
>     > index a099e4ecc93..09a106806d2 100644
>     > --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
>     > +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
>     > @@ -409,6 +409,85 @@
>     >  .*Warning: invalid CSR `vsip', needs `h' extension
>     >  .*Warning: invalid CSR `vsatp', needs `h' extension
>     >  .*Warning: invalid CSR `vsatp', needs `h' extension
>     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
>     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
>     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
>     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>     > +.*Warning: read-only CSR is written `csrw mtopi,a1'
>     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
>     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mieh', needs rv32i extension
>     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mieh', needs rv32i extension
>     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mviph', needs rv32i extension
>     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `mviph', needs rv32i extension
>     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `miph', needs rv32i extension
>     > +.*Warning: invalid CSR `miph', needs `smaia' extension
>     > +.*Warning: invalid CSR `miph', needs rv32i extension
>     > +.*Warning: invalid CSR `miph', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvien', needs `h' extension
>     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvien', needs `h' extension
>     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvictl', needs `h' extension
>     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvictl', needs `h' extension
>     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
>     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
>     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
>     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `hvienh', needs `h' extension
>     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `hvienh', needs `h' extension
>     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviph', needs rv32i extension
>     > +.*Warning: invalid CSR `hviph', needs `h' extension
>     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviph', needs rv32i extension
>     > +.*Warning: invalid CSR `hviph', needs `h' extension
>     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>     >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>     > @@ -481,6 +560,52 @@
>     >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>     >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>     >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>     > +.*Warning: read-only CSR is written `csrw stopi,a1'
>     > +.*Warning: invalid CSR `sieh', needs rv32i extension
>     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `sieh', needs rv32i extension
>     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `siph', needs rv32i extension
>     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
>     > +.*Warning: invalid CSR `siph', needs rv32i extension
>     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsireg', needs `h' extension
>     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsireg', needs `h' extension
>     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopei', needs `h' extension
>     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopei', needs `h' extension
>     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopi', needs `h' extension
>     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopi', needs `h' extension
>     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
>     > +.*Warning: read-only CSR is written `csrw vstopi,a1'
>     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
>     > +.*Warning: invalid CSR `vsieh', needs `h' extension
>     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
>     > +.*Warning: invalid CSR `vsieh', needs `h' extension
>     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
>     > +.*Warning: invalid CSR `vsiph', needs `h' extension
>     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
>     > +.*Warning: invalid CSR `vsiph', needs `h' extension
>     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>     >  .*Warning: read-only CSR is written `csrw scountovf,a1'
>     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d
>     b/gas/testsuite/gas/riscv/csr-version-1p12.d
>     > index 728e647c552..142f60c216c 100644
>     > --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
>     > +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
>     > @@ -601,6 +601,46 @@ Disassembly of section .text:
>     >  [    ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>     >  [    ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>     >  [    ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
>     > +[    ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
>     > +[    ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
>     > +[    ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
>     > +[    ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
>     > +[    ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
>     > +[    ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
>     > +[    ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
>     > +[    ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
>     > +[    ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
>     > +[    ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
>     > +[    ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
>     > +[    ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
>     > +[    ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
>     > +[    ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
>     > +[    ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
>     > +[    ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
>     > +[    ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
>     > +[    ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
>     > +[    ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
>     > +[    ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
>     > +[    ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
>     > +[    ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>     > +[    ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
>     > +[    ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
>     > +[    ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
>     > +[    ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
>     > +[    ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
>     > +[    ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
>     > +[    ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
>     > +[    ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
>     > +[    ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
>     > +[    ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
>     > +[    ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
>     > +[    ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
>     > +[    ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
>     > +[    ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
>     > +[    ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
>     > +[    ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
>     > +[    ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
>     > +[    ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
>     >  [    ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>     >  [    ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>     >  [    ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
>     > @@ -641,6 +681,30 @@ Disassembly of section .text:
>     >  [    ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>     >  [    ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>     >  [    ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>     > +[    ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
>     > +[    ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
>     > +[    ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
>     > +[    ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
>     > +[    ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
>     > +[    ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
>     > +[    ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
>     > +[    ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
>     > +[    ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
>     > +[    ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
>     > +[    ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
>     > +[    ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>     > +[    ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
>     > +[    ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
>     > +[    ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
>     > +[    ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
>     > +[    ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
>     > +[    ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
>     > +[    ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
>     > +[    ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
>     > +[    ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
>     > +[    ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
>     > +[    ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
>     > +[    ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
>     >  [    ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>     >  [    ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>     >  [    ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
>     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l
>     b/gas/testsuite/gas/riscv/csr-version-1p12.l
>     > index cf8f2e25634..7b138244ee1 100644
>     > --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
>     > +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
>     > @@ -271,6 +271,85 @@
>     >  .*Warning: invalid CSR `vsip', needs `h' extension
>     >  .*Warning: invalid CSR `vsatp', needs `h' extension
>     >  .*Warning: invalid CSR `vsatp', needs `h' extension
>     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
>     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
>     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
>     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>     > +.*Warning: read-only CSR is written `csrw mtopi,a1'
>     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
>     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mieh', needs rv32i extension
>     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mieh', needs rv32i extension
>     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mviph', needs rv32i extension
>     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `mviph', needs rv32i extension
>     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `miph', needs rv32i extension
>     > +.*Warning: invalid CSR `miph', needs `smaia' extension
>     > +.*Warning: invalid CSR `miph', needs rv32i extension
>     > +.*Warning: invalid CSR `miph', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvien', needs `h' extension
>     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvien', needs `h' extension
>     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvictl', needs `h' extension
>     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvictl', needs `h' extension
>     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
>     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
>     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
>     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `hvienh', needs `h' extension
>     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `hvienh', needs `h' extension
>     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviph', needs rv32i extension
>     > +.*Warning: invalid CSR `hviph', needs `h' extension
>     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviph', needs rv32i extension
>     > +.*Warning: invalid CSR `hviph', needs `h' extension
>     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>     >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>     > @@ -343,6 +422,52 @@
>     >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>     >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>     >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>     > +.*Warning: read-only CSR is written `csrw stopi,a1'
>     > +.*Warning: invalid CSR `sieh', needs rv32i extension
>     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `sieh', needs rv32i extension
>     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `siph', needs rv32i extension
>     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
>     > +.*Warning: invalid CSR `siph', needs rv32i extension
>     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsireg', needs `h' extension
>     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsireg', needs `h' extension
>     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopei', needs `h' extension
>     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopei', needs `h' extension
>     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopi', needs `h' extension
>     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopi', needs `h' extension
>     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
>     > +.*Warning: read-only CSR is written `csrw vstopi,a1'
>     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
>     > +.*Warning: invalid CSR `vsieh', needs `h' extension
>     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
>     > +.*Warning: invalid CSR `vsieh', needs `h' extension
>     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
>     > +.*Warning: invalid CSR `vsiph', needs `h' extension
>     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
>     > +.*Warning: invalid CSR `vsiph', needs `h' extension
>     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>     >  .*Warning: read-only CSR is written `csrw scountovf,a1'
>     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>     b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>     > index a34b99f4632..fa843727e80 100644
>     > --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>     > +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
>     > @@ -601,6 +601,46 @@ Disassembly of section .text:
>     >  [    ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>     >  [    ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>     >  [    ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
>     > +[    ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
>     > +[    ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
>     > +[    ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
>     > +[    ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
>     > +[    ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
>     > +[    ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
>     > +[    ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
>     > +[    ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
>     > +[    ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
>     > +[    ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
>     > +[    ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
>     > +[    ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
>     > +[    ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
>     > +[    ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
>     > +[    ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
>     > +[    ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
>     > +[    ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
>     > +[    ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
>     > +[    ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
>     > +[    ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
>     > +[    ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
>     > +[    ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
>     > +[    ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
>     > +[    ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
>     > +[    ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
>     > +[    ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
>     > +[    ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
>     > +[    ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
>     > +[    ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
>     > +[    ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
>     > +[    ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
>     > +[    ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
>     > +[    ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
>     > +[    ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
>     > +[    ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
>     > +[    ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
>     > +[    ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
>     > +[    ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
>     > +[    ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
>     > +[    ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
>     >  [    ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>     >  [    ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>     >  [    ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
>     > @@ -641,6 +681,30 @@ Disassembly of section .text:
>     >  [    ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>     >  [    ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>     >  [    ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
>     > +[    ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
>     > +[    ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
>     > +[    ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
>     > +[    ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
>     > +[    ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
>     > +[    ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
>     > +[    ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
>     > +[    ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
>     > +[    ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
>     > +[    ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
>     > +[    ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
>     > +[    ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
>     > +[    ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
>     > +[    ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
>     > +[    ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
>     > +[    ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
>     > +[    ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
>     > +[    ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
>     > +[    ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
>     > +[    ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
>     > +[    ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
>     > +[    ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
>     > +[    ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
>     > +[    ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
>     >  [    ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>     >  [    ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>     >  [    ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
>     > diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>     b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>     > index 5f298c1dda9..e63719ec066 100644
>     > --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>     > +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
>     > @@ -461,6 +461,85 @@
>     >  .*Warning: invalid CSR `vsip', needs `h' extension
>     >  .*Warning: invalid CSR `vsatp', needs `h' extension
>     >  .*Warning: invalid CSR `vsatp', needs `h' extension
>     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
>     > +.*Warning: invalid CSR `miselect', needs `smaia' extension
>     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
>     > +.*Warning: invalid CSR `mireg', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>     > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
>     > +.*Warning: read-only CSR is written `csrw mtopi,a1'
>     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvip', needs `smaia' extension
>     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `midelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mieh', needs rv32i extension
>     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mieh', needs rv32i extension
>     > +.*Warning: invalid CSR `mieh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `mviph', needs rv32i extension
>     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `mviph', needs rv32i extension
>     > +.*Warning: invalid CSR `mviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `miph', needs rv32i extension
>     > +.*Warning: invalid CSR `miph', needs `smaia' extension
>     > +.*Warning: invalid CSR `miph', needs rv32i extension
>     > +.*Warning: invalid CSR `miph', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvien', needs `h' extension
>     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvien', needs `h' extension
>     > +.*Warning: invalid CSR `hvien', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvictl', needs `h' extension
>     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvictl', needs `h' extension
>     > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
>     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
>     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
>     > +.*Warning: invalid CSR `hidelegh', needs `h' extension
>     > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `hvienh', needs `h' extension
>     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hvienh', needs rv32i extension
>     > +.*Warning: invalid CSR `hvienh', needs `h' extension
>     > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviph', needs rv32i extension
>     > +.*Warning: invalid CSR `hviph', needs `h' extension
>     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviph', needs rv32i extension
>     > +.*Warning: invalid CSR `hviph', needs `h' extension
>     > +.*Warning: invalid CSR `hviph', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
>     > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>     >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>     >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
>     > @@ -533,6 +612,52 @@
>     >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>     >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>     >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
>     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>     > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
>     > +.*Warning: read-only CSR is written `csrw stopi,a1'
>     > +.*Warning: invalid CSR `sieh', needs rv32i extension
>     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `sieh', needs rv32i extension
>     > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `siph', needs rv32i extension
>     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
>     > +.*Warning: invalid CSR `siph', needs rv32i extension
>     > +.*Warning: invalid CSR `siph', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `h' extension
>     > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsireg', needs `h' extension
>     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsireg', needs `h' extension
>     > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopei', needs `h' extension
>     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopei', needs `h' extension
>     > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopi', needs `h' extension
>     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vstopi', needs `h' extension
>     > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
>     > +.*Warning: read-only CSR is written `csrw vstopi,a1'
>     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
>     > +.*Warning: invalid CSR `vsieh', needs `h' extension
>     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsieh', needs rv32i extension
>     > +.*Warning: invalid CSR `vsieh', needs `h' extension
>     > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
>     > +.*Warning: invalid CSR `vsiph', needs `h' extension
>     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>     > +.*Warning: invalid CSR `vsiph', needs rv32i extension
>     > +.*Warning: invalid CSR `vsiph', needs `h' extension
>     > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>     >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>     >  .*Warning: read-only CSR is written `csrw scountovf,a1'
>     > diff --git a/gas/testsuite/gas/riscv/csr.s
>     b/gas/testsuite/gas/riscv/csr.s
>     > index 128aeb83a04..21939b20a6d 100644
>     > --- a/gas/testsuite/gas/riscv/csr.s
>     > +++ b/gas/testsuite/gas/riscv/csr.s
>     > @@ -337,6 +337,28 @@
>     >       csr vsip
>     >       csr vsatp
>     > 
>     > +     # Smaia
>     > +     csr miselect
>     > +     csr mireg
>     > +     csr mtopei
>     > +     csr mtopi
>     > +     csr mvien
>     > +     csr mvip
>     > +     csr midelegh
>     > +     csr mieh
>     > +     csr mvienh
>     > +     csr mviph
>     > +     csr miph
>     > +     csr hvien
>     > +     csr hvictl
>     > +     csr hviprio1
>     > +     csr hviprio2
>     > +     csr hidelegh
>     > +     csr hvienh
>     > +     csr hviph
>     > +     csr hviprio1h
>     > +     csr hviprio2h
>     > +
>     >       # Smstateen extension
>     >       csr mstateen0
>     >       csr mstateen1
>     > @@ -359,6 +381,20 @@
>     >       csr hstateen2h
>     >       csr hstateen3h
>     > 
>     > +     # Ssaia
>     > +     csr siselect
>     > +     csr sireg
>     > +     csr stopei
>     > +     csr stopi
>     > +     csr sieh
>     > +     csr siph
>     > +     csr vsiselect
>     > +     csr vsireg
>     > +     csr vstopei
>     > +     csr vstopi
>     > +     csr vsieh
>     > +     csr vsiph
>     > +
>     >       # Sscofpmf extension
>     >       csr scountovf
>     >       csr mhpmevent3h
>     > diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
>     > index f36b06dcd6b..8beed0b1b42 100644
>     > --- a/include/opcode/riscv-opc.h
>     > +++ b/include/opcode/riscv-opc.h
>     > @@ -2661,6 +2661,27 @@
>     >  #define CSR_UIP 0x44
>     >  #define CSR_SEDELEG 0x102
>     >  #define CSR_SIDELEG 0x103
>     > +/* Smaia extension */
>     > +#define CSR_MISELECT 0x350
>     > +#define CSR_MIREG    0x351
>     > +#define CSR_MTOPEI   0x35c
>     > +#define CSR_MTOPI    0xfb0
>     > +#define CSR_MVIEN    0x308
>     > +#define CSR_MVIP     0x309
>     > +#define CSR_MIDELEGH 0x313
>     > +#define CSR_MIEH     0x314
>     > +#define CSR_MVIENH   0x318
>     > +#define CSR_MVIPH    0x319
>     > +#define CSR_MIPH     0x354
>     > +#define CSR_HVIEN     0x608
>     > +#define CSR_HVICTL    0x609
>     > +#define CSR_HVIPRIO1  0x646
>     > +#define CSR_HVIPRIO2  0x647
>     > +#define CSR_HIDELEGH  0x613
>     > +#define CSR_HVIENH    0x618
>     > +#define CSR_HVIPH     0x655
>     > +#define CSR_HVIPRIO1H 0x656
>     > +#define CSR_HVIPRIO2H 0x657
>     >  /* Smstateen extension */
>     >  #define CSR_MSTATEEN0 0x30c
>     >  #define CSR_MSTATEEN1 0x30d
>     > @@ -2682,6 +2703,19 @@
>     >  #define CSR_HSTATEEN1H 0x61d
>     >  #define CSR_HSTATEEN2H 0x61e
>     >  #define CSR_HSTATEEN3H 0x61f
>     > +/* Ssaia extension */
>     > +#define CSR_SISELECT 0x150
>     > +#define CSR_SIREG    0x151
>     > +#define CSR_STOPEI   0x15c
>     > +#define CSR_STOPI    0xdb0
>     > +#define CSR_SIEH     0x114
>     > +#define CSR_SIPH     0x154
>     > +#define CSR_VSISELECT 0x250
>     > +#define CSR_VSIREG    0x251
>     > +#define CSR_VSTOPEI   0x25c
>     > +#define CSR_VSTOPI    0xeb0
>     > +#define CSR_VSIEH     0x214
>     > +#define CSR_VSIPH     0x254
>     >  /* Sscofpmf extension */
>     >  #define CSR_SCOUNTOVF 0xda0
>     >  #define CSR_MHPMEVENT3H 0x723
>     > @@ -3504,6 +3538,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE,
>     CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
>     >  DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     >  DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE,
>     PRIV_SPEC_CLASS_NONE)
>     >  DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE,
>     PRIV_SPEC_CLASS_NONE)
>     > +/* Smaia extension */
>     > +DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(hvien, CSR_HVIEN, CSR_CLASS_SMAIA_AND_H,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(hvictl, CSR_HVICTL, CSR_CLASS_SMAIA_AND_H,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(hviprio1, CSR_HVIPRIO1, CSR_CLASS_SMAIA_AND_H,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(hviprio2, CSR_HVIPRIO2, CSR_CLASS_SMAIA_AND_H,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(hidelegh, CSR_HIDELEGH, CSR_CLASS_SMAIA_AND_H_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(hvienh, CSR_HVIENH, CSR_CLASS_SMAIA_AND_H_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(hviph, CSR_HVIPH, CSR_CLASS_SMAIA_AND_H_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(hviprio1h, CSR_HVIPRIO1H, CSR_CLASS_SMAIA_AND_H_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(hviprio2h, CSR_HVIPRIO2H, CSR_CLASS_SMAIA_AND_H_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     >  /* Smstateen extension */
>     >  DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     >  DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > @@ -3525,6 +3580,19 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H,
>     CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
>     >  DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H,
>     CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE,
>     PRIV_SPEC_CLASS_NONE)
>     >  DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H,
>     CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE,
>     PRIV_SPEC_CLASS_NONE)
>     >  DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H,
>     CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE,
>     PRIV_SPEC_CLASS_NONE)
>     > +/* Ssaia extension */
>     > +DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(vsiselect, CSR_VSISELECT, CSR_CLASS_SSAIA_AND_H,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(vsireg, CSR_VSIREG, CSR_CLASS_SSAIA_AND_H,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(vstopei, CSR_VSTOPEI, CSR_CLASS_SSAIA_AND_H,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(vstopi, CSR_VSTOPI, CSR_CLASS_SSAIA_AND_H,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(vsieh, CSR_VSIEH, CSR_CLASS_SSAIA_AND_H_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     > +DECLARE_CSR(vsiph, CSR_VSIPH, CSR_CLASS_SSAIA_AND_H_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     >  /* Sscofpmf extension */
>     >  DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>     >  DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32,
>     PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> 

[-- Attachment #2: riscv-aia-imply-csr.patch --]
[-- Type: text/plain, Size: 665 bytes --]

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index dd75817b1bd3..bd6473d33c26 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1097,8 +1097,10 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
   {"zks", "zbkx",	check_implicit_always},
   {"zks", "zksed",	check_implicit_always},
   {"zks", "zksh",	check_implicit_always},
+  {"smaia", "ssaia",		check_implicit_always},
   {"smepmp", "zicsr",		check_implicit_always},
   {"smstateen", "zicsr",	check_implicit_always},
+  {"ssaia", "zicsr",		check_implicit_always},
   {"sscofpmf", "zicsr",		check_implicit_always},
   {"sstc", "zicsr",		check_implicit_always},
   {NULL, NULL, NULL}

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-11-18  5:07 ` Tsukasa OI
@ 2022-11-18  8:33   ` Christoph Müllner
  2022-11-18  8:44     ` Tsukasa OI
  0 siblings, 1 reply; 19+ messages in thread
From: Christoph Müllner @ 2022-11-18  8:33 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Binutils

[-- Attachment #1: Type: text/plain, Size: 79721 bytes --]

On Fri, Nov 18, 2022 at 6:07 AM Tsukasa OI <research_trasio@irq.a4lg.com>
wrote:

> LGTM except it misses riscv_implicit_subsets.  I think all privileged
> extensions with either:
> *   New CSRs
> *   New CSR bits
> *   Dependency with use of CSRs
> will be required to add 'Zicsr' to its implication.
>
> Quick Background: The privileged architecture itself depends on 'Zicsr'
> but there's no direct way to detect the privileged architecture itself).
>
> The patch attached will make this commit complete.
>

Ok, thx!


>
> Thanks,
> Tsukasa
>
> On 2022/11/18 9:32, Christoph Muellner wrote:
> > From: Christoph Müllner <christoph.muellner@vrull.eu>
> >
> > This commit adds the AIA extensions (Smaia and Ssaia) CSRs.
> >
> > bfd/ChangeLog:
> >
> >       * elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
> >       of known standard extensions.
> >
> > gas/ChangeLog:
> >
> >       * config/tc-riscv.c (enum riscv_csr_class):
> >       (riscv_csr_address): Add CSR classes for Smaia/Ssaia.
> >       * testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
> >       * testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
> >       * testsuite/gas/riscv/csr-version-1p10.d: Likewise.
> >       * testsuite/gas/riscv/csr-version-1p10.l: Likewise.
> >       * testsuite/gas/riscv/csr-version-1p11.d: Likewise.
> >       * testsuite/gas/riscv/csr-version-1p11.l: Likewise.
> >       * testsuite/gas/riscv/csr-version-1p12.d: Likewise.
> >       * testsuite/gas/riscv/csr-version-1p12.l: Likewise.
> >       * testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
> >       * testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
> >       * testsuite/gas/riscv/csr.s: Likewise.
> >
> > include/ChangeLog:
> >
> >       * opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
> >       (CSR_MIREG): Likewise.
> >       (CSR_MTOPEI): Likewise.
> >       (CSR_MTOPI): Likewise.
> >       (CSR_MVIEN): Likewise.
> >       (CSR_MVIP): Likewise.
> >       (CSR_MIDELEGH): Likewise.
> >       (CSR_MIEH): Likewise.
> >       (CSR_MVIENH): Likewise.
> >       (CSR_MVIPH): Likewise.
> >       (CSR_MIPH): Likewise.
> >       (CSR_HVIEN): Likewise.
> >       (CSR_HVICTL): Likewise.
> >       (CSR_HVIPRIO1): Likewise.
> >       (CSR_HVIPRIO2): Likewise.
> >       (CSR_HIDELEGH): Likewise.
> >       (CSR_HVIENH): Likewise.
> >       (CSR_HVIPH): Likewise.
> >       (CSR_HVIPRIO1H): Likewise.
> >       (CSR_HVIPRIO2H): Likewise.
> >       (CSR_SISELECT): Likewise.
> >       (CSR_SIREG): Likewise.
> >       (CSR_STOPEI): Likewise.
> >       (CSR_STOPI): Likewise.
> >       (CSR_SIEH): Likewise.
> >       (CSR_SIPH): Likewise.
> >       (CSR_VSISELECT): Likewise.
> >       (CSR_VSIREG): Likewise.
> >       (CSR_VSTOPEI): Likewise.
> >       (CSR_VSTOPI): Likewise.
> >       (CSR_VSIEH): Likewise.
> >       (CSR_VSIPH): Likewise.
> >       (DECLARE_CSR): Add CSRs for Smaia and Ssaia.
> >
> > Changes for v2:
> > - Add hypervisor and VS CSRs
> > - Fix whitespace issue
> >
> > Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
> > ---
> >  bfd/elfxx-riscv.c                           |   2 +
> >  gas/config/tc-riscv.c                       |  28 +++++
> >  gas/testsuite/gas/riscv/csr-dw-regnums.d    |  32 +++++
> >  gas/testsuite/gas/riscv/csr-dw-regnums.s    |  36 ++++++
> >  gas/testsuite/gas/riscv/csr-version-1p10.d  |  64 ++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p10.l  | 125 ++++++++++++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p11.d  |  64 ++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p11.l  | 125 ++++++++++++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p12.d  |  64 ++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p12.l  | 125 ++++++++++++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p9p1.d |  64 ++++++++++
> >  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 125 ++++++++++++++++++++
> >  gas/testsuite/gas/riscv/csr.s               |  36 ++++++
> >  include/opcode/riscv-opc.h                  |  68 +++++++++++
> >  14 files changed, 958 insertions(+)
> >
> > diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> > index cfec9a6996c..dd75817b1bd 100644
> > --- a/bfd/elfxx-riscv.c
> > +++ b/bfd/elfxx-riscv.c
> > @@ -1216,8 +1216,10 @@ static struct riscv_supported_ext
> riscv_supported_std_z_ext[] =
> >
> >  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
> >  {
> > +  {"smaia",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >    {"smepmp",         ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >    {"smstateen",              ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> > +  {"ssaia",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >    {"sscofpmf",               ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >    {"sstc",           ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> >    {"svinval",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> > diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> > index 2dc92ecd3c3..78aa15400f8 100644
> > --- a/gas/config/tc-riscv.c
> > +++ b/gas/config/tc-riscv.c
> > @@ -68,10 +68,18 @@ enum riscv_csr_class
> >    CSR_CLASS_DEBUG,   /* debug CSR */
> >    CSR_CLASS_H,               /* hypervisor */
> >    CSR_CLASS_H_32,    /* hypervisor, rv32 only */
> > +  CSR_CLASS_SMAIA,           /* Smaia */
> > +  CSR_CLASS_SMAIA_AND_H,     /* Smaia with H */
> > +  CSR_CLASS_SMAIA_32,                /* Smaia, rv32 only */
> > +  CSR_CLASS_SMAIA_AND_H_32,  /* Smaia with H, rv32 only */
> >    CSR_CLASS_SMSTATEEN,               /* Smstateen only */
> >    CSR_CLASS_SMSTATEEN_AND_H, /* Smstateen only (with H) */
> >    CSR_CLASS_SMSTATEEN_32,    /* Smstateen RV32 only */
> >    CSR_CLASS_SMSTATEEN_AND_H_32,      /* Smstateen RV32 only (with H) */
> > +  CSR_CLASS_SSAIA,           /* Ssaia */
> > +  CSR_CLASS_SSAIA_AND_H,     /* Ssaia with H */
> > +  CSR_CLASS_SSAIA_32,                /* Ssaia, rv32 only */
> > +  CSR_CLASS_SSAIA_AND_H_32,  /* Ssaia with H, rv32 only */
> >    CSR_CLASS_SSCOFPMF,                /* Sscofpmf only */
> >    CSR_CLASS_SSCOFPMF_32,     /* Sscofpmf RV32 only */
> >    CSR_CLASS_SSTC,            /* Sstc only */
> > @@ -1028,6 +1036,16 @@ riscv_csr_address (const char *csr_name,
> >      case CSR_CLASS_V:
> >        extension = "zve32x";
> >        break;
> > +    case CSR_CLASS_SMAIA:
> > +    case CSR_CLASS_SMAIA_AND_H:
> > +    case CSR_CLASS_SMAIA_32:
> > +    case CSR_CLASS_SMAIA_AND_H_32:
> > +      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32
> > +                   || csr_class == CSR_CLASS_SMAIA_AND_H_32);
> > +      is_h_required = (csr_class == CSR_CLASS_SMAIA_AND_H
> > +                    || csr_class == CSR_CLASS_SMAIA_AND_H_32);
> > +      extension = "smaia";
> > +      break;
> >      case CSR_CLASS_SMSTATEEN:
> >      case CSR_CLASS_SMSTATEEN_AND_H:
> >      case CSR_CLASS_SMSTATEEN_32:
> > @@ -1038,6 +1056,16 @@ riscv_csr_address (const char *csr_name,
> >                     || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
> >        extension = "smstateen";
> >        break;
> > +    case CSR_CLASS_SSAIA:
> > +    case CSR_CLASS_SSAIA_AND_H:
> > +    case CSR_CLASS_SSAIA_32:
> > +    case CSR_CLASS_SSAIA_AND_H_32:
> > +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32
> > +                   || csr_class == CSR_CLASS_SSAIA_AND_H_32);
> > +      is_h_required = (csr_class == CSR_CLASS_SSAIA_AND_H
> > +                    || csr_class == CSR_CLASS_SSAIA_AND_H_32);
> > +      extension = "ssaia";
> > +      break;
> >      case CSR_CLASS_SSCOFPMF_32:
> >        is_rv32_only = true;
> >        /* Fall through.  */
> > diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> > index b4b3806a085..dd238cf54a9 100644
> > --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> > +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> > @@ -313,6 +313,26 @@ Contents of the .* section:
> >    DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
> >    DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
> >    DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
> > +  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
> > +  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
> > +  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
> > +  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
> > +  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
> > +  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
> > +  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
> > +  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
> > +  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
> > +  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
> > +  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
> > +  DW_CFA_offset_extended_sf: r5640 \(hvien\) at cfa\+6176
> > +  DW_CFA_offset_extended_sf: r5641 \(hvictl\) at cfa\+6180
> > +  DW_CFA_offset_extended_sf: r5702 \(hviprio1\) at cfa\+6424
> > +  DW_CFA_offset_extended_sf: r5703 \(hviprio2\) at cfa\+6428
> > +  DW_CFA_offset_extended_sf: r5651 \(hidelegh\) at cfa\+6220
> > +  DW_CFA_offset_extended_sf: r5656 \(hvienh\) at cfa\+6240
> > +  DW_CFA_offset_extended_sf: r5717 \(hviph\) at cfa\+6484
> > +  DW_CFA_offset_extended_sf: r5718 \(hviprio1h\) at cfa\+6488
> > +  DW_CFA_offset_extended_sf: r5719 \(hviprio2h\) at cfa\+6492
> >    DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
> >    DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
> >    DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
> > @@ -333,6 +353,18 @@ Contents of the .* section:
> >    DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
> >    DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
> >    DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
> > +  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
> > +  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
> > +  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
> > +  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
> > +  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
> > +  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
> > +  DW_CFA_offset_extended_sf: r4688 \(vsiselect\) at cfa\+2368
> > +  DW_CFA_offset_extended_sf: r4689 \(vsireg\) at cfa\+2372
> > +  DW_CFA_offset_extended_sf: r4700 \(vstopei\) at cfa\+2416
> > +  DW_CFA_offset_extended_sf: r7856 \(vstopi\) at cfa\+15040
> > +  DW_CFA_offset_extended_sf: r4628 \(vsieh\) at cfa\+2128
> > +  DW_CFA_offset_extended_sf: r4692 \(vsiph\) at cfa\+2384
> >    DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
> >    DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
> >    DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
> > diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> > index 6cfa415ebc2..38b1e53dd6c 100644
> > --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> > +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> > @@ -1,6 +1,8 @@
> >  # Check that CFI directives can accept all of the CSR names (including
> >  # aliases).  The results for this test also ensures that the DWARF
> >  # register numbers for the CSRs shouldn't change.
> > +# The register numbers are specified to be CSR-ID + 4096 (see psABI
> spec).
> > +# The CFI offsets in this file are CSR-ID x 4.
> >
> >       .text
> >       .global _start
> > @@ -307,6 +309,27 @@ _start:
> >       .cfi_offset vstval, 2316
> >       .cfi_offset vsip, 2320
> >       .cfi_offset vsatp, 2560
> > +     # Smaia extension
> > +     .cfi_offset miselect, 3392
> > +     .cfi_offset mireg, 3396
> > +     .cfi_offset mtopei, 3440
> > +     .cfi_offset mtopi, 16064
> > +     .cfi_offset mvien, 3104
> > +     .cfi_offset mvip, 3108
> > +     .cfi_offset midelegh, 3148
> > +     .cfi_offset mieh, 3152
> > +     .cfi_offset mvienh, 3168
> > +     .cfi_offset mviph, 3172
> > +     .cfi_offset miph, 3408
> > +     .cfi_offset hvien, 6176
> > +     .cfi_offset hvictl, 6180
> > +     .cfi_offset hviprio1, 6424
> > +     .cfi_offset hviprio2, 6428
> > +     .cfi_offset hidelegh, 6220
> > +     .cfi_offset hvienh, 6240
> > +     .cfi_offset hviph, 6484
> > +     .cfi_offset hviprio1h, 6488
> > +     .cfi_offset hviprio2h, 6492
> >       # Smstateen extension
> >       .cfi_offset mstateen0, 3120
> >       .cfi_offset mstateen1, 3124
> > @@ -328,6 +351,19 @@ _start:
> >       .cfi_offset hstateen1h, 6260
> >       .cfi_offset hstateen2h, 6264
> >       .cfi_offset hstateen3h, 6268
> > +     # Ssaia extension
> > +     .cfi_offset siselect, 1344
> > +     .cfi_offset sireg, 1348
> > +     .cfi_offset stopei, 1392
> > +     .cfi_offset stopi, 14016
> > +     .cfi_offset sieh, 1104
> > +     .cfi_offset siph, 1360
> > +     .cfi_offset vsiselect, 2368
> > +     .cfi_offset vsireg, 2372
> > +     .cfi_offset vstopei, 2416
> > +     .cfi_offset vstopi, 15040
> > +     .cfi_offset vsieh, 2128
> > +     .cfi_offset vsiph, 2384
> >       # Sscofpmf extension
> >       .cfi_offset scountovf, 13952
> >       .cfi_offset mhpmevent3h, 7308
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d
> b/gas/testsuite/gas/riscv/csr-version-1p10.d
> > index bd8b10302e3..879c7e8a97d 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
> > @@ -601,6 +601,46 @@ Disassembly of section .text:
> >  [    ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >  [    ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >  [    ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> > +[    ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> > +[    ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> > +[    ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> > +[    ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> > +[    ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> > +[    ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> > +[    ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> > +[    ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> > +[    ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> > +[    ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> > +[    ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> > +[    ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> > +[    ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> > +[    ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> > +[    ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> > +[    ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> > +[    ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> > +[    ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> > +[    ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> > +[    ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> > +[    ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> > +[    ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> > +[    ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> > +[    ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> > +[    ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> > +[    ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> > +[    ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> > +[    ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> > +[    ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> > +[    ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> > +[    ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> > +[    ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> > +[    ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> > +[    ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> > +[    ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> > +[    ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> > +[    ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
> > +[    ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
> > +[    ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
> > +[    ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
> >  [    ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >  [    ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >  [    ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> > @@ -641,6 +681,30 @@ Disassembly of section .text:
> >  [    ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >  [    ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >  [    ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> > +[    ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> > +[    ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> > +[    ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> > +[    ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> > +[    ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> > +[    ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> > +[    ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> > +[    ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> > +[    ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> > +[    ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> > +[    ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> > +[    ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> > +[    ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
> > +[    ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
> > +[    ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> > +[    ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> > +[    ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> > +[    ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> > +[    ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> > +[    ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> > +[    ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> > +[    ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> > +[    ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> > +[    ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
> >  [    ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >  [    ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >  [    ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l
> b/gas/testsuite/gas/riscv/csr-version-1p10.l
> > index 999e9af1520..44499fa4dbe 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
> > @@ -411,6 +411,85 @@
> >  .*Warning: invalid CSR `vsip', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: read-only CSR is written `csrw mtopi,a1'
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> > @@ -483,6 +562,52 @@
> >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw stopi,a1'
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw vstopi,a1'
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: read-only CSR is written `csrw scountovf,a1'
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d
> b/gas/testsuite/gas/riscv/csr-version-1p11.d
> > index 5d6333884f1..70397194465 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
> > @@ -601,6 +601,46 @@ Disassembly of section .text:
> >  [    ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >  [    ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >  [    ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> > +[    ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> > +[    ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> > +[    ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> > +[    ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> > +[    ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> > +[    ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> > +[    ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> > +[    ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> > +[    ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> > +[    ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> > +[    ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> > +[    ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> > +[    ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> > +[    ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> > +[    ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> > +[    ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> > +[    ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> > +[    ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> > +[    ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> > +[    ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> > +[    ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> > +[    ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> > +[    ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> > +[    ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> > +[    ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> > +[    ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> > +[    ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> > +[    ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> > +[    ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> > +[    ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> > +[    ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> > +[    ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> > +[    ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> > +[    ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> > +[    ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> > +[    ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> > +[    ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
> > +[    ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
> > +[    ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
> > +[    ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
> >  [    ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >  [    ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >  [    ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> > @@ -641,6 +681,30 @@ Disassembly of section .text:
> >  [    ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >  [    ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >  [    ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> > +[    ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> > +[    ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> > +[    ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> > +[    ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> > +[    ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> > +[    ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> > +[    ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> > +[    ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> > +[    ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> > +[    ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> > +[    ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> > +[    ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> > +[    ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
> > +[    ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
> > +[    ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> > +[    ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> > +[    ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> > +[    ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> > +[    ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> > +[    ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> > +[    ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> > +[    ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> > +[    ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> > +[    ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
> >  [    ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >  [    ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >  [    ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l
> b/gas/testsuite/gas/riscv/csr-version-1p11.l
> > index a099e4ecc93..09a106806d2 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
> > @@ -409,6 +409,85 @@
> >  .*Warning: invalid CSR `vsip', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: read-only CSR is written `csrw mtopi,a1'
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> > @@ -481,6 +560,52 @@
> >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw stopi,a1'
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw vstopi,a1'
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: read-only CSR is written `csrw scountovf,a1'
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d
> b/gas/testsuite/gas/riscv/csr-version-1p12.d
> > index 728e647c552..142f60c216c 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
> > @@ -601,6 +601,46 @@ Disassembly of section .text:
> >  [    ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >  [    ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >  [    ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> > +[    ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> > +[    ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> > +[    ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> > +[    ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> > +[    ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> > +[    ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> > +[    ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> > +[    ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> > +[    ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> > +[    ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> > +[    ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> > +[    ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> > +[    ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> > +[    ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> > +[    ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> > +[    ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> > +[    ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> > +[    ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> > +[    ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> > +[    ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> > +[    ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> > +[    ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> > +[    ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> > +[    ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> > +[    ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> > +[    ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> > +[    ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> > +[    ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> > +[    ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> > +[    ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> > +[    ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> > +[    ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> > +[    ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> > +[    ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> > +[    ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> > +[    ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> > +[    ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
> > +[    ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
> > +[    ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
> > +[    ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
> >  [    ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >  [    ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >  [    ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> > @@ -641,6 +681,30 @@ Disassembly of section .text:
> >  [    ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >  [    ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >  [    ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> > +[    ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> > +[    ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> > +[    ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> > +[    ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> > +[    ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> > +[    ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> > +[    ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> > +[    ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> > +[    ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> > +[    ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> > +[    ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> > +[    ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> > +[    ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
> > +[    ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
> > +[    ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> > +[    ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> > +[    ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> > +[    ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> > +[    ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> > +[    ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> > +[    ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> > +[    ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> > +[    ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> > +[    ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
> >  [    ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >  [    ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >  [    ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l
> b/gas/testsuite/gas/riscv/csr-version-1p12.l
> > index cf8f2e25634..7b138244ee1 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
> > @@ -271,6 +271,85 @@
> >  .*Warning: invalid CSR `vsip', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: read-only CSR is written `csrw mtopi,a1'
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> > @@ -343,6 +422,52 @@
> >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw stopi,a1'
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw vstopi,a1'
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: read-only CSR is written `csrw scountovf,a1'
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> > index a34b99f4632..fa843727e80 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> > @@ -601,6 +601,46 @@ Disassembly of section .text:
> >  [    ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
> >  [    ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
> >  [    ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> > +[    ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> > +[    ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> > +[    ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> > +[    ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> > +[    ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> > +[    ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> > +[    ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> > +[    ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> > +[    ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> > +[    ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> > +[    ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> > +[    ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> > +[    ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> > +[    ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> > +[    ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> > +[    ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> > +[    ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> > +[    ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> > +[    ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> > +[    ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> > +[    ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> > +[    ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> > +[    ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> > +[    ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> > +[    ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> > +[    ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> > +[    ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> > +[    ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> > +[    ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> > +[    ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> > +[    ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> > +[    ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> > +[    ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> > +[    ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> > +[    ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> > +[    ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> > +[    ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
> > +[    ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
> > +[    ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
> > +[    ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
> >  [    ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
> >  [    ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
> >  [    ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> > @@ -641,6 +681,30 @@ Disassembly of section .text:
> >  [    ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
> >  [    ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
> >  [    ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> > +[    ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> > +[    ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> > +[    ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> > +[    ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> > +[    ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> > +[    ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> > +[    ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> > +[    ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> > +[    ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> > +[    ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> > +[    ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> > +[    ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> > +[    ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
> > +[    ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
> > +[    ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> > +[    ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> > +[    ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> > +[    ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> > +[    ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> > +[    ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> > +[    ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> > +[    ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> > +[    ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> > +[    ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
> >  [    ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
> >  [    ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
> >  [    ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> > diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> > index 5f298c1dda9..e63719ec066 100644
> > --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> > +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> > @@ -461,6 +461,85 @@
> >  .*Warning: invalid CSR `vsip', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> >  .*Warning: invalid CSR `vsatp', needs `h' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `miselect', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mireg', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> > +.*Warning: read-only CSR is written `csrw mtopi,a1'
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvien', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `mvip', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `midelegh', needs rv32i extension
> > +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mieh', needs rv32i extension
> > +.*Warning: invalid CSR `mieh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mvienh', needs rv32i extension
> > +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `mviph', needs rv32i extension
> > +.*Warning: invalid CSR `mviph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `miph', needs rv32i extension
> > +.*Warning: invalid CSR `miph', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvien', needs `h' extension
> > +.*Warning: invalid CSR `hvien', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hvictl', needs `h' extension
> > +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> > +.*Warning: invalid CSR `hidelegh', needs `h' extension
> > +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hvienh', needs rv32i extension
> > +.*Warning: invalid CSR `hvienh', needs `h' extension
> > +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviph', needs rv32i extension
> > +.*Warning: invalid CSR `hviph', needs `h' extension
> > +.*Warning: invalid CSR `hviph', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> > +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> > +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> > +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
> >  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> > @@ -533,6 +612,52 @@
> >  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
> >  .*Warning: invalid CSR `hstateen3h', needs `h' extension
> >  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw stopi,a1'
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `sieh', needs rv32i extension
> > +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `siph', needs rv32i extension
> > +.*Warning: invalid CSR `siph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiselect', needs `h' extension
> > +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsireg', needs `h' extension
> > +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopei', needs `h' extension
> > +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: invalid CSR `vstopi', needs `h' extension
> > +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> > +.*Warning: read-only CSR is written `csrw vstopi,a1'
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsieh', needs rv32i extension
> > +.*Warning: invalid CSR `vsieh', needs `h' extension
> > +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> > +.*Warning: invalid CSR `vsiph', needs rv32i extension
> > +.*Warning: invalid CSR `vsiph', needs `h' extension
> > +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
> >  .*Warning: read-only CSR is written `csrw scountovf,a1'
> > diff --git a/gas/testsuite/gas/riscv/csr.s
> b/gas/testsuite/gas/riscv/csr.s
> > index 128aeb83a04..21939b20a6d 100644
> > --- a/gas/testsuite/gas/riscv/csr.s
> > +++ b/gas/testsuite/gas/riscv/csr.s
> > @@ -337,6 +337,28 @@
> >       csr vsip
> >       csr vsatp
> >
> > +     # Smaia
> > +     csr miselect
> > +     csr mireg
> > +     csr mtopei
> > +     csr mtopi
> > +     csr mvien
> > +     csr mvip
> > +     csr midelegh
> > +     csr mieh
> > +     csr mvienh
> > +     csr mviph
> > +     csr miph
> > +     csr hvien
> > +     csr hvictl
> > +     csr hviprio1
> > +     csr hviprio2
> > +     csr hidelegh
> > +     csr hvienh
> > +     csr hviph
> > +     csr hviprio1h
> > +     csr hviprio2h
> > +
> >       # Smstateen extension
> >       csr mstateen0
> >       csr mstateen1
> > @@ -359,6 +381,20 @@
> >       csr hstateen2h
> >       csr hstateen3h
> >
> > +     # Ssaia
> > +     csr siselect
> > +     csr sireg
> > +     csr stopei
> > +     csr stopi
> > +     csr sieh
> > +     csr siph
> > +     csr vsiselect
> > +     csr vsireg
> > +     csr vstopei
> > +     csr vstopi
> > +     csr vsieh
> > +     csr vsiph
> > +
> >       # Sscofpmf extension
> >       csr scountovf
> >       csr mhpmevent3h
> > diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
> > index f36b06dcd6b..8beed0b1b42 100644
> > --- a/include/opcode/riscv-opc.h
> > +++ b/include/opcode/riscv-opc.h
> > @@ -2661,6 +2661,27 @@
> >  #define CSR_UIP 0x44
> >  #define CSR_SEDELEG 0x102
> >  #define CSR_SIDELEG 0x103
> > +/* Smaia extension */
> > +#define CSR_MISELECT 0x350
> > +#define CSR_MIREG    0x351
> > +#define CSR_MTOPEI   0x35c
> > +#define CSR_MTOPI    0xfb0
> > +#define CSR_MVIEN    0x308
> > +#define CSR_MVIP     0x309
> > +#define CSR_MIDELEGH 0x313
> > +#define CSR_MIEH     0x314
> > +#define CSR_MVIENH   0x318
> > +#define CSR_MVIPH    0x319
> > +#define CSR_MIPH     0x354
> > +#define CSR_HVIEN     0x608
> > +#define CSR_HVICTL    0x609
> > +#define CSR_HVIPRIO1  0x646
> > +#define CSR_HVIPRIO2  0x647
> > +#define CSR_HIDELEGH  0x613
> > +#define CSR_HVIENH    0x618
> > +#define CSR_HVIPH     0x655
> > +#define CSR_HVIPRIO1H 0x656
> > +#define CSR_HVIPRIO2H 0x657
> >  /* Smstateen extension */
> >  #define CSR_MSTATEEN0 0x30c
> >  #define CSR_MSTATEEN1 0x30d
> > @@ -2682,6 +2703,19 @@
> >  #define CSR_HSTATEEN1H 0x61d
> >  #define CSR_HSTATEEN2H 0x61e
> >  #define CSR_HSTATEEN3H 0x61f
> > +/* Ssaia extension */
> > +#define CSR_SISELECT 0x150
> > +#define CSR_SIREG    0x151
> > +#define CSR_STOPEI   0x15c
> > +#define CSR_STOPI    0xdb0
> > +#define CSR_SIEH     0x114
> > +#define CSR_SIPH     0x154
> > +#define CSR_VSISELECT 0x250
> > +#define CSR_VSIREG    0x251
> > +#define CSR_VSTOPEI   0x25c
> > +#define CSR_VSTOPI    0xeb0
> > +#define CSR_VSIEH     0x214
> > +#define CSR_VSIPH     0x254
> >  /* Sscofpmf extension */
> >  #define CSR_SCOUNTOVF 0xda0
> >  #define CSR_MHPMEVENT3H 0x723
> > @@ -3504,6 +3538,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
> >  DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> >  DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> >  DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +/* Smaia extension */
> > +DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hvien, CSR_HVIEN, CSR_CLASS_SMAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hvictl, CSR_HVICTL, CSR_CLASS_SMAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hviprio1, CSR_HVIPRIO1, CSR_CLASS_SMAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hviprio2, CSR_HVIPRIO2, CSR_CLASS_SMAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hidelegh, CSR_HIDELEGH, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hvienh, CSR_HVIENH, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hviph, CSR_HVIPH, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hviprio1h, CSR_HVIPRIO1H, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(hviprio2h, CSR_HVIPRIO2H, CSR_CLASS_SMAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >  /* Smstateen extension */
> >  DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >  DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > @@ -3525,6 +3580,19 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H,
> CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
> >  DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >  DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >  DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +/* Ssaia extension */
> > +DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE,
> PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(vsiselect, CSR_VSISELECT, CSR_CLASS_SSAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(vsireg, CSR_VSIREG, CSR_CLASS_SSAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(vstopei, CSR_VSTOPEI, CSR_CLASS_SSAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(vstopi, CSR_VSTOPI, CSR_CLASS_SSAIA_AND_H,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(vsieh, CSR_VSIEH, CSR_CLASS_SSAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> > +DECLARE_CSR(vsiph, CSR_VSIPH, CSR_CLASS_SSAIA_AND_H_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >  /* Sscofpmf extension */
> >  DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> >  DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32,
> PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-11-18  0:32 Christoph Muellner
  2022-11-18  5:07 ` Tsukasa OI
@ 2022-11-18  8:12 ` Nelson Chu
  2022-11-18  9:08   ` Christoph Müllner
  1 sibling, 1 reply; 19+ messages in thread
From: Nelson Chu @ 2022-11-18  8:12 UTC (permalink / raw)
  To: Christoph Muellner
  Cc: binutils, Andrew Waterman, Palmer Dabbelt, Jim Wilson, Philipp Tomsich

On Fri, Nov 18, 2022 at 8:32 AM Christoph Muellner
<christoph.muellner@vrull.eu> wrote:
>
> From: Christoph Müllner <christoph.muellner@vrull.eu>
>
> This commit adds the AIA extensions (Smaia and Ssaia) CSRs.
>
> bfd/ChangeLog:
>
>         * elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
>         of known standard extensions.
>
> gas/ChangeLog:
>
>         * config/tc-riscv.c (enum riscv_csr_class):
>         (riscv_csr_address): Add CSR classes for Smaia/Ssaia.
>         * testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
>         * testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
>         * testsuite/gas/riscv/csr-version-1p10.d: Likewise.
>         * testsuite/gas/riscv/csr-version-1p10.l: Likewise.
>         * testsuite/gas/riscv/csr-version-1p11.d: Likewise.
>         * testsuite/gas/riscv/csr-version-1p11.l: Likewise.
>         * testsuite/gas/riscv/csr-version-1p12.d: Likewise.
>         * testsuite/gas/riscv/csr-version-1p12.l: Likewise.
>         * testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
>         * testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
>         * testsuite/gas/riscv/csr.s: Likewise.
>
> include/ChangeLog:
>
>         * opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
>         (CSR_MIREG): Likewise.
>         (CSR_MTOPEI): Likewise.
>         (CSR_MTOPI): Likewise.
>         (CSR_MVIEN): Likewise.
>         (CSR_MVIP): Likewise.
>         (CSR_MIDELEGH): Likewise.
>         (CSR_MIEH): Likewise.
>         (CSR_MVIENH): Likewise.
>         (CSR_MVIPH): Likewise.
>         (CSR_MIPH): Likewise.
>         (CSR_HVIEN): Likewise.
>         (CSR_HVICTL): Likewise.
>         (CSR_HVIPRIO1): Likewise.
>         (CSR_HVIPRIO2): Likewise.
>         (CSR_HIDELEGH): Likewise.
>         (CSR_HVIENH): Likewise.
>         (CSR_HVIPH): Likewise.
>         (CSR_HVIPRIO1H): Likewise.
>         (CSR_HVIPRIO2H): Likewise.
>         (CSR_SISELECT): Likewise.
>         (CSR_SIREG): Likewise.
>         (CSR_STOPEI): Likewise.
>         (CSR_STOPI): Likewise.
>         (CSR_SIEH): Likewise.
>         (CSR_SIPH): Likewise.
>         (CSR_VSISELECT): Likewise.
>         (CSR_VSIREG): Likewise.
>         (CSR_VSTOPEI): Likewise.
>         (CSR_VSTOPI): Likewise.
>         (CSR_VSIEH): Likewise.
>         (CSR_VSIPH): Likewise.
>         (DECLARE_CSR): Add CSRs for Smaia and Ssaia.
>
> Changes for v2:
> - Add hypervisor and VS CSRs
> - Fix whitespace issue
>
> Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
> ---
>  bfd/elfxx-riscv.c                           |   2 +
>  gas/config/tc-riscv.c                       |  28 +++++
>  gas/testsuite/gas/riscv/csr-dw-regnums.d    |  32 +++++
>  gas/testsuite/gas/riscv/csr-dw-regnums.s    |  36 ++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.d  |  64 ++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 125 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.d  |  64 ++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 125 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.d  |  64 ++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 125 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.d |  64 ++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 125 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr.s               |  36 ++++++
>  include/opcode/riscv-opc.h                  |  68 +++++++++++
>  14 files changed, 958 insertions(+)
>
> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> index cfec9a6996c..dd75817b1bd 100644
> --- a/bfd/elfxx-riscv.c
> +++ b/bfd/elfxx-riscv.c
> @@ -1216,8 +1216,10 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
>
>  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
>  {
> +  {"smaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>    {"smepmp",           ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>    {"smstateen",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> +  {"ssaia",            ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>    {"sscofpmf",         ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>    {"sstc",             ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
>    {"svinval",          ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> index 2dc92ecd3c3..78aa15400f8 100644
> --- a/gas/config/tc-riscv.c
> +++ b/gas/config/tc-riscv.c
> @@ -68,10 +68,18 @@ enum riscv_csr_class
>    CSR_CLASS_DEBUG,     /* debug CSR */
>    CSR_CLASS_H,         /* hypervisor */
>    CSR_CLASS_H_32,      /* hypervisor, rv32 only */
> +  CSR_CLASS_SMAIA,             /* Smaia */
> +  CSR_CLASS_SMAIA_AND_H,       /* Smaia with H */
> +  CSR_CLASS_SMAIA_32,          /* Smaia, rv32 only */
> +  CSR_CLASS_SMAIA_AND_H_32,    /* Smaia with H, rv32 only */
>    CSR_CLASS_SMSTATEEN,         /* Smstateen only */
>    CSR_CLASS_SMSTATEEN_AND_H,   /* Smstateen only (with H) */
>    CSR_CLASS_SMSTATEEN_32,      /* Smstateen RV32 only */
>    CSR_CLASS_SMSTATEEN_AND_H_32,        /* Smstateen RV32 only (with H) */
> +  CSR_CLASS_SSAIA,             /* Ssaia */
> +  CSR_CLASS_SSAIA_AND_H,       /* Ssaia with H */
> +  CSR_CLASS_SSAIA_32,          /* Ssaia, rv32 only */
> +  CSR_CLASS_SSAIA_AND_H_32,    /* Ssaia with H, rv32 only */
>    CSR_CLASS_SSCOFPMF,          /* Sscofpmf only */
>    CSR_CLASS_SSCOFPMF_32,       /* Sscofpmf RV32 only */
>    CSR_CLASS_SSTC,              /* Sstc only */
> @@ -1028,6 +1036,16 @@ riscv_csr_address (const char *csr_name,
>      case CSR_CLASS_V:
>        extension = "zve32x";
>        break;
> +    case CSR_CLASS_SMAIA:
> +    case CSR_CLASS_SMAIA_AND_H:
> +    case CSR_CLASS_SMAIA_32:
> +    case CSR_CLASS_SMAIA_AND_H_32:
> +      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32
> +                     || csr_class == CSR_CLASS_SMAIA_AND_H_32);
> +      is_h_required = (csr_class == CSR_CLASS_SMAIA_AND_H
> +                      || csr_class == CSR_CLASS_SMAIA_AND_H_32);
> +      extension = "smaia";
> +      break;
>      case CSR_CLASS_SMSTATEEN:
>      case CSR_CLASS_SMSTATEEN_AND_H:
>      case CSR_CLASS_SMSTATEEN_32:
> @@ -1038,6 +1056,16 @@ riscv_csr_address (const char *csr_name,
>                       || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
>        extension = "smstateen";
>        break;
> +    case CSR_CLASS_SSAIA:
> +    case CSR_CLASS_SSAIA_AND_H:
> +    case CSR_CLASS_SSAIA_32:
> +    case CSR_CLASS_SSAIA_AND_H_32:
> +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32
> +                     || csr_class == CSR_CLASS_SSAIA_AND_H_32);
> +      is_h_required = (csr_class == CSR_CLASS_SSAIA_AND_H
> +                      || csr_class == CSR_CLASS_SSAIA_AND_H_32);
> +      extension = "ssaia";
> +      break;
>      case CSR_CLASS_SSCOFPMF_32:
>        is_rv32_only = true;
>        /* Fall through.  */
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> index b4b3806a085..dd238cf54a9 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> @@ -313,6 +313,26 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
>    DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
>    DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
> +  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
> +  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
> +  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
> +  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
> +  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
> +  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
> +  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
> +  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
> +  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
> +  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
> +  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
> +  DW_CFA_offset_extended_sf: r5640 \(hvien\) at cfa\+6176
> +  DW_CFA_offset_extended_sf: r5641 \(hvictl\) at cfa\+6180
> +  DW_CFA_offset_extended_sf: r5702 \(hviprio1\) at cfa\+6424
> +  DW_CFA_offset_extended_sf: r5703 \(hviprio2\) at cfa\+6428
> +  DW_CFA_offset_extended_sf: r5651 \(hidelegh\) at cfa\+6220
> +  DW_CFA_offset_extended_sf: r5656 \(hvienh\) at cfa\+6240
> +  DW_CFA_offset_extended_sf: r5717 \(hviph\) at cfa\+6484
> +  DW_CFA_offset_extended_sf: r5718 \(hviprio1h\) at cfa\+6488
> +  DW_CFA_offset_extended_sf: r5719 \(hviprio2h\) at cfa\+6492
>    DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
>    DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
>    DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
> @@ -333,6 +353,18 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
>    DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
>    DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
> +  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
> +  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
> +  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
> +  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
> +  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
> +  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
> +  DW_CFA_offset_extended_sf: r4688 \(vsiselect\) at cfa\+2368
> +  DW_CFA_offset_extended_sf: r4689 \(vsireg\) at cfa\+2372
> +  DW_CFA_offset_extended_sf: r4700 \(vstopei\) at cfa\+2416
> +  DW_CFA_offset_extended_sf: r7856 \(vstopi\) at cfa\+15040
> +  DW_CFA_offset_extended_sf: r4628 \(vsieh\) at cfa\+2128
> +  DW_CFA_offset_extended_sf: r4692 \(vsiph\) at cfa\+2384
>    DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
>    DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
>    DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> index 6cfa415ebc2..38b1e53dd6c 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> @@ -1,6 +1,8 @@
>  # Check that CFI directives can accept all of the CSR names (including
>  # aliases).  The results for this test also ensures that the DWARF
>  # register numbers for the CSRs shouldn't change.
> +# The register numbers are specified to be CSR-ID + 4096 (see psABI spec).
> +# The CFI offsets in this file are CSR-ID x 4.
>
>         .text
>         .global _start
> @@ -307,6 +309,27 @@ _start:
>         .cfi_offset vstval, 2316
>         .cfi_offset vsip, 2320
>         .cfi_offset vsatp, 2560
> +       # Smaia extension
> +       .cfi_offset miselect, 3392
> +       .cfi_offset mireg, 3396
> +       .cfi_offset mtopei, 3440
> +       .cfi_offset mtopi, 16064
> +       .cfi_offset mvien, 3104
> +       .cfi_offset mvip, 3108
> +       .cfi_offset midelegh, 3148
> +       .cfi_offset mieh, 3152
> +       .cfi_offset mvienh, 3168
> +       .cfi_offset mviph, 3172
> +       .cfi_offset miph, 3408
> +       .cfi_offset hvien, 6176
> +       .cfi_offset hvictl, 6180
> +       .cfi_offset hviprio1, 6424
> +       .cfi_offset hviprio2, 6428
> +       .cfi_offset hidelegh, 6220
> +       .cfi_offset hvienh, 6240
> +       .cfi_offset hviph, 6484
> +       .cfi_offset hviprio1h, 6488
> +       .cfi_offset hviprio2h, 6492
>         # Smstateen extension
>         .cfi_offset mstateen0, 3120
>         .cfi_offset mstateen1, 3124
> @@ -328,6 +351,19 @@ _start:
>         .cfi_offset hstateen1h, 6260
>         .cfi_offset hstateen2h, 6264
>         .cfi_offset hstateen3h, 6268
> +       # Ssaia extension
> +       .cfi_offset siselect, 1344
> +       .cfi_offset sireg, 1348
> +       .cfi_offset stopei, 1392
> +       .cfi_offset stopi, 14016
> +       .cfi_offset sieh, 1104
> +       .cfi_offset siph, 1360
> +       .cfi_offset vsiselect, 2368
> +       .cfi_offset vsireg, 2372
> +       .cfi_offset vstopei, 2416
> +       .cfi_offset vstopi, 15040
> +       .cfi_offset vsieh, 2128
> +       .cfi_offset vsiph, 2384
>         # Sscofpmf extension
>         .cfi_offset scountovf, 13952
>         .cfi_offset mhpmevent3h, 7308
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
> index bd8b10302e3..879c7e8a97d 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
> @@ -601,6 +601,46 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> +[      ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> +[      ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> +[      ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> +[      ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> +[      ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> +[      ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> +[      ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> +[      ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> +[      ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> +[      ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> +[      ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> +[      ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> +[      ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> +[      ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> +[      ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
> +[      ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
> +[      ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
> +[      ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> @@ -641,6 +681,30 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> +[      ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
> +[      ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
> +[      ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> +[      ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> +[      ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> +[      ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> +[      ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> +[      ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> +[      ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> +[      ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> +[      ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> +[      ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
> index 999e9af1520..44499fa4dbe 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
> @@ -411,6 +411,85 @@
>  .*Warning: invalid CSR `vsip', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> @@ -483,6 +562,52 @@
>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw stopi,a1'
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw vstopi,a1'
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
> index 5d6333884f1..70397194465 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
> @@ -601,6 +601,46 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> +[      ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> +[      ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> +[      ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> +[      ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> +[      ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> +[      ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> +[      ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> +[      ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> +[      ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> +[      ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> +[      ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> +[      ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> +[      ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> +[      ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> +[      ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
> +[      ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
> +[      ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
> +[      ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> @@ -641,6 +681,30 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> +[      ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
> +[      ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
> +[      ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> +[      ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> +[      ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> +[      ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> +[      ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> +[      ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> +[      ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> +[      ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> +[      ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> +[      ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
> index a099e4ecc93..09a106806d2 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
> @@ -409,6 +409,85 @@
>  .*Warning: invalid CSR `vsip', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> @@ -481,6 +560,52 @@
>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw stopi,a1'
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw vstopi,a1'
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
> index 728e647c552..142f60c216c 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
> @@ -601,6 +601,46 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> +[      ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> +[      ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> +[      ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> +[      ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> +[      ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> +[      ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> +[      ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> +[      ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> +[      ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> +[      ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> +[      ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> +[      ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> +[      ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> +[      ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> +[      ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
> +[      ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
> +[      ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
> +[      ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> @@ -641,6 +681,30 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> +[      ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
> +[      ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
> +[      ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> +[      ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> +[      ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> +[      ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> +[      ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> +[      ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> +[      ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> +[      ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> +[      ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> +[      ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
> index cf8f2e25634..7b138244ee1 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
> @@ -271,6 +271,85 @@
>  .*Warning: invalid CSR `vsip', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> @@ -343,6 +422,52 @@
>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw stopi,a1'
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw vstopi,a1'
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> index a34b99f4632..fa843727e80 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> @@ -601,6 +601,46 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
>  [      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
>  [      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
> +[      ]+[0-9a-f]+:[   ]+35002573[     ]+csrr[         ]+a0,miselect
> +[      ]+[0-9a-f]+:[   ]+35059073[     ]+csrw[         ]+miselect,a1
> +[      ]+[0-9a-f]+:[   ]+35102573[     ]+csrr[         ]+a0,mireg
> +[      ]+[0-9a-f]+:[   ]+35159073[     ]+csrw[         ]+mireg,a1
> +[      ]+[0-9a-f]+:[   ]+35c02573[     ]+csrr[         ]+a0,mtopei
> +[      ]+[0-9a-f]+:[   ]+35c59073[     ]+csrw[         ]+mtopei,a1
> +[      ]+[0-9a-f]+:[   ]+fb002573[     ]+csrr[         ]+a0,mtopi
> +[      ]+[0-9a-f]+:[   ]+fb059073[     ]+csrw[         ]+mtopi,a1
> +[      ]+[0-9a-f]+:[   ]+30802573[     ]+csrr[         ]+a0,mvien
> +[      ]+[0-9a-f]+:[   ]+30859073[     ]+csrw[         ]+mvien,a1
> +[      ]+[0-9a-f]+:[   ]+30902573[     ]+csrr[         ]+a0,mvip
> +[      ]+[0-9a-f]+:[   ]+30959073[     ]+csrw[         ]+mvip,a1
> +[      ]+[0-9a-f]+:[   ]+31302573[     ]+csrr[         ]+a0,midelegh
> +[      ]+[0-9a-f]+:[   ]+31359073[     ]+csrw[         ]+midelegh,a1
> +[      ]+[0-9a-f]+:[   ]+31402573[     ]+csrr[         ]+a0,mieh
> +[      ]+[0-9a-f]+:[   ]+31459073[     ]+csrw[         ]+mieh,a1
> +[      ]+[0-9a-f]+:[   ]+31802573[     ]+csrr[         ]+a0,mvienh
> +[      ]+[0-9a-f]+:[   ]+31859073[     ]+csrw[         ]+mvienh,a1
> +[      ]+[0-9a-f]+:[   ]+31902573[     ]+csrr[         ]+a0,mviph
> +[      ]+[0-9a-f]+:[   ]+31959073[     ]+csrw[         ]+mviph,a1
> +[      ]+[0-9a-f]+:[   ]+35402573[     ]+csrr[         ]+a0,miph
> +[      ]+[0-9a-f]+:[   ]+35459073[     ]+csrw[         ]+miph,a1
> +[      ]+[0-9a-f]+:[   ]+60802573[     ]+csrr[         ]+a0,hvien
> +[      ]+[0-9a-f]+:[   ]+60859073[     ]+csrw[         ]+hvien,a1
> +[      ]+[0-9a-f]+:[   ]+60902573[     ]+csrr[         ]+a0,hvictl
> +[      ]+[0-9a-f]+:[   ]+60959073[     ]+csrw[         ]+hvictl,a1
> +[      ]+[0-9a-f]+:[   ]+64602573[     ]+csrr[         ]+a0,hviprio1
> +[      ]+[0-9a-f]+:[   ]+64659073[     ]+csrw[         ]+hviprio1,a1
> +[      ]+[0-9a-f]+:[   ]+64702573[     ]+csrr[         ]+a0,hviprio2
> +[      ]+[0-9a-f]+:[   ]+64759073[     ]+csrw[         ]+hviprio2,a1
> +[      ]+[0-9a-f]+:[   ]+61302573[     ]+csrr[         ]+a0,hidelegh
> +[      ]+[0-9a-f]+:[   ]+61359073[     ]+csrw[         ]+hidelegh,a1
> +[      ]+[0-9a-f]+:[   ]+61802573[     ]+csrr[         ]+a0,hvienh
> +[      ]+[0-9a-f]+:[   ]+61859073[     ]+csrw[         ]+hvienh,a1
> +[      ]+[0-9a-f]+:[   ]+65502573[     ]+csrr[         ]+a0,hviph
> +[      ]+[0-9a-f]+:[   ]+65559073[     ]+csrw[         ]+hviph,a1
> +[      ]+[0-9a-f]+:[   ]+65602573[     ]+csrr[         ]+a0,hviprio1h
> +[      ]+[0-9a-f]+:[   ]+65659073[     ]+csrw[         ]+hviprio1h,a1
> +[      ]+[0-9a-f]+:[   ]+65702573[     ]+csrr[         ]+a0,hviprio2h
> +[      ]+[0-9a-f]+:[   ]+65759073[     ]+csrw[         ]+hviprio2h,a1
>  [      ]+[0-9a-f]+:[   ]+30c02573[     ]+csrr[         ]+a0,mstateen0
>  [      ]+[0-9a-f]+:[   ]+30c59073[     ]+csrw[         ]+mstateen0,a1
>  [      ]+[0-9a-f]+:[   ]+30d02573[     ]+csrr[         ]+a0,mstateen1
> @@ -641,6 +681,30 @@ Disassembly of section .text:
>  [      ]+[0-9a-f]+:[   ]+61e59073[     ]+csrw[         ]+hstateen2h,a1
>  [      ]+[0-9a-f]+:[   ]+61f02573[     ]+csrr[         ]+a0,hstateen3h
>  [      ]+[0-9a-f]+:[   ]+61f59073[     ]+csrw[         ]+hstateen3h,a1
> +[      ]+[0-9a-f]+:[   ]+15002573[     ]+csrr[         ]+a0,siselect
> +[      ]+[0-9a-f]+:[   ]+15059073[     ]+csrw[         ]+siselect,a1
> +[      ]+[0-9a-f]+:[   ]+15102573[     ]+csrr[         ]+a0,sireg
> +[      ]+[0-9a-f]+:[   ]+15159073[     ]+csrw[         ]+sireg,a1
> +[      ]+[0-9a-f]+:[   ]+15c02573[     ]+csrr[         ]+a0,stopei
> +[      ]+[0-9a-f]+:[   ]+15c59073[     ]+csrw[         ]+stopei,a1
> +[      ]+[0-9a-f]+:[   ]+db002573[     ]+csrr[         ]+a0,stopi
> +[      ]+[0-9a-f]+:[   ]+db059073[     ]+csrw[         ]+stopi,a1
> +[      ]+[0-9a-f]+:[   ]+11402573[     ]+csrr[         ]+a0,sieh
> +[      ]+[0-9a-f]+:[   ]+11459073[     ]+csrw[         ]+sieh,a1
> +[      ]+[0-9a-f]+:[   ]+15402573[     ]+csrr[         ]+a0,siph
> +[      ]+[0-9a-f]+:[   ]+15459073[     ]+csrw[         ]+siph,a1
> +[      ]+[0-9a-f]+:[   ]+25002573[     ]+csrr[         ]+a0,vsiselect
> +[      ]+[0-9a-f]+:[   ]+25059073[     ]+csrw[         ]+vsiselect,a1
> +[      ]+[0-9a-f]+:[   ]+25102573[     ]+csrr[         ]+a0,vsireg
> +[      ]+[0-9a-f]+:[   ]+25159073[     ]+csrw[         ]+vsireg,a1
> +[      ]+[0-9a-f]+:[   ]+25c02573[     ]+csrr[         ]+a0,vstopei
> +[      ]+[0-9a-f]+:[   ]+25c59073[     ]+csrw[         ]+vstopei,a1
> +[      ]+[0-9a-f]+:[   ]+eb002573[     ]+csrr[         ]+a0,vstopi
> +[      ]+[0-9a-f]+:[   ]+eb059073[     ]+csrw[         ]+vstopi,a1
> +[      ]+[0-9a-f]+:[   ]+21402573[     ]+csrr[         ]+a0,vsieh
> +[      ]+[0-9a-f]+:[   ]+21459073[     ]+csrw[         ]+vsieh,a1
> +[      ]+[0-9a-f]+:[   ]+25402573[     ]+csrr[         ]+a0,vsiph
> +[      ]+[0-9a-f]+:[   ]+25459073[     ]+csrw[         ]+vsiph,a1
>  [      ]+[0-9a-f]+:[   ]+da002573[     ]+csrr[         ]+a0,scountovf
>  [      ]+[0-9a-f]+:[   ]+da059073[     ]+csrw[         ]+scountovf,a1
>  [      ]+[0-9a-f]+:[   ]+72302573[     ]+csrr[         ]+a0,mhpmevent3h
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> index 5f298c1dda9..e63719ec066 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> @@ -461,6 +461,85 @@
>  .*Warning: invalid CSR `vsip', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> @@ -533,6 +612,52 @@
>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw stopi,a1'
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw vstopi,a1'
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
> index 128aeb83a04..21939b20a6d 100644
> --- a/gas/testsuite/gas/riscv/csr.s
> +++ b/gas/testsuite/gas/riscv/csr.s
> @@ -337,6 +337,28 @@
>         csr vsip
>         csr vsatp
>
> +       # Smaia
> +       csr miselect
> +       csr mireg
> +       csr mtopei
> +       csr mtopi
> +       csr mvien
> +       csr mvip
> +       csr midelegh
> +       csr mieh
> +       csr mvienh
> +       csr mviph
> +       csr miph
> +       csr hvien
> +       csr hvictl
> +       csr hviprio1
> +       csr hviprio2
> +       csr hidelegh
> +       csr hvienh
> +       csr hviph
> +       csr hviprio1h
> +       csr hviprio2h
> +
>         # Smstateen extension
>         csr mstateen0
>         csr mstateen1
> @@ -359,6 +381,20 @@
>         csr hstateen2h
>         csr hstateen3h
>
> +       # Ssaia
> +       csr siselect
> +       csr sireg
> +       csr stopei
> +       csr stopi
> +       csr sieh
> +       csr siph
> +       csr vsiselect
> +       csr vsireg
> +       csr vstopei
> +       csr vstopi
> +       csr vsieh
> +       csr vsiph
> +
>         # Sscofpmf extension
>         csr scountovf
>         csr mhpmevent3h
> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
> index f36b06dcd6b..8beed0b1b42 100644
> --- a/include/opcode/riscv-opc.h
> +++ b/include/opcode/riscv-opc.h
> @@ -2661,6 +2661,27 @@
>  #define CSR_UIP 0x44
>  #define CSR_SEDELEG 0x102
>  #define CSR_SIDELEG 0x103
> +/* Smaia extension */
> +#define CSR_MISELECT 0x350
> +#define CSR_MIREG    0x351
> +#define CSR_MTOPEI   0x35c
> +#define CSR_MTOPI    0xfb0
> +#define CSR_MVIEN    0x308
> +#define CSR_MVIP     0x309
> +#define CSR_MIDELEGH 0x313
> +#define CSR_MIEH     0x314
> +#define CSR_MVIENH   0x318
> +#define CSR_MVIPH    0x319
> +#define CSR_MIPH     0x354
> +#define CSR_HVIEN     0x608
> +#define CSR_HVICTL    0x609
> +#define CSR_HVIPRIO1  0x646
> +#define CSR_HVIPRIO2  0x647
> +#define CSR_HIDELEGH  0x613
> +#define CSR_HVIENH    0x618
> +#define CSR_HVIPH     0x655
> +#define CSR_HVIPRIO1H 0x656
> +#define CSR_HVIPRIO2H 0x657
>  /* Smstateen extension */
>  #define CSR_MSTATEEN0 0x30c
>  #define CSR_MSTATEEN1 0x30d
> @@ -2682,6 +2703,19 @@
>  #define CSR_HSTATEEN1H 0x61d
>  #define CSR_HSTATEEN2H 0x61e
>  #define CSR_HSTATEEN3H 0x61f
> +/* Ssaia extension */
> +#define CSR_SISELECT 0x150
> +#define CSR_SIREG    0x151
> +#define CSR_STOPEI   0x15c
> +#define CSR_STOPI    0xdb0
> +#define CSR_SIEH     0x114
> +#define CSR_SIPH     0x154
> +#define CSR_VSISELECT 0x250
> +#define CSR_VSIREG    0x251
> +#define CSR_VSTOPEI   0x25c
> +#define CSR_VSTOPI    0xeb0
> +#define CSR_VSIEH     0x214
> +#define CSR_VSIPH     0x254
>  /* Sscofpmf extension */
>  #define CSR_SCOUNTOVF 0xda0
>  #define CSR_MHPMEVENT3H 0x723
> @@ -3504,6 +3538,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
>  DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +/* Smaia extension */
> +DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)

> +DECLARE_CSR(hvien, CSR_HVIEN, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hvictl, CSR_HVICTL, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hviprio1, CSR_HVIPRIO1, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hviprio2, CSR_HVIPRIO2, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hidelegh, CSR_HIDELEGH, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hvienh, CSR_HVIENH, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hviph, CSR_HVIPH, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hviprio1h, CSR_HVIPRIO1H, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hviprio2h, CSR_HVIPRIO2H, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)

Just curious does the spec clarify these belonged to smaia? or should
these just belonged to h?

>  /* Smstateen extension */
>  DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> @@ -3525,6 +3580,19 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
>  DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +/* Ssaia extension */
> +DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)

> +DECLARE_CSR(vsiselect, CSR_VSISELECT, CSR_CLASS_SSAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(vsireg, CSR_VSIREG, CSR_CLASS_SSAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(vstopei, CSR_VSTOPEI, CSR_CLASS_SSAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(vstopi, CSR_VSTOPI, CSR_CLASS_SSAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(vsieh, CSR_VSIEH, CSR_CLASS_SSAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(vsiph, CSR_VSIPH, CSR_CLASS_SSAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)

Similar, should these belonged to only h? or ssaia + h?

Thanks
Nelson

>  /* Sscofpmf extension */
>  DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> --
> 2.38.1
>

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
  2022-11-18  0:32 Christoph Muellner
@ 2022-11-18  5:07 ` Tsukasa OI
  2022-11-18  8:33   ` Christoph Müllner
  2022-11-18  8:12 ` Nelson Chu
  1 sibling, 1 reply; 19+ messages in thread
From: Tsukasa OI @ 2022-11-18  5:07 UTC (permalink / raw)
  To: Christoph Muellner, Binutils

[-- Attachment #1: Type: text/plain, Size: 70587 bytes --]

LGTM except it misses riscv_implicit_subsets.  I think all privileged
extensions with either:
*   New CSRs
*   New CSR bits
*   Dependency with use of CSRs
will be required to add 'Zicsr' to its implication.

Quick Background: The privileged architecture itself depends on 'Zicsr'
but there's no direct way to detect the privileged architecture itself).

The patch attached will make this commit complete.

Thanks,
Tsukasa

On 2022/11/18 9:32, Christoph Muellner wrote:
> From: Christoph Müllner <christoph.muellner@vrull.eu>
> 
> This commit adds the AIA extensions (Smaia and Ssaia) CSRs.
> 
> bfd/ChangeLog:
> 
> 	* elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
> 	of known standard extensions.
> 
> gas/ChangeLog:
> 
> 	* config/tc-riscv.c (enum riscv_csr_class):
> 	(riscv_csr_address): Add CSR classes for Smaia/Ssaia.
> 	* testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
> 	* testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p10.d: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p10.l: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p11.d: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p11.l: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p12.d: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p12.l: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
> 	* testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
> 	* testsuite/gas/riscv/csr.s: Likewise.
> 
> include/ChangeLog:
> 
> 	* opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
> 	(CSR_MIREG): Likewise.
> 	(CSR_MTOPEI): Likewise.
> 	(CSR_MTOPI): Likewise.
> 	(CSR_MVIEN): Likewise.
> 	(CSR_MVIP): Likewise.
> 	(CSR_MIDELEGH): Likewise.
> 	(CSR_MIEH): Likewise.
> 	(CSR_MVIENH): Likewise.
> 	(CSR_MVIPH): Likewise.
> 	(CSR_MIPH): Likewise.
> 	(CSR_HVIEN): Likewise.
> 	(CSR_HVICTL): Likewise.
> 	(CSR_HVIPRIO1): Likewise.
> 	(CSR_HVIPRIO2): Likewise.
> 	(CSR_HIDELEGH): Likewise.
> 	(CSR_HVIENH): Likewise.
> 	(CSR_HVIPH): Likewise.
> 	(CSR_HVIPRIO1H): Likewise.
> 	(CSR_HVIPRIO2H): Likewise.
> 	(CSR_SISELECT): Likewise.
> 	(CSR_SIREG): Likewise.
> 	(CSR_STOPEI): Likewise.
> 	(CSR_STOPI): Likewise.
> 	(CSR_SIEH): Likewise.
> 	(CSR_SIPH): Likewise.
> 	(CSR_VSISELECT): Likewise.
> 	(CSR_VSIREG): Likewise.
> 	(CSR_VSTOPEI): Likewise.
> 	(CSR_VSTOPI): Likewise.
> 	(CSR_VSIEH): Likewise.
> 	(CSR_VSIPH): Likewise.
> 	(DECLARE_CSR): Add CSRs for Smaia and Ssaia.
> 
> Changes for v2:
> - Add hypervisor and VS CSRs
> - Fix whitespace issue
> 
> Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
> ---
>  bfd/elfxx-riscv.c                           |   2 +
>  gas/config/tc-riscv.c                       |  28 +++++
>  gas/testsuite/gas/riscv/csr-dw-regnums.d    |  32 +++++
>  gas/testsuite/gas/riscv/csr-dw-regnums.s    |  36 ++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.d  |  64 ++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 125 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.d  |  64 ++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 125 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.d  |  64 ++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 125 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.d |  64 ++++++++++
>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 125 ++++++++++++++++++++
>  gas/testsuite/gas/riscv/csr.s               |  36 ++++++
>  include/opcode/riscv-opc.h                  |  68 +++++++++++
>  14 files changed, 958 insertions(+)
> 
> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> index cfec9a6996c..dd75817b1bd 100644
> --- a/bfd/elfxx-riscv.c
> +++ b/bfd/elfxx-riscv.c
> @@ -1216,8 +1216,10 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
>  
>  static struct riscv_supported_ext riscv_supported_std_s_ext[] =
>  {
> +  {"smaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>    {"smepmp",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>    {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
> +  {"ssaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>    {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>    {"sstc",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
>    {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> index 2dc92ecd3c3..78aa15400f8 100644
> --- a/gas/config/tc-riscv.c
> +++ b/gas/config/tc-riscv.c
> @@ -68,10 +68,18 @@ enum riscv_csr_class
>    CSR_CLASS_DEBUG,	/* debug CSR */
>    CSR_CLASS_H,		/* hypervisor */
>    CSR_CLASS_H_32,	/* hypervisor, rv32 only */
> +  CSR_CLASS_SMAIA,		/* Smaia */
> +  CSR_CLASS_SMAIA_AND_H,	/* Smaia with H */
> +  CSR_CLASS_SMAIA_32,		/* Smaia, rv32 only */
> +  CSR_CLASS_SMAIA_AND_H_32,	/* Smaia with H, rv32 only */
>    CSR_CLASS_SMSTATEEN,		/* Smstateen only */
>    CSR_CLASS_SMSTATEEN_AND_H,	/* Smstateen only (with H) */
>    CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
>    CSR_CLASS_SMSTATEEN_AND_H_32,	/* Smstateen RV32 only (with H) */
> +  CSR_CLASS_SSAIA,		/* Ssaia */
> +  CSR_CLASS_SSAIA_AND_H,	/* Ssaia with H */
> +  CSR_CLASS_SSAIA_32,		/* Ssaia, rv32 only */
> +  CSR_CLASS_SSAIA_AND_H_32,	/* Ssaia with H, rv32 only */
>    CSR_CLASS_SSCOFPMF,		/* Sscofpmf only */
>    CSR_CLASS_SSCOFPMF_32,	/* Sscofpmf RV32 only */
>    CSR_CLASS_SSTC,		/* Sstc only */
> @@ -1028,6 +1036,16 @@ riscv_csr_address (const char *csr_name,
>      case CSR_CLASS_V:
>        extension = "zve32x";
>        break;
> +    case CSR_CLASS_SMAIA:
> +    case CSR_CLASS_SMAIA_AND_H:
> +    case CSR_CLASS_SMAIA_32:
> +    case CSR_CLASS_SMAIA_AND_H_32:
> +      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32
> +		      || csr_class == CSR_CLASS_SMAIA_AND_H_32);
> +      is_h_required = (csr_class == CSR_CLASS_SMAIA_AND_H
> +		       || csr_class == CSR_CLASS_SMAIA_AND_H_32);
> +      extension = "smaia";
> +      break;
>      case CSR_CLASS_SMSTATEEN:
>      case CSR_CLASS_SMSTATEEN_AND_H:
>      case CSR_CLASS_SMSTATEEN_32:
> @@ -1038,6 +1056,16 @@ riscv_csr_address (const char *csr_name,
>  		      || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
>        extension = "smstateen";
>        break;
> +    case CSR_CLASS_SSAIA:
> +    case CSR_CLASS_SSAIA_AND_H:
> +    case CSR_CLASS_SSAIA_32:
> +    case CSR_CLASS_SSAIA_AND_H_32:
> +      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32
> +		      || csr_class == CSR_CLASS_SSAIA_AND_H_32);
> +      is_h_required = (csr_class == CSR_CLASS_SSAIA_AND_H
> +		       || csr_class == CSR_CLASS_SSAIA_AND_H_32);
> +      extension = "ssaia";
> +      break;
>      case CSR_CLASS_SSCOFPMF_32:
>        is_rv32_only = true;
>        /* Fall through.  */
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> index b4b3806a085..dd238cf54a9 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
> @@ -313,6 +313,26 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
>    DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
>    DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
> +  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
> +  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
> +  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
> +  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
> +  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
> +  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
> +  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
> +  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
> +  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
> +  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
> +  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
> +  DW_CFA_offset_extended_sf: r5640 \(hvien\) at cfa\+6176
> +  DW_CFA_offset_extended_sf: r5641 \(hvictl\) at cfa\+6180
> +  DW_CFA_offset_extended_sf: r5702 \(hviprio1\) at cfa\+6424
> +  DW_CFA_offset_extended_sf: r5703 \(hviprio2\) at cfa\+6428
> +  DW_CFA_offset_extended_sf: r5651 \(hidelegh\) at cfa\+6220
> +  DW_CFA_offset_extended_sf: r5656 \(hvienh\) at cfa\+6240
> +  DW_CFA_offset_extended_sf: r5717 \(hviph\) at cfa\+6484
> +  DW_CFA_offset_extended_sf: r5718 \(hviprio1h\) at cfa\+6488
> +  DW_CFA_offset_extended_sf: r5719 \(hviprio2h\) at cfa\+6492
>    DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
>    DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
>    DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
> @@ -333,6 +353,18 @@ Contents of the .* section:
>    DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
>    DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
>    DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
> +  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
> +  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
> +  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
> +  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
> +  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
> +  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
> +  DW_CFA_offset_extended_sf: r4688 \(vsiselect\) at cfa\+2368
> +  DW_CFA_offset_extended_sf: r4689 \(vsireg\) at cfa\+2372
> +  DW_CFA_offset_extended_sf: r4700 \(vstopei\) at cfa\+2416
> +  DW_CFA_offset_extended_sf: r7856 \(vstopi\) at cfa\+15040
> +  DW_CFA_offset_extended_sf: r4628 \(vsieh\) at cfa\+2128
> +  DW_CFA_offset_extended_sf: r4692 \(vsiph\) at cfa\+2384
>    DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
>    DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
>    DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
> diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> index 6cfa415ebc2..38b1e53dd6c 100644
> --- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
> +++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
> @@ -1,6 +1,8 @@
>  # Check that CFI directives can accept all of the CSR names (including
>  # aliases).  The results for this test also ensures that the DWARF
>  # register numbers for the CSRs shouldn't change.
> +# The register numbers are specified to be CSR-ID + 4096 (see psABI spec).
> +# The CFI offsets in this file are CSR-ID x 4.
>  
>  	.text
>  	.global _start
> @@ -307,6 +309,27 @@ _start:
>  	.cfi_offset vstval, 2316
>  	.cfi_offset vsip, 2320
>  	.cfi_offset vsatp, 2560
> +	# Smaia extension
> +	.cfi_offset miselect, 3392
> +	.cfi_offset mireg, 3396
> +	.cfi_offset mtopei, 3440
> +	.cfi_offset mtopi, 16064
> +	.cfi_offset mvien, 3104
> +	.cfi_offset mvip, 3108
> +	.cfi_offset midelegh, 3148
> +	.cfi_offset mieh, 3152
> +	.cfi_offset mvienh, 3168
> +	.cfi_offset mviph, 3172
> +	.cfi_offset miph, 3408
> +	.cfi_offset hvien, 6176
> +	.cfi_offset hvictl, 6180
> +	.cfi_offset hviprio1, 6424
> +	.cfi_offset hviprio2, 6428
> +	.cfi_offset hidelegh, 6220
> +	.cfi_offset hvienh, 6240
> +	.cfi_offset hviph, 6484
> +	.cfi_offset hviprio1h, 6488
> +	.cfi_offset hviprio2h, 6492
>  	# Smstateen extension
>  	.cfi_offset mstateen0, 3120
>  	.cfi_offset mstateen1, 3124
> @@ -328,6 +351,19 @@ _start:
>  	.cfi_offset hstateen1h, 6260
>  	.cfi_offset hstateen2h, 6264
>  	.cfi_offset hstateen3h, 6268
> +	# Ssaia extension
> +	.cfi_offset siselect, 1344
> +	.cfi_offset sireg, 1348
> +	.cfi_offset stopei, 1392
> +	.cfi_offset stopi, 14016
> +	.cfi_offset sieh, 1104
> +	.cfi_offset siph, 1360
> +	.cfi_offset vsiselect, 2368
> +	.cfi_offset vsireg, 2372
> +	.cfi_offset vstopei, 2416
> +	.cfi_offset vstopi, 15040
> +	.cfi_offset vsieh, 2128
> +	.cfi_offset vsiph, 2384
>  	# Sscofpmf extension
>  	.cfi_offset scountovf, 13952
>  	.cfi_offset mhpmevent3h, 7308
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
> index bd8b10302e3..879c7e8a97d 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
> @@ -601,6 +601,46 @@ Disassembly of section .text:
>  [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
>  [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
>  [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
> +[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
> +[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
> +[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
> +[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
> +[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
> +[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
> +[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
> +[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
> +[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
> +[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
> +[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
> +[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
> +[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
> +[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
> +[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
> +[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
> +[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
> +[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
> +[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
> +[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
> +[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
> +[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
> +[ 	]+[0-9a-f]+:[ 	]+60802573[ 	]+csrr[ 	]+a0,hvien
> +[ 	]+[0-9a-f]+:[ 	]+60859073[ 	]+csrw[ 	]+hvien,a1
> +[ 	]+[0-9a-f]+:[ 	]+60902573[ 	]+csrr[ 	]+a0,hvictl
> +[ 	]+[0-9a-f]+:[ 	]+60959073[ 	]+csrw[ 	]+hvictl,a1
> +[ 	]+[0-9a-f]+:[ 	]+64602573[ 	]+csrr[ 	]+a0,hviprio1
> +[ 	]+[0-9a-f]+:[ 	]+64659073[ 	]+csrw[ 	]+hviprio1,a1
> +[ 	]+[0-9a-f]+:[ 	]+64702573[ 	]+csrr[ 	]+a0,hviprio2
> +[ 	]+[0-9a-f]+:[ 	]+64759073[ 	]+csrw[ 	]+hviprio2,a1
> +[ 	]+[0-9a-f]+:[ 	]+61302573[ 	]+csrr[ 	]+a0,hidelegh
> +[ 	]+[0-9a-f]+:[ 	]+61359073[ 	]+csrw[ 	]+hidelegh,a1
> +[ 	]+[0-9a-f]+:[ 	]+61802573[ 	]+csrr[ 	]+a0,hvienh
> +[ 	]+[0-9a-f]+:[ 	]+61859073[ 	]+csrw[ 	]+hvienh,a1
> +[ 	]+[0-9a-f]+:[ 	]+65502573[ 	]+csrr[ 	]+a0,hviph
> +[ 	]+[0-9a-f]+:[ 	]+65559073[ 	]+csrw[ 	]+hviph,a1
> +[ 	]+[0-9a-f]+:[ 	]+65602573[ 	]+csrr[ 	]+a0,hviprio1h
> +[ 	]+[0-9a-f]+:[ 	]+65659073[ 	]+csrw[ 	]+hviprio1h,a1
> +[ 	]+[0-9a-f]+:[ 	]+65702573[ 	]+csrr[ 	]+a0,hviprio2h
> +[ 	]+[0-9a-f]+:[ 	]+65759073[ 	]+csrw[ 	]+hviprio2h,a1
>  [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
>  [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
>  [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
> @@ -641,6 +681,30 @@ Disassembly of section .text:
>  [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
>  [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
>  [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
> +[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
> +[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
> +[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
> +[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
> +[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
> +[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
> +[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
> +[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
> +[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
> +[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
> +[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
> +[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
> +[ 	]+[0-9a-f]+:[ 	]+25002573[ 	]+csrr[ 	]+a0,vsiselect
> +[ 	]+[0-9a-f]+:[ 	]+25059073[ 	]+csrw[ 	]+vsiselect,a1
> +[ 	]+[0-9a-f]+:[ 	]+25102573[ 	]+csrr[ 	]+a0,vsireg
> +[ 	]+[0-9a-f]+:[ 	]+25159073[ 	]+csrw[ 	]+vsireg,a1
> +[ 	]+[0-9a-f]+:[ 	]+25c02573[ 	]+csrr[ 	]+a0,vstopei
> +[ 	]+[0-9a-f]+:[ 	]+25c59073[ 	]+csrw[ 	]+vstopei,a1
> +[ 	]+[0-9a-f]+:[ 	]+eb002573[ 	]+csrr[ 	]+a0,vstopi
> +[ 	]+[0-9a-f]+:[ 	]+eb059073[ 	]+csrw[ 	]+vstopi,a1
> +[ 	]+[0-9a-f]+:[ 	]+21402573[ 	]+csrr[ 	]+a0,vsieh
> +[ 	]+[0-9a-f]+:[ 	]+21459073[ 	]+csrw[ 	]+vsieh,a1
> +[ 	]+[0-9a-f]+:[ 	]+25402573[ 	]+csrr[ 	]+a0,vsiph
> +[ 	]+[0-9a-f]+:[ 	]+25459073[ 	]+csrw[ 	]+vsiph,a1
>  [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
>  [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
>  [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
> index 999e9af1520..44499fa4dbe 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
> @@ -411,6 +411,85 @@
>  .*Warning: invalid CSR `vsip', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> @@ -483,6 +562,52 @@
>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw stopi,a1'
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw vstopi,a1'
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
> index 5d6333884f1..70397194465 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
> @@ -601,6 +601,46 @@ Disassembly of section .text:
>  [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
>  [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
>  [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
> +[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
> +[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
> +[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
> +[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
> +[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
> +[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
> +[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
> +[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
> +[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
> +[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
> +[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
> +[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
> +[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
> +[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
> +[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
> +[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
> +[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
> +[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
> +[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
> +[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
> +[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
> +[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
> +[ 	]+[0-9a-f]+:[ 	]+60802573[ 	]+csrr[ 	]+a0,hvien
> +[ 	]+[0-9a-f]+:[ 	]+60859073[ 	]+csrw[ 	]+hvien,a1
> +[ 	]+[0-9a-f]+:[ 	]+60902573[ 	]+csrr[ 	]+a0,hvictl
> +[ 	]+[0-9a-f]+:[ 	]+60959073[ 	]+csrw[ 	]+hvictl,a1
> +[ 	]+[0-9a-f]+:[ 	]+64602573[ 	]+csrr[ 	]+a0,hviprio1
> +[ 	]+[0-9a-f]+:[ 	]+64659073[ 	]+csrw[ 	]+hviprio1,a1
> +[ 	]+[0-9a-f]+:[ 	]+64702573[ 	]+csrr[ 	]+a0,hviprio2
> +[ 	]+[0-9a-f]+:[ 	]+64759073[ 	]+csrw[ 	]+hviprio2,a1
> +[ 	]+[0-9a-f]+:[ 	]+61302573[ 	]+csrr[ 	]+a0,hidelegh
> +[ 	]+[0-9a-f]+:[ 	]+61359073[ 	]+csrw[ 	]+hidelegh,a1
> +[ 	]+[0-9a-f]+:[ 	]+61802573[ 	]+csrr[ 	]+a0,hvienh
> +[ 	]+[0-9a-f]+:[ 	]+61859073[ 	]+csrw[ 	]+hvienh,a1
> +[ 	]+[0-9a-f]+:[ 	]+65502573[ 	]+csrr[ 	]+a0,hviph
> +[ 	]+[0-9a-f]+:[ 	]+65559073[ 	]+csrw[ 	]+hviph,a1
> +[ 	]+[0-9a-f]+:[ 	]+65602573[ 	]+csrr[ 	]+a0,hviprio1h
> +[ 	]+[0-9a-f]+:[ 	]+65659073[ 	]+csrw[ 	]+hviprio1h,a1
> +[ 	]+[0-9a-f]+:[ 	]+65702573[ 	]+csrr[ 	]+a0,hviprio2h
> +[ 	]+[0-9a-f]+:[ 	]+65759073[ 	]+csrw[ 	]+hviprio2h,a1
>  [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
>  [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
>  [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
> @@ -641,6 +681,30 @@ Disassembly of section .text:
>  [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
>  [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
>  [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
> +[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
> +[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
> +[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
> +[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
> +[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
> +[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
> +[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
> +[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
> +[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
> +[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
> +[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
> +[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
> +[ 	]+[0-9a-f]+:[ 	]+25002573[ 	]+csrr[ 	]+a0,vsiselect
> +[ 	]+[0-9a-f]+:[ 	]+25059073[ 	]+csrw[ 	]+vsiselect,a1
> +[ 	]+[0-9a-f]+:[ 	]+25102573[ 	]+csrr[ 	]+a0,vsireg
> +[ 	]+[0-9a-f]+:[ 	]+25159073[ 	]+csrw[ 	]+vsireg,a1
> +[ 	]+[0-9a-f]+:[ 	]+25c02573[ 	]+csrr[ 	]+a0,vstopei
> +[ 	]+[0-9a-f]+:[ 	]+25c59073[ 	]+csrw[ 	]+vstopei,a1
> +[ 	]+[0-9a-f]+:[ 	]+eb002573[ 	]+csrr[ 	]+a0,vstopi
> +[ 	]+[0-9a-f]+:[ 	]+eb059073[ 	]+csrw[ 	]+vstopi,a1
> +[ 	]+[0-9a-f]+:[ 	]+21402573[ 	]+csrr[ 	]+a0,vsieh
> +[ 	]+[0-9a-f]+:[ 	]+21459073[ 	]+csrw[ 	]+vsieh,a1
> +[ 	]+[0-9a-f]+:[ 	]+25402573[ 	]+csrr[ 	]+a0,vsiph
> +[ 	]+[0-9a-f]+:[ 	]+25459073[ 	]+csrw[ 	]+vsiph,a1
>  [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
>  [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
>  [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
> index a099e4ecc93..09a106806d2 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
> @@ -409,6 +409,85 @@
>  .*Warning: invalid CSR `vsip', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> @@ -481,6 +560,52 @@
>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw stopi,a1'
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw vstopi,a1'
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
> index 728e647c552..142f60c216c 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
> @@ -601,6 +601,46 @@ Disassembly of section .text:
>  [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
>  [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
>  [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
> +[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
> +[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
> +[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
> +[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
> +[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
> +[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
> +[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
> +[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
> +[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
> +[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
> +[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
> +[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
> +[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
> +[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
> +[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
> +[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
> +[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
> +[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
> +[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
> +[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
> +[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
> +[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
> +[ 	]+[0-9a-f]+:[ 	]+60802573[ 	]+csrr[ 	]+a0,hvien
> +[ 	]+[0-9a-f]+:[ 	]+60859073[ 	]+csrw[ 	]+hvien,a1
> +[ 	]+[0-9a-f]+:[ 	]+60902573[ 	]+csrr[ 	]+a0,hvictl
> +[ 	]+[0-9a-f]+:[ 	]+60959073[ 	]+csrw[ 	]+hvictl,a1
> +[ 	]+[0-9a-f]+:[ 	]+64602573[ 	]+csrr[ 	]+a0,hviprio1
> +[ 	]+[0-9a-f]+:[ 	]+64659073[ 	]+csrw[ 	]+hviprio1,a1
> +[ 	]+[0-9a-f]+:[ 	]+64702573[ 	]+csrr[ 	]+a0,hviprio2
> +[ 	]+[0-9a-f]+:[ 	]+64759073[ 	]+csrw[ 	]+hviprio2,a1
> +[ 	]+[0-9a-f]+:[ 	]+61302573[ 	]+csrr[ 	]+a0,hidelegh
> +[ 	]+[0-9a-f]+:[ 	]+61359073[ 	]+csrw[ 	]+hidelegh,a1
> +[ 	]+[0-9a-f]+:[ 	]+61802573[ 	]+csrr[ 	]+a0,hvienh
> +[ 	]+[0-9a-f]+:[ 	]+61859073[ 	]+csrw[ 	]+hvienh,a1
> +[ 	]+[0-9a-f]+:[ 	]+65502573[ 	]+csrr[ 	]+a0,hviph
> +[ 	]+[0-9a-f]+:[ 	]+65559073[ 	]+csrw[ 	]+hviph,a1
> +[ 	]+[0-9a-f]+:[ 	]+65602573[ 	]+csrr[ 	]+a0,hviprio1h
> +[ 	]+[0-9a-f]+:[ 	]+65659073[ 	]+csrw[ 	]+hviprio1h,a1
> +[ 	]+[0-9a-f]+:[ 	]+65702573[ 	]+csrr[ 	]+a0,hviprio2h
> +[ 	]+[0-9a-f]+:[ 	]+65759073[ 	]+csrw[ 	]+hviprio2h,a1
>  [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
>  [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
>  [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
> @@ -641,6 +681,30 @@ Disassembly of section .text:
>  [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
>  [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
>  [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
> +[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
> +[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
> +[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
> +[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
> +[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
> +[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
> +[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
> +[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
> +[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
> +[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
> +[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
> +[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
> +[ 	]+[0-9a-f]+:[ 	]+25002573[ 	]+csrr[ 	]+a0,vsiselect
> +[ 	]+[0-9a-f]+:[ 	]+25059073[ 	]+csrw[ 	]+vsiselect,a1
> +[ 	]+[0-9a-f]+:[ 	]+25102573[ 	]+csrr[ 	]+a0,vsireg
> +[ 	]+[0-9a-f]+:[ 	]+25159073[ 	]+csrw[ 	]+vsireg,a1
> +[ 	]+[0-9a-f]+:[ 	]+25c02573[ 	]+csrr[ 	]+a0,vstopei
> +[ 	]+[0-9a-f]+:[ 	]+25c59073[ 	]+csrw[ 	]+vstopei,a1
> +[ 	]+[0-9a-f]+:[ 	]+eb002573[ 	]+csrr[ 	]+a0,vstopi
> +[ 	]+[0-9a-f]+:[ 	]+eb059073[ 	]+csrw[ 	]+vstopi,a1
> +[ 	]+[0-9a-f]+:[ 	]+21402573[ 	]+csrr[ 	]+a0,vsieh
> +[ 	]+[0-9a-f]+:[ 	]+21459073[ 	]+csrw[ 	]+vsieh,a1
> +[ 	]+[0-9a-f]+:[ 	]+25402573[ 	]+csrr[ 	]+a0,vsiph
> +[ 	]+[0-9a-f]+:[ 	]+25459073[ 	]+csrw[ 	]+vsiph,a1
>  [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
>  [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
>  [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
> index cf8f2e25634..7b138244ee1 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
> @@ -271,6 +271,85 @@
>  .*Warning: invalid CSR `vsip', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> @@ -343,6 +422,52 @@
>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw stopi,a1'
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw vstopi,a1'
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> index a34b99f4632..fa843727e80 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
> @@ -601,6 +601,46 @@ Disassembly of section .text:
>  [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
>  [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
>  [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
> +[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
> +[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
> +[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
> +[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
> +[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
> +[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
> +[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
> +[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
> +[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
> +[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
> +[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
> +[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
> +[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
> +[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
> +[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
> +[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
> +[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
> +[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
> +[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
> +[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
> +[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
> +[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
> +[ 	]+[0-9a-f]+:[ 	]+60802573[ 	]+csrr[ 	]+a0,hvien
> +[ 	]+[0-9a-f]+:[ 	]+60859073[ 	]+csrw[ 	]+hvien,a1
> +[ 	]+[0-9a-f]+:[ 	]+60902573[ 	]+csrr[ 	]+a0,hvictl
> +[ 	]+[0-9a-f]+:[ 	]+60959073[ 	]+csrw[ 	]+hvictl,a1
> +[ 	]+[0-9a-f]+:[ 	]+64602573[ 	]+csrr[ 	]+a0,hviprio1
> +[ 	]+[0-9a-f]+:[ 	]+64659073[ 	]+csrw[ 	]+hviprio1,a1
> +[ 	]+[0-9a-f]+:[ 	]+64702573[ 	]+csrr[ 	]+a0,hviprio2
> +[ 	]+[0-9a-f]+:[ 	]+64759073[ 	]+csrw[ 	]+hviprio2,a1
> +[ 	]+[0-9a-f]+:[ 	]+61302573[ 	]+csrr[ 	]+a0,hidelegh
> +[ 	]+[0-9a-f]+:[ 	]+61359073[ 	]+csrw[ 	]+hidelegh,a1
> +[ 	]+[0-9a-f]+:[ 	]+61802573[ 	]+csrr[ 	]+a0,hvienh
> +[ 	]+[0-9a-f]+:[ 	]+61859073[ 	]+csrw[ 	]+hvienh,a1
> +[ 	]+[0-9a-f]+:[ 	]+65502573[ 	]+csrr[ 	]+a0,hviph
> +[ 	]+[0-9a-f]+:[ 	]+65559073[ 	]+csrw[ 	]+hviph,a1
> +[ 	]+[0-9a-f]+:[ 	]+65602573[ 	]+csrr[ 	]+a0,hviprio1h
> +[ 	]+[0-9a-f]+:[ 	]+65659073[ 	]+csrw[ 	]+hviprio1h,a1
> +[ 	]+[0-9a-f]+:[ 	]+65702573[ 	]+csrr[ 	]+a0,hviprio2h
> +[ 	]+[0-9a-f]+:[ 	]+65759073[ 	]+csrw[ 	]+hviprio2h,a1
>  [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
>  [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
>  [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
> @@ -641,6 +681,30 @@ Disassembly of section .text:
>  [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
>  [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
>  [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
> +[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
> +[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
> +[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
> +[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
> +[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
> +[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
> +[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
> +[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
> +[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
> +[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
> +[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
> +[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
> +[ 	]+[0-9a-f]+:[ 	]+25002573[ 	]+csrr[ 	]+a0,vsiselect
> +[ 	]+[0-9a-f]+:[ 	]+25059073[ 	]+csrw[ 	]+vsiselect,a1
> +[ 	]+[0-9a-f]+:[ 	]+25102573[ 	]+csrr[ 	]+a0,vsireg
> +[ 	]+[0-9a-f]+:[ 	]+25159073[ 	]+csrw[ 	]+vsireg,a1
> +[ 	]+[0-9a-f]+:[ 	]+25c02573[ 	]+csrr[ 	]+a0,vstopei
> +[ 	]+[0-9a-f]+:[ 	]+25c59073[ 	]+csrw[ 	]+vstopei,a1
> +[ 	]+[0-9a-f]+:[ 	]+eb002573[ 	]+csrr[ 	]+a0,vstopi
> +[ 	]+[0-9a-f]+:[ 	]+eb059073[ 	]+csrw[ 	]+vstopi,a1
> +[ 	]+[0-9a-f]+:[ 	]+21402573[ 	]+csrr[ 	]+a0,vsieh
> +[ 	]+[0-9a-f]+:[ 	]+21459073[ 	]+csrw[ 	]+vsieh,a1
> +[ 	]+[0-9a-f]+:[ 	]+25402573[ 	]+csrr[ 	]+a0,vsiph
> +[ 	]+[0-9a-f]+:[ 	]+25459073[ 	]+csrw[ 	]+vsiph,a1
>  [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
>  [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
>  [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> index 5f298c1dda9..e63719ec066 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> @@ -461,6 +461,85 @@
>  .*Warning: invalid CSR `vsip', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
>  .*Warning: invalid CSR `vsatp', needs `h' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `miselect', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mireg', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopei', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: invalid CSR `mtopi', needs `smaia' extension
> +.*Warning: read-only CSR is written `csrw mtopi,a1'
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvien', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `mvip', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `midelegh', needs rv32i extension
> +.*Warning: invalid CSR `midelegh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mieh', needs rv32i extension
> +.*Warning: invalid CSR `mieh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mvienh', needs rv32i extension
> +.*Warning: invalid CSR `mvienh', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `mviph', needs rv32i extension
> +.*Warning: invalid CSR `mviph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `miph', needs rv32i extension
> +.*Warning: invalid CSR `miph', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvien', needs `h' extension
> +.*Warning: invalid CSR `hvien', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hvictl', needs `h' extension
> +.*Warning: invalid CSR `hvictl', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1', needs `h' extension
> +.*Warning: invalid CSR `hviprio1', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2', needs `h' extension
> +.*Warning: invalid CSR `hviprio2', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hidelegh', needs rv32i extension
> +.*Warning: invalid CSR `hidelegh', needs `h' extension
> +.*Warning: invalid CSR `hidelegh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hvienh', needs rv32i extension
> +.*Warning: invalid CSR `hvienh', needs `h' extension
> +.*Warning: invalid CSR `hvienh', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviph', needs rv32i extension
> +.*Warning: invalid CSR `hviph', needs `h' extension
> +.*Warning: invalid CSR `hviph', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio1h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio1h', needs `h' extension
> +.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
> +.*Warning: invalid CSR `hviprio2h', needs rv32i extension
> +.*Warning: invalid CSR `hviprio2h', needs `h' extension
> +.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
>  .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
> @@ -533,6 +612,52 @@
>  .*Warning: invalid CSR `hstateen3h', needs rv32i extension
>  .*Warning: invalid CSR `hstateen3h', needs `h' extension
>  .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `siselect', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `sireg', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopei', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: invalid CSR `stopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw stopi,a1'
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `sieh', needs rv32i extension
> +.*Warning: invalid CSR `sieh', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `siph', needs rv32i extension
> +.*Warning: invalid CSR `siph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiselect', needs `h' extension
> +.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vsireg', needs `h' extension
> +.*Warning: invalid CSR `vsireg', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopei', needs `h' extension
> +.*Warning: invalid CSR `vstopei', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: invalid CSR `vstopi', needs `h' extension
> +.*Warning: invalid CSR `vstopi', needs `ssaia' extension
> +.*Warning: read-only CSR is written `csrw vstopi,a1'
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsieh', needs rv32i extension
> +.*Warning: invalid CSR `vsieh', needs `h' extension
> +.*Warning: invalid CSR `vsieh', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
> +.*Warning: invalid CSR `vsiph', needs rv32i extension
> +.*Warning: invalid CSR `vsiph', needs `h' extension
> +.*Warning: invalid CSR `vsiph', needs `ssaia' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
>  .*Warning: read-only CSR is written `csrw scountovf,a1'
> diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
> index 128aeb83a04..21939b20a6d 100644
> --- a/gas/testsuite/gas/riscv/csr.s
> +++ b/gas/testsuite/gas/riscv/csr.s
> @@ -337,6 +337,28 @@
>  	csr vsip
>  	csr vsatp
>  
> +	# Smaia
> +	csr miselect
> +	csr mireg
> +	csr mtopei
> +	csr mtopi
> +	csr mvien
> +	csr mvip
> +	csr midelegh
> +	csr mieh
> +	csr mvienh
> +	csr mviph
> +	csr miph
> +	csr hvien
> +	csr hvictl
> +	csr hviprio1
> +	csr hviprio2
> +	csr hidelegh
> +	csr hvienh
> +	csr hviph
> +	csr hviprio1h
> +	csr hviprio2h
> +
>  	# Smstateen extension
>  	csr mstateen0
>  	csr mstateen1
> @@ -359,6 +381,20 @@
>  	csr hstateen2h
>  	csr hstateen3h
>  
> +	# Ssaia
> +	csr siselect
> +	csr sireg
> +	csr stopei
> +	csr stopi
> +	csr sieh
> +	csr siph
> +	csr vsiselect
> +	csr vsireg
> +	csr vstopei
> +	csr vstopi
> +	csr vsieh
> +	csr vsiph
> +
>  	# Sscofpmf extension
>  	csr scountovf
>  	csr mhpmevent3h
> diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
> index f36b06dcd6b..8beed0b1b42 100644
> --- a/include/opcode/riscv-opc.h
> +++ b/include/opcode/riscv-opc.h
> @@ -2661,6 +2661,27 @@
>  #define CSR_UIP 0x44
>  #define CSR_SEDELEG 0x102
>  #define CSR_SIDELEG 0x103
> +/* Smaia extension */
> +#define CSR_MISELECT 0x350
> +#define CSR_MIREG    0x351
> +#define CSR_MTOPEI   0x35c
> +#define CSR_MTOPI    0xfb0
> +#define CSR_MVIEN    0x308
> +#define CSR_MVIP     0x309
> +#define CSR_MIDELEGH 0x313
> +#define CSR_MIEH     0x314
> +#define CSR_MVIENH   0x318
> +#define CSR_MVIPH    0x319
> +#define CSR_MIPH     0x354
> +#define CSR_HVIEN     0x608
> +#define CSR_HVICTL    0x609
> +#define CSR_HVIPRIO1  0x646
> +#define CSR_HVIPRIO2  0x647
> +#define CSR_HIDELEGH  0x613
> +#define CSR_HVIENH    0x618
> +#define CSR_HVIPH     0x655
> +#define CSR_HVIPRIO1H 0x656
> +#define CSR_HVIPRIO2H 0x657
>  /* Smstateen extension */
>  #define CSR_MSTATEEN0 0x30c
>  #define CSR_MSTATEEN1 0x30d
> @@ -2682,6 +2703,19 @@
>  #define CSR_HSTATEEN1H 0x61d
>  #define CSR_HSTATEEN2H 0x61e
>  #define CSR_HSTATEEN3H 0x61f
> +/* Ssaia extension */
> +#define CSR_SISELECT 0x150
> +#define CSR_SIREG    0x151
> +#define CSR_STOPEI   0x15c
> +#define CSR_STOPI    0xdb0
> +#define CSR_SIEH     0x114
> +#define CSR_SIPH     0x154
> +#define CSR_VSISELECT 0x250
> +#define CSR_VSIREG    0x251
> +#define CSR_VSTOPEI   0x25c
> +#define CSR_VSTOPI    0xeb0
> +#define CSR_VSIEH     0x214
> +#define CSR_VSIPH     0x254
>  /* Sscofpmf extension */
>  #define CSR_SCOUNTOVF 0xda0
>  #define CSR_MHPMEVENT3H 0x723
> @@ -3504,6 +3538,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
>  DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +/* Smaia extension */
> +DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hvien, CSR_HVIEN, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hvictl, CSR_HVICTL, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hviprio1, CSR_HVIPRIO1, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hviprio2, CSR_HVIPRIO2, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hidelegh, CSR_HIDELEGH, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hvienh, CSR_HVIENH, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hviph, CSR_HVIPH, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hviprio1h, CSR_HVIPRIO1H, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(hviprio2h, CSR_HVIPRIO2H, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  /* Smstateen extension */
>  DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> @@ -3525,6 +3580,19 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
>  DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +/* Ssaia extension */
> +DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(vsiselect, CSR_VSISELECT, CSR_CLASS_SSAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(vsireg, CSR_VSIREG, CSR_CLASS_SSAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(vstopei, CSR_VSTOPEI, CSR_CLASS_SSAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(vstopi, CSR_VSTOPI, CSR_CLASS_SSAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(vsieh, CSR_VSIEH, CSR_CLASS_SSAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
> +DECLARE_CSR(vsiph, CSR_VSIPH, CSR_CLASS_SSAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  /* Sscofpmf extension */
>  DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
>  DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)

[-- Attachment #2: riscv-aia-imply-csr.patch --]
[-- Type: text/plain, Size: 665 bytes --]

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index dd75817b1bd3..bd6473d33c26 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1097,8 +1097,10 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
   {"zks", "zbkx",	check_implicit_always},
   {"zks", "zksed",	check_implicit_always},
   {"zks", "zksh",	check_implicit_always},
+  {"smaia", "zicsr",		check_implicit_always},
   {"smepmp", "zicsr",		check_implicit_always},
   {"smstateen", "zicsr",	check_implicit_always},
+  {"ssaia", "zicsr",		check_implicit_always},
   {"sscofpmf", "zicsr",		check_implicit_always},
   {"sstc", "zicsr",		check_implicit_always},
   {NULL, NULL, NULL}

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH] riscv: Add AIA extension support (Smaia, Ssaia)
@ 2022-11-18  0:32 Christoph Muellner
  2022-11-18  5:07 ` Tsukasa OI
  2022-11-18  8:12 ` Nelson Chu
  0 siblings, 2 replies; 19+ messages in thread
From: Christoph Muellner @ 2022-11-18  0:32 UTC (permalink / raw)
  To: binutils, Nelson Chu, Andrew Waterman, Palmer Dabbelt,
	Jim Wilson, Philipp Tomsich
  Cc: Christoph Müllner

From: Christoph Müllner <christoph.muellner@vrull.eu>

This commit adds the AIA extensions (Smaia and Ssaia) CSRs.

bfd/ChangeLog:

	* elfxx-riscv.c: Add 'smaia' and 'ssaia' to the list
	of known standard extensions.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class):
	(riscv_csr_address): Add CSR classes for Smaia/Ssaia.
	* testsuite/gas/riscv/csr-dw-regnums.d: Add new CSRs.
	* testsuite/gas/riscv/csr-dw-regnums.s: Likewise.
	* testsuite/gas/riscv/csr-version-1p10.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p10.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p11.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p11.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p12.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p12.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
	* testsuite/gas/riscv/csr-version-1p9p1.l: Likewise.
	* testsuite/gas/riscv/csr.s: Likewise.

include/ChangeLog:

	* opcode/riscv-opc.h (CSR_MISELECT): New CSR marcro.
	(CSR_MIREG): Likewise.
	(CSR_MTOPEI): Likewise.
	(CSR_MTOPI): Likewise.
	(CSR_MVIEN): Likewise.
	(CSR_MVIP): Likewise.
	(CSR_MIDELEGH): Likewise.
	(CSR_MIEH): Likewise.
	(CSR_MVIENH): Likewise.
	(CSR_MVIPH): Likewise.
	(CSR_MIPH): Likewise.
	(CSR_HVIEN): Likewise.
	(CSR_HVICTL): Likewise.
	(CSR_HVIPRIO1): Likewise.
	(CSR_HVIPRIO2): Likewise.
	(CSR_HIDELEGH): Likewise.
	(CSR_HVIENH): Likewise.
	(CSR_HVIPH): Likewise.
	(CSR_HVIPRIO1H): Likewise.
	(CSR_HVIPRIO2H): Likewise.
	(CSR_SISELECT): Likewise.
	(CSR_SIREG): Likewise.
	(CSR_STOPEI): Likewise.
	(CSR_STOPI): Likewise.
	(CSR_SIEH): Likewise.
	(CSR_SIPH): Likewise.
	(CSR_VSISELECT): Likewise.
	(CSR_VSIREG): Likewise.
	(CSR_VSTOPEI): Likewise.
	(CSR_VSTOPI): Likewise.
	(CSR_VSIEH): Likewise.
	(CSR_VSIPH): Likewise.
	(DECLARE_CSR): Add CSRs for Smaia and Ssaia.

Changes for v2:
- Add hypervisor and VS CSRs
- Fix whitespace issue

Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
---
 bfd/elfxx-riscv.c                           |   2 +
 gas/config/tc-riscv.c                       |  28 +++++
 gas/testsuite/gas/riscv/csr-dw-regnums.d    |  32 +++++
 gas/testsuite/gas/riscv/csr-dw-regnums.s    |  36 ++++++
 gas/testsuite/gas/riscv/csr-version-1p10.d  |  64 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 125 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.d  |  64 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 125 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.d  |  64 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 125 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.d |  64 ++++++++++
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 125 ++++++++++++++++++++
 gas/testsuite/gas/riscv/csr.s               |  36 ++++++
 include/opcode/riscv-opc.h                  |  68 +++++++++++
 14 files changed, 958 insertions(+)

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index cfec9a6996c..dd75817b1bd 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1216,8 +1216,10 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
 
 static struct riscv_supported_ext riscv_supported_std_s_ext[] =
 {
+  {"smaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"smepmp",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"ssaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"sstc",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
   {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 2dc92ecd3c3..78aa15400f8 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -68,10 +68,18 @@ enum riscv_csr_class
   CSR_CLASS_DEBUG,	/* debug CSR */
   CSR_CLASS_H,		/* hypervisor */
   CSR_CLASS_H_32,	/* hypervisor, rv32 only */
+  CSR_CLASS_SMAIA,		/* Smaia */
+  CSR_CLASS_SMAIA_AND_H,	/* Smaia with H */
+  CSR_CLASS_SMAIA_32,		/* Smaia, rv32 only */
+  CSR_CLASS_SMAIA_AND_H_32,	/* Smaia with H, rv32 only */
   CSR_CLASS_SMSTATEEN,		/* Smstateen only */
   CSR_CLASS_SMSTATEEN_AND_H,	/* Smstateen only (with H) */
   CSR_CLASS_SMSTATEEN_32,	/* Smstateen RV32 only */
   CSR_CLASS_SMSTATEEN_AND_H_32,	/* Smstateen RV32 only (with H) */
+  CSR_CLASS_SSAIA,		/* Ssaia */
+  CSR_CLASS_SSAIA_AND_H,	/* Ssaia with H */
+  CSR_CLASS_SSAIA_32,		/* Ssaia, rv32 only */
+  CSR_CLASS_SSAIA_AND_H_32,	/* Ssaia with H, rv32 only */
   CSR_CLASS_SSCOFPMF,		/* Sscofpmf only */
   CSR_CLASS_SSCOFPMF_32,	/* Sscofpmf RV32 only */
   CSR_CLASS_SSTC,		/* Sstc only */
@@ -1028,6 +1036,16 @@ riscv_csr_address (const char *csr_name,
     case CSR_CLASS_V:
       extension = "zve32x";
       break;
+    case CSR_CLASS_SMAIA:
+    case CSR_CLASS_SMAIA_AND_H:
+    case CSR_CLASS_SMAIA_32:
+    case CSR_CLASS_SMAIA_AND_H_32:
+      is_rv32_only = (csr_class == CSR_CLASS_SMAIA_32
+		      || csr_class == CSR_CLASS_SMAIA_AND_H_32);
+      is_h_required = (csr_class == CSR_CLASS_SMAIA_AND_H
+		       || csr_class == CSR_CLASS_SMAIA_AND_H_32);
+      extension = "smaia";
+      break;
     case CSR_CLASS_SMSTATEEN:
     case CSR_CLASS_SMSTATEEN_AND_H:
     case CSR_CLASS_SMSTATEEN_32:
@@ -1038,6 +1056,16 @@ riscv_csr_address (const char *csr_name,
 		      || csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
       extension = "smstateen";
       break;
+    case CSR_CLASS_SSAIA:
+    case CSR_CLASS_SSAIA_AND_H:
+    case CSR_CLASS_SSAIA_32:
+    case CSR_CLASS_SSAIA_AND_H_32:
+      is_rv32_only = (csr_class == CSR_CLASS_SSAIA_32
+		      || csr_class == CSR_CLASS_SSAIA_AND_H_32);
+      is_h_required = (csr_class == CSR_CLASS_SSAIA_AND_H
+		       || csr_class == CSR_CLASS_SSAIA_AND_H_32);
+      extension = "ssaia";
+      break;
     case CSR_CLASS_SSCOFPMF_32:
       is_rv32_only = true;
       /* Fall through.  */
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.d b/gas/testsuite/gas/riscv/csr-dw-regnums.d
index b4b3806a085..dd238cf54a9 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.d
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.d
@@ -313,6 +313,26 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r4675 \(vstval\) at cfa\+2316
   DW_CFA_offset_extended_sf: r4676 \(vsip\) at cfa\+2320
   DW_CFA_offset_extended_sf: r4736 \(vsatp\) at cfa\+2560
+  DW_CFA_offset_extended_sf: r4944 \(miselect\) at cfa\+3392
+  DW_CFA_offset_extended_sf: r4945 \(mireg\) at cfa\+3396
+  DW_CFA_offset_extended_sf: r4956 \(mtopei\) at cfa\+3440
+  DW_CFA_offset_extended_sf: r8112 \(mtopi\) at cfa\+16064
+  DW_CFA_offset_extended_sf: r4872 \(mvien\) at cfa\+3104
+  DW_CFA_offset_extended_sf: r4873 \(mvip\) at cfa\+3108
+  DW_CFA_offset_extended_sf: r4883 \(midelegh\) at cfa\+3148
+  DW_CFA_offset_extended_sf: r4884 \(mieh\) at cfa\+3152
+  DW_CFA_offset_extended_sf: r4888 \(mvienh\) at cfa\+3168
+  DW_CFA_offset_extended_sf: r4889 \(mviph\) at cfa\+3172
+  DW_CFA_offset_extended_sf: r4948 \(miph\) at cfa\+3408
+  DW_CFA_offset_extended_sf: r5640 \(hvien\) at cfa\+6176
+  DW_CFA_offset_extended_sf: r5641 \(hvictl\) at cfa\+6180
+  DW_CFA_offset_extended_sf: r5702 \(hviprio1\) at cfa\+6424
+  DW_CFA_offset_extended_sf: r5703 \(hviprio2\) at cfa\+6428
+  DW_CFA_offset_extended_sf: r5651 \(hidelegh\) at cfa\+6220
+  DW_CFA_offset_extended_sf: r5656 \(hvienh\) at cfa\+6240
+  DW_CFA_offset_extended_sf: r5717 \(hviph\) at cfa\+6484
+  DW_CFA_offset_extended_sf: r5718 \(hviprio1h\) at cfa\+6488
+  DW_CFA_offset_extended_sf: r5719 \(hviprio2h\) at cfa\+6492
   DW_CFA_offset_extended_sf: r4876 \(mstateen0\) at cfa\+3120
   DW_CFA_offset_extended_sf: r4877 \(mstateen1\) at cfa\+3124
   DW_CFA_offset_extended_sf: r4878 \(mstateen2\) at cfa\+3128
@@ -333,6 +353,18 @@ Contents of the .* section:
   DW_CFA_offset_extended_sf: r5661 \(hstateen1h\) at cfa\+6260
   DW_CFA_offset_extended_sf: r5662 \(hstateen2h\) at cfa\+6264
   DW_CFA_offset_extended_sf: r5663 \(hstateen3h\) at cfa\+6268
+  DW_CFA_offset_extended_sf: r4432 \(siselect\) at cfa\+1344
+  DW_CFA_offset_extended_sf: r4433 \(sireg\) at cfa\+1348
+  DW_CFA_offset_extended_sf: r4444 \(stopei\) at cfa\+1392
+  DW_CFA_offset_extended_sf: r7600 \(stopi\) at cfa\+14016
+  DW_CFA_offset_extended_sf: r4372 \(sieh\) at cfa\+1104
+  DW_CFA_offset_extended_sf: r4436 \(siph\) at cfa\+1360
+  DW_CFA_offset_extended_sf: r4688 \(vsiselect\) at cfa\+2368
+  DW_CFA_offset_extended_sf: r4689 \(vsireg\) at cfa\+2372
+  DW_CFA_offset_extended_sf: r4700 \(vstopei\) at cfa\+2416
+  DW_CFA_offset_extended_sf: r7856 \(vstopi\) at cfa\+15040
+  DW_CFA_offset_extended_sf: r4628 \(vsieh\) at cfa\+2128
+  DW_CFA_offset_extended_sf: r4692 \(vsiph\) at cfa\+2384
   DW_CFA_offset_extended_sf: r7584 \(scountovf\) at cfa\+13952
   DW_CFA_offset_extended_sf: r5923 \(mhpmevent3h\) at cfa\+7308
   DW_CFA_offset_extended_sf: r5924 \(mhpmevent4h\) at cfa\+7312
diff --git a/gas/testsuite/gas/riscv/csr-dw-regnums.s b/gas/testsuite/gas/riscv/csr-dw-regnums.s
index 6cfa415ebc2..38b1e53dd6c 100644
--- a/gas/testsuite/gas/riscv/csr-dw-regnums.s
+++ b/gas/testsuite/gas/riscv/csr-dw-regnums.s
@@ -1,6 +1,8 @@
 # Check that CFI directives can accept all of the CSR names (including
 # aliases).  The results for this test also ensures that the DWARF
 # register numbers for the CSRs shouldn't change.
+# The register numbers are specified to be CSR-ID + 4096 (see psABI spec).
+# The CFI offsets in this file are CSR-ID x 4.
 
 	.text
 	.global _start
@@ -307,6 +309,27 @@ _start:
 	.cfi_offset vstval, 2316
 	.cfi_offset vsip, 2320
 	.cfi_offset vsatp, 2560
+	# Smaia extension
+	.cfi_offset miselect, 3392
+	.cfi_offset mireg, 3396
+	.cfi_offset mtopei, 3440
+	.cfi_offset mtopi, 16064
+	.cfi_offset mvien, 3104
+	.cfi_offset mvip, 3108
+	.cfi_offset midelegh, 3148
+	.cfi_offset mieh, 3152
+	.cfi_offset mvienh, 3168
+	.cfi_offset mviph, 3172
+	.cfi_offset miph, 3408
+	.cfi_offset hvien, 6176
+	.cfi_offset hvictl, 6180
+	.cfi_offset hviprio1, 6424
+	.cfi_offset hviprio2, 6428
+	.cfi_offset hidelegh, 6220
+	.cfi_offset hvienh, 6240
+	.cfi_offset hviph, 6484
+	.cfi_offset hviprio1h, 6488
+	.cfi_offset hviprio2h, 6492
 	# Smstateen extension
 	.cfi_offset mstateen0, 3120
 	.cfi_offset mstateen1, 3124
@@ -328,6 +351,19 @@ _start:
 	.cfi_offset hstateen1h, 6260
 	.cfi_offset hstateen2h, 6264
 	.cfi_offset hstateen3h, 6268
+	# Ssaia extension
+	.cfi_offset siselect, 1344
+	.cfi_offset sireg, 1348
+	.cfi_offset stopei, 1392
+	.cfi_offset stopi, 14016
+	.cfi_offset sieh, 1104
+	.cfi_offset siph, 1360
+	.cfi_offset vsiselect, 2368
+	.cfi_offset vsireg, 2372
+	.cfi_offset vstopei, 2416
+	.cfi_offset vstopi, 15040
+	.cfi_offset vsieh, 2128
+	.cfi_offset vsiph, 2384
 	# Sscofpmf extension
 	.cfi_offset scountovf, 13952
 	.cfi_offset mhpmevent3h, 7308
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index bd8b10302e3..879c7e8a97d 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
+[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
+[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
+[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
+[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
+[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
+[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
+[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
+[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
+[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
+[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
+[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
+[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
+[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
+[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
+[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
+[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
+[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
+[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
+[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
+[ 	]+[0-9a-f]+:[ 	]+60802573[ 	]+csrr[ 	]+a0,hvien
+[ 	]+[0-9a-f]+:[ 	]+60859073[ 	]+csrw[ 	]+hvien,a1
+[ 	]+[0-9a-f]+:[ 	]+60902573[ 	]+csrr[ 	]+a0,hvictl
+[ 	]+[0-9a-f]+:[ 	]+60959073[ 	]+csrw[ 	]+hvictl,a1
+[ 	]+[0-9a-f]+:[ 	]+64602573[ 	]+csrr[ 	]+a0,hviprio1
+[ 	]+[0-9a-f]+:[ 	]+64659073[ 	]+csrw[ 	]+hviprio1,a1
+[ 	]+[0-9a-f]+:[ 	]+64702573[ 	]+csrr[ 	]+a0,hviprio2
+[ 	]+[0-9a-f]+:[ 	]+64759073[ 	]+csrw[ 	]+hviprio2,a1
+[ 	]+[0-9a-f]+:[ 	]+61302573[ 	]+csrr[ 	]+a0,hidelegh
+[ 	]+[0-9a-f]+:[ 	]+61359073[ 	]+csrw[ 	]+hidelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+61802573[ 	]+csrr[ 	]+a0,hvienh
+[ 	]+[0-9a-f]+:[ 	]+61859073[ 	]+csrw[ 	]+hvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+65502573[ 	]+csrr[ 	]+a0,hviph
+[ 	]+[0-9a-f]+:[ 	]+65559073[ 	]+csrw[ 	]+hviph,a1
+[ 	]+[0-9a-f]+:[ 	]+65602573[ 	]+csrr[ 	]+a0,hviprio1h
+[ 	]+[0-9a-f]+:[ 	]+65659073[ 	]+csrw[ 	]+hviprio1h,a1
+[ 	]+[0-9a-f]+:[ 	]+65702573[ 	]+csrr[ 	]+a0,hviprio2h
+[ 	]+[0-9a-f]+:[ 	]+65759073[ 	]+csrw[ 	]+hviprio2h,a1
 [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
 [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
 [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
@@ -641,6 +681,30 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
+[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
+[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
+[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
+[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
+[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
+[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
+[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
+[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
+[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
+[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
+[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
+[ 	]+[0-9a-f]+:[ 	]+25002573[ 	]+csrr[ 	]+a0,vsiselect
+[ 	]+[0-9a-f]+:[ 	]+25059073[ 	]+csrw[ 	]+vsiselect,a1
+[ 	]+[0-9a-f]+:[ 	]+25102573[ 	]+csrr[ 	]+a0,vsireg
+[ 	]+[0-9a-f]+:[ 	]+25159073[ 	]+csrw[ 	]+vsireg,a1
+[ 	]+[0-9a-f]+:[ 	]+25c02573[ 	]+csrr[ 	]+a0,vstopei
+[ 	]+[0-9a-f]+:[ 	]+25c59073[ 	]+csrw[ 	]+vstopei,a1
+[ 	]+[0-9a-f]+:[ 	]+eb002573[ 	]+csrr[ 	]+a0,vstopi
+[ 	]+[0-9a-f]+:[ 	]+eb059073[ 	]+csrw[ 	]+vstopi,a1
+[ 	]+[0-9a-f]+:[ 	]+21402573[ 	]+csrr[ 	]+a0,vsieh
+[ 	]+[0-9a-f]+:[ 	]+21459073[ 	]+csrw[ 	]+vsieh,a1
+[ 	]+[0-9a-f]+:[ 	]+25402573[ 	]+csrr[ 	]+a0,vsiph
+[ 	]+[0-9a-f]+:[ 	]+25459073[ 	]+csrw[ 	]+vsiph,a1
 [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
 [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
 [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index 999e9af1520..44499fa4dbe 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -411,6 +411,85 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: read-only CSR is written `csrw mtopi,a1'
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `hvien', needs `h' extension
+.*Warning: invalid CSR `hvien', needs `smaia' extension
+.*Warning: invalid CSR `hvien', needs `h' extension
+.*Warning: invalid CSR `hvien', needs `smaia' extension
+.*Warning: invalid CSR `hvictl', needs `h' extension
+.*Warning: invalid CSR `hvictl', needs `smaia' extension
+.*Warning: invalid CSR `hvictl', needs `h' extension
+.*Warning: invalid CSR `hvictl', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1', needs `h' extension
+.*Warning: invalid CSR `hviprio1', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1', needs `h' extension
+.*Warning: invalid CSR `hviprio1', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2', needs `h' extension
+.*Warning: invalid CSR `hviprio2', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2', needs `h' extension
+.*Warning: invalid CSR `hviprio2', needs `smaia' extension
+.*Warning: invalid CSR `hidelegh', needs rv32i extension
+.*Warning: invalid CSR `hidelegh', needs `h' extension
+.*Warning: invalid CSR `hidelegh', needs `smaia' extension
+.*Warning: invalid CSR `hidelegh', needs rv32i extension
+.*Warning: invalid CSR `hidelegh', needs `h' extension
+.*Warning: invalid CSR `hidelegh', needs `smaia' extension
+.*Warning: invalid CSR `hvienh', needs rv32i extension
+.*Warning: invalid CSR `hvienh', needs `h' extension
+.*Warning: invalid CSR `hvienh', needs `smaia' extension
+.*Warning: invalid CSR `hvienh', needs rv32i extension
+.*Warning: invalid CSR `hvienh', needs `h' extension
+.*Warning: invalid CSR `hvienh', needs `smaia' extension
+.*Warning: invalid CSR `hviph', needs rv32i extension
+.*Warning: invalid CSR `hviph', needs `h' extension
+.*Warning: invalid CSR `hviph', needs `smaia' extension
+.*Warning: invalid CSR `hviph', needs rv32i extension
+.*Warning: invalid CSR `hviph', needs `h' extension
+.*Warning: invalid CSR `hviph', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1h', needs rv32i extension
+.*Warning: invalid CSR `hviprio1h', needs `h' extension
+.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1h', needs rv32i extension
+.*Warning: invalid CSR `hviprio1h', needs `h' extension
+.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2h', needs rv32i extension
+.*Warning: invalid CSR `hviprio2h', needs `h' extension
+.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2h', needs rv32i extension
+.*Warning: invalid CSR `hviprio2h', needs `h' extension
+.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
@@ -483,6 +562,52 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw stopi,a1'
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `vsiselect', needs `h' extension
+.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
+.*Warning: invalid CSR `vsiselect', needs `h' extension
+.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
+.*Warning: invalid CSR `vsireg', needs `h' extension
+.*Warning: invalid CSR `vsireg', needs `ssaia' extension
+.*Warning: invalid CSR `vsireg', needs `h' extension
+.*Warning: invalid CSR `vsireg', needs `ssaia' extension
+.*Warning: invalid CSR `vstopei', needs `h' extension
+.*Warning: invalid CSR `vstopei', needs `ssaia' extension
+.*Warning: invalid CSR `vstopei', needs `h' extension
+.*Warning: invalid CSR `vstopei', needs `ssaia' extension
+.*Warning: invalid CSR `vstopi', needs `h' extension
+.*Warning: invalid CSR `vstopi', needs `ssaia' extension
+.*Warning: invalid CSR `vstopi', needs `h' extension
+.*Warning: invalid CSR `vstopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw vstopi,a1'
+.*Warning: invalid CSR `vsieh', needs rv32i extension
+.*Warning: invalid CSR `vsieh', needs `h' extension
+.*Warning: invalid CSR `vsieh', needs `ssaia' extension
+.*Warning: invalid CSR `vsieh', needs rv32i extension
+.*Warning: invalid CSR `vsieh', needs `h' extension
+.*Warning: invalid CSR `vsieh', needs `ssaia' extension
+.*Warning: invalid CSR `vsiph', needs rv32i extension
+.*Warning: invalid CSR `vsiph', needs `h' extension
+.*Warning: invalid CSR `vsiph', needs `ssaia' extension
+.*Warning: invalid CSR `vsiph', needs rv32i extension
+.*Warning: invalid CSR `vsiph', needs `h' extension
+.*Warning: invalid CSR `vsiph', needs `ssaia' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index 5d6333884f1..70397194465 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
+[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
+[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
+[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
+[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
+[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
+[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
+[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
+[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
+[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
+[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
+[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
+[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
+[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
+[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
+[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
+[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
+[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
+[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
+[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
+[ 	]+[0-9a-f]+:[ 	]+60802573[ 	]+csrr[ 	]+a0,hvien
+[ 	]+[0-9a-f]+:[ 	]+60859073[ 	]+csrw[ 	]+hvien,a1
+[ 	]+[0-9a-f]+:[ 	]+60902573[ 	]+csrr[ 	]+a0,hvictl
+[ 	]+[0-9a-f]+:[ 	]+60959073[ 	]+csrw[ 	]+hvictl,a1
+[ 	]+[0-9a-f]+:[ 	]+64602573[ 	]+csrr[ 	]+a0,hviprio1
+[ 	]+[0-9a-f]+:[ 	]+64659073[ 	]+csrw[ 	]+hviprio1,a1
+[ 	]+[0-9a-f]+:[ 	]+64702573[ 	]+csrr[ 	]+a0,hviprio2
+[ 	]+[0-9a-f]+:[ 	]+64759073[ 	]+csrw[ 	]+hviprio2,a1
+[ 	]+[0-9a-f]+:[ 	]+61302573[ 	]+csrr[ 	]+a0,hidelegh
+[ 	]+[0-9a-f]+:[ 	]+61359073[ 	]+csrw[ 	]+hidelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+61802573[ 	]+csrr[ 	]+a0,hvienh
+[ 	]+[0-9a-f]+:[ 	]+61859073[ 	]+csrw[ 	]+hvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+65502573[ 	]+csrr[ 	]+a0,hviph
+[ 	]+[0-9a-f]+:[ 	]+65559073[ 	]+csrw[ 	]+hviph,a1
+[ 	]+[0-9a-f]+:[ 	]+65602573[ 	]+csrr[ 	]+a0,hviprio1h
+[ 	]+[0-9a-f]+:[ 	]+65659073[ 	]+csrw[ 	]+hviprio1h,a1
+[ 	]+[0-9a-f]+:[ 	]+65702573[ 	]+csrr[ 	]+a0,hviprio2h
+[ 	]+[0-9a-f]+:[ 	]+65759073[ 	]+csrw[ 	]+hviprio2h,a1
 [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
 [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
 [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
@@ -641,6 +681,30 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
+[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
+[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
+[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
+[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
+[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
+[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
+[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
+[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
+[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
+[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
+[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
+[ 	]+[0-9a-f]+:[ 	]+25002573[ 	]+csrr[ 	]+a0,vsiselect
+[ 	]+[0-9a-f]+:[ 	]+25059073[ 	]+csrw[ 	]+vsiselect,a1
+[ 	]+[0-9a-f]+:[ 	]+25102573[ 	]+csrr[ 	]+a0,vsireg
+[ 	]+[0-9a-f]+:[ 	]+25159073[ 	]+csrw[ 	]+vsireg,a1
+[ 	]+[0-9a-f]+:[ 	]+25c02573[ 	]+csrr[ 	]+a0,vstopei
+[ 	]+[0-9a-f]+:[ 	]+25c59073[ 	]+csrw[ 	]+vstopei,a1
+[ 	]+[0-9a-f]+:[ 	]+eb002573[ 	]+csrr[ 	]+a0,vstopi
+[ 	]+[0-9a-f]+:[ 	]+eb059073[ 	]+csrw[ 	]+vstopi,a1
+[ 	]+[0-9a-f]+:[ 	]+21402573[ 	]+csrr[ 	]+a0,vsieh
+[ 	]+[0-9a-f]+:[ 	]+21459073[ 	]+csrw[ 	]+vsieh,a1
+[ 	]+[0-9a-f]+:[ 	]+25402573[ 	]+csrr[ 	]+a0,vsiph
+[ 	]+[0-9a-f]+:[ 	]+25459073[ 	]+csrw[ 	]+vsiph,a1
 [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
 [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
 [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index a099e4ecc93..09a106806d2 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -409,6 +409,85 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: read-only CSR is written `csrw mtopi,a1'
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `hvien', needs `h' extension
+.*Warning: invalid CSR `hvien', needs `smaia' extension
+.*Warning: invalid CSR `hvien', needs `h' extension
+.*Warning: invalid CSR `hvien', needs `smaia' extension
+.*Warning: invalid CSR `hvictl', needs `h' extension
+.*Warning: invalid CSR `hvictl', needs `smaia' extension
+.*Warning: invalid CSR `hvictl', needs `h' extension
+.*Warning: invalid CSR `hvictl', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1', needs `h' extension
+.*Warning: invalid CSR `hviprio1', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1', needs `h' extension
+.*Warning: invalid CSR `hviprio1', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2', needs `h' extension
+.*Warning: invalid CSR `hviprio2', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2', needs `h' extension
+.*Warning: invalid CSR `hviprio2', needs `smaia' extension
+.*Warning: invalid CSR `hidelegh', needs rv32i extension
+.*Warning: invalid CSR `hidelegh', needs `h' extension
+.*Warning: invalid CSR `hidelegh', needs `smaia' extension
+.*Warning: invalid CSR `hidelegh', needs rv32i extension
+.*Warning: invalid CSR `hidelegh', needs `h' extension
+.*Warning: invalid CSR `hidelegh', needs `smaia' extension
+.*Warning: invalid CSR `hvienh', needs rv32i extension
+.*Warning: invalid CSR `hvienh', needs `h' extension
+.*Warning: invalid CSR `hvienh', needs `smaia' extension
+.*Warning: invalid CSR `hvienh', needs rv32i extension
+.*Warning: invalid CSR `hvienh', needs `h' extension
+.*Warning: invalid CSR `hvienh', needs `smaia' extension
+.*Warning: invalid CSR `hviph', needs rv32i extension
+.*Warning: invalid CSR `hviph', needs `h' extension
+.*Warning: invalid CSR `hviph', needs `smaia' extension
+.*Warning: invalid CSR `hviph', needs rv32i extension
+.*Warning: invalid CSR `hviph', needs `h' extension
+.*Warning: invalid CSR `hviph', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1h', needs rv32i extension
+.*Warning: invalid CSR `hviprio1h', needs `h' extension
+.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1h', needs rv32i extension
+.*Warning: invalid CSR `hviprio1h', needs `h' extension
+.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2h', needs rv32i extension
+.*Warning: invalid CSR `hviprio2h', needs `h' extension
+.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2h', needs rv32i extension
+.*Warning: invalid CSR `hviprio2h', needs `h' extension
+.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
@@ -481,6 +560,52 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw stopi,a1'
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `vsiselect', needs `h' extension
+.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
+.*Warning: invalid CSR `vsiselect', needs `h' extension
+.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
+.*Warning: invalid CSR `vsireg', needs `h' extension
+.*Warning: invalid CSR `vsireg', needs `ssaia' extension
+.*Warning: invalid CSR `vsireg', needs `h' extension
+.*Warning: invalid CSR `vsireg', needs `ssaia' extension
+.*Warning: invalid CSR `vstopei', needs `h' extension
+.*Warning: invalid CSR `vstopei', needs `ssaia' extension
+.*Warning: invalid CSR `vstopei', needs `h' extension
+.*Warning: invalid CSR `vstopei', needs `ssaia' extension
+.*Warning: invalid CSR `vstopi', needs `h' extension
+.*Warning: invalid CSR `vstopi', needs `ssaia' extension
+.*Warning: invalid CSR `vstopi', needs `h' extension
+.*Warning: invalid CSR `vstopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw vstopi,a1'
+.*Warning: invalid CSR `vsieh', needs rv32i extension
+.*Warning: invalid CSR `vsieh', needs `h' extension
+.*Warning: invalid CSR `vsieh', needs `ssaia' extension
+.*Warning: invalid CSR `vsieh', needs rv32i extension
+.*Warning: invalid CSR `vsieh', needs `h' extension
+.*Warning: invalid CSR `vsieh', needs `ssaia' extension
+.*Warning: invalid CSR `vsiph', needs rv32i extension
+.*Warning: invalid CSR `vsiph', needs `h' extension
+.*Warning: invalid CSR `vsiph', needs `ssaia' extension
+.*Warning: invalid CSR `vsiph', needs rv32i extension
+.*Warning: invalid CSR `vsiph', needs `h' extension
+.*Warning: invalid CSR `vsiph', needs `ssaia' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 728e647c552..142f60c216c 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
+[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
+[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
+[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
+[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
+[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
+[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
+[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
+[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
+[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
+[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
+[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
+[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
+[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
+[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
+[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
+[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
+[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
+[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
+[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
+[ 	]+[0-9a-f]+:[ 	]+60802573[ 	]+csrr[ 	]+a0,hvien
+[ 	]+[0-9a-f]+:[ 	]+60859073[ 	]+csrw[ 	]+hvien,a1
+[ 	]+[0-9a-f]+:[ 	]+60902573[ 	]+csrr[ 	]+a0,hvictl
+[ 	]+[0-9a-f]+:[ 	]+60959073[ 	]+csrw[ 	]+hvictl,a1
+[ 	]+[0-9a-f]+:[ 	]+64602573[ 	]+csrr[ 	]+a0,hviprio1
+[ 	]+[0-9a-f]+:[ 	]+64659073[ 	]+csrw[ 	]+hviprio1,a1
+[ 	]+[0-9a-f]+:[ 	]+64702573[ 	]+csrr[ 	]+a0,hviprio2
+[ 	]+[0-9a-f]+:[ 	]+64759073[ 	]+csrw[ 	]+hviprio2,a1
+[ 	]+[0-9a-f]+:[ 	]+61302573[ 	]+csrr[ 	]+a0,hidelegh
+[ 	]+[0-9a-f]+:[ 	]+61359073[ 	]+csrw[ 	]+hidelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+61802573[ 	]+csrr[ 	]+a0,hvienh
+[ 	]+[0-9a-f]+:[ 	]+61859073[ 	]+csrw[ 	]+hvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+65502573[ 	]+csrr[ 	]+a0,hviph
+[ 	]+[0-9a-f]+:[ 	]+65559073[ 	]+csrw[ 	]+hviph,a1
+[ 	]+[0-9a-f]+:[ 	]+65602573[ 	]+csrr[ 	]+a0,hviprio1h
+[ 	]+[0-9a-f]+:[ 	]+65659073[ 	]+csrw[ 	]+hviprio1h,a1
+[ 	]+[0-9a-f]+:[ 	]+65702573[ 	]+csrr[ 	]+a0,hviprio2h
+[ 	]+[0-9a-f]+:[ 	]+65759073[ 	]+csrw[ 	]+hviprio2h,a1
 [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
 [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
 [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
@@ -641,6 +681,30 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
+[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
+[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
+[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
+[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
+[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
+[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
+[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
+[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
+[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
+[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
+[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
+[ 	]+[0-9a-f]+:[ 	]+25002573[ 	]+csrr[ 	]+a0,vsiselect
+[ 	]+[0-9a-f]+:[ 	]+25059073[ 	]+csrw[ 	]+vsiselect,a1
+[ 	]+[0-9a-f]+:[ 	]+25102573[ 	]+csrr[ 	]+a0,vsireg
+[ 	]+[0-9a-f]+:[ 	]+25159073[ 	]+csrw[ 	]+vsireg,a1
+[ 	]+[0-9a-f]+:[ 	]+25c02573[ 	]+csrr[ 	]+a0,vstopei
+[ 	]+[0-9a-f]+:[ 	]+25c59073[ 	]+csrw[ 	]+vstopei,a1
+[ 	]+[0-9a-f]+:[ 	]+eb002573[ 	]+csrr[ 	]+a0,vstopi
+[ 	]+[0-9a-f]+:[ 	]+eb059073[ 	]+csrw[ 	]+vstopi,a1
+[ 	]+[0-9a-f]+:[ 	]+21402573[ 	]+csrr[ 	]+a0,vsieh
+[ 	]+[0-9a-f]+:[ 	]+21459073[ 	]+csrw[ 	]+vsieh,a1
+[ 	]+[0-9a-f]+:[ 	]+25402573[ 	]+csrr[ 	]+a0,vsiph
+[ 	]+[0-9a-f]+:[ 	]+25459073[ 	]+csrw[ 	]+vsiph,a1
 [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
 [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
 [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index cf8f2e25634..7b138244ee1 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -271,6 +271,85 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: read-only CSR is written `csrw mtopi,a1'
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `hvien', needs `h' extension
+.*Warning: invalid CSR `hvien', needs `smaia' extension
+.*Warning: invalid CSR `hvien', needs `h' extension
+.*Warning: invalid CSR `hvien', needs `smaia' extension
+.*Warning: invalid CSR `hvictl', needs `h' extension
+.*Warning: invalid CSR `hvictl', needs `smaia' extension
+.*Warning: invalid CSR `hvictl', needs `h' extension
+.*Warning: invalid CSR `hvictl', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1', needs `h' extension
+.*Warning: invalid CSR `hviprio1', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1', needs `h' extension
+.*Warning: invalid CSR `hviprio1', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2', needs `h' extension
+.*Warning: invalid CSR `hviprio2', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2', needs `h' extension
+.*Warning: invalid CSR `hviprio2', needs `smaia' extension
+.*Warning: invalid CSR `hidelegh', needs rv32i extension
+.*Warning: invalid CSR `hidelegh', needs `h' extension
+.*Warning: invalid CSR `hidelegh', needs `smaia' extension
+.*Warning: invalid CSR `hidelegh', needs rv32i extension
+.*Warning: invalid CSR `hidelegh', needs `h' extension
+.*Warning: invalid CSR `hidelegh', needs `smaia' extension
+.*Warning: invalid CSR `hvienh', needs rv32i extension
+.*Warning: invalid CSR `hvienh', needs `h' extension
+.*Warning: invalid CSR `hvienh', needs `smaia' extension
+.*Warning: invalid CSR `hvienh', needs rv32i extension
+.*Warning: invalid CSR `hvienh', needs `h' extension
+.*Warning: invalid CSR `hvienh', needs `smaia' extension
+.*Warning: invalid CSR `hviph', needs rv32i extension
+.*Warning: invalid CSR `hviph', needs `h' extension
+.*Warning: invalid CSR `hviph', needs `smaia' extension
+.*Warning: invalid CSR `hviph', needs rv32i extension
+.*Warning: invalid CSR `hviph', needs `h' extension
+.*Warning: invalid CSR `hviph', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1h', needs rv32i extension
+.*Warning: invalid CSR `hviprio1h', needs `h' extension
+.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1h', needs rv32i extension
+.*Warning: invalid CSR `hviprio1h', needs `h' extension
+.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2h', needs rv32i extension
+.*Warning: invalid CSR `hviprio2h', needs `h' extension
+.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2h', needs rv32i extension
+.*Warning: invalid CSR `hviprio2h', needs `h' extension
+.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
@@ -343,6 +422,52 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw stopi,a1'
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `vsiselect', needs `h' extension
+.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
+.*Warning: invalid CSR `vsiselect', needs `h' extension
+.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
+.*Warning: invalid CSR `vsireg', needs `h' extension
+.*Warning: invalid CSR `vsireg', needs `ssaia' extension
+.*Warning: invalid CSR `vsireg', needs `h' extension
+.*Warning: invalid CSR `vsireg', needs `ssaia' extension
+.*Warning: invalid CSR `vstopei', needs `h' extension
+.*Warning: invalid CSR `vstopei', needs `ssaia' extension
+.*Warning: invalid CSR `vstopei', needs `h' extension
+.*Warning: invalid CSR `vstopei', needs `ssaia' extension
+.*Warning: invalid CSR `vstopi', needs `h' extension
+.*Warning: invalid CSR `vstopi', needs `ssaia' extension
+.*Warning: invalid CSR `vstopi', needs `h' extension
+.*Warning: invalid CSR `vstopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw vstopi,a1'
+.*Warning: invalid CSR `vsieh', needs rv32i extension
+.*Warning: invalid CSR `vsieh', needs `h' extension
+.*Warning: invalid CSR `vsieh', needs `ssaia' extension
+.*Warning: invalid CSR `vsieh', needs rv32i extension
+.*Warning: invalid CSR `vsieh', needs `h' extension
+.*Warning: invalid CSR `vsieh', needs `ssaia' extension
+.*Warning: invalid CSR `vsiph', needs rv32i extension
+.*Warning: invalid CSR `vsiph', needs `h' extension
+.*Warning: invalid CSR `vsiph', needs `ssaia' extension
+.*Warning: invalid CSR `vsiph', needs rv32i extension
+.*Warning: invalid CSR `vsiph', needs `h' extension
+.*Warning: invalid CSR `vsiph', needs `ssaia' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index a34b99f4632..fa843727e80 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -601,6 +601,46 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+24459073[ 	]+csrw[ 	]+vsip,a1
 [ 	]+[0-9a-f]+:[ 	]+28002573[ 	]+csrr[ 	]+a0,vsatp
 [ 	]+[0-9a-f]+:[ 	]+28059073[ 	]+csrw[ 	]+vsatp,a1
+[ 	]+[0-9a-f]+:[ 	]+35002573[ 	]+csrr[ 	]+a0,miselect
+[ 	]+[0-9a-f]+:[ 	]+35059073[ 	]+csrw[ 	]+miselect,a1
+[ 	]+[0-9a-f]+:[ 	]+35102573[ 	]+csrr[ 	]+a0,mireg
+[ 	]+[0-9a-f]+:[ 	]+35159073[ 	]+csrw[ 	]+mireg,a1
+[ 	]+[0-9a-f]+:[ 	]+35c02573[ 	]+csrr[ 	]+a0,mtopei
+[ 	]+[0-9a-f]+:[ 	]+35c59073[ 	]+csrw[ 	]+mtopei,a1
+[ 	]+[0-9a-f]+:[ 	]+fb002573[ 	]+csrr[ 	]+a0,mtopi
+[ 	]+[0-9a-f]+:[ 	]+fb059073[ 	]+csrw[ 	]+mtopi,a1
+[ 	]+[0-9a-f]+:[ 	]+30802573[ 	]+csrr[ 	]+a0,mvien
+[ 	]+[0-9a-f]+:[ 	]+30859073[ 	]+csrw[ 	]+mvien,a1
+[ 	]+[0-9a-f]+:[ 	]+30902573[ 	]+csrr[ 	]+a0,mvip
+[ 	]+[0-9a-f]+:[ 	]+30959073[ 	]+csrw[ 	]+mvip,a1
+[ 	]+[0-9a-f]+:[ 	]+31302573[ 	]+csrr[ 	]+a0,midelegh
+[ 	]+[0-9a-f]+:[ 	]+31359073[ 	]+csrw[ 	]+midelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+31402573[ 	]+csrr[ 	]+a0,mieh
+[ 	]+[0-9a-f]+:[ 	]+31459073[ 	]+csrw[ 	]+mieh,a1
+[ 	]+[0-9a-f]+:[ 	]+31802573[ 	]+csrr[ 	]+a0,mvienh
+[ 	]+[0-9a-f]+:[ 	]+31859073[ 	]+csrw[ 	]+mvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+31902573[ 	]+csrr[ 	]+a0,mviph
+[ 	]+[0-9a-f]+:[ 	]+31959073[ 	]+csrw[ 	]+mviph,a1
+[ 	]+[0-9a-f]+:[ 	]+35402573[ 	]+csrr[ 	]+a0,miph
+[ 	]+[0-9a-f]+:[ 	]+35459073[ 	]+csrw[ 	]+miph,a1
+[ 	]+[0-9a-f]+:[ 	]+60802573[ 	]+csrr[ 	]+a0,hvien
+[ 	]+[0-9a-f]+:[ 	]+60859073[ 	]+csrw[ 	]+hvien,a1
+[ 	]+[0-9a-f]+:[ 	]+60902573[ 	]+csrr[ 	]+a0,hvictl
+[ 	]+[0-9a-f]+:[ 	]+60959073[ 	]+csrw[ 	]+hvictl,a1
+[ 	]+[0-9a-f]+:[ 	]+64602573[ 	]+csrr[ 	]+a0,hviprio1
+[ 	]+[0-9a-f]+:[ 	]+64659073[ 	]+csrw[ 	]+hviprio1,a1
+[ 	]+[0-9a-f]+:[ 	]+64702573[ 	]+csrr[ 	]+a0,hviprio2
+[ 	]+[0-9a-f]+:[ 	]+64759073[ 	]+csrw[ 	]+hviprio2,a1
+[ 	]+[0-9a-f]+:[ 	]+61302573[ 	]+csrr[ 	]+a0,hidelegh
+[ 	]+[0-9a-f]+:[ 	]+61359073[ 	]+csrw[ 	]+hidelegh,a1
+[ 	]+[0-9a-f]+:[ 	]+61802573[ 	]+csrr[ 	]+a0,hvienh
+[ 	]+[0-9a-f]+:[ 	]+61859073[ 	]+csrw[ 	]+hvienh,a1
+[ 	]+[0-9a-f]+:[ 	]+65502573[ 	]+csrr[ 	]+a0,hviph
+[ 	]+[0-9a-f]+:[ 	]+65559073[ 	]+csrw[ 	]+hviph,a1
+[ 	]+[0-9a-f]+:[ 	]+65602573[ 	]+csrr[ 	]+a0,hviprio1h
+[ 	]+[0-9a-f]+:[ 	]+65659073[ 	]+csrw[ 	]+hviprio1h,a1
+[ 	]+[0-9a-f]+:[ 	]+65702573[ 	]+csrr[ 	]+a0,hviprio2h
+[ 	]+[0-9a-f]+:[ 	]+65759073[ 	]+csrw[ 	]+hviprio2h,a1
 [ 	]+[0-9a-f]+:[ 	]+30c02573[ 	]+csrr[ 	]+a0,mstateen0
 [ 	]+[0-9a-f]+:[ 	]+30c59073[ 	]+csrw[ 	]+mstateen0,a1
 [ 	]+[0-9a-f]+:[ 	]+30d02573[ 	]+csrr[ 	]+a0,mstateen1
@@ -641,6 +681,30 @@ Disassembly of section .text:
 [ 	]+[0-9a-f]+:[ 	]+61e59073[ 	]+csrw[ 	]+hstateen2h,a1
 [ 	]+[0-9a-f]+:[ 	]+61f02573[ 	]+csrr[ 	]+a0,hstateen3h
 [ 	]+[0-9a-f]+:[ 	]+61f59073[ 	]+csrw[ 	]+hstateen3h,a1
+[ 	]+[0-9a-f]+:[ 	]+15002573[ 	]+csrr[ 	]+a0,siselect
+[ 	]+[0-9a-f]+:[ 	]+15059073[ 	]+csrw[ 	]+siselect,a1
+[ 	]+[0-9a-f]+:[ 	]+15102573[ 	]+csrr[ 	]+a0,sireg
+[ 	]+[0-9a-f]+:[ 	]+15159073[ 	]+csrw[ 	]+sireg,a1
+[ 	]+[0-9a-f]+:[ 	]+15c02573[ 	]+csrr[ 	]+a0,stopei
+[ 	]+[0-9a-f]+:[ 	]+15c59073[ 	]+csrw[ 	]+stopei,a1
+[ 	]+[0-9a-f]+:[ 	]+db002573[ 	]+csrr[ 	]+a0,stopi
+[ 	]+[0-9a-f]+:[ 	]+db059073[ 	]+csrw[ 	]+stopi,a1
+[ 	]+[0-9a-f]+:[ 	]+11402573[ 	]+csrr[ 	]+a0,sieh
+[ 	]+[0-9a-f]+:[ 	]+11459073[ 	]+csrw[ 	]+sieh,a1
+[ 	]+[0-9a-f]+:[ 	]+15402573[ 	]+csrr[ 	]+a0,siph
+[ 	]+[0-9a-f]+:[ 	]+15459073[ 	]+csrw[ 	]+siph,a1
+[ 	]+[0-9a-f]+:[ 	]+25002573[ 	]+csrr[ 	]+a0,vsiselect
+[ 	]+[0-9a-f]+:[ 	]+25059073[ 	]+csrw[ 	]+vsiselect,a1
+[ 	]+[0-9a-f]+:[ 	]+25102573[ 	]+csrr[ 	]+a0,vsireg
+[ 	]+[0-9a-f]+:[ 	]+25159073[ 	]+csrw[ 	]+vsireg,a1
+[ 	]+[0-9a-f]+:[ 	]+25c02573[ 	]+csrr[ 	]+a0,vstopei
+[ 	]+[0-9a-f]+:[ 	]+25c59073[ 	]+csrw[ 	]+vstopei,a1
+[ 	]+[0-9a-f]+:[ 	]+eb002573[ 	]+csrr[ 	]+a0,vstopi
+[ 	]+[0-9a-f]+:[ 	]+eb059073[ 	]+csrw[ 	]+vstopi,a1
+[ 	]+[0-9a-f]+:[ 	]+21402573[ 	]+csrr[ 	]+a0,vsieh
+[ 	]+[0-9a-f]+:[ 	]+21459073[ 	]+csrw[ 	]+vsieh,a1
+[ 	]+[0-9a-f]+:[ 	]+25402573[ 	]+csrr[ 	]+a0,vsiph
+[ 	]+[0-9a-f]+:[ 	]+25459073[ 	]+csrw[ 	]+vsiph,a1
 [ 	]+[0-9a-f]+:[ 	]+da002573[ 	]+csrr[ 	]+a0,scountovf
 [ 	]+[0-9a-f]+:[ 	]+da059073[ 	]+csrw[ 	]+scountovf,a1
 [ 	]+[0-9a-f]+:[ 	]+72302573[ 	]+csrr[ 	]+a0,mhpmevent3h
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 5f298c1dda9..e63719ec066 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -461,6 +461,85 @@
 .*Warning: invalid CSR `vsip', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `miselect', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mireg', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopei', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: invalid CSR `mtopi', needs `smaia' extension
+.*Warning: read-only CSR is written `csrw mtopi,a1'
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvien', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `mvip', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `midelegh', needs rv32i extension
+.*Warning: invalid CSR `midelegh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mieh', needs rv32i extension
+.*Warning: invalid CSR `mieh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mvienh', needs rv32i extension
+.*Warning: invalid CSR `mvienh', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `mviph', needs rv32i extension
+.*Warning: invalid CSR `mviph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `miph', needs rv32i extension
+.*Warning: invalid CSR `miph', needs `smaia' extension
+.*Warning: invalid CSR `hvien', needs `h' extension
+.*Warning: invalid CSR `hvien', needs `smaia' extension
+.*Warning: invalid CSR `hvien', needs `h' extension
+.*Warning: invalid CSR `hvien', needs `smaia' extension
+.*Warning: invalid CSR `hvictl', needs `h' extension
+.*Warning: invalid CSR `hvictl', needs `smaia' extension
+.*Warning: invalid CSR `hvictl', needs `h' extension
+.*Warning: invalid CSR `hvictl', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1', needs `h' extension
+.*Warning: invalid CSR `hviprio1', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1', needs `h' extension
+.*Warning: invalid CSR `hviprio1', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2', needs `h' extension
+.*Warning: invalid CSR `hviprio2', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2', needs `h' extension
+.*Warning: invalid CSR `hviprio2', needs `smaia' extension
+.*Warning: invalid CSR `hidelegh', needs rv32i extension
+.*Warning: invalid CSR `hidelegh', needs `h' extension
+.*Warning: invalid CSR `hidelegh', needs `smaia' extension
+.*Warning: invalid CSR `hidelegh', needs rv32i extension
+.*Warning: invalid CSR `hidelegh', needs `h' extension
+.*Warning: invalid CSR `hidelegh', needs `smaia' extension
+.*Warning: invalid CSR `hvienh', needs rv32i extension
+.*Warning: invalid CSR `hvienh', needs `h' extension
+.*Warning: invalid CSR `hvienh', needs `smaia' extension
+.*Warning: invalid CSR `hvienh', needs rv32i extension
+.*Warning: invalid CSR `hvienh', needs `h' extension
+.*Warning: invalid CSR `hvienh', needs `smaia' extension
+.*Warning: invalid CSR `hviph', needs rv32i extension
+.*Warning: invalid CSR `hviph', needs `h' extension
+.*Warning: invalid CSR `hviph', needs `smaia' extension
+.*Warning: invalid CSR `hviph', needs rv32i extension
+.*Warning: invalid CSR `hviph', needs `h' extension
+.*Warning: invalid CSR `hviph', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1h', needs rv32i extension
+.*Warning: invalid CSR `hviprio1h', needs `h' extension
+.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
+.*Warning: invalid CSR `hviprio1h', needs rv32i extension
+.*Warning: invalid CSR `hviprio1h', needs `h' extension
+.*Warning: invalid CSR `hviprio1h', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2h', needs rv32i extension
+.*Warning: invalid CSR `hviprio2h', needs `h' extension
+.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
+.*Warning: invalid CSR `hviprio2h', needs rv32i extension
+.*Warning: invalid CSR `hviprio2h', needs `h' extension
+.*Warning: invalid CSR `hviprio2h', needs `smaia' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen0', needs `smstateen' extension
 .*Warning: invalid CSR `mstateen1', needs `smstateen' extension
@@ -533,6 +612,52 @@
 .*Warning: invalid CSR `hstateen3h', needs rv32i extension
 .*Warning: invalid CSR `hstateen3h', needs `h' extension
 .*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `siselect', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `sireg', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopei', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: invalid CSR `stopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw stopi,a1'
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `sieh', needs rv32i extension
+.*Warning: invalid CSR `sieh', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `siph', needs rv32i extension
+.*Warning: invalid CSR `siph', needs `ssaia' extension
+.*Warning: invalid CSR `vsiselect', needs `h' extension
+.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
+.*Warning: invalid CSR `vsiselect', needs `h' extension
+.*Warning: invalid CSR `vsiselect', needs `ssaia' extension
+.*Warning: invalid CSR `vsireg', needs `h' extension
+.*Warning: invalid CSR `vsireg', needs `ssaia' extension
+.*Warning: invalid CSR `vsireg', needs `h' extension
+.*Warning: invalid CSR `vsireg', needs `ssaia' extension
+.*Warning: invalid CSR `vstopei', needs `h' extension
+.*Warning: invalid CSR `vstopei', needs `ssaia' extension
+.*Warning: invalid CSR `vstopei', needs `h' extension
+.*Warning: invalid CSR `vstopei', needs `ssaia' extension
+.*Warning: invalid CSR `vstopi', needs `h' extension
+.*Warning: invalid CSR `vstopi', needs `ssaia' extension
+.*Warning: invalid CSR `vstopi', needs `h' extension
+.*Warning: invalid CSR `vstopi', needs `ssaia' extension
+.*Warning: read-only CSR is written `csrw vstopi,a1'
+.*Warning: invalid CSR `vsieh', needs rv32i extension
+.*Warning: invalid CSR `vsieh', needs `h' extension
+.*Warning: invalid CSR `vsieh', needs `ssaia' extension
+.*Warning: invalid CSR `vsieh', needs rv32i extension
+.*Warning: invalid CSR `vsieh', needs `h' extension
+.*Warning: invalid CSR `vsieh', needs `ssaia' extension
+.*Warning: invalid CSR `vsiph', needs rv32i extension
+.*Warning: invalid CSR `vsiph', needs `h' extension
+.*Warning: invalid CSR `vsiph', needs `ssaia' extension
+.*Warning: invalid CSR `vsiph', needs rv32i extension
+.*Warning: invalid CSR `vsiph', needs `h' extension
+.*Warning: invalid CSR `vsiph', needs `ssaia' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
 .*Warning: read-only CSR is written `csrw scountovf,a1'
diff --git a/gas/testsuite/gas/riscv/csr.s b/gas/testsuite/gas/riscv/csr.s
index 128aeb83a04..21939b20a6d 100644
--- a/gas/testsuite/gas/riscv/csr.s
+++ b/gas/testsuite/gas/riscv/csr.s
@@ -337,6 +337,28 @@
 	csr vsip
 	csr vsatp
 
+	# Smaia
+	csr miselect
+	csr mireg
+	csr mtopei
+	csr mtopi
+	csr mvien
+	csr mvip
+	csr midelegh
+	csr mieh
+	csr mvienh
+	csr mviph
+	csr miph
+	csr hvien
+	csr hvictl
+	csr hviprio1
+	csr hviprio2
+	csr hidelegh
+	csr hvienh
+	csr hviph
+	csr hviprio1h
+	csr hviprio2h
+
 	# Smstateen extension
 	csr mstateen0
 	csr mstateen1
@@ -359,6 +381,20 @@
 	csr hstateen2h
 	csr hstateen3h
 
+	# Ssaia
+	csr siselect
+	csr sireg
+	csr stopei
+	csr stopi
+	csr sieh
+	csr siph
+	csr vsiselect
+	csr vsireg
+	csr vstopei
+	csr vstopi
+	csr vsieh
+	csr vsiph
+
 	# Sscofpmf extension
 	csr scountovf
 	csr mhpmevent3h
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index f36b06dcd6b..8beed0b1b42 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -2661,6 +2661,27 @@
 #define CSR_UIP 0x44
 #define CSR_SEDELEG 0x102
 #define CSR_SIDELEG 0x103
+/* Smaia extension */
+#define CSR_MISELECT 0x350
+#define CSR_MIREG    0x351
+#define CSR_MTOPEI   0x35c
+#define CSR_MTOPI    0xfb0
+#define CSR_MVIEN    0x308
+#define CSR_MVIP     0x309
+#define CSR_MIDELEGH 0x313
+#define CSR_MIEH     0x314
+#define CSR_MVIENH   0x318
+#define CSR_MVIPH    0x319
+#define CSR_MIPH     0x354
+#define CSR_HVIEN     0x608
+#define CSR_HVICTL    0x609
+#define CSR_HVIPRIO1  0x646
+#define CSR_HVIPRIO2  0x647
+#define CSR_HIDELEGH  0x613
+#define CSR_HVIENH    0x618
+#define CSR_HVIPH     0x655
+#define CSR_HVIPRIO1H 0x656
+#define CSR_HVIPRIO2H 0x657
 /* Smstateen extension */
 #define CSR_MSTATEEN0 0x30c
 #define CSR_MSTATEEN1 0x30d
@@ -2682,6 +2703,19 @@
 #define CSR_HSTATEEN1H 0x61d
 #define CSR_HSTATEEN2H 0x61e
 #define CSR_HSTATEEN3H 0x61f
+/* Ssaia extension */
+#define CSR_SISELECT 0x150
+#define CSR_SIREG    0x151
+#define CSR_STOPEI   0x15c
+#define CSR_STOPI    0xdb0
+#define CSR_SIEH     0x114
+#define CSR_SIPH     0x154
+#define CSR_VSISELECT 0x250
+#define CSR_VSIREG    0x251
+#define CSR_VSTOPEI   0x25c
+#define CSR_VSTOPI    0xeb0
+#define CSR_VSIEH     0x214
+#define CSR_VSIPH     0x254
 /* Sscofpmf extension */
 #define CSR_SCOUNTOVF 0xda0
 #define CSR_MHPMEVENT3H 0x723
@@ -3504,6 +3538,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
 DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+/* Smaia extension */
+DECLARE_CSR(miselect, CSR_MISELECT, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mireg, CSR_MIREG, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mtopei, CSR_MTOPEI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mtopi, CSR_MTOPI, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mvien, CSR_MVIEN, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mvip, CSR_MVIP, CSR_CLASS_SMAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(midelegh, CSR_MIDELEGH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mieh, CSR_MIEH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mvienh, CSR_MVIENH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(mviph, CSR_MVIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(miph, CSR_MIPH, CSR_CLASS_SMAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hvien, CSR_HVIEN, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hvictl, CSR_HVICTL, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hviprio1, CSR_HVIPRIO1, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hviprio2, CSR_HVIPRIO2, CSR_CLASS_SMAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hidelegh, CSR_HIDELEGH, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hvienh, CSR_HVIENH, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hviph, CSR_HVIPH, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hviprio1h, CSR_HVIPRIO1H, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hviprio2h, CSR_HVIPRIO2H, CSR_CLASS_SMAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 /* Smstateen extension */
 DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
@@ -3525,6 +3580,19 @@ DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_
 DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+/* Ssaia extension */
+DECLARE_CSR(siselect, CSR_SISELECT, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sireg, CSR_SIREG, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(stopei, CSR_STOPEI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(stopi, CSR_STOPI, CSR_CLASS_SSAIA, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(sieh, CSR_SIEH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(siph, CSR_SIPH, CSR_CLASS_SSAIA_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vsiselect, CSR_VSISELECT, CSR_CLASS_SSAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vsireg, CSR_VSIREG, CSR_CLASS_SSAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vstopei, CSR_VSTOPEI, CSR_CLASS_SSAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vstopi, CSR_VSTOPI, CSR_CLASS_SSAIA_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vsieh, CSR_VSIEH, CSR_CLASS_SSAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vsiph, CSR_VSIPH, CSR_CLASS_SSAIA_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 /* Sscofpmf extension */
 DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
-- 
2.38.1


^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2022-11-22  9:51 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-25 14:54 [PATCH] riscv: Add AIA extension support (Smaia, Ssaia) Christoph Muellner
2022-08-25 14:54 ` Christoph Muellner
2022-08-25 15:16 ` Christoph Müllner
2022-08-25 18:05   ` Palmer Dabbelt
2022-08-25 19:11     ` Christoph Müllner
2022-08-25 20:49       ` Palmer Dabbelt
2022-08-25 21:49         ` Philipp Tomsich
2022-08-26  9:53       ` Nelson Chu
2022-11-18  0:35         ` Christoph Müllner
2022-11-18  0:32 Christoph Muellner
2022-11-18  5:07 ` Tsukasa OI
2022-11-18  8:33   ` Christoph Müllner
2022-11-18  8:44     ` Tsukasa OI
2022-11-18  9:11       ` Christoph Müllner
2022-11-18  8:12 ` Nelson Chu
2022-11-18  9:08   ` Christoph Müllner
2022-11-18  9:34     ` Nelson Chu
2022-11-22  9:51       ` Christoph Müllner
2022-11-19  5:59     ` Tsukasa OI

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).