diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2021-01-28 13:10:07 +0000 |
---|---|---|
committer | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2021-01-29 13:49:19 +0000 |
commit | cb995de62aa6484dba4f9807ee3c8d2959a40c46 (patch) | |
tree | ad8d0d7b7a8db0da9f31d841ace5f36042415e81 /libgo/go | |
parent | e053f96a9f57bb73a47bdd96512ed1c83ff84c04 (diff) | |
download | gcc-cb995de62aa6484dba4f9807ee3c8d2959a40c46.zip gcc-cb995de62aa6484dba4f9807ee3c8d2959a40c46.tar.gz gcc-cb995de62aa6484dba4f9807ee3c8d2959a40c46.tar.bz2 |
aarch64: Reimplement vaddlv* intrinsics using builtins
This patch reimplements the vaddlv* intrinsics using builtins.
The vaddlv_s32 and vaddlv_u32 intrinsics actually perform a pairwise
SADDLP/UADDLP instead of a SADDLV/UADDLV but because they only use
two elements it has the same semantics.
gcc/ChangeLog:
* config/aarch64/aarch64-simd-builtins.def (saddlv, uaddlv):
Define builtins.
* config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
Define.
* config/aarch64/arm_neon.h (vaddlv_s8): Reimplement using
builtin.
(vaddlv_s16): Likewise.
(vaddlv_u8): Likewise.
(vaddlv_u16): Likewise.
(vaddlvq_s8): Likewise.
(vaddlvq_s16): Likewise.
(vaddlvq_s32): Likewise.
(vaddlvq_u8): Likewise.
(vaddlvq_u16): Likewise.
(vaddlvq_u32): Likewise.
(vaddlv_s32): Likewise.
(vaddlv_u32): Likewise.
* config/aarch64/iterators.md (VDQV_L): New mode iterator.
(unspec): Add UNSPEC_SADDLV, UNSPEC_UADDLV.
(Vwstype): New mode attribute.
(Vwsuf): Likewise.
(VWIDE_S): Likewise.
(USADDLV): New int iterator.
(su): Handle UNSPEC_SADDLV, UNSPEC_UADDLV.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/simd/vaddlv_1.c: New test.
Diffstat (limited to 'libgo/go')
0 files changed, 0 insertions, 0 deletions