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

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
We vectorize

  <bb 3> [local count: 955630225]:
  # f_33 = PHI <f_27(16), f_36(13)>
  f.1_1 = (unsigned short) f_33;
  _2 = f.1_1 + 1;
  f_27 = (short int) _2;
  if (f_27 >= -1) 
    goto <bb 16>; [89.00%]
  else
    goto <bb 18>; [11.00%]

  <bb 16> [local count: 850510901]:
  goto <bb 3>; [100.00%]

  <bb 18> [local count: 105119324]:
  # f_94 = PHI <f_27(3)>

as

  _70 = (unsigned short) f_36;
  _69 = _70 + 1;
  _68 = _70 + 2;
  _67 = _70 + 3;
  _66 = _70 + 4;
  _65 = _70 + 5;
  _64 = _70 + 6;
  _63 = _70 + 7;
  _62 = {_70, _69, _68, _67, _66, _65, _64, _63};
  _61 = (vector(8) short int) _62;

  <bb 3> [local count: 567644343]:
  # f_33 = PHI <f_27(16), f_36(23)>
  # vect_vec_iv_.21_59 = PHI <_56(16), _61(23)>
  # ivtmp_49 = PHI <ivtmp_48(16), 0(23)>
  _58 = (vector(8) unsigned short) vect_vec_iv_.21_59;
  _57 = _58 + { 8, 8, 8, 8, 8, 8, 8, 8 };
  _56 = (vector(8) short int) _57;
  vect_f.22_55 = VIEW_CONVERT_EXPR<vector(8) unsigned
short>(vect_vec_iv_.21_59); 
  f.1_1 = (unsigned short) f_33; 
  vect__2.23_53 = vect_f.22_55 + { 1, 1, 1, 1, 1, 1, 1, 1 };
  _2 = f.1_1 + 1; 
  vect_f_27.24_52 = VIEW_CONVERT_EXPR<vector(8) short int>(vect__2.23_53);
  f_27 = (short int) _2;
  ivtmp_48 = ivtmp_49 + 1;
  if (ivtmp_48 < bnd.18_75)
    goto <bb 16>; [83.33%]
  else
    goto <bb 25>; [16.67%]

  <bb 16> [local count: 473036953]:
  goto <bb 3>; [100.00%]

  <bb 25> [local count: 94607391]:
  # vect_f_27.24_51 = PHI <vect_f_27.24_52(3)>
  _50 = BIT_FIELD_REF <vect_f_27.24_51, 16, 112>;

that looks wrong.

Reply via email to