cfgexpand: Expand comment on when non-var clobbers can show up
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / vect-17.c
blob147352184ab7478f16977e69a085980b509adaaf
1 /* { dg-require-effective-target vect_int } */
2 /* { dg-add-options bind_pic_locally } */
3 /* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
5 #include <stdarg.h>
6 #include "tree-vect.h"
8 #define N 64
10 int ia[N];
11 int ib[N]=
12 {1,1,0,0,1,0,1,0,
13 1,1,0,0,1,0,1,0,
14 1,1,0,0,1,0,1,0,
15 1,1,0,0,1,0,1,0,
16 1,1,0,0,1,0,1,0,
17 1,1,0,0,1,0,1,0,
18 1,1,0,0,1,0,1,0,
19 1,1,0,0,1,0,1,0};
21 int ic[N] =
22 {1,1,0,0,1,0,1,0,
23 1,1,0,0,1,0,1,0,
24 1,1,0,0,1,0,1,0,
25 1,1,0,0,1,0,1,0,
26 1,1,0,0,1,0,1,0,
27 1,1,0,0,1,0,1,0,
28 1,1,0,0,1,0,1,0,
29 1,1,0,0,1,0,1,0};
31 char ca[N];
32 char cb[N] =
33 {1,1,0,0,1,0,1,0,
34 1,1,0,0,1,0,1,0,
35 1,1,0,0,1,0,1,0,
36 1,1,0,0,1,0,1,0,
37 1,1,0,0,1,0,1,0,
38 1,1,0,0,1,0,1,0,
39 1,1,0,0,1,0,1,0,
40 1,1,0,0,1,0,1,0};
42 char cc[N] =
43 {1,1,0,0,1,0,1,0,
44 1,1,0,0,1,0,1,0,
45 1,1,0,0,1,0,1,0,
46 1,1,0,0,1,0,1,0,
47 1,1,0,0,1,0,1,0,
48 1,1,0,0,1,0,1,0,
49 1,1,0,0,1,0,1,0,
50 1,1,0,0,1,0,1,0};
52 short sa[N];
53 short sb[N] =
54 {1,1,0,0,1,0,1,0,
55 1,1,0,0,1,0,1,0,
56 1,1,0,0,1,0,1,0,
57 1,1,0,0,1,0,1,0,
58 1,1,0,0,1,0,1,0,
59 1,1,0,0,1,0,1,0,
60 1,1,0,0,1,0,1,0,
61 1,1,0,0,1,0,1,0};
63 short sc[N] =
64 {1,1,0,0,1,0,1,0,
65 1,1,0,0,1,0,1,0,
66 1,1,0,0,1,0,1,0,
67 1,1,0,0,1,0,1,0,
68 1,1,0,0,1,0,1,0,
69 1,1,0,0,1,0,1,0,
70 1,1,0,0,1,0,1,0,
71 1,1,0,0,1,0,1,0};
73 __attribute__ ((noinline)) int
74 main1 ()
76 int i;
77 /* Check ints. */
79 for (i = 0; i < N; i++)
81 ia[i] = ib[i] & ic[i];
84 /* check results: */
85 #pragma GCC novector
86 for (i = 0; i <N; i++)
88 if (ia[i] != (ib[i] & ic[i]))
89 abort ();
92 /* Check chars. */
94 for (i = 0; i < N; i++)
96 ca[i] = cb[i] & cc[i];
99 /* check results: */
100 #pragma GCC novector
101 for (i = 0; i <N; i++)
103 if (ca[i] != (cb[i] & cc[i]))
104 abort ();
107 /* Check shorts. */
109 for (i = 0; i < N; i++)
111 sa[i] = sb[i] & sc[i];
114 /* check results: */
115 #pragma GCC novector
116 for (i = 0; i <N; i++)
118 if (sa[i] != (sb[i] & sc[i]))
119 abort ();
122 return 0;
125 int main (void)
127 check_vect ();
129 return main1 ();
132 /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */
133 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
134 /* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */