diff options
| author | Alexander Musman <alexander.musman@gmail.com> | 2014-09-23 09:33:00 +0000 |
|---|---|---|
| committer | Alexander Musman <alexander.musman@gmail.com> | 2014-09-23 09:33:00 +0000 |
| commit | e4e893bb360f823b73597b5a4e9ff917b883ba3e (patch) | |
| tree | ff2692c871bc2287ba29769f6d72c72040c93465 /clang/test/OpenMP/nesting_of_regions.cpp | |
| parent | caf534ef968e99f51d7066c0940645044a19d06a (diff) | |
| download | bcm5719-llvm-e4e893bb360f823b73597b5a4e9ff917b883ba3e.tar.gz bcm5719-llvm-e4e893bb360f823b73597b5a4e9ff917b883ba3e.zip | |
[OPENMP] Parsing/Sema of directive omp parallel for simd
llvm-svn: 218299
Diffstat (limited to 'clang/test/OpenMP/nesting_of_regions.cpp')
| -rw-r--r-- | clang/test/OpenMP/nesting_of_regions.cpp | 480 |
1 files changed, 480 insertions, 0 deletions
diff --git a/clang/test/OpenMP/nesting_of_regions.cpp b/clang/test/OpenMP/nesting_of_regions.cpp index 203026b2f75..0bc61f6e0d1 100644 --- a/clang/test/OpenMP/nesting_of_regions.cpp +++ b/clang/test/OpenMP/nesting_of_regions.cpp @@ -47,6 +47,10 @@ void foo() { for (int i = 0; i < 10; ++i) ; #pragma omp parallel +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; +#pragma omp parallel #pragma omp parallel sections { bar(); @@ -160,6 +164,12 @@ void foo() { } #pragma omp simd for (int i = 0; i < 10; ++i) { +#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp simd + for (int i = 0; i < 10; ++i) { #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} { bar(); @@ -294,6 +304,12 @@ void foo() { } #pragma omp for for (int i = 0; i < 10; ++i) { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp for + for (int i = 0; i < 10; ++i) { #pragma omp parallel sections { bar(); @@ -415,6 +431,12 @@ void foo() { } #pragma omp for simd for (int i = 0; i < 10; ++i) { +#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp for simd + for (int i = 0; i < 10; ++i) { #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} { bar(); @@ -565,6 +587,12 @@ void foo() { } #pragma omp sections { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp sections + { #pragma omp parallel sections { bar(); @@ -718,6 +746,15 @@ void foo() { { #pragma omp section { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } + } +#pragma omp sections + { +#pragma omp section + { #pragma omp parallel sections { bar(); @@ -868,6 +905,12 @@ void foo() { } #pragma omp single { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp single + { #pragma omp parallel sections { bar(); @@ -997,6 +1040,12 @@ void foo() { } #pragma omp master { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp master + { #pragma omp parallel sections { bar(); @@ -1126,6 +1175,12 @@ void foo() { } #pragma omp critical { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp critical + { #pragma omp parallel sections { bar(); @@ -1279,6 +1334,12 @@ void foo() { } #pragma omp parallel for for (int i = 0; i < 10; ++i) { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for + for (int i = 0; i < 10; ++i) { #pragma omp parallel sections { bar(); @@ -1332,6 +1393,156 @@ void foo() { ++a; } +// PARALLEL FOR SIMD DIRECTIVE +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } + +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } + +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } + +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { +#pragma omp single + { + bar(); + } +#pragma omp for + for (int i = 0; i < 10; ++i) + ; +#pragma omp for simd + for (int i = 0; i < 10; ++i) + ; +#pragma omp sections + { + bar(); + } + } + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} + ++a; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} + ++a; + } + // PARALLEL SECTIONS DIRECTIVE #pragma omp parallel sections { @@ -1423,6 +1634,12 @@ void foo() { } #pragma omp parallel sections { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel sections + { #pragma omp parallel sections { bar(); @@ -1505,6 +1722,10 @@ void foo() { for (int i = 0; i < 10; ++i) ; #pragma omp task +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; +#pragma omp task #pragma omp parallel sections { bar(); @@ -1615,12 +1836,28 @@ void foo() { } #pragma omp ordered { +#pragma omp parallel for simd ordered //expected-error {{unexpected OpenMP clause 'ordered' in directive '#pragma omp parallel for simd'}} + for (int j = 0; j < 10; ++j) { +#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } + } +#pragma omp ordered + { #pragma omp parallel for for (int i = 0; i < 10; ++i) ; } #pragma omp ordered { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp ordered + { #pragma omp parallel sections { bar(); @@ -1748,6 +1985,13 @@ void foo() { #pragma omp atomic // expected-error@+1 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} { +#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp atomic + // expected-error@+1 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} + { #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} { bar(); @@ -1849,6 +2093,10 @@ void foo() { for (int i = 0; i < 10; ++i) ; #pragma omp target +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; +#pragma omp target #pragma omp parallel sections { bar(); @@ -1939,6 +2187,10 @@ void foo() { for (int i = 0; i < 10; ++i) ; #pragma omp parallel +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; +#pragma omp parallel #pragma omp parallel sections { bar(); @@ -2045,6 +2297,12 @@ void foo() { } #pragma omp simd for (int i = 0; i < 10; ++i) { +#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp simd + for (int i = 0; i < 10; ++i) { #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} { bar(); @@ -2169,6 +2427,12 @@ void foo() { } #pragma omp for for (int i = 0; i < 10; ++i) { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp for + for (int i = 0; i < 10; ++i) { #pragma omp parallel sections { bar(); @@ -2283,6 +2547,12 @@ void foo() { } #pragma omp for simd for (int i = 0; i < 10; ++i) { +#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp for simd + for (int i = 0; i < 10; ++i) { #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} { bar(); @@ -2407,6 +2677,12 @@ void foo() { } #pragma omp sections { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp sections + { #pragma omp parallel sections { bar(); @@ -2561,6 +2837,15 @@ void foo() { { #pragma omp section { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } + } +#pragma omp sections + { +#pragma omp section + { #pragma omp parallel sections { bar(); @@ -2705,6 +2990,12 @@ void foo() { } #pragma omp single { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp single + { #pragma omp parallel sections { bar(); @@ -2834,6 +3125,12 @@ void foo() { } #pragma omp master { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp master + { #pragma omp parallel sections { bar(); @@ -2963,6 +3260,12 @@ void foo() { } #pragma omp critical { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp critical + { #pragma omp parallel sections { bar(); @@ -3121,6 +3424,12 @@ void foo() { } #pragma omp parallel for for (int i = 0; i < 10; ++i) { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for + for (int i = 0; i < 10; ++i) { #pragma omp parallel sections { bar(); @@ -3174,6 +3483,156 @@ void foo() { ++a; } +// PARALLEL FOR SIMD DIRECTIVE +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp for // expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp for simd // expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp section // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp single // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } + +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp master // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } + +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp critical // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } + +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { +#pragma omp single + { + bar(); + } +#pragma omp for + for (int i = 0; i < 10; ++i) + ; +#pragma omp for simd + for (int i = 0; i < 10; ++i) + ; +#pragma omp sections + { + bar(); + } + } + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp parallel for // expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp parallel for simd// expected-error {{OpenMP constructs may not be nested inside a simd region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp task // expected-error {{OpenMP constructs may not be nested inside a simd region}} + { + bar(); + } + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp taskyield // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp barrier // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp taskwait // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp flush // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp ordered // expected-error {{OpenMP constructs may not be nested inside a simd region}} + bar(); + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp atomic // expected-error {{OpenMP constructs may not be nested inside a simd region}} + ++a; + } +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) { +#pragma omp target // expected-error {{OpenMP constructs may not be nested inside a simd region}} + ++a; + } + // PARALLEL SECTIONS DIRECTIVE #pragma omp parallel sections { @@ -3261,6 +3720,12 @@ void foo() { } #pragma omp parallel sections { +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp parallel sections + { #pragma omp parallel sections { bar(); @@ -3342,6 +3807,10 @@ void foo() { for (int i = 0; i < 10; ++i) ; #pragma omp task +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; +#pragma omp task #pragma omp parallel sections { bar(); @@ -3466,6 +3935,13 @@ void foo() { #pragma omp atomic // expected-error@+1 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} { +#pragma omp parallel for simd // expected-error {{OpenMP constructs may not be nested inside an atomic region}} + for (int i = 0; i < 10; ++i) + ; + } +#pragma omp atomic + // expected-error@+1 {{the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x', where x is an l-value expression with scalar type}} + { #pragma omp parallel sections // expected-error {{OpenMP constructs may not be nested inside an atomic region}} { bar(); @@ -3567,6 +4043,10 @@ void foo() { for (int i = 0; i < 10; ++i) ; #pragma omp target +#pragma omp parallel for simd + for (int i = 0; i < 10; ++i) + ; +#pragma omp target #pragma omp parallel sections { bar(); |

