xref: /llvm-project/offload/test/offloading/workshare_chunk.c (revision 8823448807f3b1a1362d1417e062d763734e02f5)
1330d8983SJohannes Doerfert // RUN: %libomptarget-compile-run-and-check-generic
2330d8983SJohannes Doerfert // RUN: %libomptarget-compileopt-run-and-check-generic
3330d8983SJohannes Doerfert 
4*88234488SEthan Luis McDonough // REQUIRES: gpu
5330d8983SJohannes Doerfert 
6330d8983SJohannes Doerfert // clang-format off
7330d8983SJohannes Doerfert 
8330d8983SJohannes Doerfert #include <omp.h>
9330d8983SJohannes Doerfert #include <stdio.h>
10330d8983SJohannes Doerfert 
11330d8983SJohannes Doerfert #define N 100
12330d8983SJohannes Doerfert #define BLOCK_SHIFT 8
13330d8983SJohannes Doerfert 
print(int * A,int size)14330d8983SJohannes Doerfert void print(int *A, int size) {
15330d8983SJohannes Doerfert   for (int i = 0; i < size; ++i) {
16330d8983SJohannes Doerfert     printf("B%dT%d ", A[i] >> BLOCK_SHIFT, A[i] % (1 << BLOCK_SHIFT));
17330d8983SJohannes Doerfert   }
18330d8983SJohannes Doerfert   printf("\n");
19330d8983SJohannes Doerfert }
20330d8983SJohannes Doerfert 
main()21330d8983SJohannes Doerfert int main() {
22330d8983SJohannes Doerfert   int A[N];
23330d8983SJohannes Doerfert 
24330d8983SJohannes Doerfert #pragma omp target parallel for map(from:A) num_threads(10) schedule(static, 2)
25330d8983SJohannes Doerfert   for (int i = 0; i < N; ++i) {
26330d8983SJohannes Doerfert      A[i] = (omp_get_team_num() << BLOCK_SHIFT) + omp_get_thread_num();
27330d8983SJohannes Doerfert   }
28330d8983SJohannes Doerfert   printf("omp target parallel for thread chunk size %d\n", 2);
29330d8983SJohannes Doerfert   print(A, N);
30330d8983SJohannes Doerfert 
31330d8983SJohannes Doerfert #pragma omp target teams distribute map(from:A) num_teams(10) \
32330d8983SJohannes Doerfert         dist_schedule(static, 2)
33330d8983SJohannes Doerfert   for (int i = 0; i < N; ++i) {
34330d8983SJohannes Doerfert      A[i] = (omp_get_team_num() << BLOCK_SHIFT) + omp_get_thread_num();
35330d8983SJohannes Doerfert   }
36330d8983SJohannes Doerfert   printf("omp target teams distribute block chunk size %d\n", 2);
37330d8983SJohannes Doerfert   print(A, N);
38330d8983SJohannes Doerfert 
39330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for map(from:A) \
40330d8983SJohannes Doerfert         num_teams(10) dist_schedule(static, 2)
41330d8983SJohannes Doerfert   for (int i = 0; i < N; ++i) {
42330d8983SJohannes Doerfert      A[i] = (omp_get_team_num() << BLOCK_SHIFT) + omp_get_thread_num();
43330d8983SJohannes Doerfert   }
44330d8983SJohannes Doerfert   printf("omp target teams distribute parallel for block chunk size %d ", 2);
45330d8983SJohannes Doerfert   printf("thread chunk size default\n");
46330d8983SJohannes Doerfert   print(A, N);
47330d8983SJohannes Doerfert 
48330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for map(from:A) \
49330d8983SJohannes Doerfert         num_teams(10) dist_schedule(static, 2) schedule(static, 3)
50330d8983SJohannes Doerfert   for (int i = 0; i < N; ++i) {
51330d8983SJohannes Doerfert      A[i] = (omp_get_team_num() << BLOCK_SHIFT) + omp_get_thread_num();
52330d8983SJohannes Doerfert   }
53330d8983SJohannes Doerfert   printf("omp target teams distribute parallel for block chunk size %d ", 2);
54330d8983SJohannes Doerfert   printf("thread chunk size %d\n", 3);
55330d8983SJohannes Doerfert   print(A, N);
56330d8983SJohannes Doerfert 
57330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for map(from:A) \
58330d8983SJohannes Doerfert         num_teams(10) dist_schedule(static, 3) schedule(static, 2)
59330d8983SJohannes Doerfert   for (int i = 0; i < N; ++i) {
60330d8983SJohannes Doerfert      A[i] = (omp_get_team_num() << BLOCK_SHIFT) + omp_get_thread_num();
61330d8983SJohannes Doerfert   }
62330d8983SJohannes Doerfert   printf("omp target teams distribute parallel for block chunk size %d ", 3);
63330d8983SJohannes Doerfert   printf("thread chunk size %d\n", 2);
64330d8983SJohannes Doerfert   print(A, N);
65330d8983SJohannes Doerfert 
66330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for map(from:A) \
67330d8983SJohannes Doerfert         num_teams(10) dist_schedule(static, 5) schedule(static, 2)
68330d8983SJohannes Doerfert   for (int i = 0; i < N; ++i) {
69330d8983SJohannes Doerfert      A[i] = (omp_get_team_num() << BLOCK_SHIFT) + omp_get_thread_num();
70330d8983SJohannes Doerfert   }
71330d8983SJohannes Doerfert   printf("omp target teams distribute parallel for block chunk size %d ", 5);
72330d8983SJohannes Doerfert   printf("thread chunk size %d\n", 2);
73330d8983SJohannes Doerfert   print(A, N);
74330d8983SJohannes Doerfert 
75330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for map(from:A) num_teams(10) \
76330d8983SJohannes Doerfert         dist_schedule(static, 49) schedule(static, 2)
77330d8983SJohannes Doerfert   for (int i = 0; i < N; ++i) {
78330d8983SJohannes Doerfert      A[i] = (omp_get_team_num() << BLOCK_SHIFT) + omp_get_thread_num();
79330d8983SJohannes Doerfert   }
80330d8983SJohannes Doerfert   printf("omp target teams distribute parallel for block chunk size %d ", 49);
81330d8983SJohannes Doerfert   printf("thread chunk size %d\n", 2);
82330d8983SJohannes Doerfert   print(A, N);
83330d8983SJohannes Doerfert 
84330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for map(from:A) \
85330d8983SJohannes Doerfert         num_teams(10) num_threads(10) dist_schedule(static, 29)
86330d8983SJohannes Doerfert   for (int i = 0; i < N; ++i) {
87330d8983SJohannes Doerfert      A[i] = (omp_get_team_num() << BLOCK_SHIFT) + omp_get_thread_num();
88330d8983SJohannes Doerfert   }
89330d8983SJohannes Doerfert   printf("omp target teams distribute parallel for block chunk size %d ", 29);
90330d8983SJohannes Doerfert   printf("thread chunk size default\n");
91330d8983SJohannes Doerfert   print(A, N);
92330d8983SJohannes Doerfert 
93330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for map(from:A) \
94330d8983SJohannes Doerfert         num_teams(10) num_threads(10) dist_schedule(static, 101)
95330d8983SJohannes Doerfert   for (int i = 0; i < N; ++i) {
96330d8983SJohannes Doerfert      A[i] = (omp_get_team_num() << BLOCK_SHIFT) + omp_get_thread_num();
97330d8983SJohannes Doerfert   }
98330d8983SJohannes Doerfert   printf("omp target teams distribute parallel for block chunk size %d ", 101);
99330d8983SJohannes Doerfert   printf("thread chunk size default\n");
100330d8983SJohannes Doerfert   print(A, N);
101330d8983SJohannes Doerfert 
102330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for map(from:A) \
103330d8983SJohannes Doerfert         num_teams(9) num_threads(10) schedule(static, 101)
104330d8983SJohannes Doerfert   for (int i = 0; i < N; ++i) {
105330d8983SJohannes Doerfert      A[i] = (omp_get_team_num() << BLOCK_SHIFT) + omp_get_thread_num();
106330d8983SJohannes Doerfert   }
107330d8983SJohannes Doerfert   printf("omp target teams distribute parallel for default block chunk size ");
108330d8983SJohannes Doerfert   printf("thread chunk size %d\n", 101);
109330d8983SJohannes Doerfert   print(A, N);
110330d8983SJohannes Doerfert   return 0;
111330d8983SJohannes Doerfert }
112330d8983SJohannes Doerfert //CHECK:      omp target parallel for thread chunk size 2
113330d8983SJohannes Doerfert 
114330d8983SJohannes Doerfert //CHECK-NEXT: B0T0 B0T0 B0T1 B0T1 B0T2 B0T2 B0T3 B0T3 B0T4 B0T4
115330d8983SJohannes Doerfert //CHECK-SAME: B0T5 B0T5 B0T6 B0T6 B0T7 B0T7 B0T8 B0T8 B0T9 B0T9
116330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B0T1 B0T1 B0T2 B0T2 B0T3 B0T3 B0T4 B0T4
117330d8983SJohannes Doerfert //CHECK-SAME: B0T5 B0T5 B0T6 B0T6 B0T7 B0T7 B0T8 B0T8 B0T9 B0T9
118330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B0T1 B0T1 B0T2 B0T2 B0T3 B0T3 B0T4 B0T4
119330d8983SJohannes Doerfert //CHECK-SAME: B0T5 B0T5 B0T6 B0T6 B0T7 B0T7 B0T8 B0T8 B0T9 B0T9
120330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B0T1 B0T1 B0T2 B0T2 B0T3 B0T3 B0T4 B0T4
121330d8983SJohannes Doerfert //CHECK-SAME: B0T5 B0T5 B0T6 B0T6 B0T7 B0T7 B0T8 B0T8 B0T9 B0T9
122330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B0T1 B0T1 B0T2 B0T2 B0T3 B0T3 B0T4 B0T4
123330d8983SJohannes Doerfert //CHECK-SAME: B0T5 B0T5 B0T6 B0T6 B0T7 B0T7 B0T8 B0T8 B0T9 B0T9
124330d8983SJohannes Doerfert 
125330d8983SJohannes Doerfert //CHECK:      omp target teams distribute block chunk size 2
126330d8983SJohannes Doerfert 
127330d8983SJohannes Doerfert //CHECK-NEXT: B0T0 B0T0 B1T0 B1T0 B2T0 B2T0 B3T0 B3T0 B4T0 B4T0
128330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B6T0 B6T0 B7T0 B7T0 B8T0 B8T0 B9T0 B9T0
129330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B1T0 B1T0 B2T0 B2T0 B3T0 B3T0 B4T0 B4T0
130330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B6T0 B6T0 B7T0 B7T0 B8T0 B8T0 B9T0 B9T0
131330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B1T0 B1T0 B2T0 B2T0 B3T0 B3T0 B4T0 B4T0
132330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B6T0 B6T0 B7T0 B7T0 B8T0 B8T0 B9T0 B9T0
133330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B1T0 B1T0 B2T0 B2T0 B3T0 B3T0 B4T0 B4T0
134330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B6T0 B6T0 B7T0 B7T0 B8T0 B8T0 B9T0 B9T0
135330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B1T0 B1T0 B2T0 B2T0 B3T0 B3T0 B4T0 B4T0
136330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B6T0 B6T0 B7T0 B7T0 B8T0 B8T0 B9T0 B9T0
137330d8983SJohannes Doerfert 
138330d8983SJohannes Doerfert //CHECK:      omp target teams distribute parallel for
139330d8983SJohannes Doerfert //CHECK-SAME: block chunk size 2 thread chunk size default
140330d8983SJohannes Doerfert 
141330d8983SJohannes Doerfert //CHECK-NEXT: B0T0 B0T1 B1T0 B1T1 B2T0 B2T1 B3T0 B3T1 B4T0 B4T1
142330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T1 B6T0 B6T1 B7T0 B7T1 B8T0 B8T1 B9T0 B9T1
143330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B1T0 B1T1 B2T0 B2T1 B3T0 B3T1 B4T0 B4T1
144330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T1 B6T0 B6T1 B7T0 B7T1 B8T0 B8T1 B9T0 B9T1
145330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B1T0 B1T1 B2T0 B2T1 B3T0 B3T1 B4T0 B4T1
146330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T1 B6T0 B6T1 B7T0 B7T1 B8T0 B8T1 B9T0 B9T1
147330d8983SJohannes Doerfert 
148330d8983SJohannes Doerfert //CHECK:      omp target teams distribute parallel for
149330d8983SJohannes Doerfert //CHECK-SAME  block chunk size 2 thread chunk size 3
150330d8983SJohannes Doerfert 
151330d8983SJohannes Doerfert //CHECK-NEXT: B0T0 B0T0 B1T0 B1T0 B2T0 B2T0 B3T0 B3T0 B4T0 B4T0
152330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B6T0 B6T0 B7T0 B7T0 B8T0 B8T0 B9T0 B9T0
153330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B1T0 B1T0 B2T0 B2T0 B3T0 B3T0 B4T0 B4T0
154330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B6T0 B6T0 B7T0 B7T0 B8T0 B8T0 B9T0 B9T0
155330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B1T0 B1T0 B2T0 B2T0 B3T0 B3T0 B4T0 B4T0
156330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B6T0 B6T0 B7T0 B7T0 B8T0 B8T0 B9T0 B9T0
157330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B1T0 B1T0 B2T0 B2T0 B3T0 B3T0 B4T0 B4T0
158330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B6T0 B6T0 B7T0 B7T0 B8T0 B8T0 B9T0 B9T0
159330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B1T0 B1T0 B2T0 B2T0 B3T0 B3T0 B4T0 B4T0
160330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B6T0 B6T0 B7T0 B7T0 B8T0 B8T0 B9T0 B9T0
161330d8983SJohannes Doerfert 
162330d8983SJohannes Doerfert //CHECK:      omp target teams distribute parallel for
163330d8983SJohannes Doerfert //CHECK-SAME: block chunk size 3 thread chunk size 2
164330d8983SJohannes Doerfert 
165330d8983SJohannes Doerfert //CHECK-NEXT: B0T0 B0T0 B0T1 B1T0 B1T0 B1T1 B2T0 B2T0 B2T1
166330d8983SJohannes Doerfert //CHECK-SAME: B3T0 B3T0 B3T1 B4T0 B4T0 B4T1
167330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B5T1 B6T0 B6T0 B6T1 B7T0 B7T0 B7T1
168330d8983SJohannes Doerfert //CHECK-SAME: B8T0 B8T0 B8T1 B9T0 B9T0 B9T1
169330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B0T1 B1T0 B1T0 B1T1 B2T0 B2T0 B2T1
170330d8983SJohannes Doerfert //CHECK-SAME: B3T0 B3T0 B3T1 B4T0 B4T0 B4T1
171330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B5T1 B6T0 B6T0 B6T1 B7T0 B7T0 B7T1
172330d8983SJohannes Doerfert //CHECK-SAME: B8T0 B8T0 B8T1 B9T0 B9T0 B9T1
173330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B0T1 B1T0 B1T0 B1T1 B2T0 B2T0 B2T1
174330d8983SJohannes Doerfert //CHECK-SAME: B3T0 B3T0 B3T1 B4T0 B4T0 B4T1
175330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B5T1 B6T0 B6T0 B6T1 B7T0 B7T0 B7T1
176330d8983SJohannes Doerfert //CHECK-SAME: B8T0 B8T0 B8T1 B9T0 B9T0 B9T1
177330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B0T1 B1T0 B1T0 B1T1 B2T0 B2T0 B2T1 B3T0
178330d8983SJohannes Doerfert 
179330d8983SJohannes Doerfert //CHECK:      omp target teams distribute parallel for
180330d8983SJohannes Doerfert //CHECK-SAME: block chunk size 5 thread chunk size 2
181330d8983SJohannes Doerfert 
182330d8983SJohannes Doerfert //CHECK-NEXT: B0T0 B0T0 B0T1 B0T1 B0T2 B1T0 B1T0 B1T1 B1T1 B1T2
183330d8983SJohannes Doerfert //CHECK-SAME: B2T0 B2T0 B2T1 B2T1 B2T2 B3T0 B3T0 B3T1 B3T1 B3T2
184330d8983SJohannes Doerfert //CHECK-SAME: B4T0 B4T0 B4T1 B4T1 B4T2 B5T0 B5T0 B5T1 B5T1 B5T2
185330d8983SJohannes Doerfert //CHECK-SAME: B6T0 B6T0 B6T1 B6T1 B6T2 B7T0 B7T0 B7T1 B7T1 B7T2
186330d8983SJohannes Doerfert //CHECK-SAME: B8T0 B8T0 B8T1 B8T1 B8T2 B9T0 B9T0 B9T1 B9T1 B9T2
187330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B0T1 B0T1 B0T2 B1T0 B1T0 B1T1 B1T1 B1T2
188330d8983SJohannes Doerfert //CHECK-SAME: B2T0 B2T0 B2T1 B2T1 B2T2 B3T0 B3T0 B3T1 B3T1 B3T2
189330d8983SJohannes Doerfert //CHECK-SAME: B4T0 B4T0 B4T1 B4T1 B4T2 B5T0 B5T0 B5T1 B5T1 B5T2
190330d8983SJohannes Doerfert //CHECK-SAME: B6T0 B6T0 B6T1 B6T1 B6T2 B7T0 B7T0 B7T1 B7T1 B7T2
191330d8983SJohannes Doerfert //CHECK-SAME: B8T0 B8T0 B8T1 B8T1 B8T2 B9T0 B9T0 B9T1 B9T1 B9T2
192330d8983SJohannes Doerfert 
193330d8983SJohannes Doerfert //CHECK:      omp target teams distribute parallel for
194330d8983SJohannes Doerfert //CHECK-SAME: block chunk size 49 thread chunk size 2
195330d8983SJohannes Doerfert 
196330d8983SJohannes Doerfert //CHECK-NEXT: B0T0 B0T0 B0T1 B0T1 B0T2 B0T2 B0T3 B0T3 B0T4 B0T4 B0T5 B0T5
197330d8983SJohannes Doerfert //CHECK-SAME: B0T6 B0T6 B0T7 B0T7 B0T8 B0T8 B0T9 B0T9 B0T10 B0T10 B0T11 B0T11
198330d8983SJohannes Doerfert //CHECK-SAME: B0T12 B0T12 B0T13 B0T13 B0T14 B0T14 B0T15 B0T15 B0T16 B0T16
199330d8983SJohannes Doerfert //CHECK-SAME: B0T17 B0T17 B0T18 B0T18 B0T19 B0T19 B0T20 B0T20 B0T21 B0T21
200330d8983SJohannes Doerfert //CHECK-SAME: B0T22 B0T22 B0T23 B0T23 B0T24
201330d8983SJohannes Doerfert //CHECK-SAME: B1T0 B1T0 B1T1 B1T1 B1T2 B1T2 B1T3 B1T3 B1T4 B1T4 B1T5 B1T5
202330d8983SJohannes Doerfert //CHECK-SAME: B1T6 B1T6 B1T7 B1T7 B1T8 B1T8 B1T9 B1T9 B1T10 B1T10 B1T11 B1T11
203330d8983SJohannes Doerfert //CHECK-SAME: B1T12 B1T12 B1T13 B1T13 B1T14 B1T14 B1T15 B1T15 B1T16 B1T16
204330d8983SJohannes Doerfert //CHECK-SAME: B1T17 B1T17 B1T18 B1T18 B1T19 B1T19 B1T20 B1T20 B1T21 B1T21
205330d8983SJohannes Doerfert //CHECK-SAME: B1T22 B1T22 B1T23 B1T23 B1T24
206330d8983SJohannes Doerfert //CHECK-SAME: B2T0 B2T0
207330d8983SJohannes Doerfert 
208330d8983SJohannes Doerfert //CHECK:      omp target teams distribute parallel for
209330d8983SJohannes Doerfert //CHECK-SAME: block chunk size 29 thread chunk size default
210330d8983SJohannes Doerfert 
211330d8983SJohannes Doerfert //CHECK-NEXT: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8 B0T9
212330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8 B0T9
213330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8
214330d8983SJohannes Doerfert //CHECK-SAME: B1T0 B1T1 B1T2 B1T3 B1T4 B1T5 B1T6 B1T7 B1T8 B1T9
215330d8983SJohannes Doerfert //CHECK-SAME: B1T0 B1T1 B1T2 B1T3 B1T4 B1T5 B1T6 B1T7 B1T8 B1T9
216330d8983SJohannes Doerfert //CHECK-SAME: B1T0 B1T1 B1T2 B1T3 B1T4 B1T5 B1T6 B1T7 B1T8
217330d8983SJohannes Doerfert //CHECK-SAME: B2T0 B2T1 B2T2 B2T3 B2T4 B2T5 B2T6 B2T7 B2T8 B2T9
218330d8983SJohannes Doerfert //CHECK-SAME: B2T0 B2T1 B2T2 B2T3 B2T4 B2T5 B2T6 B2T7 B2T8 B2T9
219330d8983SJohannes Doerfert //CHECK-SAME: B2T0 B2T1 B2T2 B2T3 B2T4 B2T5 B2T6 B2T7 B2T8
220330d8983SJohannes Doerfert //CHECK-SAME: B3T0 B3T1 B3T2 B3T3 B3T4 B3T5 B3T6 B3T7 B3T8 B3T9
221330d8983SJohannes Doerfert //CHECK-SAME: B3T0 B3T1 B3T2
222330d8983SJohannes Doerfert 
223330d8983SJohannes Doerfert //CHECK:      omp target teams distribute parallel for
224330d8983SJohannes Doerfert //CHECK-SAME: block chunk size 101 thread chunk size default
225330d8983SJohannes Doerfert 
226330d8983SJohannes Doerfert //CHECK-NEXT: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8 B0T9
227330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8 B0T9
228330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8 B0T9
229330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8 B0T9
230330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8 B0T9
231330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8 B0T9
232330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8 B0T9
233330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8 B0T9
234330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8 B0T9
235330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T1 B0T2 B0T3 B0T4 B0T5 B0T6 B0T7 B0T8 B0T9
236330d8983SJohannes Doerfert 
237330d8983SJohannes Doerfert //CHECK:      omp target teams distribute parallel for
238330d8983SJohannes Doerfert //CHECK-SAME: default block chunk size thread chunk size 101
239330d8983SJohannes Doerfert 
240330d8983SJohannes Doerfert //CHECK-NEXT: B0T0 B0T0 B0T0 B0T0 B0T0 B0T0 B0T0 B0T0 B0T0 B0T0
241330d8983SJohannes Doerfert //CHECK-SAME: B1T0 B1T0 B1T0 B1T0 B1T0 B1T0 B1T0 B1T0 B1T0 B1T0
242330d8983SJohannes Doerfert //CHECK-SAME: B2T0 B2T0 B2T0 B2T0 B2T0 B2T0 B2T0 B2T0 B2T0 B2T0
243330d8983SJohannes Doerfert //CHECK-SAME: B3T0 B3T0 B3T0 B3T0 B3T0 B3T0 B3T0 B3T0 B3T0 B3T0
244330d8983SJohannes Doerfert //CHECK-SAME: B4T0 B4T0 B4T0 B4T0 B4T0 B4T0 B4T0 B4T0 B4T0 B4T0
245330d8983SJohannes Doerfert //CHECK-SAME: B5T0 B5T0 B5T0 B5T0 B5T0 B5T0 B5T0 B5T0 B5T0 B5T0
246330d8983SJohannes Doerfert //CHECK-SAME: B6T0 B6T0 B6T0 B6T0 B6T0 B6T0 B6T0 B6T0 B6T0 B6T0
247330d8983SJohannes Doerfert //CHECK-SAME: B7T0 B7T0 B7T0 B7T0 B7T0 B7T0 B7T0 B7T0 B7T0 B7T0
248330d8983SJohannes Doerfert //CHECK-SAME: B8T0 B8T0 B8T0 B8T0 B8T0 B8T0 B8T0 B8T0 B8T0 B8T0
249330d8983SJohannes Doerfert //CHECK-SAME: B0T0 B0T0 B0T0 B0T0 B0T0 B0T0 B0T0 B0T0 B0T0 B0T0
250