diff options
author | Erich Keane <ekeane@nvidia.com> | 2024-10-11 09:05:19 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-11 09:05:19 -0700 |
commit | 5b25c31351ad1b10a3819411379b3258869c1e1b (patch) | |
tree | 527c650796339ab955235a33ef3a3db1109ed06f /clang/test/AST/ast-print-openacc-loop-construct.cpp | |
parent | 3f156ef4cc333bcf9389addd1e0054b654501d7e (diff) | |
download | llvm-5b25c31351ad1b10a3819411379b3258869c1e1b.zip llvm-5b25c31351ad1b10a3819411379b3258869c1e1b.tar.gz llvm-5b25c31351ad1b10a3819411379b3258869c1e1b.tar.bz2 |
[OpenACC] Implement loop 'gang' clause. (#112006)
The 'gang' clause is used to specify parallel execution of loops, thus
has some complicated rules depending on the 'loop's associated compute
construct. This patch implements all of those.
Diffstat (limited to 'clang/test/AST/ast-print-openacc-loop-construct.cpp')
-rw-r--r-- | clang/test/AST/ast-print-openacc-loop-construct.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/clang/test/AST/ast-print-openacc-loop-construct.cpp b/clang/test/AST/ast-print-openacc-loop-construct.cpp index aee4591..baa4b17 100644 --- a/clang/test/AST/ast-print-openacc-loop-construct.cpp +++ b/clang/test/AST/ast-print-openacc-loop-construct.cpp @@ -95,4 +95,86 @@ void foo() { for(;;) for(;;) for(;;); + +// CHECK: #pragma acc loop gang(dim: 2) +// CHECK-NEXT: for (;;) +// CHECK-NEXT: ; +#pragma acc loop gang(dim:2) + for(;;); + +// CHECK: #pragma acc loop gang(static: i) +// CHECK-NEXT: for (;;) +// CHECK-NEXT: ; +#pragma acc loop gang(static:i) + for(;;); + +// CHECK: #pragma acc loop gang(static: i) gang(dim: 2) +// CHECK-NEXT: for (;;) +// CHECK-NEXT: ; +#pragma acc loop gang(static:i) gang(dim:2) + for(;;); + +// CHECK: #pragma acc parallel +// CHECK-NEXT: #pragma acc loop gang(dim: 2) +// CHECK-NEXT: for (;;) +// CHECK-NEXT: ; +#pragma acc parallel +#pragma acc loop gang(dim:2) + for(;;); + +// CHECK: #pragma acc parallel +// CHECK-NEXT: #pragma acc loop gang(static: i) +// CHECK-NEXT: for (;;) +// CHECK-NEXT: ; +#pragma acc parallel +#pragma acc loop gang(static:i) + for(;;); + +// CHECK: #pragma acc parallel +// CHECK-NEXT: #pragma acc loop gang(static: i) gang(dim: 2) +// CHECK-NEXT: for (;;) +// CHECK-NEXT: ; +#pragma acc parallel +#pragma acc loop gang(static:i) gang(dim:2) + for(;;); + +// CHECK: #pragma acc kernels +// CHECK-NEXT: #pragma acc loop gang(num: i) gang(static: i) +// CHECK-NEXT: for (;;) +// CHECK-NEXT: ; +#pragma acc kernels +#pragma acc loop gang(i) gang(static:i) + for(;;); + +// CHECK: #pragma acc kernels +// CHECK-NEXT: #pragma acc loop gang(num: i) gang(static: i) +// CHECK-NEXT: for (;;) +// CHECK-NEXT: ; +#pragma acc kernels +#pragma acc loop gang(num:i) gang(static:i) + for(;;); + +// CHECK: #pragma acc serial +// CHECK-NEXT: #pragma acc loop gang(static: i) +// CHECK-NEXT: for (;;) +// CHECK-NEXT: ; +#pragma acc serial +#pragma acc loop gang(static:i) + for(;;); + +// CHECK: #pragma acc serial +// CHECK-NEXT: #pragma acc loop gang(static: *) +// CHECK-NEXT: for (;;) +// CHECK-NEXT: ; +#pragma acc serial +#pragma acc loop gang(static:*) + for(;;); + +// CHECK: #pragma acc serial +// CHECK-NEXT: #pragma acc loop +// CHECK-NEXT: for (;;) +// CHECK-NEXT: ; +#pragma acc serial +#pragma acc loop gang + for(;;); } |