[Bug target/126589] [13/14/15/16 Regression] Complex-mul vectorisation not honoring signed zeros

"cvs-commit at gcc dot gnu.org via Gcc-bugs" <[email protected]>
Newsgroups gmane.comp.gcc.bugs
Message-ID <[email protected]/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126589

--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tamar Christina <[email protected]>:

https://gcc.gnu.org/g:d9b294889b14069d6f6c5ce985f17bf8bbf34894

commit r17-3228-gd9b294889b14069d6f6c5ce985f17bf8bbf34894
Author: Tamar Christina <[email protected]>
Date:   Wed Aug 12 14:15:43 2026 +0100

    vect: Support another form of COMPLEX_FMS which the testcases point out
[PR126589]

    This adds support for matching FMS where the reassoc has left the top level
    operation as a PLUS_MINUS.

    i.e. matching

           c.real + (a.imag * b.imag - a.real * b.real)
           c.imag - (a.real * b.imag + a.imag * b.real)

    which happens when the accumulator is not the same as the destination.
    i.e.

    d[i] = c[i] - (a[i] * b[i])

    vs

    c[i] -= a[i] * b[i]

    gcc/ChangeLog:

            PR tree-optimization/126589
            * tree-vect-slp-patterns.cc (complex_fms_pattern::matches): Check
            another form of FMS.

    gcc/testsuite/ChangeLog:

            PR tree-optimization/126589
            * gfortran.target/aarch64/pr122408_1.f90: update scans to check for
FMS.
            * gcc.dg/vect/complex/complex-mul2.c: New test.
            * gcc.dg/vect/complex/fast-math-complex-mls-manual-invalid-float.c:
New test.
            * gcc.dg/vect/complex/fast-math-complex-mls-outofplace-double.c:
New test.
            * gcc.dg/vect/complex/fast-math-complex-mls-outofplace-float.c: New
test.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.