[PATCH v1 3/4] aarch64: TLBI Domains changes for PLBI instruction
Srinath Parvathaneni
srinath.parvathaneni@arm.com
Thu Jan 22 14:41:08 GMT 2026
For the PLBI instruction with optional register argument
<Rt> == 0b1111, with FEAT_TLBID enabled they are permitted to
have an Rt value which is not 0b11111 and this is allowed for
all the TLBI instructions with a <type> of ALLE1*, ALLE2* and
VMALL* and a <shareability> of IS or OS.
---
gas/config/tc-aarch64.c | 3 +-
gas/testsuite/gas/aarch64/plbi-invalid-1.l | 48 ++++-----
gas/testsuite/gas/aarch64/plbi-invalid-2.l | 108 ++++++++++----------
gas/testsuite/gas/aarch64/plbi-invalid-3.l | 54 +++++-----
gas/testsuite/gas/aarch64/tlbid-3.d | 20 ++++
gas/testsuite/gas/aarch64/tlbid-3.s | 12 +++
gas/testsuite/gas/aarch64/tlbid-invalid-4.d | 4 +
gas/testsuite/gas/aarch64/tlbid-invalid-4.l | 13 +++
opcodes/aarch64-opc.c | 65 +++++++-----
9 files changed, 193 insertions(+), 134 deletions(-)
create mode 100644 gas/testsuite/gas/aarch64/tlbid-3.d
create mode 100644 gas/testsuite/gas/aarch64/tlbid-3.s
create mode 100644 gas/testsuite/gas/aarch64/tlbid-invalid-4.d
create mode 100644 gas/testsuite/gas/aarch64/tlbid-invalid-4.l
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index b71a45e232f..ffd9e9baf72 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -5107,7 +5107,8 @@ parse_sys_ins_reg (char **str, htab_t sys_ins_regs, bool sysreg128_p)
if (!aarch64_sys_ins_reg_supported_p (cpu_variant, o->name, &set))
{
- if (sys_ins_regs == aarch64_sys_regs_tlbi_hsh)
+ if ((sys_ins_regs == aarch64_sys_regs_tlbi_hsh)
+ || (sys_ins_regs == aarch64_sys_regs_plbi_hsh))
as_bad (_("selected processor does not support TLBI/PLBI operation "
"'%s'"), *str);
else
diff --git a/gas/testsuite/gas/aarch64/plbi-invalid-1.l b/gas/testsuite/gas/aarch64/plbi-invalid-1.l
index 3cd50dd9bbf..2a2663ffe1c 100644
--- a/gas/testsuite/gas/aarch64/plbi-invalid-1.l
+++ b/gas/testsuite/gas/aarch64/plbi-invalid-1.l
@@ -29,34 +29,34 @@
.*: Error: missing register at operand 2 -- `plbi perme3isnxs'
.*: Error: missing register at operand 2 -- `plbi perme3'
.*: Error: missing register at operand 2 -- `plbi perme3nxs'
-.*: Error: extraneous register at operand 2 -- `plbi vmalle1os,x0'
-.*: Error: extraneous register at operand 2 -- `plbi vmalle1osnxs,x0'
-.*: Error: extraneous register at operand 2 -- `plbi vmalle1os,xzr'
-.*: Error: extraneous register at operand 2 -- `plbi vmalle1osnxs,xzr'
-.*: Error: extraneous register at operand 2 -- `plbi vmalle1is,x0'
-.*: Error: extraneous register at operand 2 -- `plbi vmalle1isnxs,x0'
-.*: Error: extraneous register at operand 2 -- `plbi vmalle1is,xzr'
-.*: Error: extraneous register at operand 2 -- `plbi vmalle1isnxs,xzr'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1os,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1osnxs,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1os,xzr'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1osnxs,xzr'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1is,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1isnxs,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1is,xzr'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1isnxs,xzr'
.*: Error: extraneous register at operand 2 -- `plbi vmalle1,x0'
.*: Error: extraneous register at operand 2 -- `plbi vmalle1nxs,x0'
.*: Error: extraneous register at operand 2 -- `plbi vmalle1,xzr'
.*: Error: extraneous register at operand 2 -- `plbi vmalle1nxs,xzr'
-.*: Error: extraneous register at operand 2 -- `plbi alle2os,x0'
-.*: Error: extraneous register at operand 2 -- `plbi alle2osnxs,x0'
-.*: Error: extraneous register at operand 2 -- `plbi alle2os,xzr'
-.*: Error: extraneous register at operand 2 -- `plbi alle2osnxs,xzr'
-.*: Error: extraneous register at operand 2 -- `plbi alle1os,x0'
-.*: Error: extraneous register at operand 2 -- `plbi alle1osnxs,x0'
-.*: Error: extraneous register at operand 2 -- `plbi alle1os,xzr'
-.*: Error: extraneous register at operand 2 -- `plbi alle1osnxs,xzr'
-.*: Error: extraneous register at operand 2 -- `plbi alle2is,x0'
-.*: Error: extraneous register at operand 2 -- `plbi alle2isnxs,x0'
-.*: Error: extraneous register at operand 2 -- `plbi alle2is,xzr'
-.*: Error: extraneous register at operand 2 -- `plbi alle2isnxs,xzr'
-.*: Error: extraneous register at operand 2 -- `plbi alle1is,x0'
-.*: Error: extraneous register at operand 2 -- `plbi alle1isnxs,x0'
-.*: Error: extraneous register at operand 2 -- `plbi alle1is,xzr'
-.*: Error: extraneous register at operand 2 -- `plbi alle1isnxs,xzr'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2os,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2osnxs,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2os,xzr'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2osnxs,xzr'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1os,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1osnxs,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1os,xzr'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1osnxs,xzr'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2is,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2isnxs,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2is,xzr'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2isnxs,xzr'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1is,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1isnxs,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1is,xzr'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1isnxs,xzr'
.*: Error: extraneous register at operand 2 -- `plbi alle2,x0'
.*: Error: extraneous register at operand 2 -- `plbi alle2nxs,x0'
.*: Error: extraneous register at operand 2 -- `plbi alle2,xzr'
diff --git a/gas/testsuite/gas/aarch64/plbi-invalid-2.l b/gas/testsuite/gas/aarch64/plbi-invalid-2.l
index 21379095c11..0a575489275 100644
--- a/gas/testsuite/gas/aarch64/plbi-invalid-2.l
+++ b/gas/testsuite/gas/aarch64/plbi-invalid-2.l
@@ -1,109 +1,109 @@
.*: Assembler messages:
-.*: Error: selected processor does not support system register name 'alle1'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1'
.*: Error: selected processor does not support `plbi alle1'
-.*: Error: selected processor does not support system register name 'alle1is'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1is'
.*: Error: selected processor does not support `plbi alle1is'
-.*: Error: selected processor does not support system register name 'alle1isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1isnxs'
.*: Error: selected processor does not support `plbi alle1isnxs'
-.*: Error: selected processor does not support system register name 'alle1nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1nxs'
.*: Error: selected processor does not support `plbi alle1nxs'
-.*: Error: selected processor does not support system register name 'alle1os'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1os'
.*: Error: selected processor does not support `plbi alle1os'
-.*: Error: selected processor does not support system register name 'alle1osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1osnxs'
.*: Error: selected processor does not support `plbi alle1osnxs'
-.*: Error: selected processor does not support system register name 'alle2'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2'
.*: Error: selected processor does not support `plbi alle2'
-.*: Error: selected processor does not support system register name 'alle2is'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2is'
.*: Error: selected processor does not support `plbi alle2is'
-.*: Error: selected processor does not support system register name 'alle2isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2isnxs'
.*: Error: selected processor does not support `plbi alle2isnxs'
-.*: Error: selected processor does not support system register name 'alle2nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2nxs'
.*: Error: selected processor does not support `plbi alle2nxs'
-.*: Error: selected processor does not support system register name 'alle2os'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2os'
.*: Error: selected processor does not support `plbi alle2os'
-.*: Error: selected processor does not support system register name 'alle2osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2osnxs'
.*: Error: selected processor does not support `plbi alle2osnxs'
-.*: Error: selected processor does not support system register name 'alle3'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle3'
.*: Error: selected processor does not support `plbi alle3'
-.*: Error: selected processor does not support system register name 'alle3is'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle3is'
.*: Error: selected processor does not support `plbi alle3is'
-.*: Error: selected processor does not support system register name 'alle3isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle3isnxs'
.*: Error: selected processor does not support `plbi alle3isnxs'
-.*: Error: selected processor does not support system register name 'alle3nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle3nxs'
.*: Error: selected processor does not support `plbi alle3nxs'
-.*: Error: selected processor does not support system register name 'alle3os'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle3os'
.*: Error: selected processor does not support `plbi alle3os'
-.*: Error: selected processor does not support system register name 'alle3osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle3osnxs'
.*: Error: selected processor does not support `plbi alle3osnxs'
-.*: Error: selected processor does not support system register name 'aside1'
+.*: Error: selected processor does not support TLBI/PLBI operation 'aside1'
.*: Error: missing register at operand 2 -- `plbi aside1'
-.*: Error: selected processor does not support system register name 'aside1is'
+.*: Error: selected processor does not support TLBI/PLBI operation 'aside1is'
.*: Error: missing register at operand 2 -- `plbi aside1is'
-.*: Error: selected processor does not support system register name 'aside1isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'aside1isnxs'
.*: Error: missing register at operand 2 -- `plbi aside1isnxs'
-.*: Error: selected processor does not support system register name 'aside1nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'aside1nxs'
.*: Error: missing register at operand 2 -- `plbi aside1nxs'
-.*: Error: selected processor does not support system register name 'aside1os'
+.*: Error: selected processor does not support TLBI/PLBI operation 'aside1os'
.*: Error: missing register at operand 2 -- `plbi aside1os'
-.*: Error: selected processor does not support system register name 'aside1osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'aside1osnxs'
.*: Error: missing register at operand 2 -- `plbi aside1osnxs'
-.*: Error: selected processor does not support system register name 'permae1'
+.*: Error: selected processor does not support TLBI/PLBI operation 'permae1'
.*: Error: missing register at operand 2 -- `plbi permae1'
-.*: Error: selected processor does not support system register name 'permae1is'
+.*: Error: selected processor does not support TLBI/PLBI operation 'permae1is'
.*: Error: missing register at operand 2 -- `plbi permae1is'
-.*: Error: selected processor does not support system register name 'permae1isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'permae1isnxs'
.*: Error: missing register at operand 2 -- `plbi permae1isnxs'
-.*: Error: selected processor does not support system register name 'permae1nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'permae1nxs'
.*: Error: missing register at operand 2 -- `plbi permae1nxs'
-.*: Error: selected processor does not support system register name 'permae1os'
+.*: Error: selected processor does not support TLBI/PLBI operation 'permae1os'
.*: Error: missing register at operand 2 -- `plbi permae1os'
-.*: Error: selected processor does not support system register name 'permae1osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'permae1osnxs'
.*: Error: missing register at operand 2 -- `plbi permae1osnxs'
-.*: Error: selected processor does not support system register name 'perme1'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme1'
.*: Error: missing register at operand 2 -- `plbi perme1'
-.*: Error: selected processor does not support system register name 'perme1is'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme1is'
.*: Error: missing register at operand 2 -- `plbi perme1is'
-.*: Error: selected processor does not support system register name 'perme1isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme1isnxs'
.*: Error: missing register at operand 2 -- `plbi perme1isnxs'
-.*: Error: selected processor does not support system register name 'perme1nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme1nxs'
.*: Error: missing register at operand 2 -- `plbi perme1nxs'
-.*: Error: selected processor does not support system register name 'perme1os'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme1os'
.*: Error: missing register at operand 2 -- `plbi perme1os'
-.*: Error: selected processor does not support system register name 'perme1osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme1osnxs'
.*: Error: missing register at operand 2 -- `plbi perme1osnxs'
-.*: Error: selected processor does not support system register name 'perme2'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme2'
.*: Error: missing register at operand 2 -- `plbi perme2'
-.*: Error: selected processor does not support system register name 'perme2is'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme2is'
.*: Error: missing register at operand 2 -- `plbi perme2is'
-.*: Error: selected processor does not support system register name 'perme2isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme2isnxs'
.*: Error: missing register at operand 2 -- `plbi perme2isnxs'
-.*: Error: selected processor does not support system register name 'perme2nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme2nxs'
.*: Error: missing register at operand 2 -- `plbi perme2nxs'
-.*: Error: selected processor does not support system register name 'perme2os'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme2os'
.*: Error: missing register at operand 2 -- `plbi perme2os'
-.*: Error: selected processor does not support system register name 'perme2osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme2osnxs'
.*: Error: missing register at operand 2 -- `plbi perme2osnxs'
-.*: Error: selected processor does not support system register name 'perme3'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme3'
.*: Error: missing register at operand 2 -- `plbi perme3'
-.*: Error: selected processor does not support system register name 'perme3is'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme3is'
.*: Error: missing register at operand 2 -- `plbi perme3is'
-.*: Error: selected processor does not support system register name 'perme3isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme3isnxs'
.*: Error: missing register at operand 2 -- `plbi perme3isnxs'
-.*: Error: selected processor does not support system register name 'perme3nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme3nxs'
.*: Error: missing register at operand 2 -- `plbi perme3nxs'
-.*: Error: selected processor does not support system register name 'perme3os'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme3os'
.*: Error: missing register at operand 2 -- `plbi perme3os'
-.*: Error: selected processor does not support system register name 'perme3osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme3osnxs'
.*: Error: missing register at operand 2 -- `plbi perme3osnxs'
-.*: Error: selected processor does not support system register name 'vmalle1'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1'
.*: Error: selected processor does not support `plbi vmalle1'
-.*: Error: selected processor does not support system register name 'vmalle1is'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1is'
.*: Error: selected processor does not support `plbi vmalle1is'
-.*: Error: selected processor does not support system register name 'vmalle1isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1isnxs'
.*: Error: selected processor does not support `plbi vmalle1isnxs'
-.*: Error: selected processor does not support system register name 'vmalle1nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1nxs'
.*: Error: selected processor does not support `plbi vmalle1nxs'
-.*: Error: selected processor does not support system register name 'vmalle1os'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1os'
.*: Error: selected processor does not support `plbi vmalle1os'
-.*: Error: selected processor does not support system register name 'vmalle1osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1osnxs'
.*: Error: selected processor does not support `plbi vmalle1osnxs'
diff --git a/gas/testsuite/gas/aarch64/plbi-invalid-3.l b/gas/testsuite/gas/aarch64/plbi-invalid-3.l
index e98b63c8d74..bc122a60306 100644
--- a/gas/testsuite/gas/aarch64/plbi-invalid-3.l
+++ b/gas/testsuite/gas/aarch64/plbi-invalid-3.l
@@ -1,43 +1,43 @@
.*: Assembler messages:
-.*: Error: selected processor does not support system register name 'alle1isnxs'
-.*: Error: selected processor does not support system register name 'alle1nxs'
-.*: Error: selected processor does not support system register name 'alle1osnxs'
-.*: Error: selected processor does not support system register name 'alle2isnxs'
-.*: Error: selected processor does not support system register name 'alle2nxs'
-.*: Error: selected processor does not support system register name 'alle2osnxs'
-.*: Error: selected processor does not support system register name 'alle3isnxs'
-.*: Error: selected processor does not support system register name 'alle3nxs'
-.*: Error: selected processor does not support system register name 'alle3osnxs'
-.*: Error: selected processor does not support system register name 'aside1isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle3isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle3nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle3osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'aside1isnxs'
.*: Error: missing register at operand 2 -- `plbi aside1isnxs'
-.*: Error: selected processor does not support system register name 'aside1nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'aside1nxs'
.*: Error: missing register at operand 2 -- `plbi aside1nxs'
-.*: Error: selected processor does not support system register name 'aside1osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'aside1osnxs'
.*: Error: missing register at operand 2 -- `plbi aside1osnxs'
-.*: Error: selected processor does not support system register name 'permae1isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'permae1isnxs'
.*: Error: missing register at operand 2 -- `plbi permae1isnxs'
-.*: Error: selected processor does not support system register name 'permae1nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'permae1nxs'
.*: Error: missing register at operand 2 -- `plbi permae1nxs'
-.*: Error: selected processor does not support system register name 'permae1osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'permae1osnxs'
.*: Error: missing register at operand 2 -- `plbi permae1osnxs'
-.*: Error: selected processor does not support system register name 'perme1isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme1isnxs'
.*: Error: missing register at operand 2 -- `plbi perme1isnxs'
-.*: Error: selected processor does not support system register name 'perme1nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme1nxs'
.*: Error: missing register at operand 2 -- `plbi perme1nxs'
-.*: Error: selected processor does not support system register name 'perme1osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme1osnxs'
.*: Error: missing register at operand 2 -- `plbi perme1osnxs'
-.*: Error: selected processor does not support system register name 'perme2isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme2isnxs'
.*: Error: missing register at operand 2 -- `plbi perme2isnxs'
-.*: Error: selected processor does not support system register name 'perme2nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme2nxs'
.*: Error: missing register at operand 2 -- `plbi perme2nxs'
-.*: Error: selected processor does not support system register name 'perme2osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme2osnxs'
.*: Error: missing register at operand 2 -- `plbi perme2osnxs'
-.*: Error: selected processor does not support system register name 'perme3isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme3isnxs'
.*: Error: missing register at operand 2 -- `plbi perme3isnxs'
-.*: Error: selected processor does not support system register name 'perme3nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme3nxs'
.*: Error: missing register at operand 2 -- `plbi perme3nxs'
-.*: Error: selected processor does not support system register name 'perme3osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'perme3osnxs'
.*: Error: missing register at operand 2 -- `plbi perme3osnxs'
-.*: Error: selected processor does not support system register name 'vmalle1isnxs'
-.*: Error: selected processor does not support system register name 'vmalle1nxs'
-.*: Error: selected processor does not support system register name 'vmalle1osnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1isnxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1nxs'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1osnxs'
diff --git a/gas/testsuite/gas/aarch64/tlbid-3.d b/gas/testsuite/gas/aarch64/tlbid-3.d
new file mode 100644
index 00000000000..559cbb2d2e8
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/tlbid-3.d
@@ -0,0 +1,20 @@
+#as: -march=armv9.4-a+poe2+tlbid
+#objdump: -dr
+[^:]+: file format .*
+
+
+[^:]+:
+
+[^:]+:
+.*: d508a100 plbi vmalle1os, x0
+.*: d508a900 plbi vmalle1osnxs, x0
+.*: d508a300 plbi vmalle1is, x0
+.*: d508ab00 plbi vmalle1isnxs, x0
+.*: d50ca100 plbi alle2os, x0
+.*: d50ca900 plbi alle2osnxs, x0
+.*: d50ca180 plbi alle1os, x0
+.*: d50ca980 plbi alle1osnxs, x0
+.*: d50ca300 plbi alle2is, x0
+.*: d50cab00 plbi alle2isnxs, x0
+.*: d50ca380 plbi alle1is, x0
+.*: d50cab80 plbi alle1isnxs, x0
diff --git a/gas/testsuite/gas/aarch64/tlbid-3.s b/gas/testsuite/gas/aarch64/tlbid-3.s
new file mode 100644
index 00000000000..ee69ba52690
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/tlbid-3.s
@@ -0,0 +1,12 @@
+plbi vmalle1os, x0
+plbi vmalle1osnxs, x0
+plbi vmalle1is, x0
+plbi vmalle1isnxs, x0
+plbi alle2os, x0
+plbi alle2osnxs, x0
+plbi alle1os, x0
+plbi alle1osnxs, x0
+plbi alle2is, x0
+plbi alle2isnxs, x0
+plbi alle1is, x0
+plbi alle1isnxs, x0
diff --git a/gas/testsuite/gas/aarch64/tlbid-invalid-4.d b/gas/testsuite/gas/aarch64/tlbid-invalid-4.d
new file mode 100644
index 00000000000..f7b0e358517
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/tlbid-invalid-4.d
@@ -0,0 +1,4 @@
+#name: Test plbi instruction without +tlbid
+#source: tlbid-3.s
+#as: -march=armv9.4-a+poe2
+#error_output: tlbid-invalid-4.l
diff --git a/gas/testsuite/gas/aarch64/tlbid-invalid-4.l b/gas/testsuite/gas/aarch64/tlbid-invalid-4.l
new file mode 100644
index 00000000000..2d1a1775bba
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/tlbid-invalid-4.l
@@ -0,0 +1,13 @@
+.*: Assembler messages:
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1os,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1osnxs,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1is,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'vmalle1isnxs,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2os,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2osnxs,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1os,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1osnxs,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2is,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle2isnxs,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1is,x0'
+.*: Error: selected processor does not support TLBI/PLBI operation 'alle1isnxs,x0'
diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
index 067fdfa98d9..e65982187fa 100644
--- a/opcodes/aarch64-opc.c
+++ b/opcodes/aarch64-opc.c
@@ -5496,37 +5496,46 @@ const aarch64_sys_ins_reg aarch64_sys_regs_tlbi[] =
const aarch64_sys_ins_reg aarch64_sys_regs_plbi[] =
{
- #define PLBI_XS_OP(OP, CODE, FLAGS) \
+#define PLBI_XS_OP(OP, CODE, FLAGS, FEAT) \
+ { OP, CODE, FLAGS, AARCH64_FEATURES (2, TLBID, FEAT) }, \
+ { OP "nxs", CODE | CPENS (0, 0, C8, 0), FLAGS, AARCH64_FEATURES (3, TLBID, XS, FEAT) },
+
+ PLBI_XS_OP ( "alle1is", CPENS (4, C10, C3, 4), F_TLBID_XT, POE2)
+ PLBI_XS_OP ( "alle1os", CPENS (4, C10, C1, 4), F_TLBID_XT, POE2)
+ PLBI_XS_OP ( "alle2is", CPENS (4, C10, C3, 0), F_TLBID_XT, POE2)
+ PLBI_XS_OP ( "alle2os", CPENS (4, C10, C1, 0), F_TLBID_XT, POE2)
+ PLBI_XS_OP ( "vmalle1is", CPENS (0, C10, C3, 0), F_TLBID_XT, POE2)
+ PLBI_XS_OP ( "vmalle1os", CPENS (0, C10, C1, 0), F_TLBID_XT, POE2)
+
+#undef PLBI_XS_OP
+
+#define PLBI_XS_OP(OP, CODE, FLAGS) \
{ OP, CODE, FLAGS, AARCH64_FEATURE (POE2) }, \
{ OP "nxs", CODE | CPENS (0, 0, C8, 0), FLAGS, AARCH64_FEATURES (2, POE2, XS) },
- PLBI_XS_OP ( "alle1", CPENS (4, C10, C7, 4), 0 )
- PLBI_XS_OP ( "alle1is", CPENS (4, C10, C3, 4), 0 )
- PLBI_XS_OP ( "alle1os", CPENS (4, C10, C1, 4), 0 )
- PLBI_XS_OP ( "alle2", CPENS (4, C10, C7, 0), 0 )
- PLBI_XS_OP ( "alle2is", CPENS (4, C10, C3, 0), 0 )
- PLBI_XS_OP ( "alle2os", CPENS (4, C10, C1, 0), 0 )
- PLBI_XS_OP ( "alle3", CPENS (6, C10, C7, 0), 0 )
- PLBI_XS_OP ( "alle3is", CPENS (6, C10, C3, 0), 0 )
- PLBI_XS_OP ( "alle3os", CPENS (6, C10, C1, 0), 0 )
- PLBI_XS_OP ( "aside1", CPENS (0, C10, C7, 2), F_HASXT )
- PLBI_XS_OP ( "aside1is", CPENS (0, C10, C3, 2), F_HASXT )
- PLBI_XS_OP ( "aside1os", CPENS (0, C10, C1, 2), F_HASXT )
- PLBI_XS_OP ( "permae1", CPENS (0, C10, C7, 3), F_HASXT )
- PLBI_XS_OP ( "permae1is", CPENS (0, C10, C3, 3), F_HASXT )
- PLBI_XS_OP ( "permae1os", CPENS (0, C10, C1, 3), F_HASXT )
- PLBI_XS_OP ( "perme1", CPENS (0, C10, C7, 1), F_HASXT )
- PLBI_XS_OP ( "perme1is", CPENS (0, C10, C3, 1), F_HASXT )
- PLBI_XS_OP ( "perme1os", CPENS (0, C10, C1, 1), F_HASXT )
- PLBI_XS_OP ( "perme2", CPENS (4, C10, C7, 1), F_HASXT )
- PLBI_XS_OP ( "perme2is", CPENS (4, C10, C3, 1), F_HASXT )
- PLBI_XS_OP ( "perme2os", CPENS (4, C10, C1, 1), F_HASXT )
- PLBI_XS_OP ( "perme3", CPENS (6, C10, C7, 1), F_HASXT )
- PLBI_XS_OP ( "perme3is", CPENS (6, C10, C3, 1), F_HASXT )
- PLBI_XS_OP ( "perme3os", CPENS (6, C10, C1, 1), F_HASXT )
- PLBI_XS_OP ( "vmalle1", CPENS (0, C10, C7, 0), 0 )
- PLBI_XS_OP ( "vmalle1is", CPENS (0, C10, C3, 0), 0 )
- PLBI_XS_OP ( "vmalle1os", CPENS (0, C10, C1, 0), 0 )
+ PLBI_XS_OP ( "alle1", CPENS (4, C10, C7, 4), 0 )
+ PLBI_XS_OP ( "alle2", CPENS (4, C10, C7, 0), 0 )
+ PLBI_XS_OP ( "alle3", CPENS (6, C10, C7, 0), 0 )
+ PLBI_XS_OP ( "alle3is", CPENS (6, C10, C3, 0), 0 )
+ PLBI_XS_OP ( "alle3os", CPENS (6, C10, C1, 0), 0 )
+ PLBI_XS_OP ( "aside1", CPENS (0, C10, C7, 2), F_HASXT )
+ PLBI_XS_OP ( "aside1is", CPENS (0, C10, C3, 2), F_HASXT )
+ PLBI_XS_OP ( "aside1os", CPENS (0, C10, C1, 2), F_HASXT )
+ PLBI_XS_OP ( "permae1", CPENS (0, C10, C7, 3), F_HASXT )
+ PLBI_XS_OP ( "permae1is", CPENS (0, C10, C3, 3), F_HASXT )
+ PLBI_XS_OP ( "permae1os", CPENS (0, C10, C1, 3), F_HASXT )
+ PLBI_XS_OP ( "perme1", CPENS (0, C10, C7, 1), F_HASXT )
+ PLBI_XS_OP ( "perme1is", CPENS (0, C10, C3, 1), F_HASXT )
+ PLBI_XS_OP ( "perme1os", CPENS (0, C10, C1, 1), F_HASXT )
+ PLBI_XS_OP ( "perme2", CPENS (4, C10, C7, 1), F_HASXT )
+ PLBI_XS_OP ( "perme2is", CPENS (4, C10, C3, 1), F_HASXT )
+ PLBI_XS_OP ( "perme2os", CPENS (4, C10, C1, 1), F_HASXT )
+ PLBI_XS_OP ( "perme3", CPENS (6, C10, C7, 1), F_HASXT )
+ PLBI_XS_OP ( "perme3is", CPENS (6, C10, C3, 1), F_HASXT )
+ PLBI_XS_OP ( "perme3os", CPENS (6, C10, C1, 1), F_HASXT )
+ PLBI_XS_OP ( "vmalle1", CPENS (0, C10, C7, 0), 0 )
+
+#undef PLBI_XS_OP
{ 0, CPENS (0,0,0,0), 0, AARCH64_NO_FEATURES }
};
--
2.25.1
More information about the Binutils
mailing list