[PATCH v2 0/11][Binutils] aarch64: Fix the FEAT_SVE2p1 related issues.

srinath srinath.parvathaneni@arm.com
Wed Jun 12 15:58:58 GMT 2024


Hi,

The FEAT_SVE2p1 related issues were reported here [1] and I have posted
few patches to fix those issues [2].

This patch series is the re-spin of those patches in [2], splitting them and
also addresssing other issues like adding extra tests for FEAT_SVE2p1
instructions and fix FEAT_B16B16 sve2 instruction constraints.

[1] https://sourceware.org/pipermail/binutils/2024-February/132408.html
[2] https://sourceware.org/pipermail/binutils/2024-February/132636.html

Srinath Parvathaneni (11):
[PATCH v1 1/11][Binutils] aarch64: Enable mandatory feature bits for v9.4-A.
   Enables FEAT_SVE2p1 for Armv9.4-A architecture by default.

[PATCH v2 2/11][Binutils] aarch64: Fix sve2p1 dupq instruction operands.
   Fixes the syntax of sve2p1 "dupq" instruction.
   
   Changes from v1 - > v2:
   Version1 of this patch is posted here:
   https://sourceware.org/pipermail/binutils/2024-February/132636.html

   - This patch addresses the comment to split dupq and extq instruction fixes
     to separate patches (4/11).
   - Enabling FEAT_SVE2p1 for Armv9.4-A architecture by default is moved to
     separate patch (1/11).
   - insert_all_fields_after/extract_all_fields_after is used instead of
     insert_fields/extract_fields to avoid access code changes.
   - case sve_index1: is removed.
   - aarch64_ext_sve_index_imm and -aarch64_ins_sve_index_imm functions are
     removed.
   
[PATCH v1 3/11][Binutils] aarch64: Fix sve2p1 dupq instruction operands (regenerated
    files).
   Auto generated opcode/aarch64-*-2.c files after fixing sve2p1 "dupq" instruction.

[PATCH v1 4/11][Binutils] aarch64: Fix sve2p1 extq instruction operands.
   Fixes the syntax of sve2p1 "extq" instruction.

[PATCH v1 5/11][Binutils] aarch64: Fix sve2p1 extq instruction operands (regenerated
    files).
   Auto generated opcode/aarch64-*-2.c files after fixing sve2p1 "extq" instruction.

[PATCH v2 6/11][Binutils] aarch64: Fix sve2p1 ld[1-4]/st[1-4]q instruction operands.
   Fixes encoding and syntax for sve2p1 instructions ld[1-4]q/st[1-4]q.
 
   Changes from v1->v2:
   Version1 of this patch is posted here:
   https://sourceware.org/pipermail/binutils/2024-February/132637.html

   - Added tests for the non-wrapping sequence of registers and shorter form.
   - For the above mentioned forms, the following is the preferred disassembly.
     For all the above form of instructions the hyphenated form is preferred for
     disassembly if there are more than one register in the list, and the
     register numbers are monotonically increasing in increments of one.

[PATCH v1 7/11][Binutils] aarch64: Fix sve2p1 ld[1-4]/st[1-4]q instruction operands
    (regenerated files).
   Auto generated opcode/aarch64-*-2.c files after fixing sve2p1 "ld[1-4]q/st[1-4]q"
   instruction.

[PATCH v1 8/11][BINUTILS] aarch64: Fix the wrong constraint used for sve2p1 instructions.
   As per the spec following instruction does not immediately preceded in program order by a
   MOVPRFX instruction and the issue is fixed in this patch.

   List of instructions updated: addqv, andqv, smaxqv, sminqv, umaxqv, uminqv,
                                 eorqv, faddqv, fmaxnmqv,fmaxqv, fminnmqv and fminqv.

[PATCH v1 9/11][Binutils] aarch64: Add extra tests for sve2p1 min max instructions.
    This patch adds some extra tests for the sve2p1 "addqv, andqv, smaxqv,
    sminqv, umaxqv, uminqv, eorqv, faddqv, fmaxnmqv, fmaxqv, fminnmqv and
    fminqv" instructions.

[PATCH v1 10/11][Binutils] aarch64: Fix FEAT_B16B16 sve2 instruction constraints.
   This patch adds missing contraints to FEAT_B16B16 sve2 instructions
   bfclamp, bfmla and bfmls and add negative tests for all the bfloat
   instructions.

[PATCH v1 11/11][Binutils] aarch64: Fix FEAT_B16B16 sve2 instruction constraints
    (regenerated files).
   Auto generated opcode/aarch64-*-2.c files after fixing FEAT_B16B16 sve2 instructions.

Regards,
Srinath.

 gas/config/tc-aarch64.c                       |   4 +-
 gas/testsuite/gas/aarch64/bfloat16-1.d        |   6 +
 gas/testsuite/gas/aarch64/bfloat16-1.s        |   7 +-
 .../gas/aarch64/bfloat16-2-invalid.d          |   4 +
 .../gas/aarch64/bfloat16-2-invalid.l          | 265 ++++++++++++++++++
 .../gas/aarch64/bfloat16-2-invalid.s          | 147 ++++++++++
 gas/testsuite/gas/aarch64/bfloat16-bad.l      |   3 +
 gas/testsuite/gas/aarch64/bfloat16-invalid.d  |   2 +-
 gas/testsuite/gas/aarch64/bfloat16-invalid.l  |  17 +-
 gas/testsuite/gas/aarch64/bfloat16-invalid.s  |   9 +-
 gas/testsuite/gas/aarch64/sme-5-illegal.l     |   8 +-
 gas/testsuite/gas/aarch64/sme-6-illegal.l     |   8 +-
 gas/testsuite/gas/aarch64/sve2p1-1-bad.d      |   2 +-
 gas/testsuite/gas/aarch64/sve2p1-1-bad.l      | 179 ++++++------
 gas/testsuite/gas/aarch64/sve2p1-1-invalid.d  |   4 +
 gas/testsuite/gas/aarch64/sve2p1-1-invalid.l  | 101 +++++++
 gas/testsuite/gas/aarch64/sve2p1-1-invalid.s  |  26 ++
 gas/testsuite/gas/aarch64/sve2p1-1.d          | 181 ++++++------
 gas/testsuite/gas/aarch64/sve2p1-1.s          | 180 ++++++------
 gas/testsuite/gas/aarch64/sve2p1-2-bad.d      |   4 +
 gas/testsuite/gas/aarch64/sve2p1-2-bad.l      |   2 +
 gas/testsuite/gas/aarch64/sve2p1-2-invalid.d  |   3 +
 gas/testsuite/gas/aarch64/sve2p1-2-invalid.l  |  47 ++++
 gas/testsuite/gas/aarch64/sve2p1-2-invalid.s  |  10 +
 gas/testsuite/gas/aarch64/sve2p1-2.d          |  34 +++
 gas/testsuite/gas/aarch64/sve2p1-2.s          |  28 ++
 gas/testsuite/gas/aarch64/sve2p1-3-bad.d      |   3 +
 gas/testsuite/gas/aarch64/sve2p1-3-bad.l      | 208 ++++++++++++++
 gas/testsuite/gas/aarch64/sve2p1-3-bad.s      |  59 ++++
 gas/testsuite/gas/aarch64/sve2p1-3-invalid.d  |   3 +
 gas/testsuite/gas/aarch64/sve2p1-3-invalid.l  |  17 ++
 gas/testsuite/gas/aarch64/sve2p1-3-invalid.s  |  16 ++
 gas/testsuite/gas/aarch64/sve2p1-3.d          |  20 ++
 gas/testsuite/gas/aarch64/sve2p1-3.s          |  12 +
 gas/testsuite/gas/aarch64/sve2p1-4-invalid.d  |   3 +
 gas/testsuite/gas/aarch64/sve2p1-4-invalid.l  | 116 ++++++++
 gas/testsuite/gas/aarch64/sve2p1-4-invalid.s  | 119 ++++++++
 gas/testsuite/gas/aarch64/sve2p1-4.d          | 144 ++++++++++
 gas/testsuite/gas/aarch64/sve2p1-4.s          | 147 ++++++++++
 gas/testsuite/gas/aarch64/sve2p1-nosve2.s     |   1 +
 include/opcode/aarch64.h                      |   9 +-
 opcodes/aarch64-asm-2.c                       |  95 +++----
 opcodes/aarch64-asm.c                         |  19 +-
 opcodes/aarch64-asm.h                         |   1 -
 opcodes/aarch64-dis-2.c                       | 112 ++++----
 opcodes/aarch64-dis.c                         |  36 +--
 opcodes/aarch64-dis.h                         |   1 -
 opcodes/aarch64-opc-2.c                       |   8 +-
 opcodes/aarch64-opc.c                         |  16 +-
 opcodes/aarch64-tbl.h                         | 127 ++++-----
 50 files changed, 2013 insertions(+), 560 deletions(-)
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-2-invalid.d
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-2-invalid.l
 create mode 100644 gas/testsuite/gas/aarch64/bfloat16-2-invalid.s
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-1-invalid.d
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-1-invalid.l
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-1-invalid.s
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-2-bad.d
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-2-bad.l
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-2-invalid.d
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-2-invalid.l
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-2-invalid.s
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-2.d
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-2.s
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-3-bad.d
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-3-bad.l
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-3-bad.s
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-3-invalid.d
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-3-invalid.l
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-3-invalid.s
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-3.d
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-3.s
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-4-invalid.d
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-4-invalid.l
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-4-invalid.s
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-4.d
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-4.s
 create mode 100644 gas/testsuite/gas/aarch64/sve2p1-nosve2.s

-- 
2.25.1



More information about the Binutils mailing list