]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.target/powerpc/pr65849-2.c
Get rid of dg-skip-if etc. default args
[thirdparty/gcc.git] / gcc / testsuite / gcc.target / powerpc / pr65849-2.c
1 /* { dg-do compile { target { powerpc*-*-* } } } */
2 /* { dg-require-effective-target powerpc_p8vector_ok } */
3 /* { dg-skip-if "" { powerpc*-*-darwin* } } */
4 /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
5 /* { dg-options "-mcpu=power8 -O2 -mno-upper-regs-sf" } */
6
7 /* Test whether we can enable the -mupper-regs-sf with target pragmas. Make
8 sure float values are allocated to the Altivec registers as well as the
9 traditional FPR registers. */
10
11 #ifndef TYPE
12 #define TYPE float
13 #endif
14
15 #ifndef MASK_TYPE
16 #define MASK_TYPE unsigned long long
17 #endif
18
19 #define MASK_ONE ((MASK_TYPE)1)
20 #define ZERO ((TYPE) 0.0)
21
22 #pragma GCC target ("upper-regs-sf")
23 TYPE
24 test_add (const MASK_TYPE *add_mask, const TYPE *add_values,
25 const MASK_TYPE *sub_mask, const TYPE *sub_values,
26 const MASK_TYPE *mul_mask, const TYPE *mul_values,
27 const MASK_TYPE *div_mask, const TYPE *div_values,
28 const MASK_TYPE *eq0_mask, int *eq0_ptr)
29 {
30 TYPE value;
31 TYPE value00 = ZERO;
32 TYPE value01 = ZERO;
33 TYPE value02 = ZERO;
34 TYPE value03 = ZERO;
35 TYPE value04 = ZERO;
36 TYPE value05 = ZERO;
37 TYPE value06 = ZERO;
38 TYPE value07 = ZERO;
39 TYPE value08 = ZERO;
40 TYPE value09 = ZERO;
41 TYPE value10 = ZERO;
42 TYPE value11 = ZERO;
43 TYPE value12 = ZERO;
44 TYPE value13 = ZERO;
45 TYPE value14 = ZERO;
46 TYPE value15 = ZERO;
47 TYPE value16 = ZERO;
48 TYPE value17 = ZERO;
49 TYPE value18 = ZERO;
50 TYPE value19 = ZERO;
51 TYPE value20 = ZERO;
52 TYPE value21 = ZERO;
53 TYPE value22 = ZERO;
54 TYPE value23 = ZERO;
55 TYPE value24 = ZERO;
56 TYPE value25 = ZERO;
57 TYPE value26 = ZERO;
58 TYPE value27 = ZERO;
59 TYPE value28 = ZERO;
60 TYPE value29 = ZERO;
61 TYPE value30 = ZERO;
62 TYPE value31 = ZERO;
63 TYPE value32 = ZERO;
64 TYPE value33 = ZERO;
65 TYPE value34 = ZERO;
66 TYPE value35 = ZERO;
67 TYPE value36 = ZERO;
68 TYPE value37 = ZERO;
69 TYPE value38 = ZERO;
70 TYPE value39 = ZERO;
71 MASK_TYPE mask;
72 int eq0;
73
74 while ((mask = *add_mask++) != 0)
75 {
76 value = *add_values++;
77
78 __asm__ (" #reg %0" : "+d" (value));
79
80 if ((mask & (MASK_ONE << 0)) != 0)
81 value00 += value;
82
83 if ((mask & (MASK_ONE << 1)) != 0)
84 value01 += value;
85
86 if ((mask & (MASK_ONE << 2)) != 0)
87 value02 += value;
88
89 if ((mask & (MASK_ONE << 3)) != 0)
90 value03 += value;
91
92 if ((mask & (MASK_ONE << 4)) != 0)
93 value04 += value;
94
95 if ((mask & (MASK_ONE << 5)) != 0)
96 value05 += value;
97
98 if ((mask & (MASK_ONE << 6)) != 0)
99 value06 += value;
100
101 if ((mask & (MASK_ONE << 7)) != 0)
102 value07 += value;
103
104 if ((mask & (MASK_ONE << 8)) != 0)
105 value08 += value;
106
107 if ((mask & (MASK_ONE << 9)) != 0)
108 value09 += value;
109
110 if ((mask & (MASK_ONE << 10)) != 0)
111 value10 += value;
112
113 if ((mask & (MASK_ONE << 11)) != 0)
114 value11 += value;
115
116 if ((mask & (MASK_ONE << 12)) != 0)
117 value12 += value;
118
119 if ((mask & (MASK_ONE << 13)) != 0)
120 value13 += value;
121
122 if ((mask & (MASK_ONE << 14)) != 0)
123 value14 += value;
124
125 if ((mask & (MASK_ONE << 15)) != 0)
126 value15 += value;
127
128 if ((mask & (MASK_ONE << 16)) != 0)
129 value16 += value;
130
131 if ((mask & (MASK_ONE << 17)) != 0)
132 value17 += value;
133
134 if ((mask & (MASK_ONE << 18)) != 0)
135 value18 += value;
136
137 if ((mask & (MASK_ONE << 19)) != 0)
138 value19 += value;
139
140 if ((mask & (MASK_ONE << 20)) != 0)
141 value20 += value;
142
143 if ((mask & (MASK_ONE << 21)) != 0)
144 value21 += value;
145
146 if ((mask & (MASK_ONE << 22)) != 0)
147 value22 += value;
148
149 if ((mask & (MASK_ONE << 23)) != 0)
150 value23 += value;
151
152 if ((mask & (MASK_ONE << 24)) != 0)
153 value24 += value;
154
155 if ((mask & (MASK_ONE << 25)) != 0)
156 value25 += value;
157
158 if ((mask & (MASK_ONE << 26)) != 0)
159 value26 += value;
160
161 if ((mask & (MASK_ONE << 27)) != 0)
162 value27 += value;
163
164 if ((mask & (MASK_ONE << 28)) != 0)
165 value28 += value;
166
167 if ((mask & (MASK_ONE << 29)) != 0)
168 value29 += value;
169
170 if ((mask & (MASK_ONE << 30)) != 0)
171 value30 += value;
172
173 if ((mask & (MASK_ONE << 31)) != 0)
174 value31 += value;
175
176 if ((mask & (MASK_ONE << 32)) != 0)
177 value32 += value;
178
179 if ((mask & (MASK_ONE << 33)) != 0)
180 value33 += value;
181
182 if ((mask & (MASK_ONE << 34)) != 0)
183 value34 += value;
184
185 if ((mask & (MASK_ONE << 35)) != 0)
186 value35 += value;
187
188 if ((mask & (MASK_ONE << 36)) != 0)
189 value36 += value;
190
191 if ((mask & (MASK_ONE << 37)) != 0)
192 value37 += value;
193
194 if ((mask & (MASK_ONE << 38)) != 0)
195 value38 += value;
196
197 if ((mask & (MASK_ONE << 39)) != 0)
198 value39 += value;
199 }
200
201 while ((mask = *sub_mask++) != 0)
202 {
203 value = *sub_values++;
204
205 __asm__ (" #reg %0" : "+d" (value));
206
207 if ((mask & (MASK_ONE << 0)) != 0)
208 value00 -= value;
209
210 if ((mask & (MASK_ONE << 1)) != 0)
211 value01 -= value;
212
213 if ((mask & (MASK_ONE << 2)) != 0)
214 value02 -= value;
215
216 if ((mask & (MASK_ONE << 3)) != 0)
217 value03 -= value;
218
219 if ((mask & (MASK_ONE << 4)) != 0)
220 value04 -= value;
221
222 if ((mask & (MASK_ONE << 5)) != 0)
223 value05 -= value;
224
225 if ((mask & (MASK_ONE << 6)) != 0)
226 value06 -= value;
227
228 if ((mask & (MASK_ONE << 7)) != 0)
229 value07 -= value;
230
231 if ((mask & (MASK_ONE << 8)) != 0)
232 value08 -= value;
233
234 if ((mask & (MASK_ONE << 9)) != 0)
235 value09 -= value;
236
237 if ((mask & (MASK_ONE << 10)) != 0)
238 value10 -= value;
239
240 if ((mask & (MASK_ONE << 11)) != 0)
241 value11 -= value;
242
243 if ((mask & (MASK_ONE << 12)) != 0)
244 value12 -= value;
245
246 if ((mask & (MASK_ONE << 13)) != 0)
247 value13 -= value;
248
249 if ((mask & (MASK_ONE << 14)) != 0)
250 value14 -= value;
251
252 if ((mask & (MASK_ONE << 15)) != 0)
253 value15 -= value;
254
255 if ((mask & (MASK_ONE << 16)) != 0)
256 value16 -= value;
257
258 if ((mask & (MASK_ONE << 17)) != 0)
259 value17 -= value;
260
261 if ((mask & (MASK_ONE << 18)) != 0)
262 value18 -= value;
263
264 if ((mask & (MASK_ONE << 19)) != 0)
265 value19 -= value;
266
267 if ((mask & (MASK_ONE << 20)) != 0)
268 value20 -= value;
269
270 if ((mask & (MASK_ONE << 21)) != 0)
271 value21 -= value;
272
273 if ((mask & (MASK_ONE << 22)) != 0)
274 value22 -= value;
275
276 if ((mask & (MASK_ONE << 23)) != 0)
277 value23 -= value;
278
279 if ((mask & (MASK_ONE << 24)) != 0)
280 value24 -= value;
281
282 if ((mask & (MASK_ONE << 25)) != 0)
283 value25 -= value;
284
285 if ((mask & (MASK_ONE << 26)) != 0)
286 value26 -= value;
287
288 if ((mask & (MASK_ONE << 27)) != 0)
289 value27 -= value;
290
291 if ((mask & (MASK_ONE << 28)) != 0)
292 value28 -= value;
293
294 if ((mask & (MASK_ONE << 29)) != 0)
295 value29 -= value;
296
297 if ((mask & (MASK_ONE << 30)) != 0)
298 value30 -= value;
299
300 if ((mask & (MASK_ONE << 31)) != 0)
301 value31 -= value;
302
303 if ((mask & (MASK_ONE << 32)) != 0)
304 value32 -= value;
305
306 if ((mask & (MASK_ONE << 33)) != 0)
307 value33 -= value;
308
309 if ((mask & (MASK_ONE << 34)) != 0)
310 value34 -= value;
311
312 if ((mask & (MASK_ONE << 35)) != 0)
313 value35 -= value;
314
315 if ((mask & (MASK_ONE << 36)) != 0)
316 value36 -= value;
317
318 if ((mask & (MASK_ONE << 37)) != 0)
319 value37 -= value;
320
321 if ((mask & (MASK_ONE << 38)) != 0)
322 value38 -= value;
323
324 if ((mask & (MASK_ONE << 39)) != 0)
325 value39 -= value;
326 }
327
328 while ((mask = *mul_mask++) != 0)
329 {
330 value = *mul_values++;
331
332 __asm__ (" #reg %0" : "+d" (value));
333
334 if ((mask & (MASK_ONE << 0)) != 0)
335 value00 *= value;
336
337 if ((mask & (MASK_ONE << 1)) != 0)
338 value01 *= value;
339
340 if ((mask & (MASK_ONE << 2)) != 0)
341 value02 *= value;
342
343 if ((mask & (MASK_ONE << 3)) != 0)
344 value03 *= value;
345
346 if ((mask & (MASK_ONE << 4)) != 0)
347 value04 *= value;
348
349 if ((mask & (MASK_ONE << 5)) != 0)
350 value05 *= value;
351
352 if ((mask & (MASK_ONE << 6)) != 0)
353 value06 *= value;
354
355 if ((mask & (MASK_ONE << 7)) != 0)
356 value07 *= value;
357
358 if ((mask & (MASK_ONE << 8)) != 0)
359 value08 *= value;
360
361 if ((mask & (MASK_ONE << 9)) != 0)
362 value09 *= value;
363
364 if ((mask & (MASK_ONE << 10)) != 0)
365 value10 *= value;
366
367 if ((mask & (MASK_ONE << 11)) != 0)
368 value11 *= value;
369
370 if ((mask & (MASK_ONE << 12)) != 0)
371 value12 *= value;
372
373 if ((mask & (MASK_ONE << 13)) != 0)
374 value13 *= value;
375
376 if ((mask & (MASK_ONE << 14)) != 0)
377 value14 *= value;
378
379 if ((mask & (MASK_ONE << 15)) != 0)
380 value15 *= value;
381
382 if ((mask & (MASK_ONE << 16)) != 0)
383 value16 *= value;
384
385 if ((mask & (MASK_ONE << 17)) != 0)
386 value17 *= value;
387
388 if ((mask & (MASK_ONE << 18)) != 0)
389 value18 *= value;
390
391 if ((mask & (MASK_ONE << 19)) != 0)
392 value19 *= value;
393
394 if ((mask & (MASK_ONE << 20)) != 0)
395 value20 *= value;
396
397 if ((mask & (MASK_ONE << 21)) != 0)
398 value21 *= value;
399
400 if ((mask & (MASK_ONE << 22)) != 0)
401 value22 *= value;
402
403 if ((mask & (MASK_ONE << 23)) != 0)
404 value23 *= value;
405
406 if ((mask & (MASK_ONE << 24)) != 0)
407 value24 *= value;
408
409 if ((mask & (MASK_ONE << 25)) != 0)
410 value25 *= value;
411
412 if ((mask & (MASK_ONE << 26)) != 0)
413 value26 *= value;
414
415 if ((mask & (MASK_ONE << 27)) != 0)
416 value27 *= value;
417
418 if ((mask & (MASK_ONE << 28)) != 0)
419 value28 *= value;
420
421 if ((mask & (MASK_ONE << 29)) != 0)
422 value29 *= value;
423
424 if ((mask & (MASK_ONE << 30)) != 0)
425 value30 *= value;
426
427 if ((mask & (MASK_ONE << 31)) != 0)
428 value31 *= value;
429
430 if ((mask & (MASK_ONE << 32)) != 0)
431 value32 *= value;
432
433 if ((mask & (MASK_ONE << 33)) != 0)
434 value33 *= value;
435
436 if ((mask & (MASK_ONE << 34)) != 0)
437 value34 *= value;
438
439 if ((mask & (MASK_ONE << 35)) != 0)
440 value35 *= value;
441
442 if ((mask & (MASK_ONE << 36)) != 0)
443 value36 *= value;
444
445 if ((mask & (MASK_ONE << 37)) != 0)
446 value37 *= value;
447
448 if ((mask & (MASK_ONE << 38)) != 0)
449 value38 *= value;
450
451 if ((mask & (MASK_ONE << 39)) != 0)
452 value39 *= value;
453 }
454
455 while ((mask = *div_mask++) != 0)
456 {
457 value = *div_values++;
458
459 __asm__ (" #reg %0" : "+d" (value));
460
461 if ((mask & (MASK_ONE << 0)) != 0)
462 value00 /= value;
463
464 if ((mask & (MASK_ONE << 1)) != 0)
465 value01 /= value;
466
467 if ((mask & (MASK_ONE << 2)) != 0)
468 value02 /= value;
469
470 if ((mask & (MASK_ONE << 3)) != 0)
471 value03 /= value;
472
473 if ((mask & (MASK_ONE << 4)) != 0)
474 value04 /= value;
475
476 if ((mask & (MASK_ONE << 5)) != 0)
477 value05 /= value;
478
479 if ((mask & (MASK_ONE << 6)) != 0)
480 value06 /= value;
481
482 if ((mask & (MASK_ONE << 7)) != 0)
483 value07 /= value;
484
485 if ((mask & (MASK_ONE << 8)) != 0)
486 value08 /= value;
487
488 if ((mask & (MASK_ONE << 9)) != 0)
489 value09 /= value;
490
491 if ((mask & (MASK_ONE << 10)) != 0)
492 value10 /= value;
493
494 if ((mask & (MASK_ONE << 11)) != 0)
495 value11 /= value;
496
497 if ((mask & (MASK_ONE << 12)) != 0)
498 value12 /= value;
499
500 if ((mask & (MASK_ONE << 13)) != 0)
501 value13 /= value;
502
503 if ((mask & (MASK_ONE << 14)) != 0)
504 value14 /= value;
505
506 if ((mask & (MASK_ONE << 15)) != 0)
507 value15 /= value;
508
509 if ((mask & (MASK_ONE << 16)) != 0)
510 value16 /= value;
511
512 if ((mask & (MASK_ONE << 17)) != 0)
513 value17 /= value;
514
515 if ((mask & (MASK_ONE << 18)) != 0)
516 value18 /= value;
517
518 if ((mask & (MASK_ONE << 19)) != 0)
519 value19 /= value;
520
521 if ((mask & (MASK_ONE << 20)) != 0)
522 value20 /= value;
523
524 if ((mask & (MASK_ONE << 21)) != 0)
525 value21 /= value;
526
527 if ((mask & (MASK_ONE << 22)) != 0)
528 value22 /= value;
529
530 if ((mask & (MASK_ONE << 23)) != 0)
531 value23 /= value;
532
533 if ((mask & (MASK_ONE << 24)) != 0)
534 value24 /= value;
535
536 if ((mask & (MASK_ONE << 25)) != 0)
537 value25 /= value;
538
539 if ((mask & (MASK_ONE << 26)) != 0)
540 value26 /= value;
541
542 if ((mask & (MASK_ONE << 27)) != 0)
543 value27 /= value;
544
545 if ((mask & (MASK_ONE << 28)) != 0)
546 value28 /= value;
547
548 if ((mask & (MASK_ONE << 29)) != 0)
549 value29 /= value;
550
551 if ((mask & (MASK_ONE << 30)) != 0)
552 value30 /= value;
553
554 if ((mask & (MASK_ONE << 31)) != 0)
555 value31 /= value;
556
557 if ((mask & (MASK_ONE << 32)) != 0)
558 value32 /= value;
559
560 if ((mask & (MASK_ONE << 33)) != 0)
561 value33 /= value;
562
563 if ((mask & (MASK_ONE << 34)) != 0)
564 value34 /= value;
565
566 if ((mask & (MASK_ONE << 35)) != 0)
567 value35 /= value;
568
569 if ((mask & (MASK_ONE << 36)) != 0)
570 value36 /= value;
571
572 if ((mask & (MASK_ONE << 37)) != 0)
573 value37 /= value;
574
575 if ((mask & (MASK_ONE << 38)) != 0)
576 value38 /= value;
577
578 if ((mask & (MASK_ONE << 39)) != 0)
579 value39 /= value;
580 }
581
582 while ((mask = *eq0_mask++) != 0)
583 {
584 eq0 = 0;
585
586 if ((mask & (MASK_ONE << 0)) != 0)
587 eq0 |= (value00 == ZERO);
588
589 if ((mask & (MASK_ONE << 1)) != 0)
590 eq0 |= (value01 == ZERO);
591
592 if ((mask & (MASK_ONE << 2)) != 0)
593 eq0 |= (value02 == ZERO);
594
595 if ((mask & (MASK_ONE << 3)) != 0)
596 eq0 |= (value03 == ZERO);
597
598 if ((mask & (MASK_ONE << 4)) != 0)
599 eq0 |= (value04 == ZERO);
600
601 if ((mask & (MASK_ONE << 5)) != 0)
602 eq0 |= (value05 == ZERO);
603
604 if ((mask & (MASK_ONE << 6)) != 0)
605 eq0 |= (value06 == ZERO);
606
607 if ((mask & (MASK_ONE << 7)) != 0)
608 eq0 |= (value07 == ZERO);
609
610 if ((mask & (MASK_ONE << 8)) != 0)
611 eq0 |= (value08 == ZERO);
612
613 if ((mask & (MASK_ONE << 9)) != 0)
614 eq0 |= (value09 == ZERO);
615
616 if ((mask & (MASK_ONE << 10)) != 0)
617 eq0 |= (value10 == ZERO);
618
619 if ((mask & (MASK_ONE << 11)) != 0)
620 eq0 |= (value11 == ZERO);
621
622 if ((mask & (MASK_ONE << 12)) != 0)
623 eq0 |= (value12 == ZERO);
624
625 if ((mask & (MASK_ONE << 13)) != 0)
626 eq0 |= (value13 == ZERO);
627
628 if ((mask & (MASK_ONE << 14)) != 0)
629 eq0 |= (value14 == ZERO);
630
631 if ((mask & (MASK_ONE << 15)) != 0)
632 eq0 |= (value15 == ZERO);
633
634 if ((mask & (MASK_ONE << 16)) != 0)
635 eq0 |= (value16 == ZERO);
636
637 if ((mask & (MASK_ONE << 17)) != 0)
638 eq0 |= (value17 == ZERO);
639
640 if ((mask & (MASK_ONE << 18)) != 0)
641 eq0 |= (value18 == ZERO);
642
643 if ((mask & (MASK_ONE << 19)) != 0)
644 eq0 |= (value19 == ZERO);
645
646 if ((mask & (MASK_ONE << 20)) != 0)
647 eq0 |= (value20 == ZERO);
648
649 if ((mask & (MASK_ONE << 21)) != 0)
650 eq0 |= (value21 == ZERO);
651
652 if ((mask & (MASK_ONE << 22)) != 0)
653 eq0 |= (value22 == ZERO);
654
655 if ((mask & (MASK_ONE << 23)) != 0)
656 eq0 |= (value23 == ZERO);
657
658 if ((mask & (MASK_ONE << 24)) != 0)
659 eq0 |= (value24 == ZERO);
660
661 if ((mask & (MASK_ONE << 25)) != 0)
662 eq0 |= (value25 == ZERO);
663
664 if ((mask & (MASK_ONE << 26)) != 0)
665 eq0 |= (value26 == ZERO);
666
667 if ((mask & (MASK_ONE << 27)) != 0)
668 eq0 |= (value27 == ZERO);
669
670 if ((mask & (MASK_ONE << 28)) != 0)
671 eq0 |= (value28 == ZERO);
672
673 if ((mask & (MASK_ONE << 29)) != 0)
674 eq0 |= (value29 == ZERO);
675
676 if ((mask & (MASK_ONE << 30)) != 0)
677 eq0 |= (value30 == ZERO);
678
679 if ((mask & (MASK_ONE << 31)) != 0)
680 eq0 |= (value31 == ZERO);
681
682 if ((mask & (MASK_ONE << 32)) != 0)
683 eq0 |= (value32 == ZERO);
684
685 if ((mask & (MASK_ONE << 33)) != 0)
686 eq0 |= (value33 == ZERO);
687
688 if ((mask & (MASK_ONE << 34)) != 0)
689 eq0 |= (value34 == ZERO);
690
691 if ((mask & (MASK_ONE << 35)) != 0)
692 eq0 |= (value35 == ZERO);
693
694 if ((mask & (MASK_ONE << 36)) != 0)
695 eq0 |= (value36 == ZERO);
696
697 if ((mask & (MASK_ONE << 37)) != 0)
698 eq0 |= (value37 == ZERO);
699
700 if ((mask & (MASK_ONE << 38)) != 0)
701 eq0 |= (value38 == ZERO);
702
703 if ((mask & (MASK_ONE << 39)) != 0)
704 eq0 |= (value39 == ZERO);
705
706 *eq0_ptr++ = eq0;
707 }
708
709 return ( value00 + value01 + value02 + value03 + value04
710 + value05 + value06 + value07 + value08 + value09
711 + value10 + value11 + value12 + value13 + value14
712 + value15 + value16 + value17 + value18 + value19
713 + value20 + value21 + value22 + value23 + value24
714 + value25 + value26 + value27 + value28 + value29
715 + value30 + value31 + value32 + value33 + value34
716 + value35 + value36 + value37 + value38 + value39);
717 }
718
719 /* { dg-final { scan-assembler "fadds" } } */
720 /* { dg-final { scan-assembler "fsubs" } } */
721 /* { dg-final { scan-assembler "fmuls" } } */
722 /* { dg-final { scan-assembler "fdivs" } } */
723 /* { dg-final { scan-assembler "fcmpu" } } */
724 /* { dg-final { scan-assembler "xsaddsp" } } */
725 /* { dg-final { scan-assembler "xssubsp" } } */
726 /* { dg-final { scan-assembler "xsmulsp" } } */
727 /* { dg-final { scan-assembler "xsdivsp" } } */
728 /* { dg-final { scan-assembler "xscmpudp" } } */