PR c++/86342 - -Wdeprecated-copy and system headers.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c-c++-common / if-1.c
blob5398905f4113bf7c9a72a53d89542ddfd08c0591
1 #include <openacc.h>
2 #include <stdlib.h>
3 #include <stdbool.h>
5 #define N 32
7 int
8 main(int argc, char **argv)
10 float *a, *b, *d_a, *d_b, exp, exp2;
11 int i;
12 const int one = 1;
13 const int zero = 0;
14 int n;
16 a = (float *) malloc (N * sizeof (float));
17 b = (float *) malloc (N * sizeof (float));
18 d_a = (float *) acc_malloc (N * sizeof (float));
19 d_b = (float *) acc_malloc (N * sizeof (float));
21 for (i = 0; i < N; i++)
22 a[i] = 4.0;
24 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(1)
26 int ii;
28 for (ii = 0; ii < N; ii++)
30 if (acc_on_device (acc_device_host))
31 b[ii] = a[ii] + 1;
32 else
33 b[ii] = a[ii];
37 #if ACC_MEM_SHARED
38 exp = 5.0;
39 #else
40 exp = 4.0;
41 #endif
43 for (i = 0; i < N; i++)
45 if (b[i] != exp)
46 abort();
49 for (i = 0; i < N; i++)
50 a[i] = 16.0;
52 #pragma acc parallel if(0)
54 int ii;
56 for (ii = 0; ii < N; ii++)
58 if (acc_on_device (acc_device_host))
59 b[ii] = a[ii] + 1;
60 else
61 b[ii] = a[ii];
65 for (i = 0; i < N; i++)
67 if (b[i] != 17.0)
68 abort();
71 for (i = 0; i < N; i++)
72 a[i] = 8.0;
74 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(one)
76 int ii;
78 for (ii = 0; ii < N; ii++)
80 if (acc_on_device (acc_device_host))
81 b[ii] = a[ii] + 1;
82 else
83 b[ii] = a[ii];
87 #if ACC_MEM_SHARED
88 exp = 9.0;
89 #else
90 exp = 8.0;
91 #endif
93 for (i = 0; i < N; i++)
95 if (b[i] != exp)
96 abort();
99 for (i = 0; i < N; i++)
100 a[i] = 22.0;
102 #pragma acc parallel if(zero)
104 int ii;
106 for (ii = 0; ii < N; ii++)
108 if (acc_on_device (acc_device_host))
109 b[ii] = a[ii] + 1;
110 else
111 b[ii] = a[ii];
115 for (i = 0; i < N; i++)
117 if (b[i] != 23.0)
118 abort();
121 for (i = 0; i < N; i++)
122 a[i] = 16.0;
124 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(true)
126 int ii;
128 for (ii = 0; ii < N; ii++)
130 if (acc_on_device (acc_device_host))
131 b[ii] = a[ii] + 1;
132 else
133 b[ii] = a[ii];
137 #if ACC_MEM_SHARED
138 exp = 17.0;
139 #else
140 exp = 16.0;
141 #endif
143 for (i = 0; i < N; i++)
145 if (b[i] != exp)
146 abort();
149 for (i = 0; i < N; i++)
150 a[i] = 76.0;
152 #pragma acc parallel if(false)
154 int ii;
156 for (ii = 0; ii < N; ii++)
158 if (acc_on_device (acc_device_host))
159 b[ii] = a[ii] + 1;
160 else
161 b[ii] = a[ii];
165 for (i = 0; i < N; i++)
167 if (b[i] != 77.0)
168 abort();
171 for (i = 0; i < N; i++)
172 a[i] = 22.0;
174 n = 1;
176 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(n)
178 int ii;
180 for (ii = 0; ii < N; ii++)
182 if (acc_on_device (acc_device_host))
183 b[ii] = a[ii] + 1;
184 else
185 b[ii] = a[ii];
189 #if ACC_MEM_SHARED
190 exp = 23.0;
191 #else
192 exp = 22.0;
193 #endif
195 for (i = 0; i < N; i++)
197 if (b[i] != exp)
198 abort();
201 for (i = 0; i < N; i++)
202 a[i] = 18.0;
204 n = 0;
206 #pragma acc parallel if(n)
208 int ii;
210 for (ii = 0; ii < N; ii++)
212 if (acc_on_device (acc_device_host))
213 b[ii] = a[ii] + 1;
214 else
215 b[ii] = a[ii];
219 for (i = 0; i < N; i++)
221 if (b[i] != 19.0)
222 abort();
225 for (i = 0; i < N; i++)
226 a[i] = 49.0;
228 n = 1;
230 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(n + n)
232 int ii;
234 for (ii = 0; ii < N; ii++)
236 if (acc_on_device (acc_device_host))
237 b[ii] = a[ii] + 1;
238 else
239 b[ii] = a[ii];
243 #if ACC_MEM_SHARED
244 exp = 50.0;
245 #else
246 exp = 49.0;
247 #endif
249 for (i = 0; i < N; i++)
251 if (b[i] != exp)
252 abort();
255 for (i = 0; i < N; i++)
256 a[i] = 38.0;
258 n = 0;
260 #pragma acc parallel if(n + n)
262 int ii;
264 for (ii = 0; ii < N; ii++)
266 if (acc_on_device (acc_device_host))
267 b[ii] = a[ii] + 1;
268 else
269 b[ii] = a[ii];
273 for (i = 0; i < N; i++)
275 if (b[i] != 39.0)
276 abort();
279 for (i = 0; i < N; i++)
280 a[i] = 91.0;
282 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(-2)
284 int ii;
286 for (ii = 0; ii < N; ii++)
288 if (acc_on_device (acc_device_host))
289 b[ii] = a[ii] + 1;
290 else
291 b[ii] = a[ii];
295 #if ACC_MEM_SHARED
296 exp = 92.0;
297 #else
298 exp = 91.0;
299 #endif
301 for (i = 0; i < N; i++)
303 if (b[i] != exp)
304 abort();
307 for (i = 0; i < N; i++)
308 a[i] = 43.0;
310 #pragma acc parallel copyin(a[0:N]) copyout(b[0:N]) if(one == 1)
312 int ii;
314 for (ii = 0; ii < N; ii++)
316 if (acc_on_device (acc_device_host))
317 b[ii] = a[ii] + 1;
318 else
319 b[ii] = a[ii];
323 #if ACC_MEM_SHARED
324 exp = 44.0;
325 #else
326 exp = 43.0;
327 #endif
329 for (i = 0; i < N; i++)
331 if (b[i] != exp)
332 abort();
335 for (i = 0; i < N; i++)
336 a[i] = 87.0;
338 #pragma acc parallel if(one == 0)
340 int ii;
342 for (ii = 0; ii < N; ii++)
344 if (acc_on_device (acc_device_host))
345 b[ii] = a[ii] + 1;
346 else
347 b[ii] = a[ii];
351 for (i = 0; i < N; i++)
353 if (b[i] != 88.0)
354 abort();
357 for (i = 0; i < N; i++)
359 a[i] = 3.0;
360 b[i] = 9.0;
363 #if ACC_MEM_SHARED
364 exp = 0.0;
365 exp2 = 0.0;
366 #else
367 acc_map_data (a, d_a, N * sizeof (float));
368 acc_map_data (b, d_b, N * sizeof (float));
369 exp = 3.0;
370 exp2 = 9.0;
371 #endif
373 #pragma acc update device(a[0:N], b[0:N]) if(1)
375 for (i = 0; i < N; i++)
377 a[i] = 0.0;
378 b[i] = 0.0;
381 #pragma acc update host(a[0:N], b[0:N]) if(1)
383 for (i = 0; i < N; i++)
385 if (a[i] != exp)
386 abort();
388 if (b[i] != exp2)
389 abort();
392 for (i = 0; i < N; i++)
394 a[i] = 6.0;
395 b[i] = 12.0;
398 #pragma acc update device(a[0:N], b[0:N]) if(0)
400 for (i = 0; i < N; i++)
402 a[i] = 0.0;
403 b[i] = 0.0;
406 #pragma acc update host(a[0:N], b[0:N]) if(1)
408 for (i = 0; i < N; i++)
410 if (a[i] != exp)
411 abort();
413 if (b[i] != exp2)
414 abort();
417 for (i = 0; i < N; i++)
419 a[i] = 26.0;
420 b[i] = 21.0;
423 #pragma acc update device(a[0:N], b[0:N]) if(1)
425 for (i = 0; i < N; i++)
427 a[i] = 0.0;
428 b[i] = 0.0;
431 #pragma acc update host(a[0:N], b[0:N]) if(0)
433 for (i = 0; i < N; i++)
435 if (a[i] != 0.0)
436 abort();
438 if (b[i] != 0.0)
439 abort();
442 #if !ACC_MEM_SHARED
443 acc_unmap_data (a);
444 acc_unmap_data (b);
445 #endif
447 acc_free (d_a);
448 acc_free (d_b);
450 for (i = 0; i < N; i++)
452 a[i] = 4.0;
453 b[i] = 0.0;
456 #pragma acc data copyin(a[0:N]) copyout(b[0:N]) if(1)
458 #pragma acc parallel present(a[0:N])
460 int ii;
462 for (ii = 0; ii < N; ii++)
464 b[ii] = a[ii];
469 for (i = 0; i < N; i++)
471 if (b[i] != 4.0)
472 abort();
475 for (i = 0; i < N; i++)
477 a[i] = 8.0;
478 b[i] = 1.0;
481 #pragma acc data copyin(a[0:N]) copyout(b[0:N]) if(0)
483 #if !ACC_MEM_SHARED
484 if (acc_is_present (a, N * sizeof (float)))
485 abort ();
486 #endif
488 #if !ACC_MEM_SHARED
489 if (acc_is_present (b, N * sizeof (float)))
490 abort ();
491 #endif
494 for (i = 0; i < N; i++)
496 a[i] = 18.0;
497 b[i] = 21.0;
500 #pragma acc data copyin(a[0:N]) if(1)
502 #if !ACC_MEM_SHARED
503 if (!acc_is_present (a, N * sizeof (float)))
504 abort ();
505 #endif
507 #pragma acc data copyout(b[0:N]) if(0)
509 #if !ACC_MEM_SHARED
510 if (acc_is_present (b, N * sizeof (float)))
511 abort ();
512 #endif
514 #pragma acc data copyout(b[0:N]) if(1)
516 #pragma acc parallel present(a[0:N]) present(b[0:N])
518 int ii;
520 for (ii = 0; ii < N; ii++)
522 b[ii] = a[ii];
527 #if !ACC_MEM_SHARED
528 if (acc_is_present (b, N * sizeof (float)))
529 abort ();
530 #endif
534 for (i = 0; i < N; i++)
536 if (b[i] != 18.0)
537 abort ();
540 #pragma acc enter data copyin (b[0:N]) if (0)
542 #if !ACC_MEM_SHARED
543 if (acc_is_present (b, N * sizeof (float)))
544 abort ();
545 #endif
547 #pragma acc exit data delete (b[0:N]) if (0)
549 #pragma acc enter data copyin (b[0:N]) if (1)
551 #if !ACC_MEM_SHARED
552 if (!acc_is_present (b, N * sizeof (float)))
553 abort ();
554 #endif
556 #pragma acc exit data delete (b[0:N]) if (1)
558 #if !ACC_MEM_SHARED
559 if (acc_is_present (b, N * sizeof (float)))
560 abort ();
561 #endif
563 #pragma acc enter data copyin (b[0:N]) if (zero)
565 #if !ACC_MEM_SHARED
566 if (acc_is_present (b, N * sizeof (float)))
567 abort ();
568 #endif
570 #pragma acc exit data delete (b[0:N]) if (zero)
572 #pragma acc enter data copyin (b[0:N]) if (one)
574 #if !ACC_MEM_SHARED
575 if (!acc_is_present (b, N * sizeof (float)))
576 abort ();
577 #endif
579 #pragma acc exit data delete (b[0:N]) if (one)
581 #if !ACC_MEM_SHARED
582 if (acc_is_present (b, N * sizeof (float)))
583 abort ();
584 #endif
586 #pragma acc enter data copyin (b[0:N]) if (one == 0)
588 #if !ACC_MEM_SHARED
589 if (acc_is_present (b, N * sizeof (float)))
590 abort ();
591 #endif
593 #pragma acc exit data delete (b[0:N]) if (one == 0)
595 #pragma acc enter data copyin (b[0:N]) if (one == 1)
597 #if !ACC_MEM_SHARED
598 if (!acc_is_present (b, N * sizeof (float)))
599 abort ();
600 #endif
602 #pragma acc exit data delete (b[0:N]) if (one == 1)
604 #if !ACC_MEM_SHARED
605 if (acc_is_present (b, N * sizeof (float)))
606 abort ();
607 #endif
609 for (i = 0; i < N; i++)
610 a[i] = 4.0;
612 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(1)
614 int ii;
616 for (ii = 0; ii < N; ii++)
618 if (acc_on_device (acc_device_host))
619 b[ii] = a[ii] + 1;
620 else
621 b[ii] = a[ii];
625 #if ACC_MEM_SHARED
626 exp = 5.0;
627 #else
628 exp = 4.0;
629 #endif
631 for (i = 0; i < N; i++)
633 if (b[i] != exp)
634 abort();
637 for (i = 0; i < N; i++)
638 a[i] = 16.0;
640 #pragma acc kernels if(0)
642 int ii;
644 for (ii = 0; ii < N; ii++)
646 if (acc_on_device (acc_device_host))
647 b[ii] = a[ii] + 1;
648 else
649 b[ii] = a[ii];
653 for (i = 0; i < N; i++)
655 if (b[i] != 17.0)
656 abort();
659 for (i = 0; i < N; i++)
660 a[i] = 8.0;
662 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(one)
664 int ii;
666 for (ii = 0; ii < N; ii++)
668 if (acc_on_device (acc_device_host))
669 b[ii] = a[ii] + 1;
670 else
671 b[ii] = a[ii];
675 #if ACC_MEM_SHARED
676 exp = 9.0;
677 #else
678 exp = 8.0;
679 #endif
681 for (i = 0; i < N; i++)
683 if (b[i] != exp)
684 abort();
687 for (i = 0; i < N; i++)
688 a[i] = 22.0;
690 #pragma acc kernels if(zero)
692 int ii;
694 for (ii = 0; ii < N; ii++)
696 if (acc_on_device (acc_device_host))
697 b[ii] = a[ii] + 1;
698 else
699 b[ii] = a[ii];
703 for (i = 0; i < N; i++)
705 if (b[i] != 23.0)
706 abort();
709 for (i = 0; i < N; i++)
710 a[i] = 16.0;
712 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(true)
714 int ii;
716 for (ii = 0; ii < N; ii++)
718 if (acc_on_device (acc_device_host))
719 b[ii] = a[ii] + 1;
720 else
721 b[ii] = a[ii];
725 #if ACC_MEM_SHARED
726 exp = 17.0;
727 #else
728 exp = 16.0;
729 #endif
731 for (i = 0; i < N; i++)
733 if (b[i] != exp)
734 abort();
737 for (i = 0; i < N; i++)
738 a[i] = 76.0;
740 #pragma acc kernels if(false)
742 int ii;
744 for (ii = 0; ii < N; ii++)
746 if (acc_on_device (acc_device_host))
747 b[ii] = a[ii] + 1;
748 else
749 b[ii] = a[ii];
753 for (i = 0; i < N; i++)
755 if (b[i] != 77.0)
756 abort();
759 for (i = 0; i < N; i++)
760 a[i] = 22.0;
762 n = 1;
764 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(n)
766 int ii;
768 for (ii = 0; ii < N; ii++)
770 if (acc_on_device (acc_device_host))
771 b[ii] = a[ii] + 1;
772 else
773 b[ii] = a[ii];
777 #if ACC_MEM_SHARED
778 exp = 23.0;
779 #else
780 exp = 22.0;
781 #endif
783 for (i = 0; i < N; i++)
785 if (b[i] != exp)
786 abort();
789 for (i = 0; i < N; i++)
790 a[i] = 18.0;
792 n = 0;
794 #pragma acc kernels if(n)
796 int ii;
798 for (ii = 0; ii < N; ii++)
800 if (acc_on_device (acc_device_host))
801 b[ii] = a[ii] + 1;
802 else
803 b[ii] = a[ii];
807 for (i = 0; i < N; i++)
809 if (b[i] != 19.0)
810 abort();
813 for (i = 0; i < N; i++)
814 a[i] = 49.0;
816 n = 1;
818 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(n + n)
820 int ii;
822 for (ii = 0; ii < N; ii++)
824 if (acc_on_device (acc_device_host))
825 b[ii] = a[ii] + 1;
826 else
827 b[ii] = a[ii];
831 #if ACC_MEM_SHARED
832 exp = 50.0;
833 #else
834 exp = 49.0;
835 #endif
837 for (i = 0; i < N; i++)
839 if (b[i] != exp)
840 abort();
843 for (i = 0; i < N; i++)
844 a[i] = 38.0;
846 n = 0;
848 #pragma acc kernels if(n + n)
850 int ii;
852 for (ii = 0; ii < N; ii++)
854 if (acc_on_device (acc_device_host))
855 b[ii] = a[ii] + 1;
856 else
857 b[ii] = a[ii];
861 for (i = 0; i < N; i++)
863 if (b[i] != 39.0)
864 abort();
867 for (i = 0; i < N; i++)
868 a[i] = 91.0;
870 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(-2)
872 int ii;
874 for (ii = 0; ii < N; ii++)
876 if (acc_on_device (acc_device_host))
877 b[ii] = a[ii] + 1;
878 else
879 b[ii] = a[ii];
883 #if ACC_MEM_SHARED
884 exp = 92.0;
885 #else
886 exp = 91.0;
887 #endif
889 for (i = 0; i < N; i++)
891 if (b[i] != exp)
892 abort();
895 for (i = 0; i < N; i++)
896 a[i] = 43.0;
898 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N]) if(one == 1)
900 int ii;
902 for (ii = 0; ii < N; ii++)
904 if (acc_on_device (acc_device_host))
905 b[ii] = a[ii] + 1;
906 else
907 b[ii] = a[ii];
911 #if ACC_MEM_SHARED
912 exp = 44.0;
913 #else
914 exp = 43.0;
915 #endif
917 for (i = 0; i < N; i++)
919 if (b[i] != exp)
920 abort();
923 for (i = 0; i < N; i++)
924 a[i] = 87.0;
926 #pragma acc kernels if(one == 0)
928 int ii;
930 for (ii = 0; ii < N; ii++)
932 if (acc_on_device (acc_device_host))
933 b[ii] = a[ii] + 1;
934 else
935 b[ii] = a[ii];
939 for (i = 0; i < N; i++)
941 if (b[i] != 88.0)
942 abort();
945 for (i = 0; i < N; i++)
947 a[i] = 3.0;
948 b[i] = 9.0;
951 #if ACC_MEM_SHARED
952 exp = 0.0;
953 exp2 = 0.0;
954 #else
955 acc_map_data (a, d_a, N * sizeof (float));
956 acc_map_data (b, d_b, N * sizeof (float));
957 exp = 3.0;
958 exp2 = 9.0;
959 #endif
961 return 0;