public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] add missing extension info to 'invalid CSR' error
@ 2022-01-21 17:22 Patrick O'Neill
  2022-02-23 11:22 ` Nelson Chu
  0 siblings, 1 reply; 2+ messages in thread
From: Patrick O'Neill @ 2022-01-21 17:22 UTC (permalink / raw)
  To: binutils; +Cc: nelsonc1225, palmer, Patrick O'Neill

PR 28733

Currently we report errors as "invalid CSR 'fscr' for the current ISA"
when the instruction isn't valid.
This patch expands that error message to include the missing extension
information. For example, now the error message would be "invalid CSR
'fscr' for the current ISA, CSR 'fscr' needs 'f' extension".

Signed-off-by: Patrick O'Neill <patrick@rivosinc.com>
---
 gas/config/tc-riscv.c                       |  22 +-
 gas/testsuite/gas/riscv/csr-version-1p10.l  | 312 ++++++++++----------
 gas/testsuite/gas/riscv/csr-version-1p11.l  | 312 ++++++++++----------
 gas/testsuite/gas/riscv/csr-version-1p12.l  | 312 ++++++++++----------
 gas/testsuite/gas/riscv/csr-version-1p9p1.l | 312 ++++++++++----------
 5 files changed, 640 insertions(+), 630 deletions(-)

diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 390aaf1710b..ebad2e0b0a1 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -884,25 +884,31 @@ riscv_csr_address (const char *csr_name,
   enum riscv_csr_class csr_class = entry->csr_class;
   bool need_check_version = true;
   bool result = true;
+  const char* extension = NULL;
 
   switch (csr_class)
     {
     case CSR_CLASS_I:
-      result = riscv_subset_supports (&riscv_rps_as, "i");
+      extension = "i";
+      result = riscv_subset_supports (&riscv_rps_as, extension);
       break;
     case CSR_CLASS_I_32:
-      result = (xlen == 32 && riscv_subset_supports (&riscv_rps_as, "i"));
+      extension = "i";
+      result = (xlen == 32 && riscv_subset_supports (&riscv_rps_as, extension));
       break;
     case CSR_CLASS_F:
-      result = riscv_subset_supports (&riscv_rps_as, "f");
+      extension = "f";
+      result = riscv_subset_supports (&riscv_rps_as, extension);
       need_check_version = false;
       break;
     case CSR_CLASS_ZKR:
-      result = riscv_subset_supports (&riscv_rps_as, "zkr");
+      extension = "zkr";
+      result = riscv_subset_supports (&riscv_rps_as, extension);
       need_check_version = false;
       break;
     case CSR_CLASS_V:
-      result = riscv_subset_supports (&riscv_rps_as, "v");
+      extension = "v";
+      result = riscv_subset_supports (&riscv_rps_as, extension);
       need_check_version = false;
       break;
     case CSR_CLASS_DEBUG:
@@ -913,7 +919,11 @@ riscv_csr_address (const char *csr_name,
     }
 
   if (riscv_opts.csr_check && !result)
-    as_warn (_("invalid CSR `%s' for the current ISA"), csr_name);
+    {
+      assert(extension != NULL);
+      as_warn (_("invalid CSR `%s' for the current ISA, CSR `%s' needs "
+		 "`%s' extension"), csr_name, csr_name, extension);
+    }
 
   while (entry != NULL)
     {
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index ed6773e637c..4037cb2aca6 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -31,172 +31,172 @@
 .*Warning: read-only CSR is written `csrw hpmcounter29,a1'
 .*Warning: read-only CSR is written `csrw hpmcounter30,a1'
 .*Warning: read-only CSR is written `csrw hpmcounter31,a1'
-.*Warning: invalid CSR `cycleh' for the current ISA
-.*Warning: invalid CSR `cycleh' for the current ISA
+.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
+.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
 .*Warning: read-only CSR is written `csrw cycleh,a1'
-.*Warning: invalid CSR `timeh' for the current ISA
-.*Warning: invalid CSR `timeh' for the current ISA
+.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
+.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
 .*Warning: read-only CSR is written `csrw timeh,a1'
-.*Warning: invalid CSR `instreth' for the current ISA
-.*Warning: invalid CSR `instreth' for the current ISA
+.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
+.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
 .*Warning: read-only CSR is written `csrw instreth,a1'
-.*Warning: invalid CSR `hpmcounter3h' for the current ISA
-.*Warning: invalid CSR `hpmcounter3h' for the current ISA
+.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter3h,a1'
-.*Warning: invalid CSR `hpmcounter4h' for the current ISA
-.*Warning: invalid CSR `hpmcounter4h' for the current ISA
+.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter4h,a1'
-.*Warning: invalid CSR `hpmcounter5h' for the current ISA
-.*Warning: invalid CSR `hpmcounter5h' for the current ISA
+.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter5h,a1'
-.*Warning: invalid CSR `hpmcounter6h' for the current ISA
-.*Warning: invalid CSR `hpmcounter6h' for the current ISA
+.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter6h,a1'
-.*Warning: invalid CSR `hpmcounter7h' for the current ISA
-.*Warning: invalid CSR `hpmcounter7h' for the current ISA
+.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter7h,a1'
-.*Warning: invalid CSR `hpmcounter8h' for the current ISA
-.*Warning: invalid CSR `hpmcounter8h' for the current ISA
+.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter8h,a1'
-.*Warning: invalid CSR `hpmcounter9h' for the current ISA
-.*Warning: invalid CSR `hpmcounter9h' for the current ISA
+.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter9h,a1'
-.*Warning: invalid CSR `hpmcounter10h' for the current ISA
-.*Warning: invalid CSR `hpmcounter10h' for the current ISA
+.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter10h,a1'
-.*Warning: invalid CSR `hpmcounter11h' for the current ISA
-.*Warning: invalid CSR `hpmcounter11h' for the current ISA
+.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter11h,a1'
-.*Warning: invalid CSR `hpmcounter12h' for the current ISA
-.*Warning: invalid CSR `hpmcounter12h' for the current ISA
+.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter12h,a1'
-.*Warning: invalid CSR `hpmcounter13h' for the current ISA
-.*Warning: invalid CSR `hpmcounter13h' for the current ISA
+.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter13h,a1'
-.*Warning: invalid CSR `hpmcounter14h' for the current ISA
-.*Warning: invalid CSR `hpmcounter14h' for the current ISA
+.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter14h,a1'
-.*Warning: invalid CSR `hpmcounter15h' for the current ISA
-.*Warning: invalid CSR `hpmcounter15h' for the current ISA
+.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter15h,a1'
-.*Warning: invalid CSR `hpmcounter16h' for the current ISA
-.*Warning: invalid CSR `hpmcounter16h' for the current ISA
+.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter16h,a1'
-.*Warning: invalid CSR `hpmcounter17h' for the current ISA
-.*Warning: invalid CSR `hpmcounter17h' for the current ISA
+.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter17h,a1'
-.*Warning: invalid CSR `hpmcounter18h' for the current ISA
-.*Warning: invalid CSR `hpmcounter18h' for the current ISA
+.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter18h,a1'
-.*Warning: invalid CSR `hpmcounter19h' for the current ISA
-.*Warning: invalid CSR `hpmcounter19h' for the current ISA
+.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter19h,a1'
-.*Warning: invalid CSR `hpmcounter20h' for the current ISA
-.*Warning: invalid CSR `hpmcounter20h' for the current ISA
+.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter20h,a1'
-.*Warning: invalid CSR `hpmcounter21h' for the current ISA
-.*Warning: invalid CSR `hpmcounter21h' for the current ISA
+.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter21h,a1'
-.*Warning: invalid CSR `hpmcounter22h' for the current ISA
-.*Warning: invalid CSR `hpmcounter22h' for the current ISA
+.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter22h,a1'
-.*Warning: invalid CSR `hpmcounter23h' for the current ISA
-.*Warning: invalid CSR `hpmcounter23h' for the current ISA
+.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter23h,a1'
-.*Warning: invalid CSR `hpmcounter24h' for the current ISA
-.*Warning: invalid CSR `hpmcounter24h' for the current ISA
+.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter24h,a1'
-.*Warning: invalid CSR `hpmcounter25h' for the current ISA
-.*Warning: invalid CSR `hpmcounter25h' for the current ISA
+.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter25h,a1'
-.*Warning: invalid CSR `hpmcounter26h' for the current ISA
-.*Warning: invalid CSR `hpmcounter26h' for the current ISA
+.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter26h,a1'
-.*Warning: invalid CSR `hpmcounter27h' for the current ISA
-.*Warning: invalid CSR `hpmcounter27h' for the current ISA
+.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter27h,a1'
-.*Warning: invalid CSR `hpmcounter28h' for the current ISA
-.*Warning: invalid CSR `hpmcounter28h' for the current ISA
+.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter28h,a1'
-.*Warning: invalid CSR `hpmcounter29h' for the current ISA
-.*Warning: invalid CSR `hpmcounter29h' for the current ISA
+.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter29h,a1'
-.*Warning: invalid CSR `hpmcounter30h' for the current ISA
-.*Warning: invalid CSR `hpmcounter30h' for the current ISA
+.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter30h,a1'
-.*Warning: invalid CSR `hpmcounter31h' for the current ISA
-.*Warning: invalid CSR `hpmcounter31h' for the current ISA
+.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
 .*Warning: read-only CSR is written `csrw mvendorid,a1'
 .*Warning: read-only CSR is written `csrw marchid,a1'
 .*Warning: read-only CSR is written `csrw mimpid,a1'
 .*Warning: read-only CSR is written `csrw mhartid,a1'
-.*Warning: invalid CSR `pmpcfg1' for the current ISA
-.*Warning: invalid CSR `pmpcfg1' for the current ISA
-.*Warning: invalid CSR `pmpcfg3' for the current ISA
-.*Warning: invalid CSR `pmpcfg3' for the current ISA
-.*Warning: invalid CSR `mcycleh' for the current ISA
-.*Warning: invalid CSR `mcycleh' for the current ISA
-.*Warning: invalid CSR `minstreth' for the current ISA
-.*Warning: invalid CSR `minstreth' for the current ISA
-.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
+.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
+.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
+.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
+.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
+.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
+.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
+.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
+.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
 .*Warning: invalid CSR `mcountinhibit' for the privileged spec `1.10'
 .*Warning: invalid CSR `mcountinhibit' for the privileged spec `1.10'
 .*Warning: invalid CSR `hstatus' for the privileged spec `1.10'
@@ -224,9 +224,9 @@
 .*Warning: read-only CSR is written `csrw hgeip,a1'
 .*Warning: invalid CSR `henvcfg' for the privileged spec `1.10'
 .*Warning: invalid CSR `henvcfg' for the privileged spec `1.10'
-.*Warning: invalid CSR `henvcfgh' for the current ISA
+.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
 .*Warning: invalid CSR `henvcfgh' for the privileged spec `1.10'
-.*Warning: invalid CSR `henvcfgh' for the current ISA
+.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
 .*Warning: invalid CSR `henvcfgh' for the privileged spec `1.10'
 .*Warning: invalid CSR `hgatp' for the privileged spec `1.10'
 .*Warning: invalid CSR `hgatp' for the privileged spec `1.10'
@@ -234,9 +234,9 @@
 .*Warning: invalid CSR `hcontext' for the privileged spec `1.10'
 .*Warning: invalid CSR `htimedelta' for the privileged spec `1.10'
 .*Warning: invalid CSR `htimedelta' for the privileged spec `1.10'
-.*Warning: invalid CSR `htimedeltah' for the current ISA
+.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
 .*Warning: invalid CSR `htimedeltah' for the privileged spec `1.10'
-.*Warning: invalid CSR `htimedeltah' for the current ISA
+.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
 .*Warning: invalid CSR `htimedeltah' for the privileged spec `1.10'
 .*Warning: invalid CSR `vsstatus' for the privileged spec `1.10'
 .*Warning: invalid CSR `vsstatus' for the privileged spec `1.10'
@@ -282,28 +282,28 @@
 .*Warning: invalid CSR `mscounteren' for the privileged spec `1.10'
 .*Warning: invalid CSR `mhcounteren' for the privileged spec `1.10'
 .*Warning: invalid CSR `mhcounteren' for the privileged spec `1.10'
-.*Warning: invalid CSR `fflags' for the current ISA
-.*Warning: invalid CSR `fflags' for the current ISA
-.*Warning: invalid CSR `frm' for the current ISA
-.*Warning: invalid CSR `frm' for the current ISA
-.*Warning: invalid CSR `fcsr' for the current ISA
-.*Warning: invalid CSR `fcsr' for the current ISA
-.*Warning: invalid CSR `seed' for the current ISA
-.*Warning: invalid CSR `seed' for the current ISA
-.*Warning: invalid CSR `vstart' for the current ISA
-.*Warning: invalid CSR `vstart' for the current ISA
-.*Warning: invalid CSR `vxsat' for the current ISA
-.*Warning: invalid CSR `vxsat' for the current ISA
-.*Warning: invalid CSR `vxrm' for the current ISA
-.*Warning: invalid CSR `vxrm' for the current ISA
-.*Warning: invalid CSR `vcsr' for the current ISA
-.*Warning: invalid CSR `vcsr' for the current ISA
-.*Warning: invalid CSR `vl' for the current ISA
-.*Warning: invalid CSR `vl' for the current ISA
+.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
+.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
+.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
+.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
+.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
+.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
+.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
+.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
+.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
+.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
+.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
+.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
+.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
+.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
+.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
+.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
+.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
+.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
 .*Warning: read-only CSR is written `csrw vl,a1'
-.*Warning: invalid CSR `vtype' for the current ISA
-.*Warning: invalid CSR `vtype' for the current ISA
+.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
+.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
 .*Warning: read-only CSR is written `csrw vtype,a1'
-.*Warning: invalid CSR `vlenb' for the current ISA
-.*Warning: invalid CSR `vlenb' for the current ISA
+.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
+.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
 .*Warning: read-only CSR is written `csrw vlenb,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index 44d9611fe49..2806f1c9523 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -31,172 +31,172 @@
 .*Warning: read-only CSR is written `csrw hpmcounter29,a1'
 .*Warning: read-only CSR is written `csrw hpmcounter30,a1'
 .*Warning: read-only CSR is written `csrw hpmcounter31,a1'
-.*Warning: invalid CSR `cycleh' for the current ISA
-.*Warning: invalid CSR `cycleh' for the current ISA
+.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
+.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
 .*Warning: read-only CSR is written `csrw cycleh,a1'
-.*Warning: invalid CSR `timeh' for the current ISA
-.*Warning: invalid CSR `timeh' for the current ISA
+.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
+.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
 .*Warning: read-only CSR is written `csrw timeh,a1'
-.*Warning: invalid CSR `instreth' for the current ISA
-.*Warning: invalid CSR `instreth' for the current ISA
+.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
+.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
 .*Warning: read-only CSR is written `csrw instreth,a1'
-.*Warning: invalid CSR `hpmcounter3h' for the current ISA
-.*Warning: invalid CSR `hpmcounter3h' for the current ISA
+.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter3h,a1'
-.*Warning: invalid CSR `hpmcounter4h' for the current ISA
-.*Warning: invalid CSR `hpmcounter4h' for the current ISA
+.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter4h,a1'
-.*Warning: invalid CSR `hpmcounter5h' for the current ISA
-.*Warning: invalid CSR `hpmcounter5h' for the current ISA
+.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter5h,a1'
-.*Warning: invalid CSR `hpmcounter6h' for the current ISA
-.*Warning: invalid CSR `hpmcounter6h' for the current ISA
+.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter6h,a1'
-.*Warning: invalid CSR `hpmcounter7h' for the current ISA
-.*Warning: invalid CSR `hpmcounter7h' for the current ISA
+.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter7h,a1'
-.*Warning: invalid CSR `hpmcounter8h' for the current ISA
-.*Warning: invalid CSR `hpmcounter8h' for the current ISA
+.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter8h,a1'
-.*Warning: invalid CSR `hpmcounter9h' for the current ISA
-.*Warning: invalid CSR `hpmcounter9h' for the current ISA
+.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter9h,a1'
-.*Warning: invalid CSR `hpmcounter10h' for the current ISA
-.*Warning: invalid CSR `hpmcounter10h' for the current ISA
+.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter10h,a1'
-.*Warning: invalid CSR `hpmcounter11h' for the current ISA
-.*Warning: invalid CSR `hpmcounter11h' for the current ISA
+.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter11h,a1'
-.*Warning: invalid CSR `hpmcounter12h' for the current ISA
-.*Warning: invalid CSR `hpmcounter12h' for the current ISA
+.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter12h,a1'
-.*Warning: invalid CSR `hpmcounter13h' for the current ISA
-.*Warning: invalid CSR `hpmcounter13h' for the current ISA
+.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter13h,a1'
-.*Warning: invalid CSR `hpmcounter14h' for the current ISA
-.*Warning: invalid CSR `hpmcounter14h' for the current ISA
+.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter14h,a1'
-.*Warning: invalid CSR `hpmcounter15h' for the current ISA
-.*Warning: invalid CSR `hpmcounter15h' for the current ISA
+.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter15h,a1'
-.*Warning: invalid CSR `hpmcounter16h' for the current ISA
-.*Warning: invalid CSR `hpmcounter16h' for the current ISA
+.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter16h,a1'
-.*Warning: invalid CSR `hpmcounter17h' for the current ISA
-.*Warning: invalid CSR `hpmcounter17h' for the current ISA
+.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter17h,a1'
-.*Warning: invalid CSR `hpmcounter18h' for the current ISA
-.*Warning: invalid CSR `hpmcounter18h' for the current ISA
+.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter18h,a1'
-.*Warning: invalid CSR `hpmcounter19h' for the current ISA
-.*Warning: invalid CSR `hpmcounter19h' for the current ISA
+.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter19h,a1'
-.*Warning: invalid CSR `hpmcounter20h' for the current ISA
-.*Warning: invalid CSR `hpmcounter20h' for the current ISA
+.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter20h,a1'
-.*Warning: invalid CSR `hpmcounter21h' for the current ISA
-.*Warning: invalid CSR `hpmcounter21h' for the current ISA
+.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter21h,a1'
-.*Warning: invalid CSR `hpmcounter22h' for the current ISA
-.*Warning: invalid CSR `hpmcounter22h' for the current ISA
+.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter22h,a1'
-.*Warning: invalid CSR `hpmcounter23h' for the current ISA
-.*Warning: invalid CSR `hpmcounter23h' for the current ISA
+.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter23h,a1'
-.*Warning: invalid CSR `hpmcounter24h' for the current ISA
-.*Warning: invalid CSR `hpmcounter24h' for the current ISA
+.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter24h,a1'
-.*Warning: invalid CSR `hpmcounter25h' for the current ISA
-.*Warning: invalid CSR `hpmcounter25h' for the current ISA
+.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter25h,a1'
-.*Warning: invalid CSR `hpmcounter26h' for the current ISA
-.*Warning: invalid CSR `hpmcounter26h' for the current ISA
+.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter26h,a1'
-.*Warning: invalid CSR `hpmcounter27h' for the current ISA
-.*Warning: invalid CSR `hpmcounter27h' for the current ISA
+.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter27h,a1'
-.*Warning: invalid CSR `hpmcounter28h' for the current ISA
-.*Warning: invalid CSR `hpmcounter28h' for the current ISA
+.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter28h,a1'
-.*Warning: invalid CSR `hpmcounter29h' for the current ISA
-.*Warning: invalid CSR `hpmcounter29h' for the current ISA
+.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter29h,a1'
-.*Warning: invalid CSR `hpmcounter30h' for the current ISA
-.*Warning: invalid CSR `hpmcounter30h' for the current ISA
+.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter30h,a1'
-.*Warning: invalid CSR `hpmcounter31h' for the current ISA
-.*Warning: invalid CSR `hpmcounter31h' for the current ISA
+.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
 .*Warning: read-only CSR is written `csrw mvendorid,a1'
 .*Warning: read-only CSR is written `csrw marchid,a1'
 .*Warning: read-only CSR is written `csrw mimpid,a1'
 .*Warning: read-only CSR is written `csrw mhartid,a1'
-.*Warning: invalid CSR `pmpcfg1' for the current ISA
-.*Warning: invalid CSR `pmpcfg1' for the current ISA
-.*Warning: invalid CSR `pmpcfg3' for the current ISA
-.*Warning: invalid CSR `pmpcfg3' for the current ISA
-.*Warning: invalid CSR `mcycleh' for the current ISA
-.*Warning: invalid CSR `mcycleh' for the current ISA
-.*Warning: invalid CSR `minstreth' for the current ISA
-.*Warning: invalid CSR `minstreth' for the current ISA
-.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
+.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
+.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
+.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
+.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
+.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
+.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
+.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
+.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
 .*Warning: invalid CSR `hstatus' for the privileged spec `1.11'
 .*Warning: invalid CSR `hstatus' for the privileged spec `1.11'
 .*Warning: invalid CSR `hedeleg' for the privileged spec `1.11'
@@ -222,9 +222,9 @@
 .*Warning: read-only CSR is written `csrw hgeip,a1'
 .*Warning: invalid CSR `henvcfg' for the privileged spec `1.11'
 .*Warning: invalid CSR `henvcfg' for the privileged spec `1.11'
-.*Warning: invalid CSR `henvcfgh' for the current ISA
+.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
 .*Warning: invalid CSR `henvcfgh' for the privileged spec `1.11'
-.*Warning: invalid CSR `henvcfgh' for the current ISA
+.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
 .*Warning: invalid CSR `henvcfgh' for the privileged spec `1.11'
 .*Warning: invalid CSR `hgatp' for the privileged spec `1.11'
 .*Warning: invalid CSR `hgatp' for the privileged spec `1.11'
@@ -232,9 +232,9 @@
 .*Warning: invalid CSR `hcontext' for the privileged spec `1.11'
 .*Warning: invalid CSR `htimedelta' for the privileged spec `1.11'
 .*Warning: invalid CSR `htimedelta' for the privileged spec `1.11'
-.*Warning: invalid CSR `htimedeltah' for the current ISA
+.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
 .*Warning: invalid CSR `htimedeltah' for the privileged spec `1.11'
-.*Warning: invalid CSR `htimedeltah' for the current ISA
+.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
 .*Warning: invalid CSR `htimedeltah' for the privileged spec `1.11'
 .*Warning: invalid CSR `vsstatus' for the privileged spec `1.11'
 .*Warning: invalid CSR `vsstatus' for the privileged spec `1.11'
@@ -280,28 +280,28 @@
 .*Warning: invalid CSR `mscounteren' for the privileged spec `1.11'
 .*Warning: invalid CSR `mhcounteren' for the privileged spec `1.11'
 .*Warning: invalid CSR `mhcounteren' for the privileged spec `1.11'
-.*Warning: invalid CSR `fflags' for the current ISA
-.*Warning: invalid CSR `fflags' for the current ISA
-.*Warning: invalid CSR `frm' for the current ISA
-.*Warning: invalid CSR `frm' for the current ISA
-.*Warning: invalid CSR `fcsr' for the current ISA
-.*Warning: invalid CSR `fcsr' for the current ISA
-.*Warning: invalid CSR `seed' for the current ISA
-.*Warning: invalid CSR `seed' for the current ISA
-.*Warning: invalid CSR `vstart' for the current ISA
-.*Warning: invalid CSR `vstart' for the current ISA
-.*Warning: invalid CSR `vxsat' for the current ISA
-.*Warning: invalid CSR `vxsat' for the current ISA
-.*Warning: invalid CSR `vxrm' for the current ISA
-.*Warning: invalid CSR `vxrm' for the current ISA
-.*Warning: invalid CSR `vcsr' for the current ISA
-.*Warning: invalid CSR `vcsr' for the current ISA
-.*Warning: invalid CSR `vl' for the current ISA
-.*Warning: invalid CSR `vl' for the current ISA
+.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
+.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
+.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
+.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
+.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
+.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
+.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
+.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
+.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
+.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
+.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
+.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
+.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
+.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
+.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
+.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
+.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
+.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
 .*Warning: read-only CSR is written `csrw vl,a1'
-.*Warning: invalid CSR `vtype' for the current ISA
-.*Warning: invalid CSR `vtype' for the current ISA
+.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
+.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
 .*Warning: read-only CSR is written `csrw vtype,a1'
-.*Warning: invalid CSR `vlenb' for the current ISA
-.*Warning: invalid CSR `vlenb' for the current ISA
+.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
+.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
 .*Warning: read-only CSR is written `csrw vlenb,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index 237cb8a1699..c9e1393e6b8 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -31,177 +31,177 @@
 .*Warning: read-only CSR is written `csrw hpmcounter29,a1'
 .*Warning: read-only CSR is written `csrw hpmcounter30,a1'
 .*Warning: read-only CSR is written `csrw hpmcounter31,a1'
-.*Warning: invalid CSR `cycleh' for the current ISA
-.*Warning: invalid CSR `cycleh' for the current ISA
+.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
+.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
 .*Warning: read-only CSR is written `csrw cycleh,a1'
-.*Warning: invalid CSR `timeh' for the current ISA
-.*Warning: invalid CSR `timeh' for the current ISA
+.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
+.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
 .*Warning: read-only CSR is written `csrw timeh,a1'
-.*Warning: invalid CSR `instreth' for the current ISA
-.*Warning: invalid CSR `instreth' for the current ISA
+.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
+.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
 .*Warning: read-only CSR is written `csrw instreth,a1'
-.*Warning: invalid CSR `hpmcounter3h' for the current ISA
-.*Warning: invalid CSR `hpmcounter3h' for the current ISA
+.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter3h,a1'
-.*Warning: invalid CSR `hpmcounter4h' for the current ISA
-.*Warning: invalid CSR `hpmcounter4h' for the current ISA
+.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter4h,a1'
-.*Warning: invalid CSR `hpmcounter5h' for the current ISA
-.*Warning: invalid CSR `hpmcounter5h' for the current ISA
+.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter5h,a1'
-.*Warning: invalid CSR `hpmcounter6h' for the current ISA
-.*Warning: invalid CSR `hpmcounter6h' for the current ISA
+.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter6h,a1'
-.*Warning: invalid CSR `hpmcounter7h' for the current ISA
-.*Warning: invalid CSR `hpmcounter7h' for the current ISA
+.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter7h,a1'
-.*Warning: invalid CSR `hpmcounter8h' for the current ISA
-.*Warning: invalid CSR `hpmcounter8h' for the current ISA
+.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter8h,a1'
-.*Warning: invalid CSR `hpmcounter9h' for the current ISA
-.*Warning: invalid CSR `hpmcounter9h' for the current ISA
+.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter9h,a1'
-.*Warning: invalid CSR `hpmcounter10h' for the current ISA
-.*Warning: invalid CSR `hpmcounter10h' for the current ISA
+.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter10h,a1'
-.*Warning: invalid CSR `hpmcounter11h' for the current ISA
-.*Warning: invalid CSR `hpmcounter11h' for the current ISA
+.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter11h,a1'
-.*Warning: invalid CSR `hpmcounter12h' for the current ISA
-.*Warning: invalid CSR `hpmcounter12h' for the current ISA
+.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter12h,a1'
-.*Warning: invalid CSR `hpmcounter13h' for the current ISA
-.*Warning: invalid CSR `hpmcounter13h' for the current ISA
+.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter13h,a1'
-.*Warning: invalid CSR `hpmcounter14h' for the current ISA
-.*Warning: invalid CSR `hpmcounter14h' for the current ISA
+.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter14h,a1'
-.*Warning: invalid CSR `hpmcounter15h' for the current ISA
-.*Warning: invalid CSR `hpmcounter15h' for the current ISA
+.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter15h,a1'
-.*Warning: invalid CSR `hpmcounter16h' for the current ISA
-.*Warning: invalid CSR `hpmcounter16h' for the current ISA
+.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter16h,a1'
-.*Warning: invalid CSR `hpmcounter17h' for the current ISA
-.*Warning: invalid CSR `hpmcounter17h' for the current ISA
+.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter17h,a1'
-.*Warning: invalid CSR `hpmcounter18h' for the current ISA
-.*Warning: invalid CSR `hpmcounter18h' for the current ISA
+.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter18h,a1'
-.*Warning: invalid CSR `hpmcounter19h' for the current ISA
-.*Warning: invalid CSR `hpmcounter19h' for the current ISA
+.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter19h,a1'
-.*Warning: invalid CSR `hpmcounter20h' for the current ISA
-.*Warning: invalid CSR `hpmcounter20h' for the current ISA
+.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter20h,a1'
-.*Warning: invalid CSR `hpmcounter21h' for the current ISA
-.*Warning: invalid CSR `hpmcounter21h' for the current ISA
+.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter21h,a1'
-.*Warning: invalid CSR `hpmcounter22h' for the current ISA
-.*Warning: invalid CSR `hpmcounter22h' for the current ISA
+.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter22h,a1'
-.*Warning: invalid CSR `hpmcounter23h' for the current ISA
-.*Warning: invalid CSR `hpmcounter23h' for the current ISA
+.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter23h,a1'
-.*Warning: invalid CSR `hpmcounter24h' for the current ISA
-.*Warning: invalid CSR `hpmcounter24h' for the current ISA
+.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter24h,a1'
-.*Warning: invalid CSR `hpmcounter25h' for the current ISA
-.*Warning: invalid CSR `hpmcounter25h' for the current ISA
+.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter25h,a1'
-.*Warning: invalid CSR `hpmcounter26h' for the current ISA
-.*Warning: invalid CSR `hpmcounter26h' for the current ISA
+.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter26h,a1'
-.*Warning: invalid CSR `hpmcounter27h' for the current ISA
-.*Warning: invalid CSR `hpmcounter27h' for the current ISA
+.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter27h,a1'
-.*Warning: invalid CSR `hpmcounter28h' for the current ISA
-.*Warning: invalid CSR `hpmcounter28h' for the current ISA
+.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter28h,a1'
-.*Warning: invalid CSR `hpmcounter29h' for the current ISA
-.*Warning: invalid CSR `hpmcounter29h' for the current ISA
+.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter29h,a1'
-.*Warning: invalid CSR `hpmcounter30h' for the current ISA
-.*Warning: invalid CSR `hpmcounter30h' for the current ISA
+.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter30h,a1'
-.*Warning: invalid CSR `hpmcounter31h' for the current ISA
-.*Warning: invalid CSR `hpmcounter31h' for the current ISA
+.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
 .*Warning: read-only CSR is written `csrw mvendorid,a1'
 .*Warning: read-only CSR is written `csrw marchid,a1'
 .*Warning: read-only CSR is written `csrw mimpid,a1'
 .*Warning: read-only CSR is written `csrw mhartid,a1'
-.*Warning: invalid CSR `pmpcfg1' for the current ISA
-.*Warning: invalid CSR `pmpcfg1' for the current ISA
-.*Warning: invalid CSR `pmpcfg3' for the current ISA
-.*Warning: invalid CSR `pmpcfg3' for the current ISA
-.*Warning: invalid CSR `mcycleh' for the current ISA
-.*Warning: invalid CSR `mcycleh' for the current ISA
-.*Warning: invalid CSR `minstreth' for the current ISA
-.*Warning: invalid CSR `minstreth' for the current ISA
-.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
+.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
+.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
+.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
+.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
+.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
+.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
+.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
+.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hgeip,a1'
-.*Warning: invalid CSR `henvcfgh' for the current ISA
-.*Warning: invalid CSR `henvcfgh' for the current ISA
-.*Warning: invalid CSR `htimedeltah' for the current ISA
-.*Warning: invalid CSR `htimedeltah' for the current ISA
+.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
+.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
+.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
+.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
@@ -228,28 +228,28 @@
 .*Warning: invalid CSR `mscounteren' for the privileged spec `1.12'
 .*Warning: invalid CSR `mhcounteren' for the privileged spec `1.12'
 .*Warning: invalid CSR `mhcounteren' for the privileged spec `1.12'
-.*Warning: invalid CSR `fflags' for the current ISA
-.*Warning: invalid CSR `fflags' for the current ISA
-.*Warning: invalid CSR `frm' for the current ISA
-.*Warning: invalid CSR `frm' for the current ISA
-.*Warning: invalid CSR `fcsr' for the current ISA
-.*Warning: invalid CSR `fcsr' for the current ISA
-.*Warning: invalid CSR `seed' for the current ISA
-.*Warning: invalid CSR `seed' for the current ISA
-.*Warning: invalid CSR `vstart' for the current ISA
-.*Warning: invalid CSR `vstart' for the current ISA
-.*Warning: invalid CSR `vxsat' for the current ISA
-.*Warning: invalid CSR `vxsat' for the current ISA
-.*Warning: invalid CSR `vxrm' for the current ISA
-.*Warning: invalid CSR `vxrm' for the current ISA
-.*Warning: invalid CSR `vcsr' for the current ISA
-.*Warning: invalid CSR `vcsr' for the current ISA
-.*Warning: invalid CSR `vl' for the current ISA
-.*Warning: invalid CSR `vl' for the current ISA
+.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
+.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
+.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
+.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
+.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
+.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
+.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
+.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
+.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
+.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
+.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
+.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
+.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
+.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
+.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
+.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
+.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
+.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
 .*Warning: read-only CSR is written `csrw vl,a1'
-.*Warning: invalid CSR `vtype' for the current ISA
-.*Warning: invalid CSR `vtype' for the current ISA
+.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
+.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
 .*Warning: read-only CSR is written `csrw vtype,a1'
-.*Warning: invalid CSR `vlenb' for the current ISA
-.*Warning: invalid CSR `vlenb' for the current ISA
+.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
+.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
 .*Warning: read-only CSR is written `csrw vlenb,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 00d46f509de..d29a4d9da99 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -33,101 +33,101 @@
 .*Warning: read-only CSR is written `csrw hpmcounter29,a1'
 .*Warning: read-only CSR is written `csrw hpmcounter30,a1'
 .*Warning: read-only CSR is written `csrw hpmcounter31,a1'
-.*Warning: invalid CSR `cycleh' for the current ISA
-.*Warning: invalid CSR `cycleh' for the current ISA
+.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
+.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
 .*Warning: read-only CSR is written `csrw cycleh,a1'
-.*Warning: invalid CSR `timeh' for the current ISA
-.*Warning: invalid CSR `timeh' for the current ISA
+.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
+.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
 .*Warning: read-only CSR is written `csrw timeh,a1'
-.*Warning: invalid CSR `instreth' for the current ISA
-.*Warning: invalid CSR `instreth' for the current ISA
+.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
+.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
 .*Warning: read-only CSR is written `csrw instreth,a1'
-.*Warning: invalid CSR `hpmcounter3h' for the current ISA
-.*Warning: invalid CSR `hpmcounter3h' for the current ISA
+.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter3h,a1'
-.*Warning: invalid CSR `hpmcounter4h' for the current ISA
-.*Warning: invalid CSR `hpmcounter4h' for the current ISA
+.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter4h,a1'
-.*Warning: invalid CSR `hpmcounter5h' for the current ISA
-.*Warning: invalid CSR `hpmcounter5h' for the current ISA
+.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter5h,a1'
-.*Warning: invalid CSR `hpmcounter6h' for the current ISA
-.*Warning: invalid CSR `hpmcounter6h' for the current ISA
+.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter6h,a1'
-.*Warning: invalid CSR `hpmcounter7h' for the current ISA
-.*Warning: invalid CSR `hpmcounter7h' for the current ISA
+.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter7h,a1'
-.*Warning: invalid CSR `hpmcounter8h' for the current ISA
-.*Warning: invalid CSR `hpmcounter8h' for the current ISA
+.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter8h,a1'
-.*Warning: invalid CSR `hpmcounter9h' for the current ISA
-.*Warning: invalid CSR `hpmcounter9h' for the current ISA
+.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter9h,a1'
-.*Warning: invalid CSR `hpmcounter10h' for the current ISA
-.*Warning: invalid CSR `hpmcounter10h' for the current ISA
+.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter10h,a1'
-.*Warning: invalid CSR `hpmcounter11h' for the current ISA
-.*Warning: invalid CSR `hpmcounter11h' for the current ISA
+.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter11h,a1'
-.*Warning: invalid CSR `hpmcounter12h' for the current ISA
-.*Warning: invalid CSR `hpmcounter12h' for the current ISA
+.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter12h,a1'
-.*Warning: invalid CSR `hpmcounter13h' for the current ISA
-.*Warning: invalid CSR `hpmcounter13h' for the current ISA
+.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter13h,a1'
-.*Warning: invalid CSR `hpmcounter14h' for the current ISA
-.*Warning: invalid CSR `hpmcounter14h' for the current ISA
+.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter14h,a1'
-.*Warning: invalid CSR `hpmcounter15h' for the current ISA
-.*Warning: invalid CSR `hpmcounter15h' for the current ISA
+.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter15h,a1'
-.*Warning: invalid CSR `hpmcounter16h' for the current ISA
-.*Warning: invalid CSR `hpmcounter16h' for the current ISA
+.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter16h,a1'
-.*Warning: invalid CSR `hpmcounter17h' for the current ISA
-.*Warning: invalid CSR `hpmcounter17h' for the current ISA
+.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter17h,a1'
-.*Warning: invalid CSR `hpmcounter18h' for the current ISA
-.*Warning: invalid CSR `hpmcounter18h' for the current ISA
+.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter18h,a1'
-.*Warning: invalid CSR `hpmcounter19h' for the current ISA
-.*Warning: invalid CSR `hpmcounter19h' for the current ISA
+.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter19h,a1'
-.*Warning: invalid CSR `hpmcounter20h' for the current ISA
-.*Warning: invalid CSR `hpmcounter20h' for the current ISA
+.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter20h,a1'
-.*Warning: invalid CSR `hpmcounter21h' for the current ISA
-.*Warning: invalid CSR `hpmcounter21h' for the current ISA
+.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter21h,a1'
-.*Warning: invalid CSR `hpmcounter22h' for the current ISA
-.*Warning: invalid CSR `hpmcounter22h' for the current ISA
+.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter22h,a1'
-.*Warning: invalid CSR `hpmcounter23h' for the current ISA
-.*Warning: invalid CSR `hpmcounter23h' for the current ISA
+.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter23h,a1'
-.*Warning: invalid CSR `hpmcounter24h' for the current ISA
-.*Warning: invalid CSR `hpmcounter24h' for the current ISA
+.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter24h,a1'
-.*Warning: invalid CSR `hpmcounter25h' for the current ISA
-.*Warning: invalid CSR `hpmcounter25h' for the current ISA
+.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter25h,a1'
-.*Warning: invalid CSR `hpmcounter26h' for the current ISA
-.*Warning: invalid CSR `hpmcounter26h' for the current ISA
+.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter26h,a1'
-.*Warning: invalid CSR `hpmcounter27h' for the current ISA
-.*Warning: invalid CSR `hpmcounter27h' for the current ISA
+.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter27h,a1'
-.*Warning: invalid CSR `hpmcounter28h' for the current ISA
-.*Warning: invalid CSR `hpmcounter28h' for the current ISA
+.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter28h,a1'
-.*Warning: invalid CSR `hpmcounter29h' for the current ISA
-.*Warning: invalid CSR `hpmcounter29h' for the current ISA
+.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter29h,a1'
-.*Warning: invalid CSR `hpmcounter30h' for the current ISA
-.*Warning: invalid CSR `hpmcounter30h' for the current ISA
+.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter30h,a1'
-.*Warning: invalid CSR `hpmcounter31h' for the current ISA
-.*Warning: invalid CSR `hpmcounter31h' for the current ISA
+.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
+.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
 .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
 .*Warning: invalid CSR `scounteren' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `scounteren' for the privileged spec `1.9.1'
@@ -145,15 +145,15 @@
 .*Warning: invalid CSR `mtval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpcfg0' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpcfg0' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `pmpcfg1' for the current ISA
+.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
 .*Warning: invalid CSR `pmpcfg1' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `pmpcfg1' for the current ISA
+.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
 .*Warning: invalid CSR `pmpcfg1' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpcfg2' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpcfg2' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `pmpcfg3' for the current ISA
+.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
 .*Warning: invalid CSR `pmpcfg3' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `pmpcfg3' for the current ISA
+.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
 .*Warning: invalid CSR `pmpcfg3' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpaddr0' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpaddr0' for the privileged spec `1.9.1'
@@ -187,68 +187,68 @@
 .*Warning: invalid CSR `pmpaddr14' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpaddr15' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `pmpaddr15' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `mcycleh' for the current ISA
-.*Warning: invalid CSR `mcycleh' for the current ISA
-.*Warning: invalid CSR `minstreth' for the current ISA
-.*Warning: invalid CSR `minstreth' for the current ISA
-.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
-.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
+.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
+.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
+.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
+.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
+.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
 .*Warning: invalid CSR `mcountinhibit' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `mcountinhibit' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `hstatus' for the privileged spec `1.9.1'
@@ -276,9 +276,9 @@
 .*Warning: read-only CSR is written `csrw hgeip,a1'
 .*Warning: invalid CSR `henvcfg' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `henvcfg' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `henvcfgh' for the current ISA
+.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
 .*Warning: invalid CSR `henvcfgh' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `henvcfgh' for the current ISA
+.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
 .*Warning: invalid CSR `henvcfgh' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `hgatp' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `hgatp' for the privileged spec `1.9.1'
@@ -286,9 +286,9 @@
 .*Warning: invalid CSR `hcontext' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `htimedelta' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `htimedelta' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `htimedeltah' for the current ISA
+.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
 .*Warning: invalid CSR `htimedeltah' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `htimedeltah' for the current ISA
+.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
 .*Warning: invalid CSR `htimedeltah' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `vsstatus' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `vsstatus' for the privileged spec `1.9.1'
@@ -308,28 +308,28 @@
 .*Warning: invalid CSR `vsip' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `fflags' for the current ISA
-.*Warning: invalid CSR `fflags' for the current ISA
-.*Warning: invalid CSR `frm' for the current ISA
-.*Warning: invalid CSR `frm' for the current ISA
-.*Warning: invalid CSR `fcsr' for the current ISA
-.*Warning: invalid CSR `fcsr' for the current ISA
-.*Warning: invalid CSR `seed' for the current ISA
-.*Warning: invalid CSR `seed' for the current ISA
-.*Warning: invalid CSR `vstart' for the current ISA
-.*Warning: invalid CSR `vstart' for the current ISA
-.*Warning: invalid CSR `vxsat' for the current ISA
-.*Warning: invalid CSR `vxsat' for the current ISA
-.*Warning: invalid CSR `vxrm' for the current ISA
-.*Warning: invalid CSR `vxrm' for the current ISA
-.*Warning: invalid CSR `vcsr' for the current ISA
-.*Warning: invalid CSR `vcsr' for the current ISA
-.*Warning: invalid CSR `vl' for the current ISA
-.*Warning: invalid CSR `vl' for the current ISA
+.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
+.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
+.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
+.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
+.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
+.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
+.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
+.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
+.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
+.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
+.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
+.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
+.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
+.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
+.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
+.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
+.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
+.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
 .*Warning: read-only CSR is written `csrw vl,a1'
-.*Warning: invalid CSR `vtype' for the current ISA
-.*Warning: invalid CSR `vtype' for the current ISA
+.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
+.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
 .*Warning: read-only CSR is written `csrw vtype,a1'
-.*Warning: invalid CSR `vlenb' for the current ISA
-.*Warning: invalid CSR `vlenb' for the current ISA
+.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
+.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
 .*Warning: read-only CSR is written `csrw vlenb,a1'
-- 
2.25.1


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

* Re: [PATCH] add missing extension info to 'invalid CSR' error
  2022-01-21 17:22 [PATCH] add missing extension info to 'invalid CSR' error Patrick O'Neill
@ 2022-02-23 11:22 ` Nelson Chu
  0 siblings, 0 replies; 2+ messages in thread
From: Nelson Chu @ 2022-02-23 11:22 UTC (permalink / raw)
  To: Patrick O'Neill; +Cc: Binutils, palmer, nelsonc1225

Hi Patrick,

On Sat, Jan 22, 2022 at 1:22 AM Patrick O'Neill <patrick@rivosinc.com> wrote:
>
> PR 28733
>
> Currently we report errors as "invalid CSR 'fscr' for the current ISA"
> when the instruction isn't valid.
> This patch expands that error message to include the missing extension
> information. For example, now the error message would be "invalid CSR
> 'fscr' for the current ISA, CSR 'fscr' needs 'f' extension".

Looks good to me, thanks.  But I get "needs 'i' extension" for the
rv32-only CSRs when using rv64, I think the report "needs 'rv32i'
extension" is better.  Therefore, this patch is committed with the
minor update.

Thanks
Nelson

> Signed-off-by: Patrick O'Neill <patrick@rivosinc.com>
> ---
>  gas/config/tc-riscv.c                       |  22 +-
>  gas/testsuite/gas/riscv/csr-version-1p10.l  | 312 ++++++++++----------
>  gas/testsuite/gas/riscv/csr-version-1p11.l  | 312 ++++++++++----------
>  gas/testsuite/gas/riscv/csr-version-1p12.l  | 312 ++++++++++----------
>  gas/testsuite/gas/riscv/csr-version-1p9p1.l | 312 ++++++++++----------
>  5 files changed, 640 insertions(+), 630 deletions(-)
>
> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> index 390aaf1710b..ebad2e0b0a1 100644
> --- a/gas/config/tc-riscv.c
> +++ b/gas/config/tc-riscv.c
> @@ -884,25 +884,31 @@ riscv_csr_address (const char *csr_name,
>    enum riscv_csr_class csr_class = entry->csr_class;
>    bool need_check_version = true;
>    bool result = true;
> +  const char* extension = NULL;
>
>    switch (csr_class)
>      {
>      case CSR_CLASS_I:
> -      result = riscv_subset_supports (&riscv_rps_as, "i");
> +      extension = "i";
> +      result = riscv_subset_supports (&riscv_rps_as, extension);
>        break;
>      case CSR_CLASS_I_32:
> -      result = (xlen == 32 && riscv_subset_supports (&riscv_rps_as, "i"));
> +      extension = "i";
> +      result = (xlen == 32 && riscv_subset_supports (&riscv_rps_as, extension));
>        break;
>      case CSR_CLASS_F:
> -      result = riscv_subset_supports (&riscv_rps_as, "f");
> +      extension = "f";
> +      result = riscv_subset_supports (&riscv_rps_as, extension);
>        need_check_version = false;
>        break;
>      case CSR_CLASS_ZKR:
> -      result = riscv_subset_supports (&riscv_rps_as, "zkr");
> +      extension = "zkr";
> +      result = riscv_subset_supports (&riscv_rps_as, extension);
>        need_check_version = false;
>        break;
>      case CSR_CLASS_V:
> -      result = riscv_subset_supports (&riscv_rps_as, "v");
> +      extension = "v";
> +      result = riscv_subset_supports (&riscv_rps_as, extension);
>        need_check_version = false;
>        break;
>      case CSR_CLASS_DEBUG:
> @@ -913,7 +919,11 @@ riscv_csr_address (const char *csr_name,
>      }
>
>    if (riscv_opts.csr_check && !result)
> -    as_warn (_("invalid CSR `%s' for the current ISA"), csr_name);
> +    {
> +      assert(extension != NULL);
> +      as_warn (_("invalid CSR `%s' for the current ISA, CSR `%s' needs "
> +                "`%s' extension"), csr_name, csr_name, extension);
> +    }
>
>    while (entry != NULL)
>      {
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
> index ed6773e637c..4037cb2aca6 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p10.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
> @@ -31,172 +31,172 @@
>  .*Warning: read-only CSR is written `csrw hpmcounter29,a1'
>  .*Warning: read-only CSR is written `csrw hpmcounter30,a1'
>  .*Warning: read-only CSR is written `csrw hpmcounter31,a1'
> -.*Warning: invalid CSR `cycleh' for the current ISA
> -.*Warning: invalid CSR `cycleh' for the current ISA
> +.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
> +.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
>  .*Warning: read-only CSR is written `csrw cycleh,a1'
> -.*Warning: invalid CSR `timeh' for the current ISA
> -.*Warning: invalid CSR `timeh' for the current ISA
> +.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
> +.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
>  .*Warning: read-only CSR is written `csrw timeh,a1'
> -.*Warning: invalid CSR `instreth' for the current ISA
> -.*Warning: invalid CSR `instreth' for the current ISA
> +.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
> +.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
>  .*Warning: read-only CSR is written `csrw instreth,a1'
> -.*Warning: invalid CSR `hpmcounter3h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter3h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter3h,a1'
> -.*Warning: invalid CSR `hpmcounter4h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter4h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter4h,a1'
> -.*Warning: invalid CSR `hpmcounter5h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter5h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter5h,a1'
> -.*Warning: invalid CSR `hpmcounter6h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter6h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter6h,a1'
> -.*Warning: invalid CSR `hpmcounter7h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter7h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter7h,a1'
> -.*Warning: invalid CSR `hpmcounter8h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter8h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter8h,a1'
> -.*Warning: invalid CSR `hpmcounter9h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter9h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter9h,a1'
> -.*Warning: invalid CSR `hpmcounter10h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter10h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter10h,a1'
> -.*Warning: invalid CSR `hpmcounter11h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter11h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter11h,a1'
> -.*Warning: invalid CSR `hpmcounter12h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter12h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter12h,a1'
> -.*Warning: invalid CSR `hpmcounter13h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter13h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter13h,a1'
> -.*Warning: invalid CSR `hpmcounter14h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter14h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter14h,a1'
> -.*Warning: invalid CSR `hpmcounter15h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter15h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter15h,a1'
> -.*Warning: invalid CSR `hpmcounter16h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter16h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter16h,a1'
> -.*Warning: invalid CSR `hpmcounter17h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter17h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter17h,a1'
> -.*Warning: invalid CSR `hpmcounter18h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter18h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter18h,a1'
> -.*Warning: invalid CSR `hpmcounter19h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter19h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter19h,a1'
> -.*Warning: invalid CSR `hpmcounter20h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter20h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter20h,a1'
> -.*Warning: invalid CSR `hpmcounter21h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter21h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter21h,a1'
> -.*Warning: invalid CSR `hpmcounter22h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter22h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter22h,a1'
> -.*Warning: invalid CSR `hpmcounter23h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter23h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter23h,a1'
> -.*Warning: invalid CSR `hpmcounter24h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter24h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter24h,a1'
> -.*Warning: invalid CSR `hpmcounter25h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter25h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter25h,a1'
> -.*Warning: invalid CSR `hpmcounter26h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter26h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter26h,a1'
> -.*Warning: invalid CSR `hpmcounter27h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter27h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter27h,a1'
> -.*Warning: invalid CSR `hpmcounter28h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter28h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter28h,a1'
> -.*Warning: invalid CSR `hpmcounter29h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter29h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter29h,a1'
> -.*Warning: invalid CSR `hpmcounter30h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter30h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter30h,a1'
> -.*Warning: invalid CSR `hpmcounter31h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter31h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
>  .*Warning: read-only CSR is written `csrw mvendorid,a1'
>  .*Warning: read-only CSR is written `csrw marchid,a1'
>  .*Warning: read-only CSR is written `csrw mimpid,a1'
>  .*Warning: read-only CSR is written `csrw mhartid,a1'
> -.*Warning: invalid CSR `pmpcfg1' for the current ISA
> -.*Warning: invalid CSR `pmpcfg1' for the current ISA
> -.*Warning: invalid CSR `pmpcfg3' for the current ISA
> -.*Warning: invalid CSR `pmpcfg3' for the current ISA
> -.*Warning: invalid CSR `mcycleh' for the current ISA
> -.*Warning: invalid CSR `mcycleh' for the current ISA
> -.*Warning: invalid CSR `minstreth' for the current ISA
> -.*Warning: invalid CSR `minstreth' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
> +.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
> +.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
> +.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
> +.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
> +.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
> +.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
> +.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
> +.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
>  .*Warning: invalid CSR `mcountinhibit' for the privileged spec `1.10'
>  .*Warning: invalid CSR `mcountinhibit' for the privileged spec `1.10'
>  .*Warning: invalid CSR `hstatus' for the privileged spec `1.10'
> @@ -224,9 +224,9 @@
>  .*Warning: read-only CSR is written `csrw hgeip,a1'
>  .*Warning: invalid CSR `henvcfg' for the privileged spec `1.10'
>  .*Warning: invalid CSR `henvcfg' for the privileged spec `1.10'
> -.*Warning: invalid CSR `henvcfgh' for the current ISA
> +.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
>  .*Warning: invalid CSR `henvcfgh' for the privileged spec `1.10'
> -.*Warning: invalid CSR `henvcfgh' for the current ISA
> +.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
>  .*Warning: invalid CSR `henvcfgh' for the privileged spec `1.10'
>  .*Warning: invalid CSR `hgatp' for the privileged spec `1.10'
>  .*Warning: invalid CSR `hgatp' for the privileged spec `1.10'
> @@ -234,9 +234,9 @@
>  .*Warning: invalid CSR `hcontext' for the privileged spec `1.10'
>  .*Warning: invalid CSR `htimedelta' for the privileged spec `1.10'
>  .*Warning: invalid CSR `htimedelta' for the privileged spec `1.10'
> -.*Warning: invalid CSR `htimedeltah' for the current ISA
> +.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
>  .*Warning: invalid CSR `htimedeltah' for the privileged spec `1.10'
> -.*Warning: invalid CSR `htimedeltah' for the current ISA
> +.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
>  .*Warning: invalid CSR `htimedeltah' for the privileged spec `1.10'
>  .*Warning: invalid CSR `vsstatus' for the privileged spec `1.10'
>  .*Warning: invalid CSR `vsstatus' for the privileged spec `1.10'
> @@ -282,28 +282,28 @@
>  .*Warning: invalid CSR `mscounteren' for the privileged spec `1.10'
>  .*Warning: invalid CSR `mhcounteren' for the privileged spec `1.10'
>  .*Warning: invalid CSR `mhcounteren' for the privileged spec `1.10'
> -.*Warning: invalid CSR `fflags' for the current ISA
> -.*Warning: invalid CSR `fflags' for the current ISA
> -.*Warning: invalid CSR `frm' for the current ISA
> -.*Warning: invalid CSR `frm' for the current ISA
> -.*Warning: invalid CSR `fcsr' for the current ISA
> -.*Warning: invalid CSR `fcsr' for the current ISA
> -.*Warning: invalid CSR `seed' for the current ISA
> -.*Warning: invalid CSR `seed' for the current ISA
> -.*Warning: invalid CSR `vstart' for the current ISA
> -.*Warning: invalid CSR `vstart' for the current ISA
> -.*Warning: invalid CSR `vxsat' for the current ISA
> -.*Warning: invalid CSR `vxsat' for the current ISA
> -.*Warning: invalid CSR `vxrm' for the current ISA
> -.*Warning: invalid CSR `vxrm' for the current ISA
> -.*Warning: invalid CSR `vcsr' for the current ISA
> -.*Warning: invalid CSR `vcsr' for the current ISA
> -.*Warning: invalid CSR `vl' for the current ISA
> -.*Warning: invalid CSR `vl' for the current ISA
> +.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
> +.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
> +.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
> +.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
> +.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
> +.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
> +.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
> +.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
> +.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
> +.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
> +.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
> +.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
> +.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
> +.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
> +.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
> +.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
> +.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
> +.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
>  .*Warning: read-only CSR is written `csrw vl,a1'
> -.*Warning: invalid CSR `vtype' for the current ISA
> -.*Warning: invalid CSR `vtype' for the current ISA
> +.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
> +.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
>  .*Warning: read-only CSR is written `csrw vtype,a1'
> -.*Warning: invalid CSR `vlenb' for the current ISA
> -.*Warning: invalid CSR `vlenb' for the current ISA
> +.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
> +.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
>  .*Warning: read-only CSR is written `csrw vlenb,a1'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
> index 44d9611fe49..2806f1c9523 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p11.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
> @@ -31,172 +31,172 @@
>  .*Warning: read-only CSR is written `csrw hpmcounter29,a1'
>  .*Warning: read-only CSR is written `csrw hpmcounter30,a1'
>  .*Warning: read-only CSR is written `csrw hpmcounter31,a1'
> -.*Warning: invalid CSR `cycleh' for the current ISA
> -.*Warning: invalid CSR `cycleh' for the current ISA
> +.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
> +.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
>  .*Warning: read-only CSR is written `csrw cycleh,a1'
> -.*Warning: invalid CSR `timeh' for the current ISA
> -.*Warning: invalid CSR `timeh' for the current ISA
> +.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
> +.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
>  .*Warning: read-only CSR is written `csrw timeh,a1'
> -.*Warning: invalid CSR `instreth' for the current ISA
> -.*Warning: invalid CSR `instreth' for the current ISA
> +.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
> +.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
>  .*Warning: read-only CSR is written `csrw instreth,a1'
> -.*Warning: invalid CSR `hpmcounter3h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter3h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter3h,a1'
> -.*Warning: invalid CSR `hpmcounter4h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter4h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter4h,a1'
> -.*Warning: invalid CSR `hpmcounter5h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter5h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter5h,a1'
> -.*Warning: invalid CSR `hpmcounter6h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter6h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter6h,a1'
> -.*Warning: invalid CSR `hpmcounter7h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter7h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter7h,a1'
> -.*Warning: invalid CSR `hpmcounter8h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter8h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter8h,a1'
> -.*Warning: invalid CSR `hpmcounter9h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter9h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter9h,a1'
> -.*Warning: invalid CSR `hpmcounter10h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter10h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter10h,a1'
> -.*Warning: invalid CSR `hpmcounter11h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter11h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter11h,a1'
> -.*Warning: invalid CSR `hpmcounter12h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter12h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter12h,a1'
> -.*Warning: invalid CSR `hpmcounter13h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter13h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter13h,a1'
> -.*Warning: invalid CSR `hpmcounter14h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter14h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter14h,a1'
> -.*Warning: invalid CSR `hpmcounter15h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter15h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter15h,a1'
> -.*Warning: invalid CSR `hpmcounter16h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter16h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter16h,a1'
> -.*Warning: invalid CSR `hpmcounter17h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter17h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter17h,a1'
> -.*Warning: invalid CSR `hpmcounter18h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter18h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter18h,a1'
> -.*Warning: invalid CSR `hpmcounter19h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter19h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter19h,a1'
> -.*Warning: invalid CSR `hpmcounter20h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter20h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter20h,a1'
> -.*Warning: invalid CSR `hpmcounter21h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter21h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter21h,a1'
> -.*Warning: invalid CSR `hpmcounter22h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter22h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter22h,a1'
> -.*Warning: invalid CSR `hpmcounter23h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter23h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter23h,a1'
> -.*Warning: invalid CSR `hpmcounter24h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter24h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter24h,a1'
> -.*Warning: invalid CSR `hpmcounter25h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter25h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter25h,a1'
> -.*Warning: invalid CSR `hpmcounter26h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter26h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter26h,a1'
> -.*Warning: invalid CSR `hpmcounter27h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter27h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter27h,a1'
> -.*Warning: invalid CSR `hpmcounter28h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter28h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter28h,a1'
> -.*Warning: invalid CSR `hpmcounter29h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter29h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter29h,a1'
> -.*Warning: invalid CSR `hpmcounter30h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter30h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter30h,a1'
> -.*Warning: invalid CSR `hpmcounter31h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter31h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
>  .*Warning: read-only CSR is written `csrw mvendorid,a1'
>  .*Warning: read-only CSR is written `csrw marchid,a1'
>  .*Warning: read-only CSR is written `csrw mimpid,a1'
>  .*Warning: read-only CSR is written `csrw mhartid,a1'
> -.*Warning: invalid CSR `pmpcfg1' for the current ISA
> -.*Warning: invalid CSR `pmpcfg1' for the current ISA
> -.*Warning: invalid CSR `pmpcfg3' for the current ISA
> -.*Warning: invalid CSR `pmpcfg3' for the current ISA
> -.*Warning: invalid CSR `mcycleh' for the current ISA
> -.*Warning: invalid CSR `mcycleh' for the current ISA
> -.*Warning: invalid CSR `minstreth' for the current ISA
> -.*Warning: invalid CSR `minstreth' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
> +.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
> +.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
> +.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
> +.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
> +.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
> +.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
> +.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
> +.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
>  .*Warning: invalid CSR `hstatus' for the privileged spec `1.11'
>  .*Warning: invalid CSR `hstatus' for the privileged spec `1.11'
>  .*Warning: invalid CSR `hedeleg' for the privileged spec `1.11'
> @@ -222,9 +222,9 @@
>  .*Warning: read-only CSR is written `csrw hgeip,a1'
>  .*Warning: invalid CSR `henvcfg' for the privileged spec `1.11'
>  .*Warning: invalid CSR `henvcfg' for the privileged spec `1.11'
> -.*Warning: invalid CSR `henvcfgh' for the current ISA
> +.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
>  .*Warning: invalid CSR `henvcfgh' for the privileged spec `1.11'
> -.*Warning: invalid CSR `henvcfgh' for the current ISA
> +.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
>  .*Warning: invalid CSR `henvcfgh' for the privileged spec `1.11'
>  .*Warning: invalid CSR `hgatp' for the privileged spec `1.11'
>  .*Warning: invalid CSR `hgatp' for the privileged spec `1.11'
> @@ -232,9 +232,9 @@
>  .*Warning: invalid CSR `hcontext' for the privileged spec `1.11'
>  .*Warning: invalid CSR `htimedelta' for the privileged spec `1.11'
>  .*Warning: invalid CSR `htimedelta' for the privileged spec `1.11'
> -.*Warning: invalid CSR `htimedeltah' for the current ISA
> +.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
>  .*Warning: invalid CSR `htimedeltah' for the privileged spec `1.11'
> -.*Warning: invalid CSR `htimedeltah' for the current ISA
> +.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
>  .*Warning: invalid CSR `htimedeltah' for the privileged spec `1.11'
>  .*Warning: invalid CSR `vsstatus' for the privileged spec `1.11'
>  .*Warning: invalid CSR `vsstatus' for the privileged spec `1.11'
> @@ -280,28 +280,28 @@
>  .*Warning: invalid CSR `mscounteren' for the privileged spec `1.11'
>  .*Warning: invalid CSR `mhcounteren' for the privileged spec `1.11'
>  .*Warning: invalid CSR `mhcounteren' for the privileged spec `1.11'
> -.*Warning: invalid CSR `fflags' for the current ISA
> -.*Warning: invalid CSR `fflags' for the current ISA
> -.*Warning: invalid CSR `frm' for the current ISA
> -.*Warning: invalid CSR `frm' for the current ISA
> -.*Warning: invalid CSR `fcsr' for the current ISA
> -.*Warning: invalid CSR `fcsr' for the current ISA
> -.*Warning: invalid CSR `seed' for the current ISA
> -.*Warning: invalid CSR `seed' for the current ISA
> -.*Warning: invalid CSR `vstart' for the current ISA
> -.*Warning: invalid CSR `vstart' for the current ISA
> -.*Warning: invalid CSR `vxsat' for the current ISA
> -.*Warning: invalid CSR `vxsat' for the current ISA
> -.*Warning: invalid CSR `vxrm' for the current ISA
> -.*Warning: invalid CSR `vxrm' for the current ISA
> -.*Warning: invalid CSR `vcsr' for the current ISA
> -.*Warning: invalid CSR `vcsr' for the current ISA
> -.*Warning: invalid CSR `vl' for the current ISA
> -.*Warning: invalid CSR `vl' for the current ISA
> +.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
> +.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
> +.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
> +.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
> +.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
> +.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
> +.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
> +.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
> +.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
> +.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
> +.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
> +.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
> +.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
> +.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
> +.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
> +.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
> +.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
> +.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
>  .*Warning: read-only CSR is written `csrw vl,a1'
> -.*Warning: invalid CSR `vtype' for the current ISA
> -.*Warning: invalid CSR `vtype' for the current ISA
> +.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
> +.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
>  .*Warning: read-only CSR is written `csrw vtype,a1'
> -.*Warning: invalid CSR `vlenb' for the current ISA
> -.*Warning: invalid CSR `vlenb' for the current ISA
> +.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
> +.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
>  .*Warning: read-only CSR is written `csrw vlenb,a1'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
> index 237cb8a1699..c9e1393e6b8 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p12.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
> @@ -31,177 +31,177 @@
>  .*Warning: read-only CSR is written `csrw hpmcounter29,a1'
>  .*Warning: read-only CSR is written `csrw hpmcounter30,a1'
>  .*Warning: read-only CSR is written `csrw hpmcounter31,a1'
> -.*Warning: invalid CSR `cycleh' for the current ISA
> -.*Warning: invalid CSR `cycleh' for the current ISA
> +.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
> +.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
>  .*Warning: read-only CSR is written `csrw cycleh,a1'
> -.*Warning: invalid CSR `timeh' for the current ISA
> -.*Warning: invalid CSR `timeh' for the current ISA
> +.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
> +.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
>  .*Warning: read-only CSR is written `csrw timeh,a1'
> -.*Warning: invalid CSR `instreth' for the current ISA
> -.*Warning: invalid CSR `instreth' for the current ISA
> +.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
> +.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
>  .*Warning: read-only CSR is written `csrw instreth,a1'
> -.*Warning: invalid CSR `hpmcounter3h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter3h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter3h,a1'
> -.*Warning: invalid CSR `hpmcounter4h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter4h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter4h,a1'
> -.*Warning: invalid CSR `hpmcounter5h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter5h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter5h,a1'
> -.*Warning: invalid CSR `hpmcounter6h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter6h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter6h,a1'
> -.*Warning: invalid CSR `hpmcounter7h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter7h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter7h,a1'
> -.*Warning: invalid CSR `hpmcounter8h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter8h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter8h,a1'
> -.*Warning: invalid CSR `hpmcounter9h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter9h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter9h,a1'
> -.*Warning: invalid CSR `hpmcounter10h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter10h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter10h,a1'
> -.*Warning: invalid CSR `hpmcounter11h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter11h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter11h,a1'
> -.*Warning: invalid CSR `hpmcounter12h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter12h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter12h,a1'
> -.*Warning: invalid CSR `hpmcounter13h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter13h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter13h,a1'
> -.*Warning: invalid CSR `hpmcounter14h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter14h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter14h,a1'
> -.*Warning: invalid CSR `hpmcounter15h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter15h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter15h,a1'
> -.*Warning: invalid CSR `hpmcounter16h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter16h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter16h,a1'
> -.*Warning: invalid CSR `hpmcounter17h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter17h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter17h,a1'
> -.*Warning: invalid CSR `hpmcounter18h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter18h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter18h,a1'
> -.*Warning: invalid CSR `hpmcounter19h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter19h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter19h,a1'
> -.*Warning: invalid CSR `hpmcounter20h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter20h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter20h,a1'
> -.*Warning: invalid CSR `hpmcounter21h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter21h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter21h,a1'
> -.*Warning: invalid CSR `hpmcounter22h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter22h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter22h,a1'
> -.*Warning: invalid CSR `hpmcounter23h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter23h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter23h,a1'
> -.*Warning: invalid CSR `hpmcounter24h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter24h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter24h,a1'
> -.*Warning: invalid CSR `hpmcounter25h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter25h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter25h,a1'
> -.*Warning: invalid CSR `hpmcounter26h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter26h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter26h,a1'
> -.*Warning: invalid CSR `hpmcounter27h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter27h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter27h,a1'
> -.*Warning: invalid CSR `hpmcounter28h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter28h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter28h,a1'
> -.*Warning: invalid CSR `hpmcounter29h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter29h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter29h,a1'
> -.*Warning: invalid CSR `hpmcounter30h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter30h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter30h,a1'
> -.*Warning: invalid CSR `hpmcounter31h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter31h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
>  .*Warning: read-only CSR is written `csrw mvendorid,a1'
>  .*Warning: read-only CSR is written `csrw marchid,a1'
>  .*Warning: read-only CSR is written `csrw mimpid,a1'
>  .*Warning: read-only CSR is written `csrw mhartid,a1'
> -.*Warning: invalid CSR `pmpcfg1' for the current ISA
> -.*Warning: invalid CSR `pmpcfg1' for the current ISA
> -.*Warning: invalid CSR `pmpcfg3' for the current ISA
> -.*Warning: invalid CSR `pmpcfg3' for the current ISA
> -.*Warning: invalid CSR `mcycleh' for the current ISA
> -.*Warning: invalid CSR `mcycleh' for the current ISA
> -.*Warning: invalid CSR `minstreth' for the current ISA
> -.*Warning: invalid CSR `minstreth' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
> +.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
> +.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
> +.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
> +.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
> +.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
> +.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
> +.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
> +.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hgeip,a1'
> -.*Warning: invalid CSR `henvcfgh' for the current ISA
> -.*Warning: invalid CSR `henvcfgh' for the current ISA
> -.*Warning: invalid CSR `htimedeltah' for the current ISA
> -.*Warning: invalid CSR `htimedeltah' for the current ISA
> +.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
> +.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
> +.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
> +.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
>  .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
>  .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
>  .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
> @@ -228,28 +228,28 @@
>  .*Warning: invalid CSR `mscounteren' for the privileged spec `1.12'
>  .*Warning: invalid CSR `mhcounteren' for the privileged spec `1.12'
>  .*Warning: invalid CSR `mhcounteren' for the privileged spec `1.12'
> -.*Warning: invalid CSR `fflags' for the current ISA
> -.*Warning: invalid CSR `fflags' for the current ISA
> -.*Warning: invalid CSR `frm' for the current ISA
> -.*Warning: invalid CSR `frm' for the current ISA
> -.*Warning: invalid CSR `fcsr' for the current ISA
> -.*Warning: invalid CSR `fcsr' for the current ISA
> -.*Warning: invalid CSR `seed' for the current ISA
> -.*Warning: invalid CSR `seed' for the current ISA
> -.*Warning: invalid CSR `vstart' for the current ISA
> -.*Warning: invalid CSR `vstart' for the current ISA
> -.*Warning: invalid CSR `vxsat' for the current ISA
> -.*Warning: invalid CSR `vxsat' for the current ISA
> -.*Warning: invalid CSR `vxrm' for the current ISA
> -.*Warning: invalid CSR `vxrm' for the current ISA
> -.*Warning: invalid CSR `vcsr' for the current ISA
> -.*Warning: invalid CSR `vcsr' for the current ISA
> -.*Warning: invalid CSR `vl' for the current ISA
> -.*Warning: invalid CSR `vl' for the current ISA
> +.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
> +.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
> +.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
> +.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
> +.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
> +.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
> +.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
> +.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
> +.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
> +.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
> +.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
> +.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
> +.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
> +.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
> +.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
> +.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
> +.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
> +.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
>  .*Warning: read-only CSR is written `csrw vl,a1'
> -.*Warning: invalid CSR `vtype' for the current ISA
> -.*Warning: invalid CSR `vtype' for the current ISA
> +.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
> +.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
>  .*Warning: read-only CSR is written `csrw vtype,a1'
> -.*Warning: invalid CSR `vlenb' for the current ISA
> -.*Warning: invalid CSR `vlenb' for the current ISA
> +.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
> +.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
>  .*Warning: read-only CSR is written `csrw vlenb,a1'
> diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> index 00d46f509de..d29a4d9da99 100644
> --- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> +++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
> @@ -33,101 +33,101 @@
>  .*Warning: read-only CSR is written `csrw hpmcounter29,a1'
>  .*Warning: read-only CSR is written `csrw hpmcounter30,a1'
>  .*Warning: read-only CSR is written `csrw hpmcounter31,a1'
> -.*Warning: invalid CSR `cycleh' for the current ISA
> -.*Warning: invalid CSR `cycleh' for the current ISA
> +.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
> +.*Warning: invalid CSR `cycleh' for the current ISA, CSR `cycleh' needs `i' extension
>  .*Warning: read-only CSR is written `csrw cycleh,a1'
> -.*Warning: invalid CSR `timeh' for the current ISA
> -.*Warning: invalid CSR `timeh' for the current ISA
> +.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
> +.*Warning: invalid CSR `timeh' for the current ISA, CSR `timeh' needs `i' extension
>  .*Warning: read-only CSR is written `csrw timeh,a1'
> -.*Warning: invalid CSR `instreth' for the current ISA
> -.*Warning: invalid CSR `instreth' for the current ISA
> +.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
> +.*Warning: invalid CSR `instreth' for the current ISA, CSR `instreth' needs `i' extension
>  .*Warning: read-only CSR is written `csrw instreth,a1'
> -.*Warning: invalid CSR `hpmcounter3h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter3h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter3h' for the current ISA, CSR `hpmcounter3h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter3h,a1'
> -.*Warning: invalid CSR `hpmcounter4h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter4h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter4h' for the current ISA, CSR `hpmcounter4h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter4h,a1'
> -.*Warning: invalid CSR `hpmcounter5h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter5h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter5h' for the current ISA, CSR `hpmcounter5h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter5h,a1'
> -.*Warning: invalid CSR `hpmcounter6h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter6h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter6h' for the current ISA, CSR `hpmcounter6h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter6h,a1'
> -.*Warning: invalid CSR `hpmcounter7h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter7h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter7h' for the current ISA, CSR `hpmcounter7h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter7h,a1'
> -.*Warning: invalid CSR `hpmcounter8h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter8h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter8h' for the current ISA, CSR `hpmcounter8h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter8h,a1'
> -.*Warning: invalid CSR `hpmcounter9h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter9h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter9h' for the current ISA, CSR `hpmcounter9h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter9h,a1'
> -.*Warning: invalid CSR `hpmcounter10h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter10h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter10h' for the current ISA, CSR `hpmcounter10h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter10h,a1'
> -.*Warning: invalid CSR `hpmcounter11h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter11h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter11h' for the current ISA, CSR `hpmcounter11h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter11h,a1'
> -.*Warning: invalid CSR `hpmcounter12h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter12h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter12h' for the current ISA, CSR `hpmcounter12h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter12h,a1'
> -.*Warning: invalid CSR `hpmcounter13h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter13h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter13h' for the current ISA, CSR `hpmcounter13h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter13h,a1'
> -.*Warning: invalid CSR `hpmcounter14h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter14h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter14h' for the current ISA, CSR `hpmcounter14h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter14h,a1'
> -.*Warning: invalid CSR `hpmcounter15h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter15h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter15h' for the current ISA, CSR `hpmcounter15h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter15h,a1'
> -.*Warning: invalid CSR `hpmcounter16h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter16h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter16h' for the current ISA, CSR `hpmcounter16h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter16h,a1'
> -.*Warning: invalid CSR `hpmcounter17h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter17h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter17h' for the current ISA, CSR `hpmcounter17h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter17h,a1'
> -.*Warning: invalid CSR `hpmcounter18h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter18h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter18h' for the current ISA, CSR `hpmcounter18h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter18h,a1'
> -.*Warning: invalid CSR `hpmcounter19h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter19h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter19h' for the current ISA, CSR `hpmcounter19h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter19h,a1'
> -.*Warning: invalid CSR `hpmcounter20h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter20h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter20h' for the current ISA, CSR `hpmcounter20h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter20h,a1'
> -.*Warning: invalid CSR `hpmcounter21h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter21h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter21h' for the current ISA, CSR `hpmcounter21h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter21h,a1'
> -.*Warning: invalid CSR `hpmcounter22h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter22h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter22h' for the current ISA, CSR `hpmcounter22h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter22h,a1'
> -.*Warning: invalid CSR `hpmcounter23h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter23h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter23h' for the current ISA, CSR `hpmcounter23h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter23h,a1'
> -.*Warning: invalid CSR `hpmcounter24h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter24h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter24h' for the current ISA, CSR `hpmcounter24h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter24h,a1'
> -.*Warning: invalid CSR `hpmcounter25h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter25h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter25h' for the current ISA, CSR `hpmcounter25h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter25h,a1'
> -.*Warning: invalid CSR `hpmcounter26h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter26h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter26h' for the current ISA, CSR `hpmcounter26h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter26h,a1'
> -.*Warning: invalid CSR `hpmcounter27h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter27h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter27h' for the current ISA, CSR `hpmcounter27h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter27h,a1'
> -.*Warning: invalid CSR `hpmcounter28h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter28h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter28h' for the current ISA, CSR `hpmcounter28h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter28h,a1'
> -.*Warning: invalid CSR `hpmcounter29h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter29h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter29h' for the current ISA, CSR `hpmcounter29h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter29h,a1'
> -.*Warning: invalid CSR `hpmcounter30h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter30h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter30h' for the current ISA, CSR `hpmcounter30h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter30h,a1'
> -.*Warning: invalid CSR `hpmcounter31h' for the current ISA
> -.*Warning: invalid CSR `hpmcounter31h' for the current ISA
> +.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
> +.*Warning: invalid CSR `hpmcounter31h' for the current ISA, CSR `hpmcounter31h' needs `i' extension
>  .*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
>  .*Warning: invalid CSR `scounteren' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `scounteren' for the privileged spec `1.9.1'
> @@ -145,15 +145,15 @@
>  .*Warning: invalid CSR `mtval' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpcfg0' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpcfg0' for the privileged spec `1.9.1'
> -.*Warning: invalid CSR `pmpcfg1' for the current ISA
> +.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
>  .*Warning: invalid CSR `pmpcfg1' for the privileged spec `1.9.1'
> -.*Warning: invalid CSR `pmpcfg1' for the current ISA
> +.*Warning: invalid CSR `pmpcfg1' for the current ISA, CSR `pmpcfg1' needs `i' extension
>  .*Warning: invalid CSR `pmpcfg1' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpcfg2' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpcfg2' for the privileged spec `1.9.1'
> -.*Warning: invalid CSR `pmpcfg3' for the current ISA
> +.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
>  .*Warning: invalid CSR `pmpcfg3' for the privileged spec `1.9.1'
> -.*Warning: invalid CSR `pmpcfg3' for the current ISA
> +.*Warning: invalid CSR `pmpcfg3' for the current ISA, CSR `pmpcfg3' needs `i' extension
>  .*Warning: invalid CSR `pmpcfg3' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpaddr0' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpaddr0' for the privileged spec `1.9.1'
> @@ -187,68 +187,68 @@
>  .*Warning: invalid CSR `pmpaddr14' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpaddr15' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `pmpaddr15' for the privileged spec `1.9.1'
> -.*Warning: invalid CSR `mcycleh' for the current ISA
> -.*Warning: invalid CSR `mcycleh' for the current ISA
> -.*Warning: invalid CSR `minstreth' for the current ISA
> -.*Warning: invalid CSR `minstreth' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter3h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter4h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter5h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter6h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter7h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter8h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter9h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter10h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter11h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter12h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter13h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter14h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter15h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter16h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter17h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter18h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter19h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter20h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter21h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter22h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter23h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter24h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter25h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter26h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter27h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter28h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter29h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter30h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
> -.*Warning: invalid CSR `mhpmcounter31h' for the current ISA
> +.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
> +.*Warning: invalid CSR `mcycleh' for the current ISA, CSR `mcycleh' needs `i' extension
> +.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
> +.*Warning: invalid CSR `minstreth' for the current ISA, CSR `minstreth' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter3h' for the current ISA, CSR `mhpmcounter3h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter4h' for the current ISA, CSR `mhpmcounter4h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter5h' for the current ISA, CSR `mhpmcounter5h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter6h' for the current ISA, CSR `mhpmcounter6h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter7h' for the current ISA, CSR `mhpmcounter7h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter8h' for the current ISA, CSR `mhpmcounter8h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter9h' for the current ISA, CSR `mhpmcounter9h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter10h' for the current ISA, CSR `mhpmcounter10h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter11h' for the current ISA, CSR `mhpmcounter11h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter12h' for the current ISA, CSR `mhpmcounter12h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter13h' for the current ISA, CSR `mhpmcounter13h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter14h' for the current ISA, CSR `mhpmcounter14h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter15h' for the current ISA, CSR `mhpmcounter15h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter16h' for the current ISA, CSR `mhpmcounter16h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter17h' for the current ISA, CSR `mhpmcounter17h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter18h' for the current ISA, CSR `mhpmcounter18h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter19h' for the current ISA, CSR `mhpmcounter19h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter20h' for the current ISA, CSR `mhpmcounter20h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter21h' for the current ISA, CSR `mhpmcounter21h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter22h' for the current ISA, CSR `mhpmcounter22h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter23h' for the current ISA, CSR `mhpmcounter23h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter24h' for the current ISA, CSR `mhpmcounter24h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter25h' for the current ISA, CSR `mhpmcounter25h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter26h' for the current ISA, CSR `mhpmcounter26h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter27h' for the current ISA, CSR `mhpmcounter27h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter28h' for the current ISA, CSR `mhpmcounter28h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter29h' for the current ISA, CSR `mhpmcounter29h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter30h' for the current ISA, CSR `mhpmcounter30h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
> +.*Warning: invalid CSR `mhpmcounter31h' for the current ISA, CSR `mhpmcounter31h' needs `i' extension
>  .*Warning: invalid CSR `mcountinhibit' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `mcountinhibit' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `hstatus' for the privileged spec `1.9.1'
> @@ -276,9 +276,9 @@
>  .*Warning: read-only CSR is written `csrw hgeip,a1'
>  .*Warning: invalid CSR `henvcfg' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `henvcfg' for the privileged spec `1.9.1'
> -.*Warning: invalid CSR `henvcfgh' for the current ISA
> +.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
>  .*Warning: invalid CSR `henvcfgh' for the privileged spec `1.9.1'
> -.*Warning: invalid CSR `henvcfgh' for the current ISA
> +.*Warning: invalid CSR `henvcfgh' for the current ISA, CSR `henvcfgh' needs `i' extension
>  .*Warning: invalid CSR `henvcfgh' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `hgatp' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `hgatp' for the privileged spec `1.9.1'
> @@ -286,9 +286,9 @@
>  .*Warning: invalid CSR `hcontext' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `htimedelta' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `htimedelta' for the privileged spec `1.9.1'
> -.*Warning: invalid CSR `htimedeltah' for the current ISA
> +.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
>  .*Warning: invalid CSR `htimedeltah' for the privileged spec `1.9.1'
> -.*Warning: invalid CSR `htimedeltah' for the current ISA
> +.*Warning: invalid CSR `htimedeltah' for the current ISA, CSR `htimedeltah' needs `i' extension
>  .*Warning: invalid CSR `htimedeltah' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `vsstatus' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `vsstatus' for the privileged spec `1.9.1'
> @@ -308,28 +308,28 @@
>  .*Warning: invalid CSR `vsip' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
>  .*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
> -.*Warning: invalid CSR `fflags' for the current ISA
> -.*Warning: invalid CSR `fflags' for the current ISA
> -.*Warning: invalid CSR `frm' for the current ISA
> -.*Warning: invalid CSR `frm' for the current ISA
> -.*Warning: invalid CSR `fcsr' for the current ISA
> -.*Warning: invalid CSR `fcsr' for the current ISA
> -.*Warning: invalid CSR `seed' for the current ISA
> -.*Warning: invalid CSR `seed' for the current ISA
> -.*Warning: invalid CSR `vstart' for the current ISA
> -.*Warning: invalid CSR `vstart' for the current ISA
> -.*Warning: invalid CSR `vxsat' for the current ISA
> -.*Warning: invalid CSR `vxsat' for the current ISA
> -.*Warning: invalid CSR `vxrm' for the current ISA
> -.*Warning: invalid CSR `vxrm' for the current ISA
> -.*Warning: invalid CSR `vcsr' for the current ISA
> -.*Warning: invalid CSR `vcsr' for the current ISA
> -.*Warning: invalid CSR `vl' for the current ISA
> -.*Warning: invalid CSR `vl' for the current ISA
> +.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
> +.*Warning: invalid CSR `fflags' for the current ISA, CSR `fflags' needs `f' extension
> +.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
> +.*Warning: invalid CSR `frm' for the current ISA, CSR `frm' needs `f' extension
> +.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
> +.*Warning: invalid CSR `fcsr' for the current ISA, CSR `fcsr' needs `f' extension
> +.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
> +.*Warning: invalid CSR `seed' for the current ISA, CSR `seed' needs `zkr' extension
> +.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
> +.*Warning: invalid CSR `vstart' for the current ISA, CSR `vstart' needs `v' extension
> +.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
> +.*Warning: invalid CSR `vxsat' for the current ISA, CSR `vxsat' needs `v' extension
> +.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
> +.*Warning: invalid CSR `vxrm' for the current ISA, CSR `vxrm' needs `v' extension
> +.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
> +.*Warning: invalid CSR `vcsr' for the current ISA, CSR `vcsr' needs `v' extension
> +.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
> +.*Warning: invalid CSR `vl' for the current ISA, CSR `vl' needs `v' extension
>  .*Warning: read-only CSR is written `csrw vl,a1'
> -.*Warning: invalid CSR `vtype' for the current ISA
> -.*Warning: invalid CSR `vtype' for the current ISA
> +.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
> +.*Warning: invalid CSR `vtype' for the current ISA, CSR `vtype' needs `v' extension
>  .*Warning: read-only CSR is written `csrw vtype,a1'
> -.*Warning: invalid CSR `vlenb' for the current ISA
> -.*Warning: invalid CSR `vlenb' for the current ISA
> +.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
> +.*Warning: invalid CSR `vlenb' for the current ISA, CSR `vlenb' needs `v' extension
>  .*Warning: read-only CSR is written `csrw vlenb,a1'
> --
> 2.25.1
>

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

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

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-21 17:22 [PATCH] add missing extension info to 'invalid CSR' error Patrick O'Neill
2022-02-23 11:22 ` Nelson Chu

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).