]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Fix crc{,_rev}<SWI124:mode>si4 expanders [PR122991]
authorJakub Jelinek <jakub@redhat.com>
Thu, 4 Dec 2025 19:37:00 +0000 (20:37 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 4 Dec 2025 19:37:00 +0000 (20:37 +0100)
commit8d36603b8501b33525ebf583f0bb6ca489fee000
tree5da151f56adb7e36eb7d5ad4252262b3dfbb2990
parent1d1d12da6ddc0030e3038363d46fdd23f8cd068f
aarch64: Fix crc{,_rev}<SWI124:mode>si4 expanders [PR122991]

The newly added gcc.dg/pr122991.c test fails also on aarch64.
The problem is the same as on x86 which has been fixed in r16-5882,
while the last operand is guaranteed to be a CONST_INT of the right
mode initially, maybe_legitimize_operands can change that if some earlier
operand has the same value and e.g. register_operand predicate has been
used, that operand is forced into a pseudo and maybe_legitimize_operands
then checks if that satisfies the predicate of the other operand.
As on x86 and aarch64 it didn't have any predicate, it happily used
a pseudo in those cases instead of the expected CONST_INT.

The following patch fixes that.

2025-12-04  Jakub Jelinek  <jakub@redhat.com>

PR target/122991
* config/aarch64/aarch64.md (crc_rev<ALLI:mode><ALLX:mode>4,
crc<ALLI:mode><ALLX:mode>4): Use const_int_operand predicate for
the last operand.
gcc/config/aarch64/aarch64.md