OSDN Git Service

a5ad5baf86b2960104f2360fa0aeffe14e2a6708
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / vect / vect-68.c
1 /* { dg-do run { target powerpc*-*-* } } */
2 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
3 /* { dg-do run { target sparc*-*-* } } */
4 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-stats -maltivec" { target powerpc*-*-* } } */
5 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-stats -msse2" { target i?86-*-* x86_64-*-* } } */
6 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-stats -mcpu=ultrasparc -mvis" { target sparc*-*-* } } */
7
8 #include <stdarg.h>
9 #include "tree-vect.h"
10
11 #define N 32
12
13 struct s{
14   int m;
15   int n[N][N][N];
16 };
17
18 struct test1{
19   struct s a; /* array a.n is unaligned */
20   int b;
21   int c;
22   struct s e; /* array e.n is aligned */
23 };
24
25 int main1 ()
26 {  
27   int i,j;
28   struct test1 tmp1;
29
30   /* 1. unaligned */
31   for (i = 0; i < N; i++)
32     {
33       tmp1.a.n[1][2][i] = 5;
34     }
35
36   /* check results:  */
37   for (i = 0; i <N; i++)
38     {
39       if (tmp1.a.n[1][2][i] != 5)
40         abort ();
41     }
42
43   /* 2. aligned */
44   for (i = 3; i < N-1; i++)
45     {
46       tmp1.a.n[1][2][i] = 6;
47     }
48
49   /* check results:  */
50   for (i = 3; i < N-1; i++)
51     {
52       if (tmp1.a.n[1][2][i] != 6)
53         abort ();
54     }
55
56   /* 3. aligned */
57   for (i = 0; i < N; i++)
58     {
59       tmp1.e.n[1][2][i] = 7;
60     }
61
62   /* check results:  */
63   for (i = 0; i < N; i++)
64     {
65       if (tmp1.e.n[1][2][i] != 7)
66         abort ();
67     }
68
69   /* 4. unaligned */
70   for (i = 3; i < N-3; i++)
71     {
72       tmp1.e.n[1][2][i] = 8;
73     }
74  
75   /* check results:  */
76   for (i = 3; i <N-3; i++)
77     {
78       if (tmp1.e.n[1][2][i] != 8)
79         abort ();
80     }
81
82   return 0;
83 }
84
85 int main (void)
86
87   check_vect ();
88   
89   return main1 ();
90
91
92 /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */