3 foo (T &x, T (&y)[4], T *&z, int &u, int (&v)[4], int *&w)
5 T s[4] = { 0, 0, 0, 0 };
7 #pragma omp parallel reduction (+: s) allocate(s)
9 #pragma omp parallel reduction (+: s[0:3]) allocate(s)
11 #pragma omp parallel reduction (+: s[2:2]) allocate(s)
13 #pragma omp parallel reduction (+: p[:2]) allocate(p)
15 #pragma omp parallel reduction (+: p[2:2]) allocate(p)
17 int s2[4] = { 0, 0, 0, 0 };
19 #pragma omp parallel reduction (+: s2) allocate(s2)
21 #pragma omp parallel reduction (+: s2[0:3]) allocate(s2)
23 #pragma omp parallel reduction (+: s2[2:2]) allocate(s2)
25 #pragma omp parallel reduction (+: p2[:2]) allocate(p2)
27 #pragma omp parallel reduction (+: p2[2:2]) allocate(p2)
29 #pragma omp parallel reduction (+: x) allocate(x)
31 #pragma omp parallel reduction (+: y) allocate(y)
33 #pragma omp parallel reduction (+: y[0:3]) allocate(y)
35 #pragma omp parallel reduction (+: y[2:2]) allocate(y)
37 #pragma omp parallel reduction (+: z[:2]) allocate(z)
39 #pragma omp parallel reduction (+: z[2:2]) allocate(z)
41 #pragma omp parallel reduction (+: u) allocate(u)
43 #pragma omp parallel reduction (+: v) allocate(v)
45 #pragma omp parallel reduction (+: v[0:3]) allocate(v)
47 #pragma omp parallel reduction (+: v[2:2]) allocate(v)
49 #pragma omp parallel reduction (+: w[:2]) allocate(w)
51 #pragma omp parallel reduction (+: w[2:2]) allocate(w)
57 bar (T &x, T (&y)[4], T *&z, int &u, int (&v)[4], int *&w)
59 T s[4] = { 0, 0, 0, 0 };
62 #pragma omp teams distribute parallel for reduction (+: s) allocate(s)
63 for (i = 0; i < 64; i++)
65 #pragma omp teams distribute parallel for reduction (+: s[0:3]) allocate(s)
66 for (i = 0; i < 64; i++)
68 #pragma omp teams distribute parallel for reduction (+: s[2:2]) allocate(s)
69 for (i = 0; i < 64; i++)
71 #pragma omp teams distribute parallel for reduction (+: p[:2]) allocate(p)
72 for (i = 0; i < 64; i++)
74 #pragma omp teams distribute parallel for reduction (+: p[2:2]) allocate(p)
75 for (i = 0; i < 64; i++)
77 int s2[4] = { 0, 0, 0, 0 };
79 #pragma omp teams distribute parallel for reduction (+: s2) allocate(s2)
80 for (i = 0; i < 64; i++)
82 #pragma omp teams distribute parallel for reduction (+: s2[0:3]) allocate(s2)
83 for (i = 0; i < 64; i++)
85 #pragma omp teams distribute parallel for reduction (+: s2[2:2]) allocate(s2)
86 for (i = 0; i < 64; i++)
88 #pragma omp teams distribute parallel for reduction (+: p2[:2]) allocate(p2)
89 for (i = 0; i < 64; i++)
91 #pragma omp teams distribute parallel for reduction (+: p2[2:2]) allocate(p2)
92 for (i = 0; i < 64; i++)
94 #pragma omp teams distribute parallel for reduction (+: x) allocate(x)
95 for (i = 0; i < 64; i++)
97 #pragma omp teams distribute parallel for reduction (+: y) allocate(y)
98 for (i = 0; i < 64; i++)
100 #pragma omp teams distribute parallel for reduction (+: y[0:3]) allocate(y)
101 for (i = 0; i < 64; i++)
103 #pragma omp teams distribute parallel for reduction (+: y[2:2]) allocate(y)
104 for (i = 0; i < 64; i++)
106 #pragma omp teams distribute parallel for reduction (+: z[:2]) allocate(z)
107 for (i = 0; i < 64; i++)
109 #pragma omp teams distribute parallel for reduction (+: z[2:2]) allocate(z)
110 for (i = 0; i < 64; i++)
112 #pragma omp teams distribute parallel for reduction (+: u) allocate(u)
113 for (i = 0; i < 64; i++)
115 #pragma omp teams distribute parallel for reduction (+: v) allocate(v)
116 for (i = 0; i < 64; i++)
118 #pragma omp teams distribute parallel for reduction (+: v[0:3]) allocate(v)
119 for (i = 0; i < 64; i++)
121 #pragma omp teams distribute parallel for reduction (+: v[2:2]) allocate(v)
122 for (i = 0; i < 64; i++)
124 #pragma omp teams distribute parallel for reduction (+: w[:2]) allocate(w)
125 for (i = 0; i < 64; i++)
127 #pragma omp teams distribute parallel for reduction (+: w[2:2]) allocate(w)
128 for (i = 0; i < 64; i++)
133 baz (long int &x, long int (&y)[4], long int *&z)
135 #pragma omp parallel reduction (+: x) allocate(x)
137 #pragma omp parallel reduction (+: y) allocate(y)
139 #pragma omp parallel reduction (+: y[0:3]) allocate(y)
141 #pragma omp parallel reduction (+: y[2:2]) allocate(y)
143 #pragma omp parallel reduction (+: z[:2]) allocate(z)
145 #pragma omp parallel reduction (+: z[2:2]) allocate(z)
150 qux (long long int &x, long long int (&y)[4], long long int *&z)
153 #pragma omp teams distribute parallel for reduction (+: x) allocate(x)
154 for (i = 0; i < 64; i++)
156 #pragma omp teams distribute parallel for reduction (+: y) allocate(y)
157 for (i = 0; i < 64; i++)
159 #pragma omp teams distribute parallel for reduction (+: y[0:3]) allocate(y)
160 for (i = 0; i < 64; i++)
162 #pragma omp teams distribute parallel for reduction (+: y[2:2]) allocate(y)
163 for (i = 0; i < 64; i++)
165 #pragma omp teams distribute parallel for reduction (+: z[:2]) allocate(z)
166 for (i = 0; i < 64; i++)
168 #pragma omp teams distribute parallel for reduction (+: z[2:2]) allocate(z)
169 for (i = 0; i < 64; i++)
177 long int y[4] = { 0, 0, 0, 0 };
180 int v[4] = { 0, 0, 0, 0 };
182 long long int x2 = 0;
183 long long int y2[4] = { 0, 0, 0, 0 };
184 long long int *z2 = y2;
185 foo (x, y, z, u, v, w);
186 bar (x2, y2, z2, u, v, w);
195 #pragma omp parallel firstprivate (N::a) allocate (a)
197 #pragma omp parallel firstprivate (a) allocate (N::a)
199 #pragma omp teams distribute parallel for firstprivate (N::a) allocate (a)
200 for (i = 0; i < 64; i++)
202 #pragma omp teams distribute parallel for firstprivate (a) allocate (N::a)
203 for (i = 0; i < 64; i++)