merge with trunk @ 139506
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / slp-multitypes-12.c
blob5d2140fda9642cc0bdd29bc0a604a3342e4af4c1
1 /* { dg-require-effective-target vect_int } */
3 #include <stdarg.h>
4 #include <stdio.h>
5 #include "tree-vect.h"
7 #define N 128
9 __attribute__ ((noinline)) int
10 main1 ()
12 int i;
13 unsigned short sout[N*8];
14 unsigned int iout[N*8];
15 unsigned char cout[N*8];
17 for (i = 0; i < N; i++)
19 sout[i*4] = 8;
20 sout[i*4 + 1] = 18;
21 sout[i*4 + 2] = 28;
22 sout[i*4 + 3] = 38;
24 iout[i*4] = 8;
25 iout[i*4 + 1] = 18;
26 iout[i*4 + 2] = 28;
27 iout[i*4 + 3] = 38;
29 cout[i*4] = 1;
30 cout[i*4 + 1] = 2;
31 cout[i*4 + 2] = 3;
32 cout[i*4 + 3] = 4;
35 /* check results: */
36 for (i = 0; i < N; i++)
38 if (sout[i*4] != 8
39 || sout[i*4 + 1] != 18
40 || sout[i*4 + 2] != 28
41 || sout[i*4 + 3] != 38
42 || iout[i*4] != 8
43 || iout[i*4 + 1] != 18
44 || iout[i*4 + 2] != 28
45 || iout[i*4 + 3] != 38
46 || cout[i*4] != 1
47 || cout[i*4 + 1] != 2
48 || cout[i*4 + 2] != 3
49 || cout[i*4 + 3] != 4)
50 abort ();
53 return 0;
56 int main (void)
58 check_vect ();
60 main1 ();
62 return 0;
65 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
66 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } } */
67 /* { dg-final { cleanup-tree-dump "vect" } } */