[PATCH v6 0/4] aarch64: Add support for POE2 extension

Srinath Parvathaneni srinath.parvathaneni@arm.com
Wed Dec 31 19:12:34 GMT 2025


Changes in v5 -> v6:

The series has been rebased on the latest master.

PATCH 1/4:

* Replaced strcasecmp with strncasecmp for matching the "nb"
  string and updated the corresponding conditional logic.
* Replaced set_syntax_error with set_default_error.
* Added x0 checks to the second operand in poe2*.s tests and
  updated the associated *.d and *.l files.
* Updated the error message for NOT_BALANCED_17.

PATCH 2/4:
* Added a second #as invocation to the poe2-sysreg-1.d testcase
  and dropped poe2-sysreg-2.d.
* Updated the counter logic in poe2-sysreg-1.s using the .irp
  directive.
* Manually verified all macro expansions against the system
  registers defined in aarch64-sys-regs.def, and cross-checked
  the output with Clang.

PATCH 3/4:
* Updated the error message for NOT_BALANCED_10.
* Refined the conditional logic to avoid updating backtrack_pos
  when processing the first operand and the optional argument is
  not present.

PATCH 4/4:
* No changes, previously approved.

Hi,

The following patch series add support for POE2 extension.

This is done by adding support for feature FEAT_S1POE2 (+poe2 flag) to
support TCHANGE{F/B} instructions and all the system registers. Also
adds support for feature FEAT_TEV (+tev flag) to support TENTER/TEXIT
instructions.

Also adds the suport for PLBI instructions and corresponding system
registers.

Srinath Parvathaneni (4):
  aarch64: Add support for POE2 instructions
  aarch64: Add support for POE2 system registers
  aarch64: Add support for TEV instructions
  aarch64: Add support for POE2 PLBI instruction

 gas/config/tc-aarch64.c                       |  43 ++
 gas/doc/c-aarch64.texi                        |   4 +
 gas/testsuite/gas/aarch64/plbi-1.d            |  93 +++
 gas/testsuite/gas/aarch64/plbi-1.s            |  11 +
 gas/testsuite/gas/aarch64/plbi-invalid-1.d    |   3 +
 gas/testsuite/gas/aarch64/plbi-invalid-1.l    |  79 +++
 gas/testsuite/gas/aarch64/plbi-invalid-1.s    |  11 +
 gas/testsuite/gas/aarch64/plbi-invalid-2.d    |   3 +
 gas/testsuite/gas/aarch64/plbi-invalid-2.l    | 109 ++++
 gas/testsuite/gas/aarch64/plbi-invalid-2.s    |  54 ++
 gas/testsuite/gas/aarch64/plbi-invalid-3.d    |   3 +
 gas/testsuite/gas/aarch64/plbi-invalid-3.l    |  43 ++
 gas/testsuite/gas/aarch64/plbi-invalid-3.s    |  27 +
 gas/testsuite/gas/aarch64/poe2-invalid-1.d    |   4 +
 gas/testsuite/gas/aarch64/poe2-invalid-1.l    |  55 ++
 gas/testsuite/gas/aarch64/poe2-invalid-1.s    |  69 +++
 gas/testsuite/gas/aarch64/poe2-invalid-2.d    |   4 +
 gas/testsuite/gas/aarch64/poe2-invalid-2.l    |  29 +
 gas/testsuite/gas/aarch64/poe2.d              |  37 ++
 gas/testsuite/gas/aarch64/poe2.s              |  43 ++
 .../gas/aarch64/sysreg/poe2-sysreg-1.d        | 538 ++++++++++++++++++
 .../gas/aarch64/sysreg/poe2-sysreg-1.s        |  88 +++
 gas/testsuite/gas/aarch64/tev-invalid-1.d     |   4 +
 gas/testsuite/gas/aarch64/tev-invalid-1.l     |  18 +
 gas/testsuite/gas/aarch64/tev-invalid-1.s     |  22 +
 gas/testsuite/gas/aarch64/tev-invalid-2.d     |   4 +
 gas/testsuite/gas/aarch64/tev-invalid-2.l     |  22 +
 gas/testsuite/gas/aarch64/tev.d               |  30 +
 gas/testsuite/gas/aarch64/tev.s               |  28 +
 include/opcode/aarch64.h                      |   8 +
 opcodes/aarch64-asm-2.c                       |   4 +
 opcodes/aarch64-dis-2.c                       | 118 +++-
 opcodes/aarch64-dis.c                         |   1 +
 opcodes/aarch64-opc-2.c                       |   3 +
 opcodes/aarch64-opc.c                         |  44 ++
 opcodes/aarch64-sys-regs.def                  | 264 +++++++++
 opcodes/aarch64-tbl-2.h                       |   7 +
 opcodes/aarch64-tbl.h                         |  33 ++
 38 files changed, 1934 insertions(+), 26 deletions(-)
 create mode 100644 gas/testsuite/gas/aarch64/plbi-1.d
 create mode 100644 gas/testsuite/gas/aarch64/plbi-1.s
 create mode 100644 gas/testsuite/gas/aarch64/plbi-invalid-1.d
 create mode 100644 gas/testsuite/gas/aarch64/plbi-invalid-1.l
 create mode 100644 gas/testsuite/gas/aarch64/plbi-invalid-1.s
 create mode 100644 gas/testsuite/gas/aarch64/plbi-invalid-2.d
 create mode 100644 gas/testsuite/gas/aarch64/plbi-invalid-2.l
 create mode 100644 gas/testsuite/gas/aarch64/plbi-invalid-2.s
 create mode 100644 gas/testsuite/gas/aarch64/plbi-invalid-3.d
 create mode 100644 gas/testsuite/gas/aarch64/plbi-invalid-3.l
 create mode 100644 gas/testsuite/gas/aarch64/plbi-invalid-3.s
 create mode 100644 gas/testsuite/gas/aarch64/poe2-invalid-1.d
 create mode 100644 gas/testsuite/gas/aarch64/poe2-invalid-1.l
 create mode 100644 gas/testsuite/gas/aarch64/poe2-invalid-1.s
 create mode 100644 gas/testsuite/gas/aarch64/poe2-invalid-2.d
 create mode 100644 gas/testsuite/gas/aarch64/poe2-invalid-2.l
 create mode 100644 gas/testsuite/gas/aarch64/poe2.d
 create mode 100644 gas/testsuite/gas/aarch64/poe2.s
 create mode 100644 gas/testsuite/gas/aarch64/sysreg/poe2-sysreg-1.d
 create mode 100644 gas/testsuite/gas/aarch64/sysreg/poe2-sysreg-1.s
 create mode 100644 gas/testsuite/gas/aarch64/tev-invalid-1.d
 create mode 100644 gas/testsuite/gas/aarch64/tev-invalid-1.l
 create mode 100644 gas/testsuite/gas/aarch64/tev-invalid-1.s
 create mode 100644 gas/testsuite/gas/aarch64/tev-invalid-2.d
 create mode 100644 gas/testsuite/gas/aarch64/tev-invalid-2.l
 create mode 100644 gas/testsuite/gas/aarch64/tev.d
 create mode 100644 gas/testsuite/gas/aarch64/tev.s

-- 
2.25.1



More information about the Binutils mailing list