From: Tsukasa OI <research_trasio@irq.a4lg.com>
To: Tsukasa OI <research_trasio@irq.a4lg.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Andrew Waterman <andrew@sifive.com>,
Jim Wilson <jim.wilson.gcc@gmail.com>,
Nelson Chu <nelson@rivosinc.com>,
Kito Cheng <kito.cheng@sifive.com>
Cc: binutils@sourceware.org
Subject: [PATCH v2 1/1] RISC-V: Add 'Zicntr' and 'Zihpm' support with compatibility measures
Date: Sat, 21 Oct 2023 02:17:20 +0000 [thread overview]
Message-ID: <59f9af201c78d482f9d0640890de72d2b2dac628.1697854636.git.research_trasio@irq.a4lg.com> (raw)
In-Reply-To: <cover.1697854636.git.research_trasio@irq.a4lg.com>
From: Tsukasa OI <research_trasio@irq.a4lg.com>
This commit adds support for 'Zicntr' and 'Zihpm' extensions (version 2.0).
However, because GNU Binutils handled those as a part of 'I' and there was
a time when a ratified specification did split counters from the 'I'
extension without separate extension names, we need to take care of
possible compatibility issues.
So, if a 'Zicntr' pseudoinstruction is used without that extension,
it generates not an error but a warning.
bfd/ChangeLog:
* elfxx-riscv.c (riscv_implicit_subsets): Add implications related
to counter extensions.
(riscv_supported_std_z_ext): Add 'Zicntr' and 'Zihpm' extensions.
Define default versions of 'Zicsr' and 'Zifencei' on the draft ISA
because they might be used on the 'E' extension handling.
(riscv_is_subset_of_i_2p0): New function.
(riscv_parse_add_subset): If a subset of the 'I' extension version
2.0 is being added, check the version of 'I' and allow its version
unknown when the 'I' extension version is less than 2.1.
(riscv_multi_subset_supports, riscv_multi_subset_supports_ext):
Add support for the 'Zicntr' extension with compatibility measure.
gas/ChangeLog:
* config/tc-riscv.c (enum riscv_csr_class): Add new CSR classes
corresponding 'Zicntr' and 'Zihpm' extensions.
(riscv_csr_address): Add handling for new CSR classes.
(riscv_ip): Raise a warning if a 'Zicntr' pseudoinstruction is
used without that extension.
* testsuite/gas/riscv/csr-insns-pseudo.s: Rename section names
to indicate that the extension 'Zicntr' is needed.
* testsuite/gas/riscv/csr-insns-pseudo.d: Add "zicntr" to arch.
* testsuite/gas/riscv/csr-insns-pseudo-noalias.d: Likewise.
* testsuite/gas/riscv/csr-insns-pseudo-zfinx.d: Likewise.
* testsuite/gas/riscv/csr-insns-read-only.d: Likewise.
* testsuite/gas/riscv/csr-version-1p9p1.d: Specify versions.
* testsuite/gas/riscv/csr-version-1p10.d: Likewise.
* testsuite/gas/riscv/csr-version-1p11.d: Likewise.
* testsuite/gas/riscv/csr-version-1p12.d: Likewise.
* testsuite/gas/riscv/csr-version-1p9p1.l: Add warnings regarding
'Zicntr' and 'Zihpm' extension recategorization.
* testsuite/gas/riscv/csr-version-1p10.l: Likewise.
* testsuite/gas/riscv/csr-version-1p11.l: Likewise.
* testsuite/gas/riscv/csr-version-1p12.l: Likewise.
* testsuite/gas/riscv/march-imply-i2p0-01.d: 'I' version 2.0
effectively imples 'Zicsr' and 'Zifencei' but should not be
reflected to the expanded architectural string.
* testsuite/gas/riscv/march-ok-reorder.d: Use 'I' version 2.1 and
use other extensions to test proper ordering.
* testsuite/gas/riscv/csr-insns-pseudo-nozicntr.d: New test to
see warnings are generated when the 'Zicntr' extension is not
specified.
* testsuite/gas/riscv/csr-insns-pseudo-nozicntr.l: Likewise.
include/ChangeLog:
* opcode/riscv-opc.h: Recategorize user counter CSRs.
* opcode/riscv.h (enum riscv_insn_class): Add INSN_CLASS_ZICNTR
for 'Zicntr' pseudoinstructions.
opcodes/ChangeLog:
* riscv-opc.c (riscv_opcodes): Recategorize counter
pseudoinstructions to the 'Zicntr' extension.
---
bfd/elfxx-riscv.c | 52 +++-
gas/config/tc-riscv.c | 25 ++
.../gas/riscv/csr-insns-pseudo-noalias.d | 2 +-
.../gas/riscv/csr-insns-pseudo-nozicntr.d | 37 +++
.../gas/riscv/csr-insns-pseudo-nozicntr.l | 7 +
.../gas/riscv/csr-insns-pseudo-zfinx.d | 2 +-
gas/testsuite/gas/riscv/csr-insns-pseudo.d | 2 +-
gas/testsuite/gas/riscv/csr-insns-pseudo.s | 3 +-
gas/testsuite/gas/riscv/csr-insns-read-only.d | 2 +-
gas/testsuite/gas/riscv/csr-version-1p10.d | 2 +-
gas/testsuite/gas/riscv/csr-version-1p10.l | 256 ++++++++++++++++++
gas/testsuite/gas/riscv/csr-version-1p11.d | 2 +-
gas/testsuite/gas/riscv/csr-version-1p11.l | 256 ++++++++++++++++++
gas/testsuite/gas/riscv/csr-version-1p12.d | 2 +-
gas/testsuite/gas/riscv/csr-version-1p12.l | 256 ++++++++++++++++++
gas/testsuite/gas/riscv/csr-version-1p9p1.d | 2 +-
gas/testsuite/gas/riscv/csr-version-1p9p1.l | 256 ++++++++++++++++++
gas/testsuite/gas/riscv/march-imply-i2p0-01.d | 2 +-
gas/testsuite/gas/riscv/march-ok-reorder.d | 4 +-
include/opcode/riscv-opc.h | 128 ++++-----
include/opcode/riscv.h | 1 +
opcodes/riscv-opc.c | 12 +-
22 files changed, 1224 insertions(+), 87 deletions(-)
create mode 100644 gas/testsuite/gas/riscv/csr-insns-pseudo-nozicntr.d
create mode 100644 gas/testsuite/gas/riscv/csr-insns-pseudo-nozicntr.l
diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index c070394a3667..446cc6128bab 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1097,6 +1097,8 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
{"e", "i", check_implicit_always},
{"i", "zicsr", check_implicit_for_i},
{"i", "zifencei", check_implicit_for_i},
+ {"i", "zicntr", check_implicit_for_i},
+ {"i", "zihpm", check_implicit_for_i},
{"g", "i", check_implicit_always},
{"g", "m", check_implicit_always},
{"g", "a", check_implicit_always},
@@ -1148,6 +1150,8 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
{"zhinx", "zhinxmin", check_implicit_always},
{"zhinxmin", "zfinx", check_implicit_always},
{"zfinx", "zicsr", check_implicit_always},
+ {"zicntr", "zicsr", check_implicit_always},
+ {"zihpm", "zicsr", check_implicit_always},
{"zk", "zkn", check_implicit_always},
{"zk", "zkr", check_implicit_always},
{"zk", "zkt", check_implicit_always},
@@ -1251,13 +1255,17 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
{"zicbom", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"zicbop", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"zicboz", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
+ {"zicntr", ISA_SPEC_CLASS_DRAFT, 2, 0, 0 },
{"zicond", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"zicsr", ISA_SPEC_CLASS_20191213, 2, 0, 0 },
{"zicsr", ISA_SPEC_CLASS_20190608, 2, 0, 0 },
+ {"zicsr", ISA_SPEC_CLASS_DRAFT, 2, 0, 0 },
{"zifencei", ISA_SPEC_CLASS_20191213, 2, 0, 0 },
{"zifencei", ISA_SPEC_CLASS_20190608, 2, 0, 0 },
+ {"zifencei", ISA_SPEC_CLASS_DRAFT, 2, 0, 0 },
{"zihintntl", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"zihintpause", ISA_SPEC_CLASS_DRAFT, 2, 0, 0 },
+ {"zihpm", ISA_SPEC_CLASS_DRAFT, 2, 0, 0 },
{"zmmul", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"zawrs", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"zfa", ISA_SPEC_CLASS_DRAFT, 0, 1, 0 },
@@ -1649,6 +1657,18 @@ riscv_get_default_ext_version (enum riscv_spec_class *default_isa_spec,
}
}
+/* Check if the subset is one of the extensions split from
+ the 'I' extension version 2.0. */
+
+static bool
+riscv_is_subset_of_i_2p0 (const char *subset)
+{
+ return (strcmp (subset, "zicsr") == 0
+ || strcmp (subset, "zifencei") == 0
+ || strcmp (subset, "zicntr") == 0
+ || strcmp (subset, "zihpm") == 0);
+}
+
/* Find the default versions for the extension before adding them to
the subset list, if their versions are RISCV_UNKNOWN_VERSION.
Afterwards, report errors if we can not find their default versions. */
@@ -1662,9 +1682,26 @@ riscv_parse_add_subset (riscv_parse_subset_t *rps,
{
int major_version = major;
int minor_version = minor;
+ bool handle_subset_of_i_2p0 = false;
+
+ /* If a subset of the 'I' extension version 2.0 is being added,
+ check the version of 'I' and allow its version unknown when the
+ 'I' extension version is less than 2.1.
+ Draft 'E' is arbitrarily handled since it's a draft but the default
+ handling is the same as 'I' >= 2.1 because non-draft 'E' extension
+ does not have 'I' version 2.0 subsets. */
+ if (riscv_is_subset_of_i_2p0 (subset))
+ {
+ riscv_subset_t *ext_i;
+ if (riscv_lookup_subset (rps->subset_list, "i", &ext_i)
+ && (ext_i->major_version < 2
+ || (ext_i->major_version == 2 && ext_i->minor_version < 1)))
+ handle_subset_of_i_2p0 = true;
+ }
- if (major_version == RISCV_UNKNOWN_VERSION
- || minor_version == RISCV_UNKNOWN_VERSION)
+ if (!handle_subset_of_i_2p0
+ && (major_version == RISCV_UNKNOWN_VERSION
+ || minor_version == RISCV_UNKNOWN_VERSION))
riscv_get_default_ext_version (rps->isa_spec, subset,
&major_version, &minor_version);
@@ -1677,9 +1714,9 @@ riscv_parse_add_subset (riscv_parse_subset_t *rps,
rps->error_handler
(_("x ISA extension `%s' must be set with the versions"),
subset);
- /* Allow old ISA spec can recognize zicsr and zifencei. */
- else if (strcmp (subset, "zicsr") != 0
- && strcmp (subset, "zifencei") != 0)
+ /* Allow old ISA spec (version 2.2) can recognize extensions
+ effectively split from the base 'I' extension version 2.0. */
+ else if (!riscv_is_subset_of_i_2p0 (subset))
rps->error_handler
(_("cannot find default versions of the ISA extension `%s'"),
subset);
@@ -2389,6 +2426,9 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps,
return riscv_subset_supports (rps, "zicbop");
case INSN_CLASS_ZICBOZ:
return riscv_subset_supports (rps, "zicboz");
+ case INSN_CLASS_ZICNTR:
+ /* Instead of 'Zicntr', query for 'I' for compatibility. */
+ return riscv_subset_supports (rps, "i");
case INSN_CLASS_ZICOND:
return riscv_subset_supports (rps, "zicond");
case INSN_CLASS_ZICSR:
@@ -2592,6 +2632,8 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps,
return "zicbop";
case INSN_CLASS_ZICBOZ:
return "zicboz";
+ case INSN_CLASS_ZICNTR:
+ return "zicntr";
case INSN_CLASS_ZICOND:
return "zicond";
case INSN_CLASS_ZICSR:
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 5759d3a5fc4e..aa88cec881e4 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -66,6 +66,10 @@ enum riscv_csr_class
CSR_CLASS_I,
CSR_CLASS_I_32, /* rv32 only */
+ CSR_CLASS_ZICNTR, /* basic hardware perf counter */
+ CSR_CLASS_ZICNTR_32, /* basic hardware perf counter, rv32 only */
+ CSR_CLASS_ZIHPM, /* additional hardware perf counter */
+ CSR_CLASS_ZIHPM_32, /* additional hardware perf counter, rv32 only */
CSR_CLASS_F, /* f-ext only */
CSR_CLASS_ZKR, /* zkr only */
CSR_CLASS_V, /* rvv only */
@@ -1033,6 +1037,18 @@ riscv_csr_address (const char *csr_name,
need_check_version = true;
extension = "i";
break;
+ case CSR_CLASS_ZICNTR_32:
+ is_rv32_only = true;
+ /* Fall through. */
+ case CSR_CLASS_ZICNTR:
+ extension = "zicntr";
+ break;
+ case CSR_CLASS_ZIHPM_32:
+ is_rv32_only = true;
+ /* Fall through. */
+ case CSR_CLASS_ZIHPM:
+ extension = "zihpm";
+ break;
case CSR_CLASS_H_32:
is_rv32_only = true;
/* Fall through. */
@@ -2611,6 +2627,15 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
insn_with_csr = false;
}
+ /* Check if we are using a 'Zicntr' pseudoinstruction
+ without the 'Zicntr' extension. */
+ if (insn->insn_class == INSN_CLASS_ZICNTR
+ && !riscv_subset_supports (&riscv_rps_as, "zicntr"))
+ {
+ as_warn (_("`%s' needs `zicntr' extension"),
+ insn->name);
+ }
+
/* The (segmant) load and store with EEW 64 cannot be used
when zve32x is enabled. */
if (ip->insn_mo->pinfo & INSN_V_EEW64
diff --git a/gas/testsuite/gas/riscv/csr-insns-pseudo-noalias.d b/gas/testsuite/gas/riscv/csr-insns-pseudo-noalias.d
index b9300cea6f9f..36a0db4d379e 100644
--- a/gas/testsuite/gas/riscv/csr-insns-pseudo-noalias.d
+++ b/gas/testsuite/gas/riscv/csr-insns-pseudo-noalias.d
@@ -1,5 +1,5 @@
#source: csr-insns-pseudo.s
-#as: -march=rv32if
+#as: -march=rv32if_zicntr
#objdump: -dr -Mno-aliases
.*:[ ]+file format .*
diff --git a/gas/testsuite/gas/riscv/csr-insns-pseudo-nozicntr.d b/gas/testsuite/gas/riscv/csr-insns-pseudo-nozicntr.d
new file mode 100644
index 000000000000..340ab487cb95
--- /dev/null
+++ b/gas/testsuite/gas/riscv/csr-insns-pseudo-nozicntr.d
@@ -0,0 +1,37 @@
+#source: csr-insns-pseudo.s
+#as: -march=rv32i2p1_f2p2
+#warning_output: csr-insns-pseudo-nozicntr.l
+#objdump: -dr
+
+.*:[ ]+file format .*
+
+
+Disassembly of section .text:
+
+0+000 <pseudo_csr_insn>:
+[ ]+[0-9a-f]+:[ ]+000022f3[ ]+csrr[ ]+t0,ustatus
+[ ]+[0-9a-f]+:[ ]+00029073[ ]+csrw[ ]+ustatus,t0
+[ ]+[0-9a-f]+:[ ]+0002a073[ ]+csrs[ ]+ustatus,t0
+[ ]+[0-9a-f]+:[ ]+0002b073[ ]+csrc[ ]+ustatus,t0
+[ ]+[0-9a-f]+:[ ]+000fd073[ ]+csrwi[ ]+ustatus,31
+[ ]+[0-9a-f]+:[ ]+000fe073[ ]+csrsi[ ]+ustatus,31
+[ ]+[0-9a-f]+:[ ]+000ff073[ ]+csrci[ ]+ustatus,31
+[ ]+[0-9a-f]+:[ ]+c00022f3[ ]+rdcycle[ ]+t0
+[ ]+[0-9a-f]+:[ ]+c01022f3[ ]+rdtime[ ]+t0
+[ ]+[0-9a-f]+:[ ]+c02022f3[ ]+rdinstret[ ]+t0
+[ ]+[0-9a-f]+:[ ]+c80022f3[ ]+rdcycleh[ ]+t0
+[ ]+[0-9a-f]+:[ ]+c81022f3[ ]+rdtimeh[ ]+t0
+[ ]+[0-9a-f]+:[ ]+c82022f3[ ]+rdinstreth[ ]+t0
+[ ]+[0-9a-f]+:[ ]+003022f3[ ]+frcsr[ ]+t0
+[ ]+[0-9a-f]+:[ ]+003392f3[ ]+fscsr[ ]+t0,t2
+[ ]+[0-9a-f]+:[ ]+00339073[ ]+fscsr[ ]+t2
+[ ]+[0-9a-f]+:[ ]+002022f3[ ]+frrm[ ]+t0
+[ ]+[0-9a-f]+:[ ]+002312f3[ ]+fsrm[ ]+t0,t1
+[ ]+[0-9a-f]+:[ ]+00231073[ ]+fsrm[ ]+t1
+[ ]+[0-9a-f]+:[ ]+002fd2f3[ ]+fsrmi[ ]+t0,31
+[ ]+[0-9a-f]+:[ ]+002fd073[ ]+fsrmi[ ]+zero,31
+[ ]+[0-9a-f]+:[ ]+001022f3[ ]+frflags[ ]+t0
+[ ]+[0-9a-f]+:[ ]+001312f3[ ]+fsflags[ ]+t0,t1
+[ ]+[0-9a-f]+:[ ]+00131073[ ]+fsflags[ ]+t1
+[ ]+[0-9a-f]+:[ ]+001fd2f3[ ]+fsflagsi[ ]+t0,31
+[ ]+[0-9a-f]+:[ ]+001fd073[ ]+fsflagsi[ ]+zero,31
diff --git a/gas/testsuite/gas/riscv/csr-insns-pseudo-nozicntr.l b/gas/testsuite/gas/riscv/csr-insns-pseudo-nozicntr.l
new file mode 100644
index 000000000000..457499f82713
--- /dev/null
+++ b/gas/testsuite/gas/riscv/csr-insns-pseudo-nozicntr.l
@@ -0,0 +1,7 @@
+.*Assembler messages:
+.*Warning: `rdcycle' needs `zicntr' extension
+.*Warning: `rdtime' needs `zicntr' extension
+.*Warning: `rdinstret' needs `zicntr' extension
+.*Warning: `rdcycleh' needs `zicntr' extension
+.*Warning: `rdtimeh' needs `zicntr' extension
+.*Warning: `rdinstreth' needs `zicntr' extension
diff --git a/gas/testsuite/gas/riscv/csr-insns-pseudo-zfinx.d b/gas/testsuite/gas/riscv/csr-insns-pseudo-zfinx.d
index 6e86398cf7b6..52a4f4d8d2ed 100644
--- a/gas/testsuite/gas/riscv/csr-insns-pseudo-zfinx.d
+++ b/gas/testsuite/gas/riscv/csr-insns-pseudo-zfinx.d
@@ -1,5 +1,5 @@
#source: csr-insns-pseudo.s
-#as: -march=rv32i_zfinx
+#as: -march=rv32i_zicntr_zfinx
#objdump: -dr
.*:[ ]+file format .*
diff --git a/gas/testsuite/gas/riscv/csr-insns-pseudo.d b/gas/testsuite/gas/riscv/csr-insns-pseudo.d
index 3df7b4b112af..cdb72152e8c9 100644
--- a/gas/testsuite/gas/riscv/csr-insns-pseudo.d
+++ b/gas/testsuite/gas/riscv/csr-insns-pseudo.d
@@ -1,5 +1,5 @@
#source: csr-insns-pseudo.s
-#as: -march=rv32if
+#as: -march=rv32if_zicntr
#objdump: -dr
.*:[ ]+file format .*
diff --git a/gas/testsuite/gas/riscv/csr-insns-pseudo.s b/gas/testsuite/gas/riscv/csr-insns-pseudo.s
index 8efaa4eadd98..01adff70294a 100644
--- a/gas/testsuite/gas/riscv/csr-insns-pseudo.s
+++ b/gas/testsuite/gas/riscv/csr-insns-pseudo.s
@@ -8,11 +8,12 @@ pseudo_csr_insn:
csrsi 0x0, 31
csrci 0x0, 31
+ # Zicntr
rdcycle t0
rdtime t0
rdinstret t0
- # rv32i-ext
+ # Zicntr (RV32)
rdcycleh t0
rdtimeh t0
rdinstreth t0
diff --git a/gas/testsuite/gas/riscv/csr-insns-read-only.d b/gas/testsuite/gas/riscv/csr-insns-read-only.d
index 6b3549b875ac..1a7e2caddf10 100644
--- a/gas/testsuite/gas/riscv/csr-insns-read-only.d
+++ b/gas/testsuite/gas/riscv/csr-insns-read-only.d
@@ -1,3 +1,3 @@
-#as: -march=rv32if -mcsr-check -mpriv-spec=1.11
+#as: -march=rv32if_zicntr -mcsr-check -mpriv-spec=1.11
#source: csr-insns-read-only.s
#warning_output: csr-insns-read-only.l
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.d b/gas/testsuite/gas/riscv/csr-version-1p10.d
index dbdc077adac8..41d07da065b1 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.d
@@ -1,4 +1,4 @@
-#as: -march=rv64i_zicsr -mcsr-check -mpriv-spec=1.10
+#as: -march=rv64i2p1_zicsr2p0 -mcsr-check -mpriv-spec=1.10
#source: csr.s
#warning_output: csr-version-1p10.l
#objdump: -dr -Mpriv-spec=1.10
diff --git a/gas/testsuite/gas/riscv/csr-version-1p10.l b/gas/testsuite/gas/riscv/csr-version-1p10.l
index 054179a416db..d0cc295d3900 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p10.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p10.l
@@ -1,258 +1,514 @@
.*Assembler messages:
+.*Warning: invalid CSR `cycle', needs `zicntr' extension
+.*Info: macro .*
+.*Warning: invalid CSR `cycle', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw cycle,a1'
.*Info: macro .*
+.*Warning: invalid CSR `time', needs `zicntr' extension
+.*Info: macro .*
+.*Warning: invalid CSR `time', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw time,a1'
.*Info: macro .*
+.*Warning: invalid CSR `instret', needs `zicntr' extension
+.*Info: macro .*
+.*Warning: invalid CSR `instret', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw instret,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter3,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter4,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter5,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter6,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter7,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter8,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter9,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter10,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter11,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter12,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter13,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter14,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter15,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter16,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter17,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter18,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter19,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter20,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter21,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter22,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter23,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter24,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter25,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter26,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter27,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter28,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter29,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter30,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter31,a1'
.*Info: macro .*
.*Warning: invalid CSR `cycleh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `cycleh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: invalid CSR `cycleh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `cycleh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw cycleh,a1'
.*Info: macro .*
.*Warning: invalid CSR `timeh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `timeh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: invalid CSR `timeh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `timeh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw timeh,a1'
.*Info: macro .*
.*Warning: invalid CSR `instreth', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `instreth', needs `zicntr' extension
+.*Info: macro .*
.*Warning: invalid CSR `instreth', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `instreth', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw instreth,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter3h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter3h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter3h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter4h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter4h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter4h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter5h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter5h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter5h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter6h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter6h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter6h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter7h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter7h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter7h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter8h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter8h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter8h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter9h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter9h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter9h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter10h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter10h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter10h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter11h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter11h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter11h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter12h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter12h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter12h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter13h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter13h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter13h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter14h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter14h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter14h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter15h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter15h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter15h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter16h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter16h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter16h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter17h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter17h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter17h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter18h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter18h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter18h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter19h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter19h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter19h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter20h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter20h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter20h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter21h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter21h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter21h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter22h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter22h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter22h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter23h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter23h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter23h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter24h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter24h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter24h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter25h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter25h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter25h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter26h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter26h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter26h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter27h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter27h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter27h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter28h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter28h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter28h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter29h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter29h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter29h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter30h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter30h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter30h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter31h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter31h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
.*Info: macro .*
.*Warning: invalid CSR `senvcfg' for the privileged spec `1.10'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.d b/gas/testsuite/gas/riscv/csr-version-1p11.d
index 7ba88b6d1d53..90e75079eb3f 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.d
@@ -1,4 +1,4 @@
-#as: -march=rv64i_zicsr -mcsr-check -mpriv-spec=1.11
+#as: -march=rv64i2p1_zicsr2p0 -mcsr-check -mpriv-spec=1.11
#source: csr.s
#warning_output: csr-version-1p11.l
#objdump: -dr -Mpriv-spec=1.11
diff --git a/gas/testsuite/gas/riscv/csr-version-1p11.l b/gas/testsuite/gas/riscv/csr-version-1p11.l
index cc365f1df415..4765f61c72b3 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p11.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p11.l
@@ -1,258 +1,514 @@
.*Assembler messages:
+.*Warning: invalid CSR `cycle', needs `zicntr' extension
+.*Info: macro .*
+.*Warning: invalid CSR `cycle', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw cycle,a1'
.*Info: macro .*
+.*Warning: invalid CSR `time', needs `zicntr' extension
+.*Info: macro .*
+.*Warning: invalid CSR `time', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw time,a1'
.*Info: macro .*
+.*Warning: invalid CSR `instret', needs `zicntr' extension
+.*Info: macro .*
+.*Warning: invalid CSR `instret', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw instret,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter3,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter4,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter5,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter6,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter7,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter8,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter9,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter10,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter11,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter12,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter13,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter14,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter15,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter16,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter17,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter18,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter19,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter20,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter21,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter22,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter23,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter24,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter25,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter26,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter27,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter28,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter29,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter30,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter31,a1'
.*Info: macro .*
.*Warning: invalid CSR `cycleh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `cycleh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: invalid CSR `cycleh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `cycleh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw cycleh,a1'
.*Info: macro .*
.*Warning: invalid CSR `timeh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `timeh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: invalid CSR `timeh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `timeh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw timeh,a1'
.*Info: macro .*
.*Warning: invalid CSR `instreth', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `instreth', needs `zicntr' extension
+.*Info: macro .*
.*Warning: invalid CSR `instreth', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `instreth', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw instreth,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter3h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter3h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter3h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter4h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter4h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter4h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter5h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter5h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter5h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter6h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter6h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter6h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter7h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter7h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter7h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter8h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter8h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter8h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter9h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter9h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter9h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter10h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter10h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter10h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter11h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter11h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter11h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter12h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter12h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter12h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter13h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter13h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter13h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter14h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter14h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter14h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter15h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter15h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter15h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter16h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter16h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter16h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter17h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter17h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter17h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter18h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter18h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter18h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter19h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter19h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter19h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter20h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter20h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter20h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter21h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter21h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter21h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter22h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter22h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter22h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter23h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter23h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter23h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter24h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter24h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter24h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter25h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter25h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter25h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter26h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter26h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter26h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter27h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter27h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter27h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter28h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter28h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter28h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter29h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter29h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter29h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter30h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter30h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter30h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter31h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter31h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
.*Info: macro .*
.*Warning: invalid CSR `senvcfg' for the privileged spec `1.11'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.d b/gas/testsuite/gas/riscv/csr-version-1p12.d
index 677820b95265..9e29d7ac3c32 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.d
@@ -1,4 +1,4 @@
-#as: -march=rv64i_zicsr -mcsr-check -mpriv-spec=1.12
+#as: -march=rv64i2p1_zicsr2p0 -mcsr-check -mpriv-spec=1.12
#source: csr.s
#warning_output: csr-version-1p12.l
#objdump: -dr -Mpriv-spec=1.12
diff --git a/gas/testsuite/gas/riscv/csr-version-1p12.l b/gas/testsuite/gas/riscv/csr-version-1p12.l
index 7a7f5f717c52..c1fe4b062631 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p12.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p12.l
@@ -1,258 +1,514 @@
.*Assembler messages:
+.*Warning: invalid CSR `cycle', needs `zicntr' extension
+.*Info: macro .*
+.*Warning: invalid CSR `cycle', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw cycle,a1'
.*Info: macro .*
+.*Warning: invalid CSR `time', needs `zicntr' extension
+.*Info: macro .*
+.*Warning: invalid CSR `time', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw time,a1'
.*Info: macro .*
+.*Warning: invalid CSR `instret', needs `zicntr' extension
+.*Info: macro .*
+.*Warning: invalid CSR `instret', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw instret,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter3,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter4,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter5,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter6,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter7,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter8,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter9,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter10,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter11,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter12,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter13,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter14,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter15,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter16,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter17,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter18,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter19,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter20,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter21,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter22,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter23,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter24,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter25,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter26,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter27,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter28,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter29,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter30,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter31,a1'
.*Info: macro .*
.*Warning: invalid CSR `cycleh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `cycleh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: invalid CSR `cycleh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `cycleh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw cycleh,a1'
.*Info: macro .*
.*Warning: invalid CSR `timeh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `timeh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: invalid CSR `timeh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `timeh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw timeh,a1'
.*Info: macro .*
.*Warning: invalid CSR `instreth', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `instreth', needs `zicntr' extension
+.*Info: macro .*
.*Warning: invalid CSR `instreth', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `instreth', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw instreth,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter3h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter3h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter3h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter4h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter4h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter4h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter5h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter5h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter5h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter6h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter6h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter6h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter7h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter7h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter7h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter8h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter8h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter8h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter9h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter9h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter9h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter10h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter10h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter10h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter11h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter11h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter11h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter12h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter12h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter12h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter13h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter13h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter13h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter14h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter14h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter14h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter15h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter15h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter15h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter16h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter16h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter16h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter17h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter17h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter17h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter18h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter18h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter18h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter19h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter19h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter19h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter20h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter20h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter20h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter21h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter21h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter21h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter22h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter22h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter22h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter23h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter23h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter23h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter24h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter24h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter24h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter25h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter25h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter25h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter26h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter26h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter26h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter27h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter27h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter27h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter28h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter28h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter28h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter29h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter29h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter29h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter30h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter30h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter30h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter31h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter31h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
.*Info: macro .*
.*Warning: read-only CSR is written `csrw mvendorid,a1'
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.d b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
index f4d2b04ca6a4..2127e0f633b2 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.d
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.d
@@ -1,4 +1,4 @@
-#as: -march=rv64i_zicsr -mcsr-check -mpriv-spec=1.9.1
+#as: -march=rv64i2p1_zicsr2p0 -mcsr-check -mpriv-spec=1.9.1
#source: csr.s
#warning_output: csr-version-1p9p1.l
#objdump: -dr -Mpriv-spec=1.9.1
diff --git a/gas/testsuite/gas/riscv/csr-version-1p9p1.l b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
index 7fcd73ab7ddd..4a42f0d5f272 100644
--- a/gas/testsuite/gas/riscv/csr-version-1p9p1.l
+++ b/gas/testsuite/gas/riscv/csr-version-1p9p1.l
@@ -1,258 +1,514 @@
.*Assembler messages:
+.*Warning: invalid CSR `cycle', needs `zicntr' extension
+.*Info: macro .*
+.*Warning: invalid CSR `cycle', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw cycle,a1'
.*Info: macro .*
+.*Warning: invalid CSR `time', needs `zicntr' extension
+.*Info: macro .*
+.*Warning: invalid CSR `time', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw time,a1'
.*Info: macro .*
+.*Warning: invalid CSR `instret', needs `zicntr' extension
+.*Info: macro .*
+.*Warning: invalid CSR `instret', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw instret,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter3,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter4,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter5,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter6,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter7,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter8,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter9,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter10,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter11,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter12,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter13,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter14,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter15,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter16,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter17,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter18,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter19,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter20,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter21,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter22,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter23,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter24,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter25,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter26,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter27,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter28,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter29,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter30,a1'
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31', needs `zihpm' extension
+.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter31,a1'
.*Info: macro .*
.*Warning: invalid CSR `cycleh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `cycleh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: invalid CSR `cycleh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `cycleh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw cycleh,a1'
.*Info: macro .*
.*Warning: invalid CSR `timeh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `timeh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: invalid CSR `timeh', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `timeh', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw timeh,a1'
.*Info: macro .*
.*Warning: invalid CSR `instreth', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `instreth', needs `zicntr' extension
+.*Info: macro .*
.*Warning: invalid CSR `instreth', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `instreth', needs `zicntr' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw instreth,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter3h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter3h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter3h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter3h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter4h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter4h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter4h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter4h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter5h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter5h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter5h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter5h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter6h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter6h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter6h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter6h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter7h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter7h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter7h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter7h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter8h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter8h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter8h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter8h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter9h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter9h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter9h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter9h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter10h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter10h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter10h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter10h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter11h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter11h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter11h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter11h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter12h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter12h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter12h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter12h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter13h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter13h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter13h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter13h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter14h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter14h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter14h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter14h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter15h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter15h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter15h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter15h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter16h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter16h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter16h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter16h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter17h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter17h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter17h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter17h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter18h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter18h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter18h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter18h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter19h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter19h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter19h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter19h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter20h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter20h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter20h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter20h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter21h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter21h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter21h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter21h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter22h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter22h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter22h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter22h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter23h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter23h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter23h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter23h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter24h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter24h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter24h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter24h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter25h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter25h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter25h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter25h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter26h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter26h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter26h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter26h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter27h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter27h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter27h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter27h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter28h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter28h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter28h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter28h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter29h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter29h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter29h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter29h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter30h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter30h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter30h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter30h,a1'
.*Info: macro .*
.*Warning: invalid CSR `hpmcounter31h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: invalid CSR `hpmcounter31h', needs rv32i extension
.*Info: macro .*
+.*Warning: invalid CSR `hpmcounter31h', needs `zihpm' extension
+.*Info: macro .*
.*Warning: read-only CSR is written `csrw hpmcounter31h,a1'
.*Info: macro .*
.*Warning: invalid CSR `scounteren' for the privileged spec `1.9.1'
diff --git a/gas/testsuite/gas/riscv/march-imply-i2p0-01.d b/gas/testsuite/gas/riscv/march-imply-i2p0-01.d
index 6d86034f8c7c..1b716debbcdf 100644
--- a/gas/testsuite/gas/riscv/march-imply-i2p0-01.d
+++ b/gas/testsuite/gas/riscv/march-imply-i2p0-01.d
@@ -3,5 +3,5 @@
#source: march-imply-i.s
Attribute Section: riscv
File Attributes
- Tag_RISCV_arch: "rv32i2p0_zicsr2p0_zifencei2p0"
+ Tag_RISCV_arch: "rv32i2p0"
#...
diff --git a/gas/testsuite/gas/riscv/march-ok-reorder.d b/gas/testsuite/gas/riscv/march-ok-reorder.d
index 030f8b150189..f602bb5492a0 100644
--- a/gas/testsuite/gas/riscv/march-ok-reorder.d
+++ b/gas/testsuite/gas/riscv/march-ok-reorder.d
@@ -1,7 +1,7 @@
-#as: -misa-spec=20191213 -march=rv32i2azicsr_fc2p0dxfoo2p0_m1_xbar2p0_zba
+#as: -misa-spec=20191213 -march=rv32i2p1a_zifencei_zicsr_fc2p0dxfoo2p0_m1_xbar2p0_zba
#source: empty.s
#readelf: -A
Attribute Section: riscv
File Attributes
- Tag_RISCV_arch: "rv32i2p0_m1p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_zmmul1p0_zba1p0_xbar2p0_xfoo2p0"
+ Tag_RISCV_arch: "rv32i2p1_m1p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_zmmul1p0_zba1p0_xbar2p0_xfoo2p0"
diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
index 375483500e2a..dbb061ddf7f9 100644
--- a/include/opcode/riscv-opc.h
+++ b/include/opcode/riscv-opc.h
@@ -3558,70 +3558,70 @@ DECLARE_INSN(vt_maskcn, MATCH_VT_MASKCN, MASK_VT_MASKCN)
#endif /* DECLARE_INSN */
#ifdef DECLARE_CSR
/* Unprivileged Counter/Timers CSRs. */
-DECLARE_CSR(cycle, CSR_CYCLE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(time, CSR_TIME, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(instret, CSR_INSTRET, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter3, CSR_HPMCOUNTER3, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter4, CSR_HPMCOUNTER4, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter5, CSR_HPMCOUNTER5, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter6, CSR_HPMCOUNTER6, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter7, CSR_HPMCOUNTER7, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter8, CSR_HPMCOUNTER8, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter9, CSR_HPMCOUNTER9, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter10, CSR_HPMCOUNTER10, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter11, CSR_HPMCOUNTER11, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter12, CSR_HPMCOUNTER12, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter13, CSR_HPMCOUNTER13, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter14, CSR_HPMCOUNTER14, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter15, CSR_HPMCOUNTER15, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter16, CSR_HPMCOUNTER16, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter17, CSR_HPMCOUNTER17, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter18, CSR_HPMCOUNTER18, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter19, CSR_HPMCOUNTER19, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter20, CSR_HPMCOUNTER20, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter21, CSR_HPMCOUNTER21, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter22, CSR_HPMCOUNTER22, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter23, CSR_HPMCOUNTER23, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter24, CSR_HPMCOUNTER24, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter25, CSR_HPMCOUNTER25, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter26, CSR_HPMCOUNTER26, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter27, CSR_HPMCOUNTER27, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter28, CSR_HPMCOUNTER28, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter29, CSR_HPMCOUNTER29, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter30, CSR_HPMCOUNTER30, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter31, CSR_HPMCOUNTER31, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(cycleh, CSR_CYCLEH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(timeh, CSR_TIMEH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(instreth, CSR_INSTRETH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter3h, CSR_HPMCOUNTER3H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter4h, CSR_HPMCOUNTER4H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter5h, CSR_HPMCOUNTER5H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter6h, CSR_HPMCOUNTER6H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter7h, CSR_HPMCOUNTER7H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter8h, CSR_HPMCOUNTER8H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter9h, CSR_HPMCOUNTER9H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter10h, CSR_HPMCOUNTER10H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter11h, CSR_HPMCOUNTER11H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter12h, CSR_HPMCOUNTER12H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter13h, CSR_HPMCOUNTER13H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter14h, CSR_HPMCOUNTER14H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter15h, CSR_HPMCOUNTER15H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter16h, CSR_HPMCOUNTER16H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter17h, CSR_HPMCOUNTER17H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter18h, CSR_HPMCOUNTER18H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter19h, CSR_HPMCOUNTER19H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter20h, CSR_HPMCOUNTER20H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter21h, CSR_HPMCOUNTER21H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter22h, CSR_HPMCOUNTER22H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter23h, CSR_HPMCOUNTER23H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter24h, CSR_HPMCOUNTER24H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter25h, CSR_HPMCOUNTER25H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter26h, CSR_HPMCOUNTER26H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter27h, CSR_HPMCOUNTER27H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter28h, CSR_HPMCOUNTER28H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter29h, CSR_HPMCOUNTER29H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter30h, CSR_HPMCOUNTER30H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hpmcounter31h, CSR_HPMCOUNTER31H, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(cycle, CSR_CYCLE, CSR_CLASS_ZICNTR, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(time, CSR_TIME, CSR_CLASS_ZICNTR, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(instret, CSR_INSTRET, CSR_CLASS_ZICNTR, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter3, CSR_HPMCOUNTER3, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter4, CSR_HPMCOUNTER4, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter5, CSR_HPMCOUNTER5, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter6, CSR_HPMCOUNTER6, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter7, CSR_HPMCOUNTER7, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter8, CSR_HPMCOUNTER8, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter9, CSR_HPMCOUNTER9, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter10, CSR_HPMCOUNTER10, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter11, CSR_HPMCOUNTER11, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter12, CSR_HPMCOUNTER12, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter13, CSR_HPMCOUNTER13, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter14, CSR_HPMCOUNTER14, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter15, CSR_HPMCOUNTER15, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter16, CSR_HPMCOUNTER16, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter17, CSR_HPMCOUNTER17, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter18, CSR_HPMCOUNTER18, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter19, CSR_HPMCOUNTER19, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter20, CSR_HPMCOUNTER20, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter21, CSR_HPMCOUNTER21, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter22, CSR_HPMCOUNTER22, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter23, CSR_HPMCOUNTER23, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter24, CSR_HPMCOUNTER24, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter25, CSR_HPMCOUNTER25, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter26, CSR_HPMCOUNTER26, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter27, CSR_HPMCOUNTER27, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter28, CSR_HPMCOUNTER28, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter29, CSR_HPMCOUNTER29, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter30, CSR_HPMCOUNTER30, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter31, CSR_HPMCOUNTER31, CSR_CLASS_ZIHPM, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(cycleh, CSR_CYCLEH, CSR_CLASS_ZICNTR_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(timeh, CSR_TIMEH, CSR_CLASS_ZICNTR_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(instreth, CSR_INSTRETH, CSR_CLASS_ZICNTR_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter3h, CSR_HPMCOUNTER3H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter4h, CSR_HPMCOUNTER4H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter5h, CSR_HPMCOUNTER5H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter6h, CSR_HPMCOUNTER6H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter7h, CSR_HPMCOUNTER7H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter8h, CSR_HPMCOUNTER8H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter9h, CSR_HPMCOUNTER9H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter10h, CSR_HPMCOUNTER10H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter11h, CSR_HPMCOUNTER11H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter12h, CSR_HPMCOUNTER12H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter13h, CSR_HPMCOUNTER13H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter14h, CSR_HPMCOUNTER14H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter15h, CSR_HPMCOUNTER15H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter16h, CSR_HPMCOUNTER16H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter17h, CSR_HPMCOUNTER17H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter18h, CSR_HPMCOUNTER18H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter19h, CSR_HPMCOUNTER19H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter20h, CSR_HPMCOUNTER20H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter21h, CSR_HPMCOUNTER21H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter22h, CSR_HPMCOUNTER22H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter23h, CSR_HPMCOUNTER23H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter24h, CSR_HPMCOUNTER24H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter25h, CSR_HPMCOUNTER25H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter26h, CSR_HPMCOUNTER26H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter27h, CSR_HPMCOUNTER27H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter28h, CSR_HPMCOUNTER28H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter29h, CSR_HPMCOUNTER29H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter30h, CSR_HPMCOUNTER30H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hpmcounter31h, CSR_HPMCOUNTER31H, CSR_CLASS_ZIHPM_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
/* Privileged Supervisor CSRs. */
DECLARE_CSR(sstatus, CSR_SSTATUS, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
DECLARE_CSR(sie, CSR_SIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
diff --git a/include/opcode/riscv.h b/include/opcode/riscv.h
index 93dd5169ebce..847a5a04f5ae 100644
--- a/include/opcode/riscv.h
+++ b/include/opcode/riscv.h
@@ -389,6 +389,7 @@ enum riscv_insn_class
INSN_CLASS_Q,
INSN_CLASS_F_AND_C,
INSN_CLASS_D_AND_C,
+ INSN_CLASS_ZICNTR,
INSN_CLASS_ZICOND,
INSN_CLASS_ZICSR,
INSN_CLASS_ZIFENCEI,
diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c
index 8e0ae85eb064..5da55ab9e322 100644
--- a/opcodes/riscv-opc.c
+++ b/opcodes/riscv-opc.c
@@ -510,12 +510,12 @@ const struct riscv_opcode riscv_opcodes[] =
{"fence", 0, INSN_CLASS_I, "P,Q", MATCH_FENCE, MASK_FENCE|MASK_RD|MASK_RS1|(MASK_IMM & ~MASK_PRED & ~MASK_SUCC), match_opcode, 0 },
{"fence.i", 0, INSN_CLASS_ZIFENCEI, "", MATCH_FENCE_I, MASK_FENCE|MASK_RD|MASK_RS1|MASK_IMM, match_opcode, 0 },
{"fence.tso", 0, INSN_CLASS_I, "", MATCH_FENCE_TSO, MASK_FENCE_TSO|MASK_RD|MASK_RS1, match_opcode, 0 },
-{"rdcycle", 0, INSN_CLASS_I, "d", MATCH_RDCYCLE, MASK_RDCYCLE, match_opcode, INSN_ALIAS },
-{"rdinstret", 0, INSN_CLASS_I, "d", MATCH_RDINSTRET, MASK_RDINSTRET, match_opcode, INSN_ALIAS },
-{"rdtime", 0, INSN_CLASS_I, "d", MATCH_RDTIME, MASK_RDTIME, match_opcode, INSN_ALIAS },
-{"rdcycleh", 32, INSN_CLASS_I, "d", MATCH_RDCYCLEH, MASK_RDCYCLEH, match_opcode, INSN_ALIAS },
-{"rdinstreth", 32, INSN_CLASS_I, "d", MATCH_RDINSTRETH, MASK_RDINSTRETH, match_opcode, INSN_ALIAS },
-{"rdtimeh", 32, INSN_CLASS_I, "d", MATCH_RDTIMEH, MASK_RDTIMEH, match_opcode, INSN_ALIAS },
+{"rdcycle", 0, INSN_CLASS_ZICNTR, "d", MATCH_RDCYCLE, MASK_RDCYCLE, match_opcode, INSN_ALIAS },
+{"rdinstret", 0, INSN_CLASS_ZICNTR, "d", MATCH_RDINSTRET, MASK_RDINSTRET, match_opcode, INSN_ALIAS },
+{"rdtime", 0, INSN_CLASS_ZICNTR, "d", MATCH_RDTIME, MASK_RDTIME, match_opcode, INSN_ALIAS },
+{"rdcycleh", 32, INSN_CLASS_ZICNTR, "d", MATCH_RDCYCLEH, MASK_RDCYCLEH, match_opcode, INSN_ALIAS },
+{"rdinstreth", 32, INSN_CLASS_ZICNTR, "d", MATCH_RDINSTRETH, MASK_RDINSTRETH, match_opcode, INSN_ALIAS },
+{"rdtimeh", 32, INSN_CLASS_ZICNTR, "d", MATCH_RDTIMEH, MASK_RDTIMEH, match_opcode, INSN_ALIAS },
{"ecall", 0, INSN_CLASS_I, "", MATCH_SCALL, MASK_SCALL, match_opcode, 0 },
{"scall", 0, INSN_CLASS_I, "", MATCH_SCALL, MASK_SCALL, match_opcode, 0 },
{"xori", 0, INSN_CLASS_I, "d,s,j", MATCH_XORI, MASK_XORI, match_opcode, 0 },
--
2.42.0
prev parent reply other threads:[~2023-10-21 2:17 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-08 3:17 [RFC PATCH 0/2] " Tsukasa OI
2023-08-08 3:17 ` [RFC PATCH 1/2] RISC-V: Base for complex extension implications Tsukasa OI
2023-08-08 3:17 ` [RFC PATCH 2/2] RISC-V: Add 'Zicntr' and 'Zihpm' support with compatibility measures Tsukasa OI
2023-10-19 7:57 ` [PING^1][RFC PATCH 0/2] " Tsukasa OI
2023-10-19 8:33 ` Nelson Chu
2023-10-20 2:52 ` Tsukasa OI
2023-10-21 0:45 ` [PATCH 0/1] " Tsukasa OI
2023-10-21 0:45 ` [PATCH 1/1] " Tsukasa OI
2023-10-21 2:17 ` [PATCH v2 0/1] " Tsukasa OI
2023-10-21 2:17 ` Tsukasa OI [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=59f9af201c78d482f9d0640890de72d2b2dac628.1697854636.git.research_trasio@irq.a4lg.com \
--to=research_trasio@irq.a4lg.com \
--cc=andrew@sifive.com \
--cc=binutils@sourceware.org \
--cc=jim.wilson.gcc@gmail.com \
--cc=kito.cheng@sifive.com \
--cc=nelson@rivosinc.com \
--cc=palmer@dabbelt.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).