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

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---

Before my patch we had on the gimple level:

  vect_sum_26.13_38 = VIEW_CONVERT_EXPR<vector(4) int>(vect__7.9_48);
  _36 = (vector(4) unsigned int) vect_sum_26.13_38;
  _35 = .REDUC_PLUS (_36);
  _34 = (int) _35;
  _44 = .REDUC_PLUS (vect__7.9_48);
  _20 = _34 & 65535;
  _10 = (unsigned int) _20;
  _12 = _44 >> 16;
  _13 = _10 + _12;
  _14 = _13 >> 1;
  _23 = (int) _14;

After we get:

  _43 = .REDUC_PLUS (vect__7.11_47);
  _37 = _43 & 65535;
  _12 = _43 >> 16;
  _13 = _12 + _37;
  _14 = _13 >> 1;
  _23 = (int) _14;

Which is obviously better really. So there is nothing to be done on the gimple
level really. the only thing I can think of is how reducative plus is
implemented.

Reply via email to