OSDN Git Service

ac398148cea0b588fa4cc01714f8c4f3d0b1b2ee
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / vect / vect-29.c
1 /* { dg-require-effective-target vect_int } */
2
3 #include <stdarg.h>
4 #include "tree-vect.h"
5
6 #define N 128
7 #define OFF 3
8
9 /* unaligned load.  */
10
11 int main1 (int off)
12 {
13   int i;
14   int ia[N];
15   int ib[N+OFF];
16
17   for (i = 0; i < N+OFF; i++)
18     {
19       ib[i] = i;
20     }
21
22   for (i = 0; i < N; i++)
23     {
24       ia[i] = ib[i+off];
25     }
26
27   /* check results:  */
28   for (i = 0; i < N; i++)
29     {
30       if (ia[i] != ib[i+off])
31         abort ();
32     }
33
34   return 0;
35 }
36
37 int main (void)
38
39   check_vect ();
40   
41   main1 (0); /* aligned */
42   main1 (OFF); /* unaligned */
43   return 0;
44 }
45
46 /* For targets that don't support misaligned loads we version for the load.
47    (The store is aligned).  */
48
49 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
50 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
51 /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
52 /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" {target vect_no_align } } } */
53 /* { dg-final { cleanup-tree-dump "vect" } } */