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.
canon.patch
Description: canon.patch