180a9a61dSAlexey Bataev // Test target codegen - host bc file has to be created first.
280a9a61dSAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=nvptx64-nvidia-cuda -emit-llvm-bc %s -o %t-ppc-host.bc
380a9a61dSAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp -x c++ -triple nvptx64-unknown-unknown -fopenmp-targets=nvptx64-nvidia-cuda -emit-llvm %s -fopenmp-is-device -fopenmp-host-ir-file-path %t-ppc-host.bc -o - -fopenmp-cuda-force-full-runtime | FileCheck %s
480a9a61dSAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp -x c++ -triple i386-unknown-unknown -fopenmp-targets=nvptx-nvidia-cuda -emit-llvm-bc %s -o %t-x86-host.bc
580a9a61dSAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp -x c++ -triple nvptx-unknown-unknown -fopenmp-targets=nvptx-nvidia-cuda -emit-llvm %s -fopenmp-is-device -fopenmp-host-ir-file-path %t-x86-host.bc -o - -fopenmp-cuda-force-full-runtime | FileCheck %s
680a9a61dSAlexey Bataev // RUN: %clang_cc1 -verify -fopenmp -fexceptions -fcxx-exceptions -x c++ -triple nvptx-unknown-unknown -fopenmp-targets=nvptx-nvidia-cuda -emit-llvm %s -fopenmp-is-device -fopenmp-host-ir-file-path %t-x86-host.bc -o - -fopenmp-cuda-force-full-runtime | FileCheck %s
780a9a61dSAlexey Bataev // expected-no-diagnostics
880a9a61dSAlexey Bataev #ifndef HEADER
980a9a61dSAlexey Bataev #define HEADER
1080a9a61dSAlexey Bataev
1180a9a61dSAlexey Bataev // CHECK-NOT: @__omp_offloading_{{.+}}_exec_mode = weak constant i8 1
1280a9a61dSAlexey Bataev
foo()1380a9a61dSAlexey Bataev void foo() {
14*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
15*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
16*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
17*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
18*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
19*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
20*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
2180a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for simd
2280a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
2380a9a61dSAlexey Bataev ;
2480a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for simd schedule(static)
2580a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
2680a9a61dSAlexey Bataev ;
2780a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for simd schedule(static, 1)
2880a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
2980a9a61dSAlexey Bataev ;
3080a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for simd schedule(auto)
3180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
3280a9a61dSAlexey Bataev ;
3380a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for simd schedule(runtime)
3480a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
3580a9a61dSAlexey Bataev ;
3680a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for simd schedule(dynamic)
3780a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
3880a9a61dSAlexey Bataev ;
3980a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for simd schedule(guided)
4080a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
4180a9a61dSAlexey Bataev ;
4280a9a61dSAlexey Bataev int a;
43*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
44*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
45*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
46*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
47*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
48*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
49*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
5080a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for lastprivate(a)
5180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
5280a9a61dSAlexey Bataev a = i;
5380a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for schedule(static)
5480a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
5580a9a61dSAlexey Bataev ;
5680a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for schedule(static, 1)
5780a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
5880a9a61dSAlexey Bataev ;
5980a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for schedule(auto)
6080a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
6180a9a61dSAlexey Bataev ;
6280a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for schedule(runtime)
6380a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
6480a9a61dSAlexey Bataev ;
6580a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for schedule(dynamic)
6680a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
6780a9a61dSAlexey Bataev ;
6880a9a61dSAlexey Bataev #pragma omp target teams distribute parallel for schedule(guided)
6980a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
7080a9a61dSAlexey Bataev ;
71*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
72*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
73*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
74*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
75*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
76*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
77*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
7880a9a61dSAlexey Bataev #pragma omp target teams
7980a9a61dSAlexey Bataev #pragma omp distribute parallel for simd
8080a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
8180a9a61dSAlexey Bataev ;
8280a9a61dSAlexey Bataev #pragma omp target teams
8380a9a61dSAlexey Bataev #pragma omp distribute parallel for simd schedule(static)
8480a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
8580a9a61dSAlexey Bataev ;
8680a9a61dSAlexey Bataev #pragma omp target teams
8780a9a61dSAlexey Bataev #pragma omp distribute parallel for simd schedule(static, 1)
8880a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
8980a9a61dSAlexey Bataev ;
9080a9a61dSAlexey Bataev #pragma omp target teams
9180a9a61dSAlexey Bataev #pragma omp distribute parallel for simd schedule(auto)
9280a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
9380a9a61dSAlexey Bataev ;
9480a9a61dSAlexey Bataev #pragma omp target teams
9580a9a61dSAlexey Bataev #pragma omp distribute parallel for simd schedule(runtime)
9680a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
9780a9a61dSAlexey Bataev ;
9880a9a61dSAlexey Bataev #pragma omp target teams
9980a9a61dSAlexey Bataev #pragma omp distribute parallel for simd schedule(dynamic)
10080a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
10180a9a61dSAlexey Bataev ;
10280a9a61dSAlexey Bataev #pragma omp target teams
10380a9a61dSAlexey Bataev #pragma omp distribute parallel for simd schedule(guided)
10480a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
10580a9a61dSAlexey Bataev ;
106*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
107*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
108*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
109*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
110*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
111*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
112*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
11380a9a61dSAlexey Bataev #pragma omp target teams
11480a9a61dSAlexey Bataev #pragma omp distribute parallel for
11580a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
11680a9a61dSAlexey Bataev ;
11780a9a61dSAlexey Bataev #pragma omp target teams
11880a9a61dSAlexey Bataev #pragma omp distribute parallel for schedule(static)
11980a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
12080a9a61dSAlexey Bataev ;
12180a9a61dSAlexey Bataev #pragma omp target teams
12280a9a61dSAlexey Bataev #pragma omp distribute parallel for schedule(static, 1)
12380a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
12480a9a61dSAlexey Bataev ;
12580a9a61dSAlexey Bataev #pragma omp target teams
12680a9a61dSAlexey Bataev #pragma omp distribute parallel for schedule(auto)
12780a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
12880a9a61dSAlexey Bataev ;
12980a9a61dSAlexey Bataev #pragma omp target teams
13080a9a61dSAlexey Bataev #pragma omp distribute parallel for schedule(runtime)
13180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
13280a9a61dSAlexey Bataev ;
13380a9a61dSAlexey Bataev #pragma omp target teams
13480a9a61dSAlexey Bataev #pragma omp distribute parallel for schedule(dynamic)
13580a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
13680a9a61dSAlexey Bataev ;
13780a9a61dSAlexey Bataev #pragma omp target teams
13880a9a61dSAlexey Bataev #pragma omp distribute parallel for schedule(guided)
13980a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
14080a9a61dSAlexey Bataev ;
141*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
142*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
143*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
144*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
145*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
146*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
147*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
14880a9a61dSAlexey Bataev #pragma omp target
14980a9a61dSAlexey Bataev #pragma omp teams
15080a9a61dSAlexey Bataev #pragma omp distribute parallel for
15180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
15280a9a61dSAlexey Bataev ;
15380a9a61dSAlexey Bataev #pragma omp target
15480a9a61dSAlexey Bataev #pragma omp teams
15580a9a61dSAlexey Bataev #pragma omp distribute parallel for schedule(static)
15680a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
15780a9a61dSAlexey Bataev ;
15880a9a61dSAlexey Bataev #pragma omp target
15980a9a61dSAlexey Bataev #pragma omp teams
16080a9a61dSAlexey Bataev #pragma omp distribute parallel for schedule(static, 1)
16180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
16280a9a61dSAlexey Bataev ;
16380a9a61dSAlexey Bataev #pragma omp target
16480a9a61dSAlexey Bataev #pragma omp teams
16580a9a61dSAlexey Bataev #pragma omp distribute parallel for schedule(auto)
16680a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
16780a9a61dSAlexey Bataev ;
16880a9a61dSAlexey Bataev #pragma omp target
16980a9a61dSAlexey Bataev #pragma omp teams
17080a9a61dSAlexey Bataev #pragma omp distribute parallel for schedule(runtime)
17180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
17280a9a61dSAlexey Bataev ;
17380a9a61dSAlexey Bataev #pragma omp target
17480a9a61dSAlexey Bataev #pragma omp teams
17580a9a61dSAlexey Bataev #pragma omp distribute parallel for schedule(dynamic)
17680a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
17780a9a61dSAlexey Bataev ;
17880a9a61dSAlexey Bataev #pragma omp target
17980a9a61dSAlexey Bataev #pragma omp teams
18080a9a61dSAlexey Bataev #pragma omp distribute parallel for schedule(guided)
18180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
18280a9a61dSAlexey Bataev ;
183*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
184*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
185*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
186*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
187*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
188*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
189*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
19080a9a61dSAlexey Bataev #pragma omp target parallel for
19180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
19280a9a61dSAlexey Bataev ;
19380a9a61dSAlexey Bataev #pragma omp target parallel for schedule(static)
19480a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
19580a9a61dSAlexey Bataev ;
19680a9a61dSAlexey Bataev #pragma omp target parallel for schedule(static, 1)
19780a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
19880a9a61dSAlexey Bataev ;
19980a9a61dSAlexey Bataev #pragma omp target parallel for schedule(auto)
20080a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
20180a9a61dSAlexey Bataev ;
20280a9a61dSAlexey Bataev #pragma omp target parallel for schedule(runtime)
20380a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
20480a9a61dSAlexey Bataev ;
20580a9a61dSAlexey Bataev #pragma omp target parallel for schedule(dynamic)
20680a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
20780a9a61dSAlexey Bataev ;
20880a9a61dSAlexey Bataev #pragma omp target parallel for schedule(guided)
20980a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
21080a9a61dSAlexey Bataev ;
211*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
212*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
213*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
214*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
215*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
216*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
217*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
21880a9a61dSAlexey Bataev #pragma omp target parallel
21980a9a61dSAlexey Bataev #pragma omp for simd
22080a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
22180a9a61dSAlexey Bataev ;
22280a9a61dSAlexey Bataev #pragma omp target parallel
22380a9a61dSAlexey Bataev #pragma omp for simd schedule(static)
22480a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
22580a9a61dSAlexey Bataev ;
22680a9a61dSAlexey Bataev #pragma omp target parallel
22780a9a61dSAlexey Bataev #pragma omp for simd schedule(static, 1)
22880a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
22980a9a61dSAlexey Bataev ;
23080a9a61dSAlexey Bataev #pragma omp target parallel
23180a9a61dSAlexey Bataev #pragma omp for simd schedule(auto)
23280a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
23380a9a61dSAlexey Bataev ;
23480a9a61dSAlexey Bataev #pragma omp target parallel
23580a9a61dSAlexey Bataev #pragma omp for simd schedule(runtime)
23680a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
23780a9a61dSAlexey Bataev ;
23880a9a61dSAlexey Bataev #pragma omp target parallel
23980a9a61dSAlexey Bataev #pragma omp for simd schedule(dynamic)
24080a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
24180a9a61dSAlexey Bataev ;
24280a9a61dSAlexey Bataev #pragma omp target parallel
24380a9a61dSAlexey Bataev #pragma omp for simd schedule(guided)
24480a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
24580a9a61dSAlexey Bataev ;
246*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
247*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
248*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
249*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
250*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
251*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
252*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
25380a9a61dSAlexey Bataev #pragma omp target
25480a9a61dSAlexey Bataev #pragma omp parallel
25580a9a61dSAlexey Bataev #pragma omp for simd ordered
25680a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
25780a9a61dSAlexey Bataev ;
25880a9a61dSAlexey Bataev #pragma omp target
25980a9a61dSAlexey Bataev #pragma omp parallel
26080a9a61dSAlexey Bataev #pragma omp for simd schedule(static)
26180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
26280a9a61dSAlexey Bataev ;
26380a9a61dSAlexey Bataev #pragma omp target
26480a9a61dSAlexey Bataev #pragma omp parallel
26580a9a61dSAlexey Bataev #pragma omp for simd schedule(static, 1)
26680a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
26780a9a61dSAlexey Bataev ;
26880a9a61dSAlexey Bataev #pragma omp target
26980a9a61dSAlexey Bataev #pragma omp parallel
27080a9a61dSAlexey Bataev #pragma omp for simd schedule(auto)
27180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
27280a9a61dSAlexey Bataev ;
27380a9a61dSAlexey Bataev #pragma omp target
27480a9a61dSAlexey Bataev #pragma omp parallel
27580a9a61dSAlexey Bataev #pragma omp for simd schedule(runtime)
27680a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
27780a9a61dSAlexey Bataev ;
27880a9a61dSAlexey Bataev #pragma omp target
27980a9a61dSAlexey Bataev #pragma omp parallel
28080a9a61dSAlexey Bataev #pragma omp for simd schedule(dynamic)
28180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
28280a9a61dSAlexey Bataev ;
28380a9a61dSAlexey Bataev #pragma omp target
28480a9a61dSAlexey Bataev #pragma omp parallel
28580a9a61dSAlexey Bataev #pragma omp for simd schedule(guided)
28680a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
28780a9a61dSAlexey Bataev ;
288*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
289*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
290*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
291*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
292*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
293*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
294*423d34f7SShilei Tian // CHECK: call i32 @__kmpc_target_init({{.*}}, i8 2, i1 false, i1 true)
29580a9a61dSAlexey Bataev #pragma omp target
29680a9a61dSAlexey Bataev #pragma omp parallel for
29780a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
29880a9a61dSAlexey Bataev ;
29980a9a61dSAlexey Bataev #pragma omp target
30080a9a61dSAlexey Bataev #pragma omp parallel for schedule(static)
30180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
30280a9a61dSAlexey Bataev ;
30380a9a61dSAlexey Bataev #pragma omp target
30480a9a61dSAlexey Bataev #pragma omp parallel for schedule(static, 1)
30580a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
30680a9a61dSAlexey Bataev ;
30780a9a61dSAlexey Bataev #pragma omp target
30880a9a61dSAlexey Bataev #pragma omp parallel for schedule(auto)
30980a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
31080a9a61dSAlexey Bataev ;
31180a9a61dSAlexey Bataev #pragma omp target
31280a9a61dSAlexey Bataev #pragma omp parallel for schedule(runtime)
31380a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
31480a9a61dSAlexey Bataev ;
31580a9a61dSAlexey Bataev #pragma omp target
31680a9a61dSAlexey Bataev #pragma omp parallel for schedule(dynamic)
31780a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
31880a9a61dSAlexey Bataev ;
31980a9a61dSAlexey Bataev #pragma omp target
32080a9a61dSAlexey Bataev #pragma omp parallel for schedule(guided)
32180a9a61dSAlexey Bataev for (int i = 0; i < 10; ++i)
32280a9a61dSAlexey Bataev ;
32380a9a61dSAlexey Bataev }
32480a9a61dSAlexey Bataev
32580a9a61dSAlexey Bataev #endif
32680a9a61dSAlexey Bataev
327