http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59385

--- Comment #4 from Sriraman Tallam <tmsriram at google dot com> ---
The "widening_mult" has the answer. This pass converts this gimple sequence

  double _31;
  double _33;
  double _36;
  double _37;

  _31 = *a_4;
  _33 = *b_6;
  _34 = _33 * _31;
  _36 = *c_8;
  _37 = _34 + _36;

into:

  _31 = *a_4;
  _33 = *b_6;
  _36 = *c_8;
  _37 = _33 * _31 + _36; (fma gets recognized from this pattern in rtl expand)

for the compiler where the vfmadd132sd insn is generated.

This conversion fails to happen in gcc-4.9. The problem should mostly be in
this function convert_mult_to_widen in treessa-math-opts.c. I have not looked
closely at this function yet.

Reply via email to