Hi,

As a general principle, vec_duplicate should be as close to the root
of an expression as possible. Where unary operations have
vec_duplicate as an argument, these operations should be pushed
inside the vec_duplicate.

This patch modifies unary operation simplification to push
sign/zero-extension of a scalar inside vec_duplicate.

This patch also updates all RTL patterns in aarch64-simd.md to use
the new canonical form.

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

Ok for master?

Thanks,
Jonathan

---

gcc/ChangeLog:

2021-07-19  Jonathan Wright  <jonathan.wri...@arm.com>

        * config/aarch64/aarch64-simd.md: Push sign/zero-extension
        inside vec_duplicate for all patterns.
        * simplify-rtx.c (simplify_context::simplify_unary_operation_1):
        Push sign/zero-extension inside vec_duplicate.

Attachment: rb14677.patch
Description: rb14677.patch

Reply via email to