diff options
author | Kelvin Li <kkwli0@gmail.com> | 2015-11-23 05:32:03 +0000 |
---|---|---|
committer | Kelvin Li <kkwli0@gmail.com> | 2015-11-23 05:32:03 +0000 |
commit | e72003e211c5541371e6ea378da8d8a4ef2a2e19 (patch) | |
tree | 60ce34a66a89a6841effd28660c4cbf1dbc79f82 /test/OpenMP/target_data_ast_print.cpp | |
parent | 957c5b5a740c66687c9ea2b13f0c66b43e4c7499 (diff) |
[OpenMP] Parsing and sema support for map clause
http://reviews.llvm.org/D14134
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253849 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/OpenMP/target_data_ast_print.cpp')
-rw-r--r-- | test/OpenMP/target_data_ast_print.cpp | 144 |
1 files changed, 142 insertions, 2 deletions
diff --git a/test/OpenMP/target_data_ast_print.cpp b/test/OpenMP/target_data_ast_print.cpp index 06b46166cd..cdff857e56 100644 --- a/test/OpenMP/target_data_ast_print.cpp +++ b/test/OpenMP/target_data_ast_print.cpp @@ -8,8 +8,113 @@ void foo() {} +template <typename T, int C> +T tmain(T argc, T *argv) { + T i, j, b, c, d, e, x[20]; + +#pragma omp target data + i = argc; + +#pragma omp target data if (target data: j > 0) + foo(); + +#pragma omp target data if (b) + foo(); + +#pragma omp target data map(c) + foo(); + +#pragma omp target data map(c) if(b>e) + foo(); + +#pragma omp target data map(x[0:10], c) + foo(); + +#pragma omp target data map(to: c) map(from: d) + foo(); + +#pragma omp target data map(always,alloc: e) + foo(); + +// nesting a target region +#pragma omp target data map(e) +{ + #pragma omp target map(always, alloc: e) + foo(); +} + + return 0; +} + +// CHECK: template <typename T = int, int C = 5> int tmain(int argc, int *argv) { +// CHECK-NEXT: int i, j, b, c, d, e, x[20]; +// CHECK-NEXT: #pragma omp target data +// CHECK-NEXT: i = argc; +// CHECK-NEXT: #pragma omp target data if(target data: j > 0) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data if(b) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(tofrom: c) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(tofrom: c) if(b > e) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(tofrom: x[0:10],c) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(to: c) map(from: d) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(always,alloc: e) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(tofrom: e) +// CHECK-NEXT: { +// CHECK-NEXT: #pragma omp target map(always,alloc: e) +// CHECK-NEXT: foo(); +// CHECK: template <typename T = char, int C = 1> char tmain(char argc, char *argv) { +// CHECK-NEXT: char i, j, b, c, d, e, x[20]; +// CHECK-NEXT: #pragma omp target data +// CHECK-NEXT: i = argc; +// CHECK-NEXT: #pragma omp target data if(target data: j > 0) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data if(b) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(tofrom: c) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(tofrom: c) if(b > e) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(tofrom: x[0:10],c) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(to: c) map(from: d) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(always,alloc: e) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(tofrom: e) +// CHECK-NEXT: { +// CHECK-NEXT: #pragma omp target map(always,alloc: e) +// CHECK-NEXT: foo(); +// CHECK: template <typename T, int C> T tmain(T argc, T *argv) { +// CHECK-NEXT: T i, j, b, c, d, e, x[20]; +// CHECK-NEXT: #pragma omp target data +// CHECK-NEXT: i = argc; +// CHECK-NEXT: #pragma omp target data if(target data: j > 0) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data if(b) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(tofrom: c) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(tofrom: c) if(b > e) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(tofrom: x[0:10],c) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(to: c) map(from: d) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(always,alloc: e) +// CHECK-NEXT: foo(); +// CHECK-NEXT: #pragma omp target data map(tofrom: e) +// CHECK-NEXT: { +// CHECK-NEXT: #pragma omp target map(always,alloc: e) +// CHECK-NEXT: foo(); + int main (int argc, char **argv) { - int b = argc, c, d, e, f, g; + int b = argc, c, d, e, f, g, x[20]; static int a; // CHECK: static int a; @@ -27,7 +132,42 @@ int main (int argc, char **argv) { foo(); // CHECK-NEXT: foo(); - return (0); +#pragma omp target data map(c) +// CHECK-NEXT: #pragma omp target data map(tofrom: c) + foo(); +// CHECK-NEXT: foo(); + +#pragma omp target data map(c) if(b>g) +// CHECK-NEXT: #pragma omp target data map(tofrom: c) if(b > g) + foo(); +// CHECK-NEXT: foo(); + +#pragma omp target data map(x[0:10], c) +// CHECK-NEXT: #pragma omp target data map(tofrom: x[0:10],c) + foo(); +// CHECK-NEXT: foo(); + +#pragma omp target data map(to: c) map(from: d) +// CHECK-NEXT: #pragma omp target data map(to: c) map(from: d) + foo(); +// CHECK-NEXT: foo(); + +#pragma omp target data map(always,alloc: e) +// CHECK-NEXT: #pragma omp target data map(always,alloc: e) + foo(); +// CHECK-NEXT: foo(); + +// nesting a target region +#pragma omp target data map(e) +// CHECK-NEXT: #pragma omp target data map(tofrom: e) +{ +// CHECK-NEXT: { + #pragma omp target map(always, alloc: e) +// CHECK-NEXT: #pragma omp target map(always,alloc: e) + foo(); +// CHECK-NEXT: foo(); +} + return tmain<int, 5>(argc, &argc) + tmain<char, 1>(argv[0][0], argv[0]); } #endif |