aarch64: Make sqdmlal2 patterns match canonical RTL
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Fri, 14 May 2021 09:05:42 +0000 (10:05 +0100)
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>
Fri, 14 May 2021 14:31:25 +0000 (15:31 +0100)
commitff3809b459db881e80f627e81ec946e7bbd7041d
treeb02afb0aa23c6027c346c5cd5fcc94b1bb3e0889
parent4206171605de65df9674a14dd9db75bf4f4ed037
aarch64: Make sqdmlal2 patterns match canonical RTL

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.

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.
gcc/config/aarch64/aarch64-simd.md