* gcc.target/powerpc/builtins-1-be.c <vclzb>: Rename duplicate test
[official-gcc.git] / gcc / testsuite / gcc.target / mips / mips-ps-4.c
blob893358d4c10456f538511946914fc71f8db91ffb
1 /* { dg-do run } */
2 /* { dg-options "-mpaired-single forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
4 /* Test MIPS paired-single comparisons */
5 #include <stdlib.h>
6 #include <stdio.h>
8 typedef float v2sf __attribute__((vector_size(8)));
10 NOMIPS16 int test0 (v2sf a, v2sf b);
11 NOMIPS16 int test1 (v2sf a, v2sf b);
12 NOMIPS16 int test2 (v2sf a, v2sf b);
13 NOMIPS16 int test3 (v2sf a, v2sf b);
14 NOMIPS16 int test4 (v2sf a, v2sf b);
15 NOMIPS16 int test5 (v2sf a, v2sf b);
16 NOMIPS16 int test6 (v2sf a, v2sf b);
17 NOMIPS16 int test7 (v2sf a, v2sf b);
18 NOMIPS16 int test8 (v2sf a, v2sf b);
19 NOMIPS16 int test9 (v2sf a, v2sf b);
20 NOMIPS16 int test10 (v2sf a, v2sf b);
21 NOMIPS16 int test11 (v2sf a, v2sf b);
22 NOMIPS16 int test12 (v2sf a, v2sf b);
23 NOMIPS16 int test13 (v2sf a, v2sf b);
24 NOMIPS16 int test14 (v2sf a, v2sf b);
25 NOMIPS16 int test15 (v2sf a, v2sf b);
26 NOMIPS16 int test16 (v2sf a, v2sf b);
27 NOMIPS16 int test17 (v2sf a, v2sf b);
28 NOMIPS16 int test18 (v2sf a, v2sf b);
29 NOMIPS16 int test19 (v2sf a, v2sf b);
30 NOMIPS16 int test20 (v2sf a, v2sf b);
31 NOMIPS16 int test21 (v2sf a, v2sf b);
32 NOMIPS16 int test22 (v2sf a, v2sf b);
33 NOMIPS16 int test23 (v2sf a, v2sf b);
34 NOMIPS16 int test24 (v2sf a, v2sf b);
35 NOMIPS16 int test25 (v2sf a, v2sf b);
36 NOMIPS16 int test26 (v2sf a, v2sf b);
37 NOMIPS16 int test27 (v2sf a, v2sf b);
38 NOMIPS16 int test28 (v2sf a, v2sf b);
39 NOMIPS16 int test29 (v2sf a, v2sf b);
40 NOMIPS16 int test30 (v2sf a, v2sf b);
41 NOMIPS16 int test31 (v2sf a, v2sf b);
43 float qnan = 1.0f/0.0f - 1.0f/0.0f;
45 NOMIPS16 int main()
47 union { long long ll; int i[2]; } endianness_test;
48 int little_endian;
49 v2sf a, b;
50 int i, j;
52 endianness_test.ll = 1;
53 little_endian = endianness_test.i[0];
55 /* Case 1 {diff, diff} */
56 a = (v2sf) {1, 2};
57 b = (v2sf) {3, 4};
58 i = __builtin_mips_upper_c_eq_ps (a, b);
59 j = __builtin_mips_lower_c_eq_ps (a, b);
60 if (i != 0 || j != 0)
61 abort ();
63 /* Case 2 {same, diff} */
64 a = (v2sf) {1.0, 2.0};
65 b = (v2sf) {1.0, 4.0};
66 i = __builtin_mips_upper_c_eq_ps (a, b);
67 j = __builtin_mips_lower_c_eq_ps (a, b);
68 if (little_endian)
70 if (i != 0 || j != 1)
71 abort ();
73 else
75 if (i != 1 || j != 0)
76 abort ();
79 /* Case 3 {diff, same} */
80 a = (v2sf) {1, 2};
81 b = (v2sf) {3, 2};
82 i = __builtin_mips_upper_c_eq_ps (a, b);
83 j = __builtin_mips_lower_c_eq_ps (a, b);
84 if (little_endian)
86 if (i != 1 || j != 0)
87 abort ();
89 else
91 if (i != 0 || j != 1)
92 abort ();
95 /* Case 4 {same, same} */
96 a = (v2sf) {1, 2};
97 b = (v2sf) {1, 2};
98 i = __builtin_mips_upper_c_eq_ps (a, b);
99 j = __builtin_mips_lower_c_eq_ps (a, b);
100 if (i != 1 || j != 1)
101 abort ();
103 /* Test upper/lower with 16 operators */
104 if (little_endian)
106 a = (v2sf) {1984.0, 10.58};
107 b = (v2sf) {1984.0, 567.345};
109 else
111 a = (v2sf) {10.58, 1984.0};
112 b = (v2sf) {567.345, 1984.0};
115 i = test0 (a, b);
116 if (i != 0)
117 abort ();
118 i = test1 (a, b);
119 if (i != 0)
120 abort ();
121 i = test2 (a, b);
122 if (i != 0)
123 abort ();
124 i = test3 (a, b);
125 if (i != 0)
126 abort ();
127 i = test4 (a, b);
128 if (i != 0)
129 abort ();
130 i = test5 (a, b);
131 if (i != 1)
132 abort ();
133 i = test6 (a, b);
134 if (i != 0)
135 abort ();
136 i = test7 (a, b);
137 if (i != 1)
138 abort ();
139 i = test8 (a, b);
140 if (i != 1)
141 abort ();
142 i = test9 (a, b);
143 if (i != 0)
144 abort ();
145 i = test10 (a, b);
146 if (i != 1)
147 abort ();
148 i = test11 (a, b);
149 if (i != 0)
150 abort ();
151 i = test12 (a, b);
152 if (i != 1)
153 abort ();
154 i = test13 (a, b);
155 if (i != 1)
156 abort ();
157 i = test14 (a, b);
158 if (i != 1)
159 abort ();
160 i = test15 (a, b);
161 if (i != 1)
162 abort ();
163 i = test16 (a, b);
164 if (i != 0)
165 abort ();
166 i = test17 (a, b);
167 if (i != 0)
168 abort ();
169 i = test18 (a, b);
170 if (i != 0)
171 abort ();
172 i = test19 (a, b);
173 if (i != 0)
174 abort ();
175 i = test20 (a, b);
176 if (i != 0)
177 abort ();
178 i = test21 (a, b);
179 if (i != 1)
180 abort ();
181 i = test22 (a, b);
182 if (i != 0)
183 abort ();
184 i = test23 (a, b);
185 if (i != 1)
186 abort ();
187 i = test24 (a, b);
188 if (i != 1)
189 abort ();
190 i = test25 (a, b);
191 if (i != 0)
192 abort ();
193 i = test26 (a, b);
194 if (i != 1)
195 abort ();
196 i = test27 (a, b);
197 if (i != 0)
198 abort ();
199 i = test28 (a, b);
200 if (i != 1)
201 abort ();
202 i = test29 (a, b);
203 if (i != 1)
204 abort ();
205 i = test30 (a, b);
206 if (i != 1)
207 abort ();
208 i = test31 (a, b);
209 if (i != 1)
210 abort ();
212 /* Reverse arguments */
213 i = test0 (b, a);
214 if (i != 0)
215 abort ();
216 i = test1 (b, a);
217 if (i != 0)
218 abort ();
219 i = test2 (b, a);
220 if (i != 0)
221 abort ();
222 i = test3 (b, a);
223 if (i != 0)
224 abort ();
225 i = test4 (b, a);
226 if (i != 0)
227 abort ();
228 i = test5 (b, a);
229 if (i != 1)
230 abort ();
231 i = test6 (b, a);
232 if (i != 0)
233 abort ();
234 i = test7 (b, a);
235 if (i != 1)
236 abort ();
237 i = test8 (b, a);
238 if (i != 0)
239 abort ();
240 i = test9 (b, a);
241 if (i != 0)
242 abort ();
243 i = test10 (b, a);
244 if (i != 0)
245 abort ();
246 i = test11 (b, a);
247 if (i != 0)
248 abort ();
249 i = test12 (b, a);
250 if (i != 0)
251 abort ();
252 i = test13 (b, a);
253 if (i != 1)
254 abort ();
255 i = test14 (b, a);
256 if (i != 0)
257 abort ();
258 i = test15 (b, a);
259 if (i != 1)
260 abort ();
261 i = test16 (b, a);
262 if (i != 0)
263 abort ();
264 i = test17 (b, a);
265 if (i != 0)
266 abort ();
267 i = test18 (b, a);
268 if (i != 0)
269 abort ();
270 i = test19 (b, a);
271 if (i != 0)
272 abort ();
273 i = test20 (b, a);
274 if (i != 0)
275 abort ();
276 i = test21 (b, a);
277 if (i != 1)
278 abort ();
279 i = test22 (b, a);
280 if (i != 0)
281 abort ();
282 i = test23 (b, a);
283 if (i != 1)
284 abort ();
285 i = test24 (b, a);
286 if (i != 0)
287 abort ();
288 i = test25 (b, a);
289 if (i != 0)
290 abort ();
291 i = test26 (b, a);
292 if (i != 0)
293 abort ();
294 i = test27 (b, a);
295 if (i != 0)
296 abort ();
297 i = test28 (b, a);
298 if (i != 0)
299 abort ();
300 i = test29 (b, a);
301 if (i != 1)
302 abort ();
303 i = test30 (b, a);
304 if (i != 0)
305 abort ();
306 i = test31 (b, a);
307 if (i != 1)
308 abort ();
310 #ifndef __FAST_MATH__
311 /* Test upper/lower with 16 operators */
312 if (little_endian)
314 a = (v2sf) {qnan, qnan};
315 b = (v2sf) {1984.0, 567.345};
317 else
319 a = (v2sf) {qnan, qnan};
320 b = (v2sf) {567.345, 1984.0};
323 i = test0 (a, b);
324 if (i != 0)
325 abort ();
326 i = test1 (a, b);
327 if (i != 0)
328 abort ();
329 i = test2 (a, b);
330 if (i != 1)
331 abort ();
332 i = test3 (a, b);
333 if (i != 1)
334 abort ();
335 i = test4 (a, b);
336 if (i != 0)
337 abort ();
338 i = test5 (a, b);
339 if (i != 0)
340 abort ();
341 i = test6 (a, b);
342 if (i != 1)
343 abort ();
344 i = test7 (a, b);
345 if (i != 1)
346 abort ();
347 i = test8 (a, b);
348 if (i != 0)
349 abort ();
350 i = test9 (a, b);
351 if (i != 0)
352 abort ();
353 i = test10 (a, b);
354 if (i != 1)
355 abort ();
356 i = test11 (a, b);
357 if (i != 1)
358 abort ();
359 i = test12 (a, b);
360 if (i != 0)
361 abort ();
362 i = test13 (a, b);
363 if (i != 0)
364 abort ();
365 i = test14 (a, b);
366 if (i != 1)
367 abort ();
368 i = test15 (a, b);
369 if (i != 1)
370 abort ();
371 i = test16 (a, b);
372 if (i != 0)
373 abort ();
374 i = test17 (a, b);
375 if (i != 0)
376 abort ();
377 i = test18 (a, b);
378 if (i != 1)
379 abort ();
380 i = test19 (a, b);
381 if (i != 1)
382 abort ();
383 i = test20 (a, b);
384 if (i != 0)
385 abort ();
386 i = test21 (a, b);
387 if (i != 0)
388 abort ();
389 i = test22 (a, b);
390 if (i != 1)
391 abort ();
392 i = test23 (a, b);
393 if (i != 1)
394 abort ();
395 i = test24 (a, b);
396 if (i != 0)
397 abort ();
398 i = test25 (a, b);
399 if (i != 0)
400 abort ();
401 i = test26 (a, b);
402 if (i != 1)
403 abort ();
404 i = test27 (a, b);
405 if (i != 1)
406 abort ();
407 i = test28 (a, b);
408 if (i != 0)
409 abort ();
410 i = test29 (a, b);
411 if (i != 0)
412 abort ();
413 i = test30 (a, b);
414 if (i != 1)
415 abort ();
416 i = test31 (a, b);
417 if (i != 1)
418 abort ();
419 #endif
421 printf ("Test Passes\n");
422 exit (0);
425 NOMIPS16 int test0 (v2sf a, v2sf b)
427 return __builtin_mips_upper_c_f_ps (a, b);
430 NOMIPS16 int test1 (v2sf a, v2sf b)
432 return __builtin_mips_lower_c_f_ps (a, b);
435 NOMIPS16 int test2 (v2sf a, v2sf b)
437 return __builtin_mips_upper_c_un_ps (a, b);
440 NOMIPS16 int test3 (v2sf a, v2sf b)
442 return __builtin_mips_lower_c_un_ps (a, b);
445 NOMIPS16 int test4 (v2sf a, v2sf b)
447 return __builtin_mips_upper_c_eq_ps (a, b);
450 NOMIPS16 int test5 (v2sf a, v2sf b)
452 return __builtin_mips_lower_c_eq_ps (a, b);
455 NOMIPS16 int test6 (v2sf a, v2sf b)
457 return __builtin_mips_upper_c_ueq_ps (a, b);
460 NOMIPS16 int test7 (v2sf a, v2sf b)
462 return __builtin_mips_lower_c_ueq_ps (a, b);
465 NOMIPS16 int test8 (v2sf a, v2sf b)
467 return __builtin_mips_upper_c_olt_ps (a, b);
470 NOMIPS16 int test9 (v2sf a, v2sf b)
472 return __builtin_mips_lower_c_olt_ps (a, b);
475 NOMIPS16 int test10 (v2sf a, v2sf b)
477 return __builtin_mips_upper_c_ult_ps (a, b);
480 NOMIPS16 int test11 (v2sf a, v2sf b)
482 return __builtin_mips_lower_c_ult_ps (a, b);
485 NOMIPS16 int test12 (v2sf a, v2sf b)
487 return __builtin_mips_upper_c_ole_ps (a, b);
490 NOMIPS16 int test13 (v2sf a, v2sf b)
492 return __builtin_mips_lower_c_ole_ps (a, b);
495 NOMIPS16 int test14 (v2sf a, v2sf b)
497 return __builtin_mips_upper_c_ule_ps (a, b);
500 NOMIPS16 int test15 (v2sf a, v2sf b)
502 return __builtin_mips_lower_c_ule_ps (a, b);
505 NOMIPS16 int test16 (v2sf a, v2sf b)
507 return __builtin_mips_upper_c_sf_ps (a, b);
510 NOMIPS16 int test17 (v2sf a, v2sf b)
512 return __builtin_mips_lower_c_sf_ps (a, b);
515 NOMIPS16 int test18 (v2sf a, v2sf b)
517 return __builtin_mips_upper_c_ngle_ps (a, b);
520 NOMIPS16 int test19 (v2sf a, v2sf b)
522 return __builtin_mips_lower_c_ngle_ps (a, b);
525 NOMIPS16 int test20 (v2sf a, v2sf b)
527 return __builtin_mips_upper_c_seq_ps (a, b);
530 NOMIPS16 int test21 (v2sf a, v2sf b)
532 return __builtin_mips_lower_c_seq_ps (a, b);
535 NOMIPS16 int test22 (v2sf a, v2sf b)
537 return __builtin_mips_upper_c_ngl_ps (a, b);
540 NOMIPS16 int test23 (v2sf a, v2sf b)
542 return __builtin_mips_lower_c_ngl_ps (a, b);
545 NOMIPS16 int test24 (v2sf a, v2sf b)
547 return __builtin_mips_upper_c_lt_ps (a, b);
550 NOMIPS16 int test25 (v2sf a, v2sf b)
552 return __builtin_mips_lower_c_lt_ps (a, b);
555 NOMIPS16 int test26 (v2sf a, v2sf b)
557 return __builtin_mips_upper_c_nge_ps (a, b);
560 NOMIPS16 int test27 (v2sf a, v2sf b)
562 return __builtin_mips_lower_c_nge_ps (a, b);
565 NOMIPS16 int test28 (v2sf a, v2sf b)
567 return __builtin_mips_upper_c_le_ps (a, b);
570 NOMIPS16 int test29 (v2sf a, v2sf b)
572 return __builtin_mips_lower_c_le_ps (a, b);
575 NOMIPS16 int test30 (v2sf a, v2sf b)
577 return __builtin_mips_upper_c_ngt_ps (a, b);
580 NOMIPS16 int test31 (v2sf a, v2sf b)
582 return __builtin_mips_lower_c_ngt_ps (a, b);