]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
[AArch64][SVE 20/32] Add support for tied operands
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 16 Jun 2016 08:04:00 +0000 (09:04 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Tue, 23 Aug 2016 08:41:03 +0000 (09:41 +0100)
commit6cb68a954f3dd8660e8a5ca070bf041b135d76a8
treed830874d4a2820323e773dda336eed39fb513f6b
parent136982a0a15e6c33d915cd9d48e6928bf8dab45b
[AArch64][SVE 20/32] Add support for tied operands

SVE has some instructions in which the same register appears twice
in the assembly string, once as an input and once as an output.
This patch adds a general mechanism for that.

The patch needs to add new information to the instruction entries.
One option would have been to extend the flags field of the opcode
to 64 bits (since we already rely on 64-bit integers being available
on the host).  However, the *_INSN macros mean that it's easy to add
new information as top-level fields without affecting the existing
table entries too much.  Going for that option seemed to give slightly
neater code.

include/opcode/
* aarch64.h (aarch64_opcode): Add a tied_operand field.
(AARCH64_OPDE_UNTIED_OPERAND): New aarch64_operand_error_kind.

opcodes/
* aarch64-tbl.h (CORE_INSN, __FP_INSN, SIMD_INSN, CRYP_INSN)
(_CRC_INSN, _LSE_INSN, _LOR_INSN, RDMA_INSN, FP16_INSN, SF16_INSN)
(V8_2_INSN, aarch64_opcode_table): Initialize tied_operand field.
* aarch64-opc.c (aarch64_match_operands_constraint): Check for
tied operands.

gas/
* config/tc-aarch64.c (output_operand_error_record): Handle
AARCH64_OPDE_UNTIED_OPERAND.

Change-Id: Iad542d45bc8fc13eedeff75092b94c124615ca22
gas/config/tc-aarch64.c
include/opcode/aarch64.h
opcodes/aarch64-opc.c
opcodes/aarch64-tbl.h