/* { dg-do compile } */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_shift } */

int x[4];
int j[4];
void foo()
{
  x[0] = (x[0] << j[0]) + j[0];
  x[1] = (x[1] << j[0]) + j[1];
  x[2] = (x[2] << j[0]) + j[2];
  x[3] = (x[3] << j[0]) + j[3];
}

/* The scalar shift argument should be extracted from the available vector.  */
/* { dg-final { scan-tree-dump "BIT_FIELD_REF" "slp2" { target sse2 } } } */
/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" } } */
