[PATCH v1 0/5][Binutils] aarch64: Add support for sme2 and sve2 BFloat16 feature.

Srinath Parvathaneni srinath.parvathaneni@arm.com
Thu Jul 18 10:27:49 GMT 2024


Hi,

In the current assembler, SVE2 Bfloat16 instructions are implemented with tick
FEAT_B16B16 and command line flag "+b16b16" and this feature was suspended
due to incomplete support.

In the new spec available here(SVE[1], SME[2]), FEAT_B16B16 is replaced with
FEAT_SVE_B16B16 and FEAT_SME_B16B16 and command line flag "+b16b16" is replaced 
with "+sve-b16b16" and "+sme-b16b16".

More details about the Bflaot16 are provided below:
The Bfloat16 feature in sve2 and sme2 is divided into 3 combinations.
* SVE Z-targeting non-widening BFloat16 instructions under FEAT_SVE_B16B16
  implemented with command line flag "+sve-b16b16+sve2".
* SME Z-targeting multi-vector non-widening BFloat16 instructions under
  FEAT_SVE_B16B16 implemented with command line flag "+sve-b16b16+sme2".
* SME ZA-targeting non-widening BFloat16 instructions under FEAT_SME_B16B16
  implemented with command line flag "+sme-b16b16".

This following 5 patch series add support for above combinations and instructions:
Srinath Parvathaneni (5):
  aarch64: Add support for FEAT_SVE_B16B16 feature.
  aarch64: Add support for FEAT_SVE_B16B16 min and max instructions.
  aarch64: Add support for FEAT_SVE_B16B16 min and max instructions (autogenerated files).
  aarch64: Add support for FEAT_SME_B16B16 feature.
  aarch64: Add support for FEAT_SME_B16B16 feature (autogenerated files).

SVE[1]: https://developer.arm.com/documentation/ddi0602/2024-06/SVE-Instructions?lang=en
SME[2]: https://developer.arm.com/documentation/ddi0602/2024-06/SME-Instructions?lang=en

Regression testing for aarch64-none-elf target and found no regressions.

Ok for binutils-master?

Regards,
Srinath.

 gas/NEWS                                      |   2 +
 gas/config/tc-aarch64.c                       |   9 +-
 gas/doc/c-aarch64.texi                        |   8 +-
 .../gas/aarch64/bfloat16-1-invalid.d          |   2 +-
 gas/testsuite/gas/aarch64/bfloat16-1.d        |   3 +-
 .../gas/aarch64/bfloat16-2-invalid.d          |   3 +-
 .../gas/aarch64/bfloat16-2-invalid.l          |  20 +-
 .../gas/aarch64/bfloat16-sme2-1-bad.d         |   4 +
 .../gas/aarch64/bfloat16-sme2-1-bad.l         | 193 ++++
 .../gas/aarch64/bfloat16-sme2-1-bad.s         | 173 ++++
 gas/testsuite/gas/aarch64/bfloat16-sme2-1.d   | 122 +++
 gas/testsuite/gas/aarch64/bfloat16-sme2-1.s   | 139 +++
 .../gas/aarch64/bfloat16-sme2-2-bad.d         |   4 +
 .../gas/aarch64/bfloat16-sme2-2-bad.l         | 159 ++++
 .../gas/aarch64/bfloat16-sme2-2-bad.s         | 136 +++
 gas/testsuite/gas/aarch64/bfloat16-sme2-2.d   | 122 +++
 gas/testsuite/gas/aarch64/bfloat16-sme2-2.s   | 138 +++
 include/opcode/aarch64.h                      |  10 +-
 opcodes/aarch64-dis-2.c                       | 856 +++++++++++-------
 opcodes/aarch64-tbl.h                         | 103 ++-
 20 files changed, 1849 insertions(+), 357 deletions(-)
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-sme2-1-bad.d
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-sme2-1-bad.l
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-sme2-1-bad.s
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-sme2-1.d
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-sme2-1.s
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-sme2-2-bad.d
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-sme2-2-bad.l
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-sme2-2-bad.s
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-sme2-2.d
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-sme2-2.s

-- 
2.25.1



More information about the Binutils mailing list