]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Fix sve/acle/general/ldff1_8.c failures
authorRichard Sandiford <richard.sandiford@arm.com>
Wed, 5 Feb 2025 15:35:13 +0000 (15:35 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Wed, 5 Feb 2025 15:35:13 +0000 (15:35 +0000)
commit50a31b6765fe17aee22a1fc1457c762a53140c8e
tree83800d9cff894a92bdff367b5a06139f74068b4e
parent6f95af4f22b641fbb3509f1436bce811d4e4acad
aarch64: Fix sve/acle/general/ldff1_8.c failures

gcc.target/aarch64/sve/acle/general/ldff1_8.c and
gcc.target/aarch64/sve/ptest_1.c were failing because the
aarch64 port was giving a zero (unknown) cost to instructions
that compute two results in parallel.  This was latent until
r15-1575-gea8061f46a30, which fixed rtl-ssa to treat zero costs
as unknown.

A long-standing todo here is to make insn_cost derive costs from md
information, rather than having to write a lot of matching code in
aarch64_rtx_costs.  But that's not something we can do for GCC 15.

This patch instead treats the cost of a PARALLEL as being the maximum
cost of its constituent sets.  I don't like this very much, since it
isn't really target-specific behaviour.  If it were stage 1, I'd be
trying to change pattern_cost instead.

gcc/
* config/aarch64/aarch64.cc (aarch64_insn_cost): Give PARALLELs
the same cost as the costliest SET.
gcc/config/aarch64/aarch64.cc