On Fri, Oct 23, 2015 at 01:26:11PM +0100, Matthew Wahab wrote:
> The ARMv8.1 architecture extension adds two Adv.SIMD instructions,
> sqrdmlah and sqrdmlsh. This patch adds the NEON intrinsics vqrdmlah and
> vqrdmlsh for these instructions. The new intrinsics are of the form
> vqrdml{as}h[q]_<type>.
>
> 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 <[email protected]>
>
> * gcc/config/aarch64/arm_neon.h (vqrdmlah_s16, vqrdmlah_s32): New.
> (vqrdmlahq_s16, vqrdmlahq_s32): New.
> (vqrdmlsh_s16, vqrdmlsh_s32): New.
> (vqrdmlshq_s16, vqrdmlshq_s32): New.
>
> gcc/testsuite
> 2015-10-23 Matthew Wahab <[email protected]>
>
> * gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh.inc: New file,
> support code for vqrdml{as}h tests.
> * gcc.target/aarch64/advsimd-intrinsics/vqrdmlah.c: New.
> * gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh.c: New.
>
> From 611e1232a59dfe42f2cd9666680407d67abcfea5 Mon Sep 17 00:00:00 2001
> From: Matthew Wahab <[email protected]>
> Date: Thu, 27 Aug 2015 13:22:41 +0100
> Subject: [PATCH 6/7] Add neon intrinsics: vqrdmlah, vqrdmlsh.
>
> Change-Id: I5c7f8d36ee980d280c1d50f6f212b286084c5acf
> ---
> gcc/config/aarch64/arm_neon.h | 53 ++++++++
> .../aarch64/advsimd-intrinsics/vqrdmlXh.inc | 138
> +++++++++++++++++++++
> .../aarch64/advsimd-intrinsics/vqrdmlah.c | 57 +++++++++
> .../aarch64/advsimd-intrinsics/vqrdmlsh.c | 61 +++++++++
> 4 files changed, 309 insertions(+)
> create mode 100644
> gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh.inc
> create mode 100644
> gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah.c
> create mode 100644
> gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh.c
>
> diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h
> index e186348..9e73809 100644
> --- a/gcc/config/aarch64/arm_neon.h
> +++ b/gcc/config/aarch64/arm_neon.h
> @@ -2649,6 +2649,59 @@ vqrdmulhq_s32 (int32x4_t __a, int32x4_t __b)
> return (int32x4_t) __builtin_aarch64_sqrdmulhv4si (__a, __b);
> }
>
> +#pragma GCC push_options
> +#pragma GCC target ("arch=armv8.1-a")
Can we please patch the documentation to make it clear that -march=armv8.1-a
always implies -march=armv8.1-a+rdma ? The documentation around which
feature modifiers are implied when leaves much to be desired.
> +
> +__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
> +vqrdmlah_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
> +{
> + return (int16x4_t) __builtin_aarch64_sqrdmlahv4hi (__a, __b, __c);
We don't need this cast (likewise the other instances)?
Thanks,
James