The ARMv8.1 architecture extension adds two Adv.SIMD instructions, sqrdmlah and sqrdmlsh. This patch series adds the instructions to the AArch64 backend together with the ACLE feature macro and NEON intrinsics to make use of them. The instructions are enabled when -march=armv8.1-a is selected.
To support execution tests for the instructions, code is also added to the testsuite to check the target capabilities and to specify required compiler options. This patch adds target feature macros for the instructions. Subsequent patches: - add the instructions to the aarch64-simd patterns, - add GCC builtins to generate the instructions, - add the ACLE feature macro __ARM_FEATURE_QRDMX, - add support for ARMv8.1-A Adv.SIMD tests to the dejagnu support code, - add NEON intrinsics for the basic form of the instructions. - add NEON intrinsics for the *_lane forms of the instructions. Tested the series for aarch64-none-linux-gnu with native bootstrap and make check on an ARMv8 architecture. Also tested aarch64-none-elf with cross-compiled check-gcc on an ARMv8.1 emulator. Ok for trunk? Matthew gcc/ 2015-10-23 Matthew Wahab <matthew.wa...@arm.com> * config/aarch64/aarch64.h (AARCH64_ISA_RDMA): New. (TARGET_SIMD_RDMA): New.
>From 4933ff4839406cdff2d2ec87920cab257a90474d Mon Sep 17 00:00:00 2001 From: Matthew Wahab <matthew.wa...@arm.com> Date: Thu, 27 Aug 2015 13:31:17 +0100 Subject: [PATCH 1/7] Add RDMA target feature. Change-Id: Ic22d5ae4c8dc012bd8e63dfd82a21935f44be50c --- gcc/config/aarch64/aarch64.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index b041a1e..c67eac9 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -157,6 +157,7 @@ extern unsigned aarch64_architecture_version; #define AARCH64_ISA_FP (aarch64_isa_flags & AARCH64_FL_FP) #define AARCH64_ISA_SIMD (aarch64_isa_flags & AARCH64_FL_SIMD) #define AARCH64_ISA_LSE (aarch64_isa_flags & AARCH64_FL_LSE) +#define AARCH64_ISA_RDMA (aarch64_isa_flags & AARCH64_FL_RDMA) /* Crypto is an optional extension to AdvSIMD. */ #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO) @@ -181,6 +182,9 @@ extern unsigned aarch64_architecture_version; ((aarch64_fix_a53_err835769 == 2) \ ? TARGET_FIX_ERR_A53_835769_DEFAULT : aarch64_fix_a53_err835769) +/* ARMv8.1 Adv.SIMD support. */ +#define TARGET_SIMD_RDMA (TARGET_SIMD && AARCH64_ISA_RDMA) + /* Standard register usage. */ /* 31 64-bit general purpose registers R0-R30: -- 2.1.4