Hi all, Sometime ago we changed the RTL representation of the (SU)ABD instructions in RTL to a (MINUS (MAX) (MIN)) rather than a (MINUS (ABS) (ABS)) as it is more correctly models the semantics. We should do the same for the accumulation forms of these instructions: UABA/SABA.
This patch does that and allows the new pattern to generate the unsigned UABA form as well. The new form also allows it to more easily be re-used to implement the relevant arm_neon.h intrinsics in the future. The testcase takes an -fno-tree-reassoc to work around a side-effect of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98581 Bootstrapped and tested on aarch64-none-linux-gnu. Pushing to trunk. Thanks, Kyrill gcc/ * config/aarch64/aarch64-simd.md (aba<mode>_3): Rename to... (aarch64_<su>aba<mode>): ... This. Handle uaba as well. Change RTL pattern to match. gcc/testsuite/ * gcc.target/aarch64/usaba_1.c: New test.
fix-usaba.patch
Description: fix-usaba.patch