1 // REQUIRES: x86-registered-target
2 // REQUIRES: amdgpu-registered-target
4 // RUN: %clang_cc1 %s -x c++ -fopenmp -fsyntax-only -verify=host
7 // RUN: %clang_cc1 %s -x hip -fopenmp -fsyntax-only -verify=device
8 // device-error@#01 {{HIP does not support OpenMP target directives}}
9 // device-error@#02 {{HIP does not support OpenMP target directives}}
10 // device-error@#03 {{HIP does not support OpenMP target directives}}
11 // device-error@#04 {{HIP does not support OpenMP target directives}}
12 // device-error@#05 {{HIP does not support OpenMP target directives}}
13 // device-error@#06 {{HIP does not support OpenMP target directives}}
14 // device-error@#07 {{HIP does not support OpenMP target directives}}
15 // device-error@#08 {{HIP does not support OpenMP target directives}}
16 // device-error@#09 {{HIP does not support OpenMP target directives}}
17 // device-error@#10 {{HIP does not support OpenMP target directives}}
18 // device-error@#11 {{HIP does not support OpenMP target directives}}
19 // device-error@#12 {{HIP does not support OpenMP target directives}}
20 // device-error@#13 {{HIP does not support OpenMP target directives}}
21 // device-error@#14 {{HIP does not support OpenMP target directives}}
22 // device-error@#15 {{HIP does not support OpenMP target directives}}
23 // device-error@#16 {{HIP does not support OpenMP target directives}}
24 // device-error@#17 {{HIP does not support OpenMP target directives}}
25 // device-error@#18 {{HIP does not support OpenMP target directives}}
26 // device-error@#19 {{HIP does not support OpenMP target directives}}
27 // device-error@#20 {{HIP does not support OpenMP target directives}}
28 // device-error@#21 {{HIP does not support OpenMP target directives}}
29 // device-error@#22 {{HIP does not support OpenMP target directives}}
30 // device-error@#23 {{HIP does not support OpenMP target directives}}
31 // device-error@#24 {{HIP does not support OpenMP target directives}}
34 #pragma omp target // #01
40 #pragma omp target parallel // #02
45 #pragma omp target parallel for // #03
46 for (int i
= 0; i
< 1; ++i
);
50 #pragma omp target data map(x) // #04
54 void test05(int * x
, int n
) {
55 #pragma omp target enter data map(to:x[:n]) // #05
58 void test06(int * x
, int n
) {
59 #pragma omp target exit data map(from:x[:n]) // #06
62 void test07(int * x
, int n
) {
63 #pragma omp target update to(x[:n]) // #07
66 #pragma omp declare target (test07) // #08
71 #pragma omp begin declare target // #09
79 #pragma omp end declare target
82 #pragma omp target parallel // #10
83 for (int i
= 0; i
< n
; ++i
)
88 #pragma omp target parallel for // #11
89 for (int i
= 0; i
< n
; ++i
)
94 #pragma omp target parallel for simd // #12
95 for (int i
= 0; i
< n
; ++i
)
100 #pragma omp target parallel loop // #13
101 for (int i
= 0; i
< n
; ++i
)
106 #pragma omp target simd // #14
107 for (int i
= 0; i
< n
; ++i
)
112 #pragma omp target teams // #15
113 for (int i
= 0; i
< n
; ++i
)
118 #pragma omp target teams distribute // #16
119 for (int i
= 0; i
< n
; ++i
)
124 #pragma omp target teams distribute simd // #17
125 for (int i
= 0; i
< n
; ++i
)
130 #pragma omp target teams loop // #18
131 for (int i
= 0; i
< n
; ++i
)
136 #pragma omp target teams distribute parallel for // #19
137 for (int i
= 0; i
< n
; ++i
)
142 #pragma omp target teams distribute parallel for simd // #20
143 for (int i
= 0; i
< n
; ++i
)
148 #pragma omp target // #21
150 #pragma omp teams // #22
156 #pragma omp target // #23
157 #pragma omp teams // #24