1 /* { dg-require-effective-target vect_int } */
2 
3 #include <stdarg.h>
4 #include "tree-vect.h"
5 
6 #define N 128
7 
8 __attribute__ ((noinline)) int
main1()9 main1 ()
10 {
11   int i;
12   unsigned short sout[N*8];
13   unsigned int iout[N*8];
14   unsigned char cout[N*8];
15 
16   for (i = 0; i < N; i++)
17     {
18       sout[i*4] = 8;
19       sout[i*4 + 1] = 18;
20       sout[i*4 + 2] = 28;
21       sout[i*4 + 3] = 38;
22 
23       iout[i*4] = 8;
24       iout[i*4 + 1] = 18;
25       iout[i*4 + 2] = 28;
26       iout[i*4 + 3] = 38;
27 
28       cout[i*4] = 1;
29       cout[i*4 + 1] = 2;
30       cout[i*4 + 2] = 3;
31       cout[i*4 + 3] = 4;
32     }
33 
34   /* check results:  */
35   for (i = 0; i < N; i++)
36     {
37       if (sout[i*4] != 8
38          || sout[i*4 + 1] != 18
39          || sout[i*4 + 2] != 28
40          || sout[i*4 + 3] != 38
41          || iout[i*4] != 8
42          || iout[i*4 + 1] != 18
43          || iout[i*4 + 2] != 28
44          || iout[i*4 + 3] != 38
45          || cout[i*4] != 1
46          || cout[i*4 + 1] != 2
47          || cout[i*4 + 2] != 3
48          || cout[i*4 + 3] != 4)
49 	abort ();
50     }
51 
52   return 0;
53 }
54 
main(void)55 int main (void)
56 {
57   check_vect ();
58 
59   main1 ();
60 
61   return 0;
62 }
63 
64 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
65 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } } */
66 
67