aarch64: Reimplement vget_high* intrinsics
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Fri, 5 Feb 2021 09:17:57 +0000 (09:17 +0000)
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>
Fri, 5 Feb 2021 09:17:57 +0000 (09:17 +0000)
commitd9bb52150db4eb282bd8adf0397e848373f85a70
tree4e1faffb73935d44f13f9e08a4c87e496a99ef31
parentb6e7a7498732b83df61443c211b8d69454ad0b22
aarch64: Reimplement vget_high* intrinsics

Similar to the vget_low* intrinsics we should just use a proper vec_select rather than
going through V2DI subregs.

gcc/ChangeLog:

* config/aarch64/aarch64-simd-builtins.def (get_high): Define builtin.
* config/aarch64/aarch64-simd.md (aarch64_get_high<mode>): Define.
* config/aarch64/arm_neon.h (__GET_HIGH): Delete.
(vget_high_f16): Reimplement using new builtin.
(vget_high_f32): Likewise.
(vget_high_f64): Likewise.
(vget_high_p8): Likewise.
(vget_high_p16): Likewise.
(vget_high_p64): Likewise.
(vget_high_s8): Likewise.
(vget_high_s16): Likewise.
(vget_high_s32): Likewise.
(vget_high_s64): Likewise.
(vget_high_u8): Likewise.
(vget_high_u16): Likewise.
(vget_high_u32): Likewise.
(vget_high_u64): Likewise.
gcc/config/aarch64/aarch64-simd-builtins.def
gcc/config/aarch64/aarch64-simd.md
gcc/config/aarch64/arm_neon.h