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

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

Without -march=znver1, we get:
  vect__10.6_9 = MEM <vector(2) int> [(int *)&a];
  vect_patt_13.7_8 = VIEW_CONVERT_EXPR<vector(2) unsigned int>(vect__10.6_9);
  vect_patt_19.8_1 = vect_patt_13.7_8 << 1;
  vect_patt_25.9_2 = VIEW_CONVERT_EXPR<vector(2) int>(vect_patt_19.8_1);
  MEM <vector(2) int> [(int *)&a] = vect_patt_25.9_2;

Which looks reasonable. But with -march=znver1 we get:

  _10 = a[0];
  _11 = _10 * 2;
  _16 = a[1];
  _17 = _16 * 2;
  _13 = {_11, _17};
  MEM <vector(2) int> [(int *)&a] = _13;

So this is definitely a cost model issue.

Reply via email to