[Bug target/59385] gcc 4.9 fails to use fma with __attribute__((target("fma")))

tmsriram at google dot com gcc-bugzilla@gcc.gnu.org
Fri Dec 6 22:58:00 GMT 2013


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.



More information about the Gcc-bugs mailing list