Hi,

As subject, this patch splits the aarch64_<sur>q<r>shr<u>n_n<mode>
pattern into separate scalar and vector variants. It further splits the vector
pattern into big/little endian variants that model the zero-high-half
semantics of the underlying instruction - allowing for more combinations
with the write-to-high-half variant
(aarch64_<sur>q<r>shr<u>n2_n<mode>.) This improvement will be
confirmed by a new test in gcc.target/aarch64/narrow_high_combine.c 
(patch 5/5 in this series.)

Regression tested and bootstrapped on aarch64-none-linux-gnu - no
issues.

Ok for master?

Thanks,
Jonathan

---

gcc/ChangeLog:

2021-05-14  Jonathan Wright  <jonathan.wri...@arm.com>

        * config/aarch64/aarch64-simd-builtins.def: Split builtin
        generation for aarch64_<sur>q<r>shr<u>n_n<mode> pattern into
        separate scalar and vector generators.
        * config/aarch64/aarch64-simd.md
        (aarch64_<sur>q<r>shr<u>n_n<mode>): Define as an expander and
        split into...
        (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): This and...
        (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): This.
        * config/aarch64/iterators.md: Define SD_HSDI iterator.

Attachment: rb14490.patch
Description: rb14490.patch

Reply via email to