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.

Attachment: fix-usaba.patch
Description: fix-usaba.patch

Reply via email to