[ARM] Add ARMv8.3 VCMLA and VCADD instructions
authorSzabolcs Nagy <szabolcs.nagy@arm.com>
Mon, 5 Dec 2016 14:24:17 +0000 (14:24 +0000)
committerSzabolcs Nagy <szabolcs.nagy@arm.com>
Mon, 5 Dec 2016 14:24:17 +0000 (14:24 +0000)
commitc28eeff2eabbba2246799470f3713716fa629680
treec4a81d2c79dbfcda97f355d503895918ff3bbed7
parent0691188992efa4afab80bfdf966479bc331ce0a4
[ARM] Add ARMv8.3 VCMLA and VCADD instructions

Add support for VCMLA and VCADD advanced SIMD complex number instructions.

The command line option is -march=armv8.3-a+fp16+simd for enabling all
instructions.

In arm-dis.c the formatting syntax was abused a bit to select between
0 vs 90 or 180 vs 270 or 90 vs 270 based on a bit value instead of
duplicating entries in the opcode table.

gas/
* config/tc-arm.c (do_vcmla, do_vcadd): Define.
(neon_scalar_for_vcmla): Define.
(enum operand_parse_code): Add OP_IROT1 and OP_IROT2.
(NEON_ENC_TAB): Add DDSI and QQSI variants.
(insns): Add vcmla and vcadd.
* testsuite/gas/arm/armv8_3-a-simd.d: New.
* testsuite/gas/arm/armv8_3-a-simd.s: New.
* testsuite/gas/arm/armv8_3-a-simd-bad.d: New.
* testsuite/gas/arm/armv8_3-a-simd-bad.l: New.
* testsuite/gas/arm/armv8_3-a-simd-bad.s: New.

opcodes/
* arm-dis.c (coprocessor_opcodes): Add vcmla and vcadd.
(print_insn_coprocessor): Add 'V' format for neon D or Q regs.
gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/gas/arm/armv8_3-a-simd-bad.d [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_3-a-simd-bad.l [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_3-a-simd-bad.s [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_3-a-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_3-a-simd.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/arm-dis.c