Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/vect/vect-cond-9.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* { dg-require-effective-target vect_cond_mixed } */ | |
2 /* { dg-require-effective-target vect_float } */ | |
3 /* { dg-additional-options "-fno-ipa-icf" } */ | |
4 | |
5 #include "tree-vect.h" | |
6 | |
7 #define N 1024 | |
8 float a[N], b[N], c[N], d[N]; | |
9 int j[N]; | |
10 unsigned char k[N]; | |
11 | |
12 __attribute__((noinline, noclone)) void | |
13 f1 (void) | |
14 { | |
15 int i; | |
16 for (i = 0; i < N; ++i) | |
17 { | |
18 unsigned int x = a[i] < b[i] ? -1 : 0; | |
19 unsigned int y = c[i] < d[i] ? -1 : 0; | |
20 j[i] = (x & y) >> 31; | |
21 } | |
22 } | |
23 | |
24 __attribute__((noinline, noclone)) void | |
25 f2 (void) | |
26 { | |
27 int i; | |
28 for (i = 0; i < N; ++i) | |
29 { | |
30 int x = a[i] < b[i]; | |
31 int y = c[i] < d[i]; | |
32 j[i] = x & y; | |
33 } | |
34 } | |
35 | |
36 __attribute__((noinline, noclone)) void | |
37 f3 (void) | |
38 { | |
39 int i; | |
40 for (i = 0; i < N; ++i) | |
41 j[i] = (a[i] < b[i]) & (c[i] < d[i]); | |
42 } | |
43 | |
44 __attribute__((noinline, noclone)) void | |
45 f4 (void) | |
46 { | |
47 int i; | |
48 for (i = 0; i < N; ++i) | |
49 { | |
50 int x = a[i] < b[i]; | |
51 int y = c[i] < d[i]; | |
52 k[i] = x & y; | |
53 } | |
54 } | |
55 | |
56 __attribute__((noinline, noclone)) void | |
57 f5 (void) | |
58 { | |
59 int i; | |
60 for (i = 0; i < N; ++i) | |
61 k[i] = (a[i] < b[i]) & (c[i] < d[i]); | |
62 } | |
63 | |
64 __attribute__((noinline, noclone)) void | |
65 f6 (void) | |
66 { | |
67 int i; | |
68 for (i = 0; i < N; ++i) | |
69 { | |
70 unsigned int x = a[i] < b[i] ? -1 : 0; | |
71 unsigned int y = c[i] < d[i] ? -1 : 0; | |
72 j[i] = (x | y) >> 31; | |
73 } | |
74 } | |
75 | |
76 __attribute__((noinline, noclone)) void | |
77 f7 (void) | |
78 { | |
79 int i; | |
80 for (i = 0; i < N; ++i) | |
81 { | |
82 int x = a[i] < b[i]; | |
83 int y = c[i] < d[i]; | |
84 j[i] = x | y; | |
85 } | |
86 } | |
87 | |
88 __attribute__((noinline, noclone)) void | |
89 f8 (void) | |
90 { | |
91 int i; | |
92 for (i = 0; i < N; ++i) | |
93 j[i] = (a[i] < b[i]) | (c[i] < d[i]); | |
94 } | |
95 | |
96 __attribute__((noinline, noclone)) void | |
97 f9 (void) | |
98 { | |
99 int i; | |
100 for (i = 0; i < N; ++i) | |
101 { | |
102 int x = a[i] < b[i]; | |
103 int y = c[i] < d[i]; | |
104 k[i] = x | y; | |
105 } | |
106 } | |
107 | |
108 __attribute__((noinline, noclone)) void | |
109 f10 (void) | |
110 { | |
111 int i; | |
112 for (i = 0; i < N; ++i) | |
113 k[i] = (a[i] < b[i]) | (c[i] < d[i]); | |
114 } | |
115 | |
116 int | |
117 main () | |
118 { | |
119 int i; | |
120 | |
121 check_vect (); | |
122 | |
123 for (i = 0; i < N; i++) | |
124 { | |
125 switch (i % 9) | |
126 { | |
127 case 0: asm (""); a[i] = - i - 1; b[i] = i + 1; break; | |
128 case 1: a[i] = 0; b[i] = 0; break; | |
129 case 2: a[i] = i + 1; b[i] = - i - 1; break; | |
130 case 3: a[i] = i; b[i] = i + 7; break; | |
131 case 4: a[i] = i; b[i] = i; break; | |
132 case 5: a[i] = i + 16; b[i] = i + 3; break; | |
133 case 6: a[i] = - i - 5; b[i] = - i; break; | |
134 case 7: a[i] = - i; b[i] = - i; break; | |
135 case 8: a[i] = - i; b[i] = - i - 7; break; | |
136 } | |
137 } | |
138 for (i = 0; i < N; i++) | |
139 { | |
140 switch ((i / 9) % 3) | |
141 { | |
142 case 0: c[i] = a[i / 9]; d[i] = b[i / 9]; break; | |
143 case 1: c[i] = a[i / 9 + 3]; d[i] = b[i / 9 + 3]; break; | |
144 case 2: c[i] = a[i / 9 + 6]; d[i] = b[i / 9 + 6]; break; | |
145 } | |
146 } | |
147 f1 (); | |
148 for (i = 0; i < N; i++) | |
149 if (j[i] != ((i % 3) == 0 && ((i / 9) % 3) == 0)) | |
150 abort (); | |
151 __builtin_memset (j, -6, sizeof (j)); | |
152 f2 (); | |
153 for (i = 0; i < N; i++) | |
154 if (j[i] != ((i % 3) == 0 && ((i / 9) % 3) == 0)) | |
155 abort (); | |
156 __builtin_memset (j, -6, sizeof (j)); | |
157 f3 (); | |
158 for (i = 0; i < N; i++) | |
159 if (j[i] != ((i % 3) == 0 && ((i / 9) % 3) == 0)) | |
160 abort (); | |
161 __builtin_memset (j, -6, sizeof (j)); | |
162 f4 (); | |
163 for (i = 0; i < N; i++) | |
164 if (k[i] != ((i % 3) == 0 && ((i / 9) % 3) == 0)) | |
165 abort (); | |
166 __builtin_memset (k, -6, sizeof (k)); | |
167 f5 (); | |
168 for (i = 0; i < N; i++) | |
169 if (k[i] != ((i % 3) == 0 && ((i / 9) % 3) == 0)) | |
170 abort (); | |
171 __builtin_memset (k, -6, sizeof (k)); | |
172 f6 (); | |
173 for (i = 0; i < N; i++) | |
174 if (j[i] != ((i % 3) == 0 || ((i / 9) % 3) == 0)) | |
175 abort (); | |
176 __builtin_memset (j, -6, sizeof (j)); | |
177 f7 (); | |
178 for (i = 0; i < N; i++) | |
179 if (j[i] != ((i % 3) == 0 || ((i / 9) % 3) == 0)) | |
180 abort (); | |
181 __builtin_memset (j, -6, sizeof (j)); | |
182 f8 (); | |
183 for (i = 0; i < N; i++) | |
184 if (j[i] != ((i % 3) == 0 || ((i / 9) % 3) == 0)) | |
185 abort (); | |
186 __builtin_memset (j, -6, sizeof (j)); | |
187 f9 (); | |
188 for (i = 0; i < N; i++) | |
189 if (k[i] != ((i % 3) == 0 || ((i / 9) % 3) == 0)) | |
190 abort (); | |
191 __builtin_memset (k, -6, sizeof (k)); | |
192 f10 (); | |
193 for (i = 0; i < N; i++) | |
194 if (k[i] != ((i % 3) == 0 || ((i / 9) % 3) == 0)) | |
195 abort (); | |
196 __builtin_memset (k, -6, sizeof (k)); | |
197 | |
198 return 0; | |
199 } | |
200 | |
201 /* { dg-final { scan-tree-dump-times "note: vectorized 1 loops" 10 "vect" } } */ |