Clang Project

clang_source_code/test/OpenMP/target_teams_distribute_parallel_for_simd_schedule_codegen.cpp
1// expected-no-diagnostics
2#ifndef HEADER
3#define HEADER
4
5// Test host codegen.
6// RUN: %clang_cc1 -DCK1 -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-64
7// RUN: %clang_cc1 -DCK1 -fopenmp -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-pch -o %t %s
8// RUN: %clang_cc1 -DCK1 -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-64
9// RUN: %clang_cc1 -DCK1 -verify -fopenmp -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-32
10// RUN: %clang_cc1 -DCK1 -fopenmp -x c++ -std=c++11 -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-pch -o %t %s
11// RUN: %clang_cc1 -DCK1 -fopenmp -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-32
12
13// RUN: %clang_cc1 -DCK1 -verify -fopenmp-simd -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix SIMD-ONLY
14// RUN: %clang_cc1 -DCK1 -fopenmp-simd -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-pch -o %t %s
15// RUN: %clang_cc1 -DCK1 -fopenmp-simd -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix SIMD-ONLY
16// RUN: %clang_cc1 -DCK1 -verify -fopenmp-simd -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix SIMD-ONLY
17// RUN: %clang_cc1 -DCK1 -fopenmp-simd -x c++ -std=c++11 -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-pch -o %t %s
18// RUN: %clang_cc1 -DCK1 -fopenmp-simd -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix SIMD-ONLY
19// SIMD-ONLY-NOT: {{__kmpc|__tgt}}
20
21#ifdef CK1
22
23template <typename T, int X, long long Y>
24struct SS{
25  T a[X];
26  float b;
27  // CK1: define {{.*}}i32 @{{.+}}foo{{.+}}(
28  int foo(void) {
29
30  // CK1: call i32 @__tgt_target_teams(
31  // CK1: call void @[[OFFL1:.+]](
32    #pragma omp target teams distribute parallel for simd
33    for(int i = 0; i < X; i++) {
34      a[i] = (T)0;
35    }
36  // CK1: call i32 @__tgt_target_teams(
37  // CK1: call void @[[OFFL2:.+]](
38    #pragma omp target teams distribute parallel for simd schedule(static)
39    for(int i = 0; i < X; i++) {
40      a[i] = (T)0;
41    }
42  // CK1: call i32 @__tgt_target_teams(
43  // CK1: call void @[[OFFL3:.+]](
44    #pragma omp target teams distribute parallel for simd schedule(static, X/2)
45    for(int i = 0; i < X; i++) {
46      a[i] = (T)0;
47    }
48
49  // CK1: call i32 @__tgt_target_teams(
50  // CK1: call void @[[OFFL4:.+]](
51    #pragma omp target teams distribute parallel for simd schedule(dynamic)
52    for(int i = 0; i < X; i++) {
53      a[i] = (T)0;
54    }
55
56  // CK1: call i32 @__tgt_target_teams(
57  // CK1: call void @[[OFFL5:.+]](
58    #pragma omp target teams distribute parallel for simd schedule(dynamic, X/2)
59    for(int i = 0; i < X; i++) {
60      a[i] = (T)0;
61    }
62
63  // CK1: define internal void @[[OFFL1]](
64  // CK1: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTL1:.+]] to {{.+}},
65  // CK1: ret void
66
67  // CK1: define internal void @[[OUTL1]]({{.+}})
68  // CK1: call void @__kmpc_for_static_init_4(
69  // CK1: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL1:.+]] to
70  // CK1: call void @__kmpc_for_static_fini(
71  // CK1: ret void
72
73  // CK1: define internal void @[[PAR_OUTL1]]({{.+}})
74  // CK1: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34,
75  // CK1: call void @__kmpc_for_static_fini(
76  // CK1: ret void
77
78  // CK1: define internal void @[[OFFL2]](
79  // CK1: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTL2:.+]] to {{.+}},
80  // CK1: ret void
81
82  // CK1: define internal void @[[OUTL2]]({{.+}})
83  // CK1: call void @__kmpc_for_static_init_4(
84  // CK1: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL2:.+]] to
85  // CK1: call void @__kmpc_for_static_fini(
86  // CK1: ret void
87
88  // CK1: define internal void @[[PAR_OUTL2]]({{.+}})
89  // CK1: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34,
90  // CK1: call void @__kmpc_for_static_fini(
91  // CK1: ret void
92
93  // CK1: define internal void @[[OFFL3]](
94  // CK1: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTL3:.+]] to {{.+}},
95  // CK1: ret void
96
97  // CK1: define internal void @[[OUTL3]]({{.+}})
98  // CK1: call void @__kmpc_for_static_init_4(
99  // CK1: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL3:.+]] to
100  // CK1: call void @__kmpc_for_static_fini(
101  // CK1: ret void
102
103  // CK1: define internal void @[[PAR_OUTL3]]({{.+}})
104  // CK1: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 33,
105  // CK1: call void @__kmpc_for_static_fini(
106  // CK1: ret void
107
108  // CK1: define internal void @[[OFFL4]](
109  // CK1: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTL4:.+]] to {{.+}},
110  // CK1: ret void
111
112  // CK1: define internal void @[[OUTL4]]({{.+}})
113  // CK1: call void @__kmpc_for_static_init_4(
114  // CK1: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL4:.+]] to
115  // CK1: call void @__kmpc_for_static_fini(
116  // CK1: ret void
117
118  // CK1: define internal void @[[PAR_OUTL4]]({{.+}})
119  // CK1: call void @__kmpc_dispatch_init_4({{.+}}, {{.+}}, i32 35,
120  // CK1: call {{.+}} @__kmpc_dispatch_next_4(
121  // CK1: ret void
122
123  // CK1: define internal void @[[OFFL5]](
124  // CK1: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTL5:.+]] to {{.+}},
125  // CK1: ret void
126
127  // CK1: define internal void @[[OUTL5]]({{.+}})
128  // CK1: call void @__kmpc_for_static_init_4(
129  // CK1: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL5:.+]] to
130  // CK1: call void @__kmpc_for_static_fini(
131  // CK1: ret void
132
133  // CK1: define internal void @[[PAR_OUTL5]]({{.+}})
134  // CK1: call void @__kmpc_dispatch_init_4({{.+}}, {{.+}}, i32 35,
135  // CK1: call {{.+}} @__kmpc_dispatch_next_4(
136  // CK1: ret void
137
138    return a[0];
139  }
140};
141
142int teams_template_struct(void) {
143  SS<int, 123, 456> V;
144  return V.foo();
145
146}
147#endif // CK1
148
149// Test host codegen.
150// RUN: %clang_cc1 -DCK2 -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix CK2 --check-prefix CK2-64
151// RUN: %clang_cc1 -DCK2 -fopenmp -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-pch -o %t %s
152// RUN: %clang_cc1 -DCK2 -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix CK2 --check-prefix CK2-64
153// RUN: %clang_cc1 -DCK2 -verify -fopenmp -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix CK2 --check-prefix CK2-32
154// RUN: %clang_cc1 -DCK2 -fopenmp -x c++ -std=c++11 -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-pch -o %t %s
155// RUN: %clang_cc1 -DCK2 -fopenmp -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix CK2 --check-prefix CK2-32
156
157// RUN: %clang_cc1 -DCK2 -verify -fopenmp-simd -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix SIMD-ONLY
158// RUN: %clang_cc1 -DCK2 -fopenmp-simd -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-pch -o %t %s
159// RUN: %clang_cc1 -DCK2 -fopenmp-simd -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix SIMD-ONLY
160// RUN: %clang_cc1 -DCK2 -verify -fopenmp-simd -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix SIMD-ONLY
161// RUN: %clang_cc1 -DCK2 -fopenmp-simd -x c++ -std=c++11 -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-pch -o %t %s
162// RUN: %clang_cc1 -DCK2 -fopenmp-simd -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix SIMD-ONLY
163// SIMD-ONLY-NOT: {{__kmpc|__tgt}}
164#ifdef CK2
165
166template <typename T, int n>
167int tmain(T argc) {
168  T a[n];
169  int m = 10;
170#pragma omp target teams distribute parallel for simd
171  for(int i = 0; i < n; i++) {
172    a[i] = (T)0;
173  }
174#pragma omp target teams distribute parallel for simd schedule(static)
175  for(int i = 0; i < n; i++) {
176    a[i] = (T)0;
177  }
178#pragma omp target teams distribute parallel for simd schedule(static, m)
179  for(int i = 0; i < n; i++) {
180    a[i] = (T)0;
181  }
182#pragma omp target teams distribute parallel for simd schedule(dynamic)
183  for(int i = 0; i < n; i++) {
184    a[i] = (T)0;
185  }
186#pragma omp target teams distribute parallel for simd schedule(dynamic, m)
187  for(int i = 0; i < n; i++) {
188    a[i] = (T)0;
189  }
190  return 0;
191}
192
193int main (int argc, char **argv) {
194  int n = 100;
195  int a[n];
196  int m = 10;
197#pragma omp target teams distribute parallel for simd
198  for(int i = 0; i < n; i++) {
199    a[i] = 0;
200  }
201#pragma omp target teams distribute parallel for simd dist_schedule(static)
202  for(int i = 0; i < n; i++) {
203    a[i] = 0;
204  }
205#pragma omp target teams distribute parallel for simd dist_schedule(static, m)
206  for(int i = 0; i < n; i++) {
207    a[i] = 0;
208  }
209#pragma omp target teams distribute parallel for simd schedule(dynamic)
210  for(int i = 0; i < n; i++) {
211    a[i] = 0;
212  }
213#pragma omp target teams distribute parallel for simd schedule(dynamic, m)
214  for(int i = 0; i < n; i++) {
215    a[i] = 0;
216  }
217  return tmain<int, 10>(argc);
218}
219
220// CK2: define {{.*}}i32 @{{[^,]+}}(i{{.+}}{{.+}} %[[ARGC:.+]], {{.+}})
221// CK2: call i32 @__tgt_target_teams(
222// CK2: call void @[[OFFL1:.+]]({{.+}})
223// CK2: call i32 @__tgt_target_teams(
224// CK2: call void @[[OFFL2:.+]]({{.+}})
225// CK2: call i32 @__tgt_target_teams(
226// CK2: call void @[[OFFL3:.+]]({{.+}})
227// CK2: call i32 @__tgt_target_teams(
228// CK2: call void @[[OFFL4:.+]]({{.+}})
229// CK2: call i32 @__tgt_target_teams(
230// CK2: call void @[[OFFL5:.+]]({{.+}})
231// CK2: {{%.+}} = call{{.*}} i32 @[[TMAIN:.+]]({{.+}})
232// CK2: ret
233
234// CK2:  define {{.*}}void @[[OFFL1]]({{.+}})
235// CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 3, {{.+}} @[[OUTL1:.+]] to {{.+}},
236// CK2: ret void
237
238// CK2: define internal void @[[OUTL1]]({{.+}})
239// CK2: call void @__kmpc_for_static_init_4(
240// CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL1:.+]] to
241// CK2: call void @__kmpc_for_static_fini(
242// CK2: ret void
243
244// CK2: define internal void @[[PAR_OUTL1]]({{.+}})
245// CK2: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34,
246// CK2: call void @__kmpc_for_static_fini(
247// CK2: ret void
248
249// CK2: define {{.*}}void @[[OFFL2]]({{.+}})
250// CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 3, {{.+}} @[[OUTL2:.+]] to {{.+}},
251// CK2: ret void
252
253// CK2: define internal void @[[OUTL2]]({{.+}})
254// CK2: call void @__kmpc_for_static_init_4(
255// CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL2:.+]] to
256// CK2: call void @__kmpc_for_static_fini(
257// CK2: ret void
258
259// CK2: define internal void @[[PAR_OUTL2]]({{.+}})
260// CK2: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34,
261// CK2: call void @__kmpc_for_static_fini(
262// CK2: ret void
263
264// CK2:  define {{.*}}void @[[OFFL3]]({{.+}})
265// CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 4, {{.+}} @[[OUTL3:.+]] to {{.+}},
266// CK2: ret void
267
268// CK2: define internal void @[[OUTL3]]({{.+}})
269// CK2: call void @__kmpc_for_static_init_4(
270// CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL3:.+]] to
271// CK2: call void @__kmpc_for_static_fini(
272// CK2: ret void
273
274// CK2: define internal void @[[PAR_OUTL3]]({{.+}})
275// CK2: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34
276// CK2: call void @__kmpc_for_static_fini(
277// CK2: ret void
278
279// CK2:  define {{.*}}void @[[OFFL4]]({{.+}})
280// CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 {{.+}}, {{.+}} @[[OUTL4:.+]] to {{.+}},
281// CK2: ret void
282
283// CK2: define internal void @[[OUTL4]]({{.+}})
284// CK2: call void @__kmpc_for_static_init_4(
285// CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL4:.+]] to
286// CK2: call void @__kmpc_for_static_fini(
287// CK2: ret void
288
289// CK2: define internal void @[[PAR_OUTL4]]({{.+}})
290// CK2: call void @__kmpc_dispatch_init_4({{.+}}, {{.+}}, i32 35,
291// CK2: call {{.+}} @__kmpc_dispatch_next_4(
292// CK2: ret void
293
294
295// CK2: define {{.*}}void @[[OFFL5]]({{.+}})
296// CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 {{.+}}, {{.+}} @[[OUTL5:.+]] to {{.+}},
297// CK2: ret void
298
299// CK2: define internal void @[[OUTL5]]({{.+}})
300// CK2: call void @__kmpc_for_static_init_4(
301// CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL5:.+]] to
302// CK2: call void @__kmpc_for_static_fini(
303// CK2: ret void
304
305// CK2: define internal void @[[PAR_OUTL5]]({{.+}})
306// CK2: call void @__kmpc_dispatch_init_4({{.+}}, {{.+}}, i32 35,
307// CK2: call {{.+}} @__kmpc_dispatch_next_4(
308// CK2: ret void
309
310// CK2: define {{.*}}i32 @[[TMAIN]]({{.+}})
311// CK2: call i32 @__tgt_target_teams(
312// CK2: call void @[[OFFLT1:.+]]({{.+}})
313// CK2: call i32 @__tgt_target_teams(
314// CK2: call void @[[OFFLT2:.+]]({{.+}})
315// CK2: call i32 @__tgt_target_teams(
316// CK2: call void @[[OFFLT3:.+]]({{.+}})
317// CK2: call i32 @__tgt_target_teams(
318// CK2: call void @[[OFFLT4:.+]]({{.+}})
319// CK2: call i32 @__tgt_target_teams(
320// CK2: call void @[[OFFLT5:.+]]({{.+}})
321// CK2:  ret
322// CK2-NEXT: }
323
324// CK2:  define {{.*}}void @[[OFFLT1]]({{.+}})
325// CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTLT1:.+]] to {{.+}},
326// CK2: ret void
327
328// CK2: define internal void @[[OUTLT1]]({{.+}})
329// CK2: call void @__kmpc_for_static_init_4(
330// CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTLT1:.+]] to
331// CK2: call void @__kmpc_for_static_fini(
332// CK2: ret void
333
334// CK2: define internal void @[[PAR_OUTLT1]]({{.+}})
335// CK2: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34,
336// CK2: call void @__kmpc_for_static_fini(
337// CK2: ret void
338
339// CK2:  define {{.*}}void @[[OFFLT2]]({{.+}})
340// CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTLT2:.+]] to {{.+}},
341// CK2: ret void
342
343// CK2: define internal void @[[OUTLT2]]({{.+}})
344// CK2: call void @__kmpc_for_static_init_4(
345// CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTLT2:.+]] to
346// CK2: call void @__kmpc_for_static_fini(
347// CK2: ret void
348
349// CK2: define internal void @[[PAR_OUTLT2]]({{.+}})
350// CK2: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34,
351// CK2: call void @__kmpc_for_static_fini(
352// CK2: ret void
353
354// CK2:  define {{.*}}void @[[OFFLT3]]({{.+}})
355// CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 {{.+}}, {{.+}} @[[OUTLT3:.+]] to {{.+}},
356// CK2: ret void
357
358// CK2: define internal void @[[OUTLT3]]({{.+}})
359// CK2: call void @__kmpc_for_static_init_4(
360// CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTLT3:.+]] to
361// CK2: call void @__kmpc_for_static_fini(
362// CK2: ret void
363
364// CK2: define internal void @[[PAR_OUTLT3]]({{.+}})
365// CK2: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 33,
366// CK2: call void @__kmpc_for_static_fini(
367// CK2: ret void
368
369// CK2:  define {{.*}}void @[[OFFLT4]]({{.+}})
370// CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 {{.+}}, {{.+}} @[[OUTLT4:.+]] to {{.+}},
371// CK2: ret void
372
373// CK2: define internal void @[[OUTLT4]]({{.+}})
374// CK2: call void @__kmpc_for_static_init_4(
375// CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTLT4:.+]] to
376// CK2: call void @__kmpc_for_static_fini(
377// CK2: ret void
378
379// CK2: define internal void @[[PAR_OUTLT4]]({{.+}})
380// CK2: call void @__kmpc_dispatch_init_4({{.+}}, {{.+}}, i32 35,
381// CK2: call {{.+}} @__kmpc_dispatch_next_4(
382// CK2: ret void
383
384// CK2:  define {{.*}}void @[[OFFLT5]]({{.+}})
385// CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 {{.+}}, {{.+}} @[[OUTLT5:.+]] to {{.+}},
386// CK2: ret void
387
388// CK2: define internal void @[[OUTLT5]]({{.+}})
389// CK2: call void @__kmpc_for_static_init_4(
390// CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTLT5:.+]] to
391// CK2: call void @__kmpc_for_static_fini(
392// CK2: ret void
393
394// CK2: define internal void @[[PAR_OUTLT5]]({{.+}})
395// CK2: call void @__kmpc_dispatch_init_4({{.+}}, {{.+}}, i32 35,
396// CK2: call {{.+}} @__kmpc_dispatch_next_4(
397// CK2: ret void
398
399#endif // CK2
400#endif // #ifndef HEADER
401