[PATCH v6 1/4] gas, aarch64: Add AdvSIMD lut extension

Richard Earnshaw (lists) Richard.Earnshaw@arm.com
Thu May 23 15:15:33 GMT 2024


On 23/05/2024 14:50, Saurabh Jha wrote:
> 
> Introduces instructions for the Advanced SIMD lut extension for AArch64. They are documented in the following links:
> * luti2: https://developer.arm.com/documentation/ddi0602/2024-03/SIMD-FP-Instructions/LUTI2--Lookup-table-read-with-2-bit-indices-?lang=en
> * luti4: https://developer.arm.com/documentation/ddi0602/2024-03/SIMD-FP-Instructions/LUTI4--Lookup-table-read-with-4-bit-indices-?lang=en
> 
> These instructions needed definition of some new operands. We will first
> discuss operands for the third operand of the instructions and then
> discuss a vector register list operand needed for the second operand.
> 
> The third operands are vectors with bit indices and without type
> qualifiers. They are called Em_INDEX1_14, Em_INDEX2_13, and Em_INDEX3_12
> and they have 1 bit, 2 bit, and 3 bit indices respectively. For these
> new operands, we defined new parsing case branch and a new instruction
> class. The lsb and width of these operands are the same as many existing
> but the convention is to give different names to fields that serve
> different purpose so we introduced new fields in aarch64-opc.c and
> aarch64-opc.h for these new operands.
> 
> For the second operand of these instructions, we introduced a new
> operand called LVn_LUT. This represents a vector register list with
> stride 1. We defined new inserter and extractor for this new operand and
> it is encoded in FLD_Rn. We are enforcing the number of registers in the
> reglist using opcode flag rather than operand flag as this is what other
> SIMD vector register list operands are doing. The disassembly also uses
> opcode flag to print the correct number of registers.
> ---
> Hi,
> 
> Regression tested for aarch64-none-elf and found no regressions.
> 
> Ok for binutils-master? I don't have commit access so can someone please commit on my behalf?

I was about to apply this when I realized that you haven't added anything to the manual or the NEWS file as we could customarily do for a new feature.  Could you update the patch for that please?

R.

> 
> Regards,
> Saurabh
> ---
>  gas/config/tc-aarch64.c                       |  67 ++++++
>  gas/testsuite/gas/aarch64/advsimd-lut-bad.d   |   3 +
>  gas/testsuite/gas/aarch64/advsimd-lut-bad.l   |  25 +++
>  .../gas/aarch64/advsimd-lut-illegal.d         |   3 +
>  .../gas/aarch64/advsimd-lut-illegal.l         | 208 ++++++++++++++++++
>  .../gas/aarch64/advsimd-lut-illegal.s         | 128 +++++++++++
>  gas/testsuite/gas/aarch64/advsimd-lut.d       |  32 +++
>  gas/testsuite/gas/aarch64/advsimd-lut.s       |  29 +++
>  include/opcode/aarch64.h                      |   9 +-
>  opcodes/aarch64-asm.c                         |  32 +++
>  opcodes/aarch64-asm.h                         |   1 +
>  opcodes/aarch64-dis.c                         |  15 ++
>  opcodes/aarch64-dis.h                         |   1 +
>  opcodes/aarch64-opc.c                         |  23 ++
>  opcodes/aarch64-opc.h                         |   2 +
>  opcodes/aarch64-tbl.h                         |  38 +++-
>  16 files changed, 614 insertions(+), 2 deletions(-)
>  create mode 100644 gas/testsuite/gas/aarch64/advsimd-lut-bad.d
>  create mode 100644 gas/testsuite/gas/aarch64/advsimd-lut-bad.l
>  create mode 100644 gas/testsuite/gas/aarch64/advsimd-lut-illegal.d
>  create mode 100644 gas/testsuite/gas/aarch64/advsimd-lut-illegal.l
>  create mode 100644 gas/testsuite/gas/aarch64/advsimd-lut-illegal.s
>  create mode 100644 gas/testsuite/gas/aarch64/advsimd-lut.d
>  create mode 100644 gas/testsuite/gas/aarch64/advsimd-lut.s
> 



More information about the Binutils mailing list