Richard Sandiford
6cb68a954f
[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
2016-08-23 09:41:03 +01:00
..
2016-01-01 23:00:01 +10:30
2016-08-23 09:41:03 +01:00
2016-08-23 09:41:03 +01:00
2016-08-23 09:41:03 +01:00
2016-08-23 09:41:03 +01:00
2016-08-23 09:41:03 +01:00
2016-08-23 09:41:03 +01:00
2016-08-23 09:41:01 +01:00
2016-01-01 23:00:01 +10:30
2016-08-23 09:41:03 +01:00
2016-05-03 11:48:56 +01:00
2016-08-23 09:41:03 +01:00
2016-04-15 16:20:55 -07:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-07-27 15:57:18 +01:00
2016-01-01 23:00:01 +10:30
2016-03-29 19:05:31 +02:00
2016-07-27 15:57:18 +01:00
2016-06-22 12:59:58 -04:00
2016-01-01 23:00:01 +10:30
2016-07-27 15:57:18 +01:00
2016-07-27 15:57:18 +01:00
2016-04-12 10:21:06 +02:00
2016-05-23 17:41:54 +02:00
2016-06-30 16:03:07 +01:00
2016-06-09 19:00:57 +03:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-01 10:41:32 +00:00
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-03-21 16:31:46 +00:00
2016-01-01 23:00:01 +10:30
2016-08-23 09:03:19 +01:00
2015-08-12 04:45:07 -07:00
2015-08-12 04:45:07 -07:00
2016-01-01 22:59:17 +10:30
2016-07-21 15:22:13 -07:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-07-20 17:08:07 +01:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-03-02 13:35:41 +10:30
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-07-08 11:38:35 -07:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2015-07-22 13:26:21 -07:00
2016-06-03 15:55:29 -07:00
2016-05-29 07:56:23 -07:00
2016-05-29 07:56:23 -07:00
2016-01-01 23:00:01 +10:30
2016-05-27 10:05:57 -07:00
2016-07-01 09:01:41 +02:00
2016-01-01 23:00:01 +10:30
2016-07-01 09:01:41 +02:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-08 11:42:10 +01:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-04-15 16:20:55 -07:00
2016-01-01 23:00:01 +10:30
2016-06-25 11:54:28 -04:00
2016-06-25 11:54:28 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-03-07 15:16:28 +00:00
2016-01-01 23:00:01 +10:30
2016-07-27 17:38:31 +01:00
2016-01-01 23:00:01 +10:30
2016-05-18 13:07:24 +01:00
2016-01-01 23:00:01 +10:30
2016-07-13 17:42:43 +01:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-05-27 13:49:58 +01:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-06-01 21:26:32 -04:00
2016-06-15 16:25:34 +01:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-03-03 00:23:31 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-08-01 09:42:31 -07:00
2016-08-01 09:42:31 -07:00
2016-03-02 13:38:44 +10:30
2016-01-14 16:23:35 +00:00
2016-03-01 10:52:24 +00:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-06-10 13:41:42 +02:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-06-01 21:26:32 -04:00
2016-06-17 02:15:43 -07:00
2016-07-13 16:05:40 +02:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-03-07 15:16:28 +00:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-05-23 01:17:12 -04:00
2016-05-23 01:17:12 -04:00
2016-01-01 23:00:01 +10:30
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-04-13 15:09:25 +01:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30