1 /* { dg-additional-options "-std=gnu99" { target c } } */
2 
3 extern
4 #ifdef __cplusplus
5 "C"
6 #endif
7 void abort ();
8 
9 #define M(x, y, z) O(x, y, z)
10 #define O(x, y, z) x ## _ ## y ## _ ## z
11 
12 #pragma omp declare target
13 
14 #define F for
15 #define G f
16 #define S
17 #define N(x) M(x, G, normal)
18 #include "for-2.h"
19 #undef S
20 #undef N
21 #undef F
22 #undef G
23 
24 #pragma omp end declare target
25 
26 #undef OMPTGT
27 #undef OMPFROM
28 #undef OMPTO
29 #define DO_PRAGMA(x) _Pragma (#x)
30 #define OMPTGT DO_PRAGMA (omp target)
31 #define OMPFROM(v) DO_PRAGMA (omp target update from(v))
32 #define OMPTO(v) DO_PRAGMA (omp target update to(v))
33 
34 #define F teams distribute
35 #define G td
36 #define S
37 #define N(x) M(x, G, normal)
38 #include "for-2.h"
39 #undef S
40 #undef N
41 #undef F
42 #undef G
43 
44 #define F teams distribute
45 #define G td_ds128
46 #define S dist_schedule(static, 128)
47 #define N(x) M(x, G, normal)
48 #include "for-2.h"
49 #undef S
50 #undef N
51 #undef F
52 #undef G
53 
54 #define F teams distribute simd
55 #define G tds
56 #define S
57 #define N(x) M(x, G, normal)
58 #include "for-2.h"
59 #undef S
60 #undef N
61 #undef F
62 #undef G
63 
64 #define F teams distribute simd
65 #define G tds_ds128
66 #define S dist_schedule(static, 128)
67 #define N(x) M(x, G, normal)
68 #include "for-2.h"
69 #undef S
70 #undef N
71 #undef F
72 #undef G
73 
74 #define F teams distribute parallel for
75 #define G tdpf
76 #include "for-1.h"
77 #undef F
78 #undef G
79 
80 #define F teams distribute parallel for dist_schedule(static, 128)
81 #define G tdpf_ds128
82 #include "for-1.h"
83 #undef F
84 #undef G
85 
86 #define F teams distribute parallel for simd
87 #define G tdpfs
88 #include "for-1.h"
89 #undef F
90 #undef G
91 
92 #define F teams distribute parallel for simd dist_schedule(static, 128)
93 #define G tdpfs_ds128
94 #include "for-1.h"
95 #undef F
96 #undef G
97 
98 int
main()99 main ()
100 {
101   if (test_td_normal ()
102       || test_td_ds128_normal ()
103       || test_tds_normal ()
104       || test_tds_ds128_normal ()
105       || test_tdpf_static ()
106       || test_tdpf_static32 ()
107       || test_tdpf_auto ()
108       || test_tdpf_guided32 ()
109       || test_tdpf_runtime ()
110       || test_tdpf_ds128_static ()
111       || test_tdpf_ds128_static32 ()
112       || test_tdpf_ds128_auto ()
113       || test_tdpf_ds128_guided32 ()
114       || test_tdpf_ds128_runtime ()
115       || test_tdpfs_static ()
116       || test_tdpfs_static32 ()
117       || test_tdpfs_auto ()
118       || test_tdpfs_guided32 ()
119       || test_tdpfs_runtime ()
120       || test_tdpfs_ds128_static ()
121       || test_tdpfs_ds128_static32 ()
122       || test_tdpfs_ds128_auto ()
123       || test_tdpfs_ds128_guided32 ()
124       || test_tdpfs_ds128_runtime ())
125     abort ();
126   return 0;
127 }
128