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

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
We can vectorize a variant with doubles but that results in awful code because
the ABI isn't known.  The float variant now looks like the following before
vectorization:

  _1 = a.x;
  _2 = b.x;
  _3 = _1 + _2;
  _4 = a.y;
  _5 = b.y;
  _6 = _4 + _5;
  MEM[(struct  *)&D.1915] = _3;
  MEM[(struct  *)&D.1915 + 4B] = _6;
  return D.1915;

here the issue is again that we do not know the ABI details plus MMX
is disabled and the vectorizer expects 4 floats for vectorization
(that is, it cannot vectorize using partial vector regs - the ABI may
specify the upper half of %xmm0 is zero for example).

Reply via email to