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

Richard Earnshaw (lists) Richard.Earnshaw@arm.com
Tue May 28 16:29:42 GMT 2024


On 28/05/2024 15:45, saurabh.jha@arm.com 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. 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?

Thanks, I've pushed this series after squashing the regenerated files into their corresponding parent patches.

R.

> 
> Regards,
> Saurabh
> ---
>  gas/NEWS                                      |   2 +
>  gas/config/tc-aarch64.c                       |  67 ++++++
>  gas/doc/c-aarch64.texi                        |   2 +
>  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                         |  11 +
>  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 +++-
>  18 files changed, 597 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