|
@@ -97,6 +97,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp parallel
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp parallel
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -246,6 +251,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp simd
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp simd
|
|
|
+ for (int i = 0; i < 10; ++i) {
|
|
|
#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
|
|
|
++a;
|
|
|
}
|
|
@@ -418,6 +428,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp for
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp for
|
|
|
+ for (int i = 0; i < 10; ++i) {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -567,6 +582,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp for simd
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp for simd
|
|
|
+ for (int i = 0; i < 10; ++i) {
|
|
|
#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
|
|
|
++a;
|
|
|
}
|
|
@@ -746,6 +766,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp sections
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp sections
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
}
|
|
|
#pragma omp sections
|
|
@@ -958,6 +983,12 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp sections
|
|
|
{
|
|
|
+#pragma omp section
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp sections
|
|
|
+ {
|
|
|
#pragma omp section
|
|
|
{
|
|
|
#pragma omp target enter data map(to: a)
|
|
@@ -1129,6 +1160,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp single
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp single
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -1291,6 +1327,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp master
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp master
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -1467,6 +1508,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp critical
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp critical
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -1644,6 +1690,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp parallel for
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp parallel for
|
|
|
+ for (int i = 0; i < 10; ++i) {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -1821,6 +1872,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp parallel for simd
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel // 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 enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
|
|
|
++a;
|
|
|
}
|
|
@@ -1989,6 +2045,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp parallel sections
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp parallel sections
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
}
|
|
|
#pragma omp parallel sections
|
|
@@ -2101,6 +2162,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp task
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp task
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -2273,6 +2339,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp ordered
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp ordered
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -2464,6 +2535,13 @@ void foo() {
|
|
|
// expected-error@+2 {{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}}
|
|
|
// expected-note@+1 {{expected an expression statement}}
|
|
|
{
|
|
|
+#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp atomic
|
|
|
+ // expected-error@+2 {{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}}
|
|
|
+ // expected-note@+1 {{expected an expression statement}}
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
|
|
|
++a;
|
|
|
}
|
|
@@ -2593,6 +2671,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp target
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target
|
|
|
+ {
|
|
|
#pragma omp teams
|
|
|
++a;
|
|
|
}
|
|
@@ -2623,6 +2706,136 @@ void foo() {
|
|
|
#pragma omp target exit data map(from: a)
|
|
|
}
|
|
|
|
|
|
+// TARGET PARALLEL DIRECTIVE
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp parallel
|
|
|
+ bar();
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp for
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ;
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp simd
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ;
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp for simd
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ;
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp sections
|
|
|
+ {
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}}
|
|
|
+ {
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp single
|
|
|
+ bar();
|
|
|
+
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp master
|
|
|
+ {
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp critical
|
|
|
+ {
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp parallel for
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ;
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp parallel for simd
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ;
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp parallel sections
|
|
|
+ {
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp task
|
|
|
+ {
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp taskyield
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp barrier
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp taskwait
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp flush
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp ordered // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp atomic
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp target
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+ ++a;
|
|
|
+#pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp taskloop
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp distribute // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp target enter data map(to: a)
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp target exit data map(from: a)
|
|
|
+ }
|
|
|
+
|
|
|
// TEAMS DIRECTIVE
|
|
|
#pragma omp target
|
|
|
#pragma omp teams
|
|
@@ -2737,6 +2950,12 @@ void foo() {
|
|
|
++a;
|
|
|
}
|
|
|
#pragma omp target
|
|
|
+#pragma omp teams
|
|
|
+ {
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target
|
|
|
#pragma omp teams
|
|
|
{
|
|
|
#pragma omp target enter data map(to: a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target enter data' directive into a parallel region?}}
|
|
@@ -2916,6 +3135,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp taskloop
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp taskloop
|
|
|
+ for (int i = 0; i < 10; ++i) {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -3118,6 +3342,13 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp target
|
|
|
#pragma omp teams
|
|
|
+#pragma omp distribute
|
|
|
+ for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target
|
|
|
+#pragma omp teams
|
|
|
#pragma omp distribute
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
#pragma omp target enter data map(to: a)
|
|
@@ -3233,6 +3464,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp parallel
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp parallel
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -3375,6 +3611,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp simd
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp simd
|
|
|
+ for (int i = 0; i < 10; ++i) {
|
|
|
#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
|
|
|
++a;
|
|
|
}
|
|
@@ -3537,6 +3778,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp for
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp for
|
|
|
+ for (int i = 0; i < 10; ++i) {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -3679,6 +3925,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp for simd
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside a simd region}}
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp for simd
|
|
|
+ for (int i = 0; i < 10; ++i) {
|
|
|
#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
|
|
|
++a;
|
|
|
}
|
|
@@ -3833,6 +4084,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp sections
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp sections
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
}
|
|
|
#pragma omp sections
|
|
@@ -4051,6 +4307,14 @@ void foo() {
|
|
|
{
|
|
|
#pragma omp section
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+ }
|
|
|
+#pragma omp sections
|
|
|
+ {
|
|
|
+#pragma omp section
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -4214,6 +4478,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp single
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp single
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -4376,6 +4645,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp master
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp master
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -4557,6 +4831,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp critical
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp critical
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -4734,6 +5013,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp parallel for
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp parallel for
|
|
|
+ for (int i = 0; i < 10; ++i) {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -4911,6 +5195,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp parallel for simd
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel // 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 enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside a simd region}}
|
|
|
++a;
|
|
|
}
|
|
@@ -5075,6 +5364,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp parallel sections
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp parallel sections
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
}
|
|
|
#pragma omp parallel sections
|
|
@@ -5186,6 +5480,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp task
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp task
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -5377,6 +5676,13 @@ void foo() {
|
|
|
// expected-error@+2 {{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}}
|
|
|
// expected-note@+1 {{expected an expression statement}}
|
|
|
{
|
|
|
+#pragma omp target parallel // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp atomic
|
|
|
+ // expected-error@+2 {{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}}
|
|
|
+ // expected-note@+1 {{expected an expression statement}}
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a) // expected-error {{OpenMP constructs may not be nested inside an atomic region}}
|
|
|
++a;
|
|
|
}
|
|
@@ -5506,6 +5812,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp target
|
|
|
{
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target
|
|
|
+ {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
}
|
|
|
#pragma omp target
|
|
@@ -5536,6 +5847,136 @@ void foo() {
|
|
|
;
|
|
|
}
|
|
|
|
|
|
+// TARGET PARALLEL DIRECTIVE
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp parallel
|
|
|
+ bar();
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp for
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ;
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp simd
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ;
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp for simd
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ;
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp sections
|
|
|
+ {
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp section // expected-error {{'omp section' directive must be closely nested to a sections region, not a target parallel region}}
|
|
|
+ {
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp single
|
|
|
+ bar();
|
|
|
+
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp master
|
|
|
+ {
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp critical
|
|
|
+ {
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp parallel for
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ;
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp parallel for simd
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ;
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp parallel sections
|
|
|
+ {
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+#pragma omp task
|
|
|
+ {
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp taskyield
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp barrier
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp taskwait
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp flush
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp ordered // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp ordered' directive into a for or a parallel for region with 'ordered' clause?}}
|
|
|
+ bar();
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp atomic
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp target
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+ ++a;
|
|
|
+#pragma omp teams // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp taskloop
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp distribute // expected-error {{region cannot be closely nested inside 'target parallel' region; perhaps you forget to enclose 'omp distribute' directive into a teams region?}}
|
|
|
+ for (int i = 0; i < 10; ++i)
|
|
|
+ ;
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp target enter data map(to: a)
|
|
|
+ }
|
|
|
+#pragma omp target parallel
|
|
|
+ {
|
|
|
+#pragma omp target exit data map(from: a)
|
|
|
+ }
|
|
|
+
|
|
|
// TEAMS DIRECTIVE
|
|
|
#pragma omp target
|
|
|
#pragma omp teams
|
|
@@ -5650,6 +6091,12 @@ void foo() {
|
|
|
++a;
|
|
|
}
|
|
|
#pragma omp target
|
|
|
+#pragma omp teams
|
|
|
+ {
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target
|
|
|
#pragma omp teams
|
|
|
{
|
|
|
#pragma omp target enter data map(to: a) // expected-error {{region cannot be closely nested inside 'teams' region; perhaps you forget to enclose 'omp target enter data' directive into a parallel region?}}
|
|
@@ -5827,6 +6274,11 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp taskloop
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp taskloop
|
|
|
+ for (int i = 0; i < 10; ++i) {
|
|
|
#pragma omp target enter data map(to: a)
|
|
|
++a;
|
|
|
}
|
|
@@ -6030,6 +6482,13 @@ void foo() {
|
|
|
}
|
|
|
#pragma omp target
|
|
|
#pragma omp teams
|
|
|
+#pragma omp distribute
|
|
|
+ for (int i = 0; i < 10; ++i) {
|
|
|
+#pragma omp target parallel
|
|
|
+ ++a;
|
|
|
+ }
|
|
|
+#pragma omp target
|
|
|
+#pragma omp teams
|
|
|
#pragma omp distribute
|
|
|
for (int i = 0; i < 10; ++i) {
|
|
|
#pragma omp teams // expected-error {{region cannot be closely nested inside 'distribute' region; perhaps you forget to enclose 'omp teams' directive into a target region?}}
|