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

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
A side note, this shows how badly we need a type demotion pass, perhaps just on
the LOOP_VECTORIZED copy of loop before vectorization:

  vect__27.7_175 = [vec_unpack_lo_expr] vect_v_16.5_173;
  vect__27.7_176 = [vec_unpack_hi_expr] vect_v_16.5_173;
  vect__28.8_177 = vect__27.7_175 << 1;
  vect__28.8_178 = vect__27.7_176 << 1;
  vect__29.9_179 = VEC_PACK_TRUNC_EXPR <vect__28.8_177, vect__28.8_178>;

or some match.pd patterns that will fix it after the vectorization.  The above
is completely useless variant to just vector unsigned short << 1.

Reply via email to