Adds command line support for Armv8.4-A, via the new command line option -march=armv8...
authorJiong Wang <jiong.wang@arm.com>
Wed, 8 Nov 2017 13:15:12 +0000 (13:15 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 8 Nov 2017 13:15:12 +0000 (13:15 +0000)
commitdec41383fff7116c9f66cdeca3105e968047a4e6
treeb99323b823783fee1f4919216e048967e15f0ba7
parent6e98b3428bdd0bf388c3c72eb205105926b15a64
Adds command line support for Armv8.4-A, via the new command line option -march=armv8.4-a.  Add support for "+dotprod" ARM feature (required for ARMv8.4-A).  Add assembler and disassembler support for new FP16 instructions introduced in Armv8.4-A

gas * config/tc-arm.c (arm_extensions):
(arm_archs): New entry for "armv8.4-a".
Add FPU_ARCH_DOTPROD_NEON_VFP_ARMV8.
(arm_ext_v8_2): New variable.
(enum arm_reg_type): New enumeration REG_TYPE_NSD.
(reg_expected_msgs): New entry for REG_TYPE_NSD.
(parse_typed_reg_or_scalar): Handle REG_TYPE_NSD.
(parse_scalar): Support REG_TYPE_VFS.
(enum operand_parse_code): New enumerations OP_RNSD and OP_RNSD_RNSC.
(parse_operands): Handle OP_RNSD and OP_RNSD_RNSC.
(NEON_SHAPE_DEF): New entries for DHH and DHS.
(neon_scalar_for_fmac_fp16_long): New function to generate Rm encoding
for new FP16 instructions in ARMv8.2-A.
(do_neon_fmac_maybe_scalar_long): New function to encode new FP16
instructions in ARMv8.2-A.
(do_neon_vfmal): Wrapper function for vfmal.
(do_neon_vfmsl): Wrapper function for vfmsl.
(insns): New entries for vfmal and vfmsl.
* doc/c-arm.texi (-march): Document "armv8.4-a".
* testsuite/gas/arm/dotprod-mandatory.d: New test.
* testsuite/gas/arm/armv8_2-a-fp16.s: New test source.
* testsuite/gas/arm/armv8_2-a-fp16-illegal.s: New test source.
* testsuite/gas/arm/armv8_2-a-fp16.d: New test.
* testsuite/gas/arm/armv8_3-a-fp16.d: New test.
* testsuite/gas/arm/armv8_4-a-fp16.d: New test.
* testsuite/gas/arm/armv8_2-a-fp16-thumb2.d: New test.
* testsuite/gas/arm/armv8_2-a-fp16-illegal.d: New test.
* testsuite/gas/arm/armv8_2-a-fp16-illegal.l: New error file.

opcodes * arm-dis.c (coprocessor_opcodes): New entries for ARMv8.2-A new
FP16 instructions, including vfmal.f16 and vfmsl.f16.

include * opcode/arm.h (ARM_AEXT2_V8_4A): Include Dot Product feature.
(ARM_EXT2_V8_4A): New macro.
(ARM_AEXT2_V8_4A): Likewise.
(ARM_ARCH_V8_4A): Likewise.
16 files changed:
gas/ChangeLog
gas/config/tc-arm.c
gas/doc/c-arm.texi
gas/testsuite/gas/arm/armv8_2-a-fp16-illegal.d [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_2-a-fp16-illegal.l [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_2-a-fp16-illegal.s [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_2-a-fp16-thumb2.d [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_2-a-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_2-a-fp16.s [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_3-a-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/armv8_4-a-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/dotprod-mandatory.d [new file with mode: 0644]
include/ChangeLog
include/opcode/arm.h
opcodes/ChangeLog
opcodes/arm-dis.c