diff options
author | Spencer Abson <spencer.abson@arm.com> | 2025-07-30 08:20:58 +0000 |
---|---|---|
committer | Spencer Abson <spencer.abson@arm.com> | 2025-07-30 08:40:27 +0000 |
commit | 84f8f1ff6a9bfeb12e5fc0eac58efc375cc08485 (patch) | |
tree | e5dc35eb8350b023b3e5d077a88b25dd8e9f4f40 /contrib/gcc-changelog/git_commit.py | |
parent | 25593e555466f67348844c9cb572cf378ccef676 (diff) | |
download | gcc-84f8f1ff6a9bfeb12e5fc0eac58efc375cc08485.zip gcc-84f8f1ff6a9bfeb12e5fc0eac58efc375cc08485.tar.gz gcc-84f8f1ff6a9bfeb12e5fc0eac58efc375cc08485.tar.bz2 |
aarch64: Relaxed SEL combiner patterns for unpacked SVE FP ternary arithmetic
Extend the ternary op/UNSPEC_SEL combiner patterns from SVE_FULL_F/
SVE_FULL_F_BF to SVE_F/SVE_F_BF, where the strictness value is
SVE_RELAXED_GP.
We can only reliably test the 'merging with the third input' (addend)
and 'independent value' patterns at this stage as the canocalisation that
reorders the multiplicands based on the second SEL input would be performed
by the conditional expander.
Another difficulty is that we can't test these fused multiply/SEL combines
without using __builtin_fma and friends. The reason for this is as follows:
We support COND_ADD, COND_SUB, and COND_MUL optabs, so match.pd will
canonicalize patterns like ADD/SUB/MUL combined with a VEC_COND_EXPR into
these conditional forms. Later, when widening_mul tries to fold these into
conditional fused multiply operations, the transformation fails - simply
because we haven’t implemented those conditional fused multiply optabs yet.
Hence why this patch lacks tests for BFloat16...
gcc/ChangeLog:
* config/aarch64/aarch64-sve.md (*cond_<optab><mode>_2_relaxed):
Extend from SVE_FULL_F to SVE_F.
(*cond_<optab><mode>_4_relaxed): Extend from SVE_FULL_F_B16B16
to SVE_F_B16B16.
(*cond_<optab><mode>_any_relaxed): Likewise.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/sve/unpacked_cond_fmla_1.c: New test.
* gcc.target/aarch64/sve/unpacked_cond_fmls_1.c: Likewise.
* gcc.target/aarch64/sve/unpacked_cond_fnmla_1.c: Likewise.
* gcc.target/aarch64/sve/unpacked_cond_fnmls_1.c: Likewise.
Diffstat (limited to 'contrib/gcc-changelog/git_commit.py')
0 files changed, 0 insertions, 0 deletions