fails to vectorize because the size of row is different than the size of the
being shifted value.
The vectorizer has a pattern that should deal with such shifts in
vect_recog_vector_vector_shift_pattern however this pattern is using
vect_get_internal_def to get the definition of the shift operand.
This needlessly restricts the pattern to only internal_defs. The vectorizer
can deal with casts on any operand type so this restriction isn't needed and
this is dropped.
gcc/ChangeLog:
PR tree-optimization/121949
* tree-vect-patterns.cc (vect_recog_vector_vector_shift_pattern): Remove
restriction on internal_def.
gcc/testsuite/ChangeLog:
PR tree-optimization/121949
* gcc.dg/vect/pr121949_1.c: New test.
* gcc.dg/vect/pr121949_2.c: New test.
* gcc.dg/vect/pr121949_3.c: New test.