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.

Reply via email to