/* { dg-do compile } */ /* { dg-require-effective-target vect_int } */ int a[1024]; void foo (void) { for (int i = 0; i < 1020; i += 4) { int suma = a[i]; int sumb = a[i+1]; int sumc = a[i+2]; int sumd = a[i+3]; for (unsigned j = 0; j < 77; ++j) { suma = (suma ^ i) + 1; sumb = (sumb ^ i) + 2; sumc = (sumc ^ i) + 3; sumd = (sumd ^ i) + 4; } a[i] = suma; a[i+1] = sumb; a[i+2] = sumc; a[i+3] = sumd; } } /* We should vectorize this outer loop with SLP. */ /* { dg-final { scan-tree-dump "OUTER LOOP VECTORIZED" "vect" } } */ /* We don't yet support SLP inductions for variable length vectors. */ /* { dg-final { scan-tree-dump "vectorizing stmts using SLP" "vect" { xfail vect_variable_length } } } */ /* { dg-final { scan-tree-dump-not " = VEC_PERM_EXPR" "vect" } } */