Hi all,

This patch reimplements the saturating-truncate-and-insert-into-high intrinsics
using the appropriate RTL codes and builtins.

Bootstrapped on aarch64-none-linux-gnu and tested on aarch64_be-none-elf too.

Pushing to trunk.
Thanks,
Kyrill

gcc/
        * config/aarch64/aarch64-simd.md (aarch64_<su>qxtn2<mode>_le): Define.
        (aarch64_<su>qxtn2<mode>_be): Likewise.
        (aarch64_<su>qxtn2<mode>): Likewise.
        * config/aarch64/aarch64-simd-builtins.def (sqxtn2, uqxtn2): Define 
builtins.
        * config/aarch64/iterators.md (SAT_TRUNC): Define code_iterator.
        (su): Handle ss_truncate and us_truncate.
        * config/aarch64/arm_neon.h (vqmovn_high_s16): Reimplement using 
builtin.
        (vqmovn_high_s32): Likewise.
        (vqmovn_high_s64): Likewise.
        (vqmovn_high_u16): Likewise.
        (vqmovn_high_u32): Likewise.
        (vqmovn_high_u64): Likewise.

gcc/testsuite/
        * gcc.target/aarch64/narrow_high-intrinsics.c: Update uqxtn2 and sqxtn2
        scan-assembler-times.

Attachment: qmovn-hi.patch
Description: qmovn-hi.patch

Reply via email to