Imported Upstream version 4.7.3
[platform/upstream/gcc48.git] / gcc / testsuite / gcc.dg / vect / vect-shift-4.c
1 /* { dg-require-effective-target vect_shift_char } */
2 /* { dg-require-effective-target vect_int } */
3
4 #include "tree-vect.h"
5
6 #define N 32
7
8 unsigned char dst[N] __attribute__((aligned(N)));
9 unsigned char src[N] __attribute__((aligned(N)));
10
11 __attribute__ ((noinline))
12 void array_shift(void)
13 {
14   int i;
15   for (i = 0; i < N; i++)
16     dst[i] = src[i] >> 3;
17 }
18
19 int main()
20 {
21   volatile int i;
22   check_vect ();
23
24   for (i = 0; i < N; i++)
25     src[i] = i << 3;
26
27   array_shift ();
28
29   for (i = 0; i < N; i++)
30     if (dst[i] != i)
31       abort ();
32
33   return 0;
34 }
35
36 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
37 /* { dg-final { cleanup-tree-dump "vect" } } */