aarch64: Reimplement vmovl_high_* intrinsics using builtins
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Mon, 1 Feb 2021 15:29:13 +0000 (15:29 +0000)
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>
Mon, 1 Feb 2021 16:45:05 +0000 (16:45 +0000)
commit8bfdf51d8595537937f990947a7a36d3a63dca5f
tree2b29abe9350fb4e45eb9d2b625d2c22102e63f99
parent6b2034c479e5882a8566393e4fb632a23cfd6ff0
aarch64: Reimplement vmovl_high_* intrinsics using builtins

The vmovl_high_* intrinsics map down to the SXTL2/UXTL2 instructions
that already have appropriately-named patterns and expanders,
so it's straightforward to wire them up.

gcc/ChangeLog:

* config/aarch64/aarch64-simd-builtins.def (vec_unpacks_hi,
vec_unpacku_hi_): Define builtins.
* config/aarch64/arm_neon.h (vmovl_high_s8): Reimplement using
builtin.
(vmovl_high_s16): Likewise.
(vmovl_high_s32): Likewise.
(vmovl_high_u8): Likewise.
(vmovl_high_u16): Likewise.
(vmovl_high_u32): Likewise.

gcc/testsuite/ChangeLog:

* gcc.target/aarch64/simd/vmovl_high_1.c: New test.
gcc/config/aarch64/aarch64-simd-builtins.def
gcc/config/aarch64/arm_neon.h
gcc/testsuite/gcc.target/aarch64/simd/vmovl_high_1.c [new file with mode: 0644]