https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99930
--- Comment #15 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-14 branch has been updated by H.J. Lu <[email protected]>: https://gcc.gnu.org/g:2047d0be65ff5336b4bffd55fe726661cd19eef5 commit r14-12118-g2047d0be65ff5336b4bffd55fe726661cd19eef5 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)
