https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99930

--- Comment #14 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-15 branch has been updated by H.J. Lu <[email protected]>:

https://gcc.gnu.org/g:653977c4a31643497655600688ff238b734f7512

commit r15-10443-g653977c4a31643497655600688ff238b734f7512
Author: H.J. Lu <[email protected]>
Date:   Sun Oct 19 09:13:52 2025 +0800

    x86: Optimize copysign (x, const_double)

    After

    commit 3f176e1adc6bc9cc2c21222d776b51d9f43cb66b
    Author: Tamar Christina <[email protected]>
    Date:   Thu Nov 9 13:59:39 2023 +0000

        middle-end: optimize fneg (fabs (x)) to copysign (x, -1) [PR109154]

    fneg (fabs (x)) is expanded to copysign (x, -1).  Swap constraints for
    operands[1] and operands[2] in copysign<mode>3 pattern to optimize

      y = copysign (x, const_double)

    instead of

      y = copysign (const_double, x)

    Simplify

      y = copysign (x, positive_const_double)

    to

      y = ~signbit_mask & x

    and

      y = copysign (x, negative_const_double)

    to

      y = signbit_mask | x

    gcc/

            PR target/99930
            PR target/122323
            * config/i386/i386-expand.cc (ix86_expand_copysign): Swap
            operands[1] with operands[2].  Optimize copysign (x, const_double)
            instead of copysign (const_double, x).
            * config/i386/i386.md (copysign<mode>3): Swap constraints for
            operands[1] and operands[2].

    gcc/testsuite/

            PR target/99930
            PR target/122323
            * gcc.target/i386/builtin-copysign-2.c: New test.
            * gcc.target/i386/builtin-copysign-3.c: Likewise.
            * gcc.target/i386/builtin-copysign-4.c: Likewise.
            * gcc.target/i386/builtin-copysign-5.c: Likewise.
            * gcc.target/i386/builtin-copysign-6.c: Likewise.
            * gcc.target/i386/builtin-copysign-7.c: Likewise.
            * gcc.target/i386/builtin-copysign-8a.c: Likewise.
            * gcc.target/i386/builtin-copysign-8b.c: Likewise.
            * gcc.target/i386/builtin-fabs-1.c: Likewise.
            * gcc.target/i386/builtin-fabs-2.c: Likewise.

    Signed-off-by: H.J. Lu <[email protected]>
    (cherry picked from commit c3b0ecf04f8c14360cc02c737446c029038a95f7)

Reply via email to