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

--- Comment #16 from JuzheZhong <juzhe.zhong at rivai dot ai> ---
The FMA is generated in widening_mul PASS:

Before widening_mul (fab1):

  _5 = 3.33333333333333314829616256247390992939472198486328125e-1 - _4;
  _6 = _5 * 1.229999999999999982236431605997495353221893310546875e-1;
  _8 = _4 + _6;

After widening_mul:

  _5 = 3.33333333333333314829616256247390992939472198486328125e-1 - _4;
  _8 = .FMA (_5, 1.229999999999999982236431605997495353221893310546875e-1, _4);

I think it's obvious, widening_mul choose to transform later 2 STMTs:

  _6 = _5 * 1.229999999999999982236431605997495353221893310546875e-1;
  _8 = _4 + _6;

into:

 _8 = .FMA (_5, 1.229999999999999982236431605997495353221893310546875e-1, _4);

without any re-association.

Reply via email to