145
|
1 /* Disabling epilogues until we find a better way to deal with scans. */
|
|
2 /* { dg-additional-options "--param vect-epilogues-nomask=0" } */
|
111
|
3 /* { dg-require-effective-target vect_int } */
|
|
4
|
|
5 #include <stdarg.h>
|
|
6 #include "tree-vect.h"
|
|
7
|
|
8 #define N 64
|
|
9
|
|
10 __attribute__ ((noinline)) int
|
|
11 main1 ()
|
|
12 {
|
|
13 int i;
|
|
14 int ia[N];
|
|
15 int ib[N]=
|
|
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,
|
|
20 1,1,0,0,1,0,1,0,
|
|
21 1,1,0,0,1,0,1,0,
|
|
22 1,1,0,0,1,0,1,0,
|
|
23 1,1,0,0,1,0,1,0};
|
|
24 int ic[N] =
|
|
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,
|
|
30 1,1,0,0,1,0,1,0,
|
|
31 1,1,0,0,1,0,1,0,
|
|
32 1,1,0,0,1,0,1,0};
|
|
33
|
|
34 char ca[N];
|
|
35 char cb[N] =
|
|
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,
|
|
41 1,1,0,0,1,0,1,0,
|
|
42 1,1,0,0,1,0,1,0,
|
|
43 1,1,0,0,1,0,1,0};
|
|
44
|
|
45 char cc[N] =
|
|
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,
|
|
51 1,1,0,0,1,0,1,0,
|
|
52 1,1,0,0,1,0,1,0,
|
|
53 1,1,0,0,1,0,1,0};
|
|
54
|
|
55 short sa[N];
|
|
56 short sb[N] =
|
|
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,
|
|
62 1,1,0,0,1,0,1,0,
|
|
63 1,1,0,0,1,0,1,0,
|
|
64 1,1,0,0,1,0,1,0};
|
|
65
|
|
66 short sc[N] =
|
|
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,
|
|
72 1,1,0,0,1,0,1,0,
|
|
73 1,1,0,0,1,0,1,0,
|
|
74 1,1,0,0,1,0,1,0};
|
|
75
|
|
76 /* Check ints. */
|
|
77
|
|
78 for (i = 0; i < N; i++)
|
|
79 {
|
|
80 ia[i] = (ib[i] || ic[i]);
|
|
81 }
|
|
82
|
|
83 /* check results: */
|
|
84 for (i = 0; i <N; i++)
|
|
85 {
|
|
86 if (ia[i] != (ib[i] || ic[i]))
|
|
87 abort ();
|
|
88 }
|
|
89
|
|
90 /* Check chars. */
|
|
91
|
|
92 for (i = 0; i < N; i++)
|
|
93 {
|
|
94 ca[i] = (cb[i] || cc[i]);
|
|
95 }
|
|
96
|
|
97 /* check results: */
|
|
98 for (i = 0; i <N; i++)
|
|
99 {
|
|
100 if (ca[i] != (cb[i] || cc[i]))
|
|
101 abort ();
|
|
102 }
|
|
103
|
|
104 /* Check shorts. */
|
|
105
|
|
106 for (i = 0; i < N; i++)
|
|
107 {
|
|
108 sa[i] = (sb[i] || sc[i]);
|
|
109 }
|
|
110
|
|
111 /* check results: */
|
|
112 for (i = 0; i <N; i++)
|
|
113 {
|
|
114 if (sa[i] != (sb[i] || sc[i]))
|
|
115 abort ();
|
|
116 }
|
|
117
|
|
118 return 0;
|
|
119 }
|
|
120
|
|
121 int main (void)
|
|
122 {
|
|
123 check_vect ();
|
|
124
|
|
125 return main1 ();
|
|
126 }
|
145
|
127 /* The short-cutting || is if-converted using COND_EXPRs rather than
|
|
128 bitwise or. */
|
|
129 /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail { ! vect_condition } } } } */
|
131
|
130 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { xfail { ! vect_align_stack_vars } } } } */
|