modula2: Add noreturn attribute to m2/gm2-libs/M2RTS.mod
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / p8vector-ldst.c
blob09a436bc6514ab0a82911ab6bf58fb3c6b905bc3
1 /* { dg-do compile { target { powerpc*-*-* } } } */
2 /* { dg-skip-if "" { powerpc*-*-darwin* } } */
3 /* { dg-options "-mdejagnu-cpu=power8 -mvsx -O2" } */
4 /* { dg-require-effective-target powerpc_vsx } */
6 float
7 load_store_sf (unsigned long num,
8 const float *from_ptr,
9 float *to_ptr,
10 const unsigned long *in_mask_ptr,
11 const unsigned long *out_mask_ptr)
13 float value00 = 0.0f;
14 float value01 = 0.0f;
15 float value02 = 0.0f;
16 float value03 = 0.0f;
17 float value04 = 0.0f;
18 float value05 = 0.0f;
19 float value06 = 0.0f;
20 float value07 = 0.0f;
21 float value08 = 0.0f;
22 float value09 = 0.0f;
23 float value10 = 0.0f;
24 float value11 = 0.0f;
25 float value12 = 0.0f;
26 float value13 = 0.0f;
27 float value14 = 0.0f;
28 float value15 = 0.0f;
29 float value16 = 0.0f;
30 float value17 = 0.0f;
31 float value18 = 0.0f;
32 float value19 = 0.0f;
33 float value20 = 0.0f;
34 float value21 = 0.0f;
35 float value22 = 0.0f;
36 float value23 = 0.0f;
37 float value24 = 0.0f;
38 float value25 = 0.0f;
39 float value26 = 0.0f;
40 float value27 = 0.0f;
41 float value28 = 0.0f;
42 float value29 = 0.0f;
43 float value30 = 0.0f;
44 float value31 = 0.0f;
45 float value32 = 0.0f;
46 float value33 = 0.0f;
47 float value34 = 0.0f;
48 float value35 = 0.0f;
49 float value36 = 0.0f;
50 float value37 = 0.0f;
51 float value38 = 0.0f;
52 float value39 = 0.0f;
53 unsigned long in_mask, in_mask2;
54 unsigned long out_mask, out_mask2;
55 unsigned long i;
57 for (i = 0; i < num; i++)
59 in_mask = *in_mask_ptr++;
60 in_mask2 = *in_mask_ptr++;
61 if ((in_mask & (1L << 0)) != 0L)
62 value00 = *from_ptr++;
64 if ((in_mask & (1L << 1)) != 0L)
65 value01 = *from_ptr++;
67 if ((in_mask & (1L << 2)) != 0L)
68 value02 = *from_ptr++;
70 if ((in_mask & (1L << 3)) != 0L)
71 value03 = *from_ptr++;
73 if ((in_mask & (1L << 4)) != 0L)
74 value04 = *from_ptr++;
76 if ((in_mask & (1L << 5)) != 0L)
77 value05 = *from_ptr++;
79 if ((in_mask & (1L << 6)) != 0L)
80 value06 = *from_ptr++;
82 if ((in_mask & (1L << 7)) != 0L)
83 value07 = *from_ptr++;
85 if ((in_mask & (1L << 8)) != 0L)
86 value08 = *from_ptr++;
88 if ((in_mask & (1L << 9)) != 0L)
89 value09 = *from_ptr++;
91 if ((in_mask & (1L << 10)) != 0L)
92 value10 = *from_ptr++;
94 if ((in_mask & (1L << 11)) != 0L)
95 value11 = *from_ptr++;
97 if ((in_mask & (1L << 12)) != 0L)
98 value12 = *from_ptr++;
100 if ((in_mask & (1L << 13)) != 0L)
101 value13 = *from_ptr++;
103 if ((in_mask & (1L << 14)) != 0L)
104 value14 = *from_ptr++;
106 if ((in_mask & (1L << 15)) != 0L)
107 value15 = *from_ptr++;
109 if ((in_mask & (1L << 16)) != 0L)
110 value16 = *from_ptr++;
112 if ((in_mask & (1L << 17)) != 0L)
113 value17 = *from_ptr++;
115 if ((in_mask & (1L << 18)) != 0L)
116 value18 = *from_ptr++;
118 if ((in_mask & (1L << 19)) != 0L)
119 value19 = *from_ptr++;
121 if ((in_mask2 & (1L << 0)) != 0L)
122 value20 = *from_ptr++;
124 if ((in_mask2 & (1L << 1)) != 0L)
125 value21 = *from_ptr++;
127 if ((in_mask2 & (1L << 2)) != 0L)
128 value22 = *from_ptr++;
130 if ((in_mask2 & (1L << 3)) != 0L)
131 value23 = *from_ptr++;
133 if ((in_mask2 & (1L << 4)) != 0L)
134 value24 = *from_ptr++;
136 if ((in_mask2 & (1L << 5)) != 0L)
137 value25 = *from_ptr++;
139 if ((in_mask2 & (1L << 6)) != 0L)
140 value26 = *from_ptr++;
142 if ((in_mask2 & (1L << 7)) != 0L)
143 value27 = *from_ptr++;
145 if ((in_mask2 & (1L << 8)) != 0L)
146 value28 = *from_ptr++;
148 if ((in_mask2 & (1L << 9)) != 0L)
149 value29 = *from_ptr++;
151 if ((in_mask2 & (1L << 10)) != 0L)
152 value30 = *from_ptr++;
154 if ((in_mask2 & (1L << 11)) != 0L)
155 value31 = *from_ptr++;
157 if ((in_mask2 & (1L << 12)) != 0L)
158 value32 = *from_ptr++;
160 if ((in_mask2 & (1L << 13)) != 0L)
161 value33 = *from_ptr++;
163 if ((in_mask2 & (1L << 14)) != 0L)
164 value34 = *from_ptr++;
166 if ((in_mask2 & (1L << 15)) != 0L)
167 value35 = *from_ptr++;
169 if ((in_mask2 & (1L << 16)) != 0L)
170 value36 = *from_ptr++;
172 if ((in_mask2 & (1L << 17)) != 0L)
173 value37 = *from_ptr++;
175 if ((in_mask2 & (1L << 18)) != 0L)
176 value38 = *from_ptr++;
178 if ((in_mask2 & (1L << 19)) != 0L)
179 value39 = *from_ptr++;
181 out_mask = *out_mask_ptr++;
182 out_mask2 = *out_mask_ptr++;
183 if ((out_mask & (1L << 0)) != 0L)
184 *to_ptr++ = value00;
186 if ((out_mask & (1L << 1)) != 0L)
187 *to_ptr++ = value01;
189 if ((out_mask & (1L << 2)) != 0L)
190 *to_ptr++ = value02;
192 if ((out_mask & (1L << 3)) != 0L)
193 *to_ptr++ = value03;
195 if ((out_mask & (1L << 4)) != 0L)
196 *to_ptr++ = value04;
198 if ((out_mask & (1L << 5)) != 0L)
199 *to_ptr++ = value05;
201 if ((out_mask & (1L << 6)) != 0L)
202 *to_ptr++ = value06;
204 if ((out_mask & (1L << 7)) != 0L)
205 *to_ptr++ = value07;
207 if ((out_mask & (1L << 8)) != 0L)
208 *to_ptr++ = value08;
210 if ((out_mask & (1L << 9)) != 0L)
211 *to_ptr++ = value09;
213 if ((out_mask & (1L << 10)) != 0L)
214 *to_ptr++ = value10;
216 if ((out_mask & (1L << 11)) != 0L)
217 *to_ptr++ = value11;
219 if ((out_mask & (1L << 12)) != 0L)
220 *to_ptr++ = value12;
222 if ((out_mask & (1L << 13)) != 0L)
223 *to_ptr++ = value13;
225 if ((out_mask & (1L << 14)) != 0L)
226 *to_ptr++ = value14;
228 if ((out_mask & (1L << 15)) != 0L)
229 *to_ptr++ = value15;
231 if ((out_mask & (1L << 16)) != 0L)
232 *to_ptr++ = value16;
234 if ((out_mask & (1L << 17)) != 0L)
235 *to_ptr++ = value17;
237 if ((out_mask & (1L << 18)) != 0L)
238 *to_ptr++ = value18;
240 if ((out_mask & (1L << 19)) != 0L)
241 *to_ptr++ = value19;
243 if ((out_mask2 & (1L << 0)) != 0L)
244 *to_ptr++ = value20;
246 if ((out_mask2 & (1L << 1)) != 0L)
247 *to_ptr++ = value21;
249 if ((out_mask2 & (1L << 2)) != 0L)
250 *to_ptr++ = value22;
252 if ((out_mask2 & (1L << 3)) != 0L)
253 *to_ptr++ = value23;
255 if ((out_mask2 & (1L << 4)) != 0L)
256 *to_ptr++ = value24;
258 if ((out_mask2 & (1L << 5)) != 0L)
259 *to_ptr++ = value25;
261 if ((out_mask2 & (1L << 6)) != 0L)
262 *to_ptr++ = value26;
264 if ((out_mask2 & (1L << 7)) != 0L)
265 *to_ptr++ = value27;
267 if ((out_mask2 & (1L << 8)) != 0L)
268 *to_ptr++ = value28;
270 if ((out_mask2 & (1L << 9)) != 0L)
271 *to_ptr++ = value29;
273 if ((out_mask2 & (1L << 10)) != 0L)
274 *to_ptr++ = value30;
276 if ((out_mask2 & (1L << 11)) != 0L)
277 *to_ptr++ = value31;
279 if ((out_mask2 & (1L << 12)) != 0L)
280 *to_ptr++ = value32;
282 if ((out_mask2 & (1L << 13)) != 0L)
283 *to_ptr++ = value33;
285 if ((out_mask2 & (1L << 14)) != 0L)
286 *to_ptr++ = value34;
288 if ((out_mask2 & (1L << 15)) != 0L)
289 *to_ptr++ = value35;
291 if ((out_mask2 & (1L << 16)) != 0L)
292 *to_ptr++ = value36;
294 if ((out_mask2 & (1L << 17)) != 0L)
295 *to_ptr++ = value37;
297 if ((out_mask2 & (1L << 18)) != 0L)
298 *to_ptr++ = value38;
300 if ((out_mask2 & (1L << 19)) != 0L)
301 *to_ptr++ = value39;
304 return ( value00 + value01 + value02 + value03 + value04
305 + value05 + value06 + value07 + value08 + value09
306 + value10 + value11 + value12 + value13 + value14
307 + value15 + value16 + value17 + value18 + value19
308 + value20 + value21 + value22 + value23 + value24
309 + value25 + value26 + value27 + value28 + value29
310 + value30 + value31 + value32 + value33 + value34
311 + value35 + value36 + value37 + value38 + value39);
314 double
315 load_store_df (unsigned long num,
316 const double *from_ptr,
317 double *to_ptr,
318 const unsigned long *in_mask_ptr,
319 const unsigned long *out_mask_ptr)
321 double value00 = 0.0;
322 double value01 = 0.0;
323 double value02 = 0.0;
324 double value03 = 0.0;
325 double value04 = 0.0;
326 double value05 = 0.0;
327 double value06 = 0.0;
328 double value07 = 0.0;
329 double value08 = 0.0;
330 double value09 = 0.0;
331 double value10 = 0.0;
332 double value11 = 0.0;
333 double value12 = 0.0;
334 double value13 = 0.0;
335 double value14 = 0.0;
336 double value15 = 0.0;
337 double value16 = 0.0;
338 double value17 = 0.0;
339 double value18 = 0.0;
340 double value19 = 0.0;
341 double value20 = 0.0;
342 double value21 = 0.0;
343 double value22 = 0.0;
344 double value23 = 0.0;
345 double value24 = 0.0;
346 double value25 = 0.0;
347 double value26 = 0.0;
348 double value27 = 0.0;
349 double value28 = 0.0;
350 double value29 = 0.0;
351 double value30 = 0.0;
352 double value31 = 0.0;
353 double value32 = 0.0;
354 double value33 = 0.0;
355 double value34 = 0.0;
356 double value35 = 0.0;
357 double value36 = 0.0;
358 double value37 = 0.0;
359 double value38 = 0.0;
360 double value39 = 0.0;
361 unsigned long in_mask, in_mask2;
362 unsigned long out_mask, out_mask2;
363 unsigned long i;
365 for (i = 0; i < num; i++)
367 in_mask = *in_mask_ptr++;
368 in_mask2 = *in_mask_ptr++;
369 if ((in_mask & (1L << 0)) != 0L)
370 value00 = *from_ptr++;
372 if ((in_mask & (1L << 1)) != 0L)
373 value01 = *from_ptr++;
375 if ((in_mask & (1L << 2)) != 0L)
376 value02 = *from_ptr++;
378 if ((in_mask & (1L << 3)) != 0L)
379 value03 = *from_ptr++;
381 if ((in_mask & (1L << 4)) != 0L)
382 value04 = *from_ptr++;
384 if ((in_mask & (1L << 5)) != 0L)
385 value05 = *from_ptr++;
387 if ((in_mask & (1L << 6)) != 0L)
388 value06 = *from_ptr++;
390 if ((in_mask & (1L << 7)) != 0L)
391 value07 = *from_ptr++;
393 if ((in_mask & (1L << 8)) != 0L)
394 value08 = *from_ptr++;
396 if ((in_mask & (1L << 9)) != 0L)
397 value09 = *from_ptr++;
399 if ((in_mask & (1L << 10)) != 0L)
400 value10 = *from_ptr++;
402 if ((in_mask & (1L << 11)) != 0L)
403 value11 = *from_ptr++;
405 if ((in_mask & (1L << 12)) != 0L)
406 value12 = *from_ptr++;
408 if ((in_mask & (1L << 13)) != 0L)
409 value13 = *from_ptr++;
411 if ((in_mask & (1L << 14)) != 0L)
412 value14 = *from_ptr++;
414 if ((in_mask & (1L << 15)) != 0L)
415 value15 = *from_ptr++;
417 if ((in_mask & (1L << 16)) != 0L)
418 value16 = *from_ptr++;
420 if ((in_mask & (1L << 17)) != 0L)
421 value17 = *from_ptr++;
423 if ((in_mask & (1L << 18)) != 0L)
424 value18 = *from_ptr++;
426 if ((in_mask & (1L << 19)) != 0L)
427 value19 = *from_ptr++;
429 if ((in_mask2 & (1L << 0)) != 0L)
430 value20 = *from_ptr++;
432 if ((in_mask2 & (1L << 1)) != 0L)
433 value21 = *from_ptr++;
435 if ((in_mask2 & (1L << 2)) != 0L)
436 value22 = *from_ptr++;
438 if ((in_mask2 & (1L << 3)) != 0L)
439 value23 = *from_ptr++;
441 if ((in_mask2 & (1L << 4)) != 0L)
442 value24 = *from_ptr++;
444 if ((in_mask2 & (1L << 5)) != 0L)
445 value25 = *from_ptr++;
447 if ((in_mask2 & (1L << 6)) != 0L)
448 value26 = *from_ptr++;
450 if ((in_mask2 & (1L << 7)) != 0L)
451 value27 = *from_ptr++;
453 if ((in_mask2 & (1L << 8)) != 0L)
454 value28 = *from_ptr++;
456 if ((in_mask2 & (1L << 9)) != 0L)
457 value29 = *from_ptr++;
459 if ((in_mask2 & (1L << 10)) != 0L)
460 value30 = *from_ptr++;
462 if ((in_mask2 & (1L << 11)) != 0L)
463 value31 = *from_ptr++;
465 if ((in_mask2 & (1L << 12)) != 0L)
466 value32 = *from_ptr++;
468 if ((in_mask2 & (1L << 13)) != 0L)
469 value33 = *from_ptr++;
471 if ((in_mask2 & (1L << 14)) != 0L)
472 value34 = *from_ptr++;
474 if ((in_mask2 & (1L << 15)) != 0L)
475 value35 = *from_ptr++;
477 if ((in_mask2 & (1L << 16)) != 0L)
478 value36 = *from_ptr++;
480 if ((in_mask2 & (1L << 17)) != 0L)
481 value37 = *from_ptr++;
483 if ((in_mask2 & (1L << 18)) != 0L)
484 value38 = *from_ptr++;
486 if ((in_mask2 & (1L << 19)) != 0L)
487 value39 = *from_ptr++;
489 out_mask = *out_mask_ptr++;
490 out_mask2 = *out_mask_ptr++;
491 if ((out_mask & (1L << 0)) != 0L)
492 *to_ptr++ = value00;
494 if ((out_mask & (1L << 1)) != 0L)
495 *to_ptr++ = value01;
497 if ((out_mask & (1L << 2)) != 0L)
498 *to_ptr++ = value02;
500 if ((out_mask & (1L << 3)) != 0L)
501 *to_ptr++ = value03;
503 if ((out_mask & (1L << 4)) != 0L)
504 *to_ptr++ = value04;
506 if ((out_mask & (1L << 5)) != 0L)
507 *to_ptr++ = value05;
509 if ((out_mask & (1L << 6)) != 0L)
510 *to_ptr++ = value06;
512 if ((out_mask & (1L << 7)) != 0L)
513 *to_ptr++ = value07;
515 if ((out_mask & (1L << 8)) != 0L)
516 *to_ptr++ = value08;
518 if ((out_mask & (1L << 9)) != 0L)
519 *to_ptr++ = value09;
521 if ((out_mask & (1L << 10)) != 0L)
522 *to_ptr++ = value10;
524 if ((out_mask & (1L << 11)) != 0L)
525 *to_ptr++ = value11;
527 if ((out_mask & (1L << 12)) != 0L)
528 *to_ptr++ = value12;
530 if ((out_mask & (1L << 13)) != 0L)
531 *to_ptr++ = value13;
533 if ((out_mask & (1L << 14)) != 0L)
534 *to_ptr++ = value14;
536 if ((out_mask & (1L << 15)) != 0L)
537 *to_ptr++ = value15;
539 if ((out_mask & (1L << 16)) != 0L)
540 *to_ptr++ = value16;
542 if ((out_mask & (1L << 17)) != 0L)
543 *to_ptr++ = value17;
545 if ((out_mask & (1L << 18)) != 0L)
546 *to_ptr++ = value18;
548 if ((out_mask & (1L << 19)) != 0L)
549 *to_ptr++ = value19;
551 if ((out_mask2 & (1L << 0)) != 0L)
552 *to_ptr++ = value20;
554 if ((out_mask2 & (1L << 1)) != 0L)
555 *to_ptr++ = value21;
557 if ((out_mask2 & (1L << 2)) != 0L)
558 *to_ptr++ = value22;
560 if ((out_mask2 & (1L << 3)) != 0L)
561 *to_ptr++ = value23;
563 if ((out_mask2 & (1L << 4)) != 0L)
564 *to_ptr++ = value24;
566 if ((out_mask2 & (1L << 5)) != 0L)
567 *to_ptr++ = value25;
569 if ((out_mask2 & (1L << 6)) != 0L)
570 *to_ptr++ = value26;
572 if ((out_mask2 & (1L << 7)) != 0L)
573 *to_ptr++ = value27;
575 if ((out_mask2 & (1L << 8)) != 0L)
576 *to_ptr++ = value28;
578 if ((out_mask2 & (1L << 9)) != 0L)
579 *to_ptr++ = value29;
581 if ((out_mask2 & (1L << 10)) != 0L)
582 *to_ptr++ = value30;
584 if ((out_mask2 & (1L << 11)) != 0L)
585 *to_ptr++ = value31;
587 if ((out_mask2 & (1L << 12)) != 0L)
588 *to_ptr++ = value32;
590 if ((out_mask2 & (1L << 13)) != 0L)
591 *to_ptr++ = value33;
593 if ((out_mask2 & (1L << 14)) != 0L)
594 *to_ptr++ = value34;
596 if ((out_mask2 & (1L << 15)) != 0L)
597 *to_ptr++ = value35;
599 if ((out_mask2 & (1L << 16)) != 0L)
600 *to_ptr++ = value36;
602 if ((out_mask2 & (1L << 17)) != 0L)
603 *to_ptr++ = value37;
605 if ((out_mask2 & (1L << 18)) != 0L)
606 *to_ptr++ = value38;
608 if ((out_mask2 & (1L << 19)) != 0L)
609 *to_ptr++ = value39;
612 return ( value00 + value01 + value02 + value03 + value04
613 + value05 + value06 + value07 + value08 + value09
614 + value10 + value11 + value12 + value13 + value14
615 + value15 + value16 + value17 + value18 + value19
616 + value20 + value21 + value22 + value23 + value24
617 + value25 + value26 + value27 + value28 + value29
618 + value30 + value31 + value32 + value33 + value34
619 + value35 + value36 + value37 + value38 + value39);
622 /* { dg-final { scan-assembler "lxsspx" } } */
623 /* { dg-final { scan-assembler "lxsdx" } } */
624 /* { dg-final { scan-assembler "stxsspx" } } */
625 /* { dg-final { scan-assembler "stxsdx" } } */
626 /* { dg-final { scan-assembler "xsaddsp" } } */
627 /* { dg-final { scan-assembler "xsadddp" } } */