]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: PR target/109406 Add support for SVE2 unpredicated MUL
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Mon, 24 Apr 2023 09:27:31 +0000 (10:27 +0100)
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>
Mon, 24 Apr 2023 09:27:31 +0000 (10:27 +0100)
commit9fd4a38c2f30b72ad5e3df7acb1ade201d8ac2cd
tree3acb554bf5c905048945dfcdca8efd5f9afb0813
parent636e2273aec555faa0a2f0e0b97b5f3355b25e47
aarch64: PR target/109406 Add support for SVE2 unpredicated MUL

SVE2 supports an unpredicated vector integer MUL form that we can emit from our SVE expanders
without using up a predicate registers. This patch does so.
As the SVE MUL expansion currently is templated away through a code iterator I did not split it
off just for this case but instead special-cased it in the define_expand. It seemed somewhat less
invasive than the alternatives but I could split it off more explicitly if others want to.
The div-by-bitmask_1.c testcase is adjusted to expect this new MUL form.

Bootstrapped and tested on aarch64-none-linux-gnu.

gcc/ChangeLog:

PR target/109406
* config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
case.
* config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
pattern.

gcc/testsuite/ChangeLog:

PR target/109406
* gcc.target/aarch64/sve2/div-by-bitmask_1.c: Adjust for unpredicated SVE2
MUL.
* gcc.target/aarch64/sve2/unpred_mul_1.c: New test.
gcc/config/aarch64/aarch64-sve.md
gcc/config/aarch64/aarch64-sve2.md
gcc/testsuite/gcc.target/aarch64/sve2/div-by-bitmask_1.c
gcc/testsuite/gcc.target/aarch64/sve2/unpred_mul_1.c [new file with mode: 0644]