https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126465
Drea Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
Last reconfirmed| |2026-07-29
--- Comment #1 from Drea Pinski <pinskia at gcc dot gnu.org> ---
r16-6508-g772b847d99d5e3 .
(simplify
(negate (fmas@3 @4 @0 @1 @2 @5))
(if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (@3))
(IFN_COND_FNMS @4 @0 @1 @2 @5))))
The negate also applies to the other non-fma part while afterwards it does not.
(simplify
(negate (IFN_FMS@3 @4 @0 @1 @2 @5))
(if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (@3))
(IFN_COND_FNMA @4 @0 @1 @2 @5)))
(simplify
(negate (IFN_COND_FNMA@3 @4 @0 @1 @2 @5))
(if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (@3))
(IFN_COND_FMS @4 @0 @1 @2 @5)))
(simplify
(negate (IFN_COND_FNMS@3 @4 @0 @1 @2 @5))
(if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (@3))
(IFN_COND_FMA @4 @0 @1 @2 @5))))
All need negate around the inner part that is not doing the fmas.