[AArch64] Implement some saturating math NEON intrinsics.
commitac01690464b917b36fc479fcb021ca4c8f56efa9
authorktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Aug 2014 10:43:41 +0000 (5 10:43 +0000)
committerktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Aug 2014 10:43:41 +0000 (5 10:43 +0000)
treef116d70f28b2289a3fedd91d0399dd25e0d7f8a3
parent1ef25b153d405ab2bb34bb3d80d374498bb9350a
[AArch64] Implement some saturating math NEON intrinsics.

* config/aarch64/aarch64-simd.md (aarch64_sqdmulh_laneq<mode>):
Use VSDQ_HSI mode iterator.
(aarch64_sqrdmulh_laneq<mode>): Likewise.
(aarch64_sq<r>dmulh_laneq<mode>_internal): New define_insn.
* config/aarch64/aarch64-simd-builtins.def (sqdmulh_laneq):
Use BUILTIN_VDQHS macro.
(sqrdmulh_laneq): Likewise.
* config/aarch64/arm_neon.h (vqdmlalh_laneq_s16): New intrinsic.
(vqdmlals_laneq_s32): Likewise.
(vqdmlslh_laneq_s16): Likewise.
(vqdmlsls_laneq_s32): Likewise.
(vqdmulhh_laneq_s16): Likewise.
(vqdmulhs_laneq_s32): Likewise.
(vqrdmulhh_laneq_s16): Likewise.
(vqrdmulhs_laneq_s32): Likewise.

* gcc.target/aarch64/simd/vqdmlalh_laneq_s16_1.c: New test.
* gcc.target/aarch64/simd/vqdmlals_laneq_s32_1.c: Likewise.
* gcc.target/aarch64/simd/vqdmlslh_laneq_s16_1.c: Likewise.
* gcc.target/aarch64/simd/vqdmlsls_laneq_s32_1.c: Likewise.
* gcc.target/aarch64/simd/vqdmulhh_laneq_s16_1.c: Likewise.
* gcc.target/aarch64/simd/vqdmulhs_laneq_s32_1.c: Likewise.
* gcc.target/aarch64/simd/vqrdmulhh_laneq_s16_1.c: Likewise.
* gcc.target/aarch64/simd/vqrdmulhs_laneq_s32_1.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213635 138bc75d-0d04-0410-961f-82ee72b054a4
13 files changed:
gcc/ChangeLog
gcc/config/aarch64/aarch64-simd-builtins.def
gcc/config/aarch64/aarch64-simd.md
gcc/config/aarch64/arm_neon.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/simd/vqdmlalh_laneq_s16_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_laneq_s32_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/simd/vqdmlslh_laneq_s16_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_laneq_s32_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/simd/vqdmulhh_laneq_s16_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/simd/vqdmulhs_laneq_s32_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhh_laneq_s16_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhs_laneq_s32_1.c [new file with mode: 0644]