Hi all,

The sqdmlal2 patterns are hidden beneath the SBINQOPS iterator and 
unfortunately they don't match
canonical RTL because the simple accumulate operand comes in the first arm of 
the SS_PLUS.
This patch splits the SS_PLUS and SS_MINUS forms with the SS_PLUS operands set 
up to match
the canonical form, where the complex operand comes first.

Bootstrapped and tested on aarch64-none-linux-gnu.
Pushing to trunk.
Thanks,
Kyrill

gcc/ChangeLog:

        * config/aarch64/aarch64-simd.md
        (aarch64_sqdml<SBINQOPS:as>l2_lane<mode>_internal): Split into...
        (aarch64_sqdmlsl2_lane<mode>_internal): ... This...
        (aarch64_sqdmlal2_lane<mode>_internal): ... And this.
        (aarch64_sqdml<SBINQOPS:as>l2_laneq<mode>_internal): Split into ...
        (aarch64_sqdmlsl2_laneq<mode>_internal): ... This...
        (aarch64_sqdmlal2_laneq<mode>_internal): ... And this.
        (aarch64_sqdml<SBINQOPS:as>l2_n<mode>_internal): Split into...
        (aarch64_sqdmlsl2_n<mode>_internal): ... This...
        (aarch64_sqdmlal2_n<mode>_internal): ... And this.

Attachment: canon.patch
Description: canon.patch

Reply via email to