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

--- Comment #34 from Richard Biener <rguenth at gcc dot gnu.org> ---
Possibly first computing a lattice val for each SSA name whether its origin is
a "real" or a "imag" component of a complex load could get us meta but even
then the individual sorting which determines the initial association to SLP
nodes would be only possible to adjust "cross-lane" (and to what?  I guess
combine real+imag parts?  Hopefully of the same entity).  Into vect we get with

  _19 = REALPART_EXPR <*_3>;
  _18 = IMAGPART_EXPR <*_3>;
  _5 = a_14(D) + _2;
  _23 = REALPART_EXPR <*_5>; // real
  _24 = IMAGPART_EXPR <*_5>; // imag
  _26 = b$real_11 * _23; // real?
  _27 = _24 * _53; // imag?
  _28 = _23 * _53;  // mixed?  but fed into imag
  _29 = b$real_11 * _24; // mixed?
  _7 = _18 - _28;  // mixed? or imag?
  _22 = _27 - _26;  // mixed?
  _32 = _19 + _22;  // mixed?  or real?
  _33 = _7 - _29; // mixed?  but fed into real?
  REALPART_EXPR <*_3> = _32;
  IMAGPART_EXPR <*_3> = _33;

so not sure if that will help.  That we'd like to have full load groups
is unfortunately only visible a node deeper.  We could also fill a lattice
with group IDs but we'd need to know parts to identify lane duplicates vs.
full groups.  It's also a lot of hassle for not much gain and very special
cases?

Reply via email to