summaryrefslogtreecommitdiffstats
path: root/clang/test/OpenMP/ordered_ast_print.cpp
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2015-09-28 06:39:35 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2015-09-28 06:39:35 +0000
commitd14d1e6f25a463a8856cde2e83593a0b71054dc2 (patch)
tree47b6b8b3a81752665e395af4ced67a7ed9ebc60b /clang/test/OpenMP/ordered_ast_print.cpp
parentf32f5f23052439dbb123b678ed5b811394d7937e (diff)
downloadbcm5719-llvm-d14d1e6f25a463a8856cde2e83593a0b71054dc2.tar.gz
bcm5719-llvm-d14d1e6f25a463a8856cde2e83593a0b71054dc2.zip
[OPENMP 4.1] Add 'simd' clause for 'ordered' directive.
Parsing and sema analysis for 'simd' clause in 'ordered' directive. Description If the simd clause is specified, the ordered regions encountered by any thread will use only a single SIMD lane to execute the ordered regions in the order of the loop iterations. Restrictions An ordered construct with the simd clause is the only OpenMP construct that can appear in the simd region llvm-svn: 248696
Diffstat (limited to 'clang/test/OpenMP/ordered_ast_print.cpp')
-rw-r--r--clang/test/OpenMP/ordered_ast_print.cpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/clang/test/OpenMP/ordered_ast_print.cpp b/clang/test/OpenMP/ordered_ast_print.cpp
index f8601c51bad..6328ec0d766 100644
--- a/clang/test/OpenMP/ordered_ast_print.cpp
+++ b/clang/test/OpenMP/ordered_ast_print.cpp
@@ -24,6 +24,24 @@ T tmain (T argc) {
{
a=2;
}
+ #pragma omp simd
+ for (int i =0 ; i < argc; ++i)
+ #pragma omp ordered simd
+ {
+ a=2;
+ }
+ #pragma omp for simd
+ for (int i =0 ; i < argc; ++i)
+ #pragma omp ordered simd
+ {
+ a=2;
+ }
+ #pragma omp parallel for simd
+ for (int i =0 ; i < argc; ++i)
+ #pragma omp ordered simd
+ {
+ a=2;
+ }
return (0);
}
@@ -40,6 +58,24 @@ T tmain (T argc) {
// CHECK-NEXT: {
// CHECK-NEXT: a = 2;
// CHECK-NEXT: }
+// CHECK-NEXT: #pragma omp simd
+// CHECK-NEXT: for (int i = 0; i < argc; ++i)
+// CHECK-NEXT: #pragma omp ordered simd
+// CHECK-NEXT: {
+// CHECK-NEXT: a = 2;
+// CHECK-NEXT: }
+// CHECK-NEXT: #pragma omp for simd
+// CHECK-NEXT: for (int i = 0; i < argc; ++i)
+// CHECK-NEXT: #pragma omp ordered simd
+// CHECK-NEXT: {
+// CHECK-NEXT: a = 2;
+// CHECK-NEXT: }
+// CHECK-NEXT: #pragma omp parallel for simd
+// CHECK-NEXT: for (int i = 0; i < argc; ++i)
+// CHECK-NEXT: #pragma omp ordered simd
+// CHECK-NEXT: {
+// CHECK-NEXT: a = 2;
+// CHECK-NEXT: }
// CHECK: static T a;
// CHECK-NEXT: #pragma omp for ordered
@@ -54,6 +90,24 @@ T tmain (T argc) {
// CHECK-NEXT: {
// CHECK-NEXT: a = 2;
// CHECK-NEXT: }
+// CHECK-NEXT: #pragma omp simd
+// CHECK-NEXT: for (int i = 0; i < argc; ++i)
+// CHECK-NEXT: #pragma omp ordered simd
+// CHECK-NEXT: {
+// CHECK-NEXT: a = 2;
+// CHECK-NEXT: }
+// CHECK-NEXT: #pragma omp for simd
+// CHECK-NEXT: for (int i = 0; i < argc; ++i)
+// CHECK-NEXT: #pragma omp ordered simd
+// CHECK-NEXT: {
+// CHECK-NEXT: a = 2;
+// CHECK-NEXT: }
+// CHECK-NEXT: #pragma omp parallel for simd
+// CHECK-NEXT: for (int i = 0; i < argc; ++i)
+// CHECK-NEXT: #pragma omp ordered simd
+// CHECK-NEXT: {
+// CHECK-NEXT: a = 2;
+// CHECK-NEXT: }
int main (int argc, char **argv) {
int b = argc, c, d, e, f, g;
@@ -71,6 +125,24 @@ int main (int argc, char **argv) {
{
a=2;
}
+ #pragma omp simd
+ for (int i =0 ; i < argc; ++i)
+ #pragma omp ordered simd
+ {
+ a=2;
+ }
+ #pragma omp for simd
+ for (int i =0 ; i < argc; ++i)
+ #pragma omp ordered simd
+ {
+ a=2;
+ }
+ #pragma omp parallel for simd
+ for (int i =0 ; i < argc; ++i)
+ #pragma omp ordered simd
+ {
+ a=2;
+ }
// CHECK-NEXT: #pragma omp for ordered
// CHECK-NEXT: for (int i = 0; i < argc; ++i)
// CHECK-NEXT: #pragma omp ordered
@@ -83,6 +155,24 @@ int main (int argc, char **argv) {
// CHECK-NEXT: {
// CHECK-NEXT: a = 2;
// CHECK-NEXT: }
+// CHECK-NEXT: #pragma omp simd
+// CHECK-NEXT: for (int i = 0; i < argc; ++i)
+// CHECK-NEXT: #pragma omp ordered simd
+// CHECK-NEXT: {
+// CHECK-NEXT: a = 2;
+// CHECK-NEXT: }
+// CHECK-NEXT: #pragma omp for simd
+// CHECK-NEXT: for (int i = 0; i < argc; ++i)
+// CHECK-NEXT: #pragma omp ordered simd
+// CHECK-NEXT: {
+// CHECK-NEXT: a = 2;
+// CHECK-NEXT: }
+// CHECK-NEXT: #pragma omp parallel for simd
+// CHECK-NEXT: for (int i = 0; i < argc; ++i)
+// CHECK-NEXT: #pragma omp ordered simd
+// CHECK-NEXT: {
+// CHECK-NEXT: a = 2;
+// CHECK-NEXT: }
return tmain(argc);
}
OpenPOWER on IntegriCloud