diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2021-08-03 13:00:47 +0100 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2021-08-03 13:00:47 +0100 |
commit | 028059b46ec9aef7dd447792c579f35396751068 (patch) | |
tree | c18014f9620fb867bf2dd9badde458ab466e5c2d /gcc/doc/invoke.texi | |
parent | 537afb0857c8f60c2b60a09fad4660420cd13e8f (diff) | |
download | gcc-028059b46ec9aef7dd447792c579f35396751068.zip gcc-028059b46ec9aef7dd447792c579f35396751068.tar.gz gcc-028059b46ec9aef7dd447792c579f35396751068.tar.bz2 |
aarch64: Tweak MLA vector costs
The issue-based vector costs currently assume that a multiply-add
sequence can be implemented using a single instruction. This is
generally true for scalars (which have a 4-operand instruction)
and SVE (which allows the output to be tied to any input).
However, for Advanced SIMD, multiplying two values and adding
an invariant will end up being a move and an MLA.
The only target to use the issue-based vector costs is Neoverse V1,
which would generally prefer SVE in this case anyway. I therefore
don't have a self-contained testcase. However, the distinction
becomes more important with a later patch.
gcc/
* config/aarch64/aarch64.c (aarch64_multiply_add_p): Add a vec_flags
parameter. Detect cases in which an Advanced SIMD MLA would almost
certainly require a MOV.
(aarch64_count_ops): Update accordingly.
Diffstat (limited to 'gcc/doc/invoke.texi')
0 files changed, 0 insertions, 0 deletions