[PATCH] add missing extension info to 'invalid CSR' error

Nelson Chu nelson.chu@sifive.com
Wed Feb 23 11:22:08 GMT 2022


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
>


More information about the Binutils mailing list