1 /* { dg-require-effective-target vect_int } */
12 unsigned short out[N*8], out2[N*8], b0, b1, b2, b3, b4, a0, a1, a2, a3, b5;
13 unsigned short in[N*8];
15 for (i = 0; i < N*8; i++)
20 /* Different operations in both cases - vectorization with interleaving. */
21 for (i = 0; i < N; i++)
48 for (i = 0; i < N; i++)
66 || out[i*4 + 3] != b3)
70 || out2[i*4 + 1] != b1
71 || out2[i*4 + 2] != b4
72 || out2[i*4 + 3] != b5)
76 /* Different operations in the first case - vectorization with interleaving. */
77 for (i = 0; i < N; i++)
104 for (i = 0; i < N; i++)
120 || out[i*4 + 1] != b1
121 || out[i*4 + 2] != b2
122 || out[i*4 + 3] != b3)
126 || out2[i*4 + 1] != b1
127 || out2[i*4 + 2] != b4
128 || out2[i*4 + 3] != b5)
133 /* Different operations in the second case - vectorization with interleaving. */
134 for (i = 0; i < N; i++)
161 for (i = 0; i < N; i++)
177 || out[i*4 + 1] != b1
178 || out[i*4 + 2] != b2
179 || out[i*4 + 3] != b3)
183 || out2[i*4 + 1] != b1
184 || out2[i*4 + 2] != b4
185 || out2[i*4 + 3] != b5)
202 /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" { target { vect_strided4 || vect_extract_even_odd } } } } */
203 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided4 || vect_extract_even_odd } } } } } */
204 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided4 } } } */
205 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { vect_strided4 } } } } } */
206 /* { dg-final { cleanup-tree-dump "vect" } } */