aarch64: [SME] Add LD1x, ST1x, LDR and STR instructions
authorPrzemyslaw Wirkus <przemyslaw.wirkus@arm.com>
Wed, 17 Nov 2021 20:02:06 +0000 (20:02 +0000)
committerPrzemyslaw Wirkus <przemyslaw.wirkus@arm.com>
Wed, 17 Nov 2021 20:02:24 +0000 (20:02 +0000)
commit01a4d0822025084609380fb989d43bda0667db72
tree5c1888e350164f67afae5b11ab70b82fa4a353bf
parent1cad938de57a1577e5fe4b4afcabe889a8b9b9d7
aarch64: [SME] Add LD1x, ST1x, LDR and STR instructions

This patch is adding new loads and stores defined by SME instructions.

gas/ChangeLog:

* config/tc-aarch64.c (parse_sme_address): New parser.
(parse_sme_za_hv_tiles_operand_with_braces): New parser.
(parse_sme_za_array): New parser.
(output_operand_error_record): Print error details if
present.
(parse_operands): Support new operands.
* testsuite/gas/aarch64/sme-5-illegal.d: New test.
* testsuite/gas/aarch64/sme-5-illegal.l: New test.
* testsuite/gas/aarch64/sme-5-illegal.s: New test.
* testsuite/gas/aarch64/sme-5.d: New test.
* testsuite/gas/aarch64/sme-5.s: New test.
* testsuite/gas/aarch64/sme-6-illegal.d: New test.
* testsuite/gas/aarch64/sme-6-illegal.l: New test.
* testsuite/gas/aarch64/sme-6-illegal.s: New test.
* testsuite/gas/aarch64/sme-6.d: New test.
* testsuite/gas/aarch64/sme-6.s: New test.
* testsuite/gas/aarch64/sme-7-illegal.d: New test.
* testsuite/gas/aarch64/sme-7-illegal.l: New test.
* testsuite/gas/aarch64/sme-7-illegal.s: New test.
* testsuite/gas/aarch64/sme-7.d: New test.
* testsuite/gas/aarch64/sme-7.s: New test.

include/ChangeLog:

* opcode/aarch64.h (enum aarch64_opnd): New operands.
(enum aarch64_insn_class): Added sme_ldr and sme_str.
(AARCH64_OPDE_UNTIED_IMMS): New operand error kind.

opcodes/ChangeLog:

* aarch64-asm.c (aarch64_ins_sme_za_hv_tiles): New inserter.
(aarch64_ins_sme_za_list): New inserter.
(aarch64_ins_sme_za_array): New inserter.
(aarch64_ins_sme_addr_ri_u4xvl): New inserter.
* aarch64-asm.h (AARCH64_DECL_OPD_INSERTER): Added
ins_sme_za_list, ins_sme_za_array and ins_sme_addr_ri_u4xvl.
* aarch64-dis.c (aarch64_ext_sme_za_hv_tiles): New extractor.
(aarch64_ext_sme_za_list): New extractor.
(aarch64_ext_sme_za_array): New extractor.
(aarch64_ext_sme_addr_ri_u4xvl): New extractor.
* aarch64-dis.h (AARCH64_DECL_OPD_EXTRACTOR): Added
ext_sme_za_list, ext_sme_za_array and ext_sme_addr_ri_u4xvl.
* aarch64-opc.c (operand_general_constraint_met_p):
(aarch64_match_operands_constraint): Handle sme_ldr, sme_str
and sme_misc.
(aarch64_print_operand): New operands supported.
* aarch64-tbl.h (OP_SVE_QUU): New qualifier.
(OP_SVE_QZU): New qualifier.
aarch64-asm-2.c: Regenerate.
aarch64-dis-2.c: Regenerate.
aarch64-opc-2.c: Regenerate.
26 files changed:
gas/config/tc-aarch64.c
gas/testsuite/gas/aarch64/sme-5-illegal.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-5-illegal.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-5-illegal.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-5.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-5.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-6-illegal.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-6-illegal.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-6-illegal.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-6.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-6.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-7-illegal.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-7-illegal.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-7-illegal.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-7.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme-7.s [new file with mode: 0644]
include/opcode/aarch64.h
opcodes/aarch64-asm-2.c
opcodes/aarch64-asm.c
opcodes/aarch64-asm.h
opcodes/aarch64-dis-2.c
opcodes/aarch64-dis.c
opcodes/aarch64-dis.h
opcodes/aarch64-opc-2.c
opcodes/aarch64-opc.c
opcodes/aarch64-tbl.h