brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · da0769d Raw
151 lines · cpp
1// RUN: %clang_cc1 %s -fopenacc -verify2 3template<unsigned I>4void TemplUses() {5 6#pragma acc parallel loop worker7  for(int i = 0; i < 5; ++i);8 9  // expected-error@+1{{expected expression}}10#pragma acc parallel loop worker()11  for(int i = 0; i < 5; ++i);12 13  // expected-error@+1{{'num' argument on 'worker' clause is not permitted on a 'parallel loop' construct}}14#pragma acc parallel loop worker(I)15  for(int i = 0; i < 5; ++i);16 17  // expected-error@+1{{'num' argument on 'worker' clause is not permitted on a 'parallel loop' construct}}18#pragma acc parallel loop worker(num:I)19  for(int i = 0; i < 5; ++i);20 21#pragma acc serial loop worker22  for(int i = 0; i < 5; ++i);23 24  // expected-error@+1{{expected expression}}25#pragma acc serial loop worker()26  for(int i = 0; i < 5; ++i);27 28  // expected-error@+1{{'num' argument on 'worker' clause is not permitted on a 'serial loop' construct}}29#pragma acc serial loop worker(I)30  for(int i = 0; i < 5; ++i);31 32  // expected-error@+1{{'num' argument on 'worker' clause is not permitted on a 'serial loop' construct}}33#pragma acc serial loop worker(num:I)34  for(int i = 0; i < 5; ++i);35 36#pragma acc kernels loop worker(I)37  for(int i = 0; i < 5; ++i);38 39#pragma acc kernels loop worker(num:I)40  for(int i = 0; i < 5; ++i);41 42  // expected-error@+2{{'num' argument to 'worker' clause not allowed on a 'kernels loop' construct that has a 'num_workers' clause}}43  // expected-note@+1{{previous 'num_workers' clause is here}}44#pragma acc kernels loop num_workers(1) worker(num:I)45  for(int i = 0; i < 5; ++i);46 47  // expected-error@+2{{'num_workers' clause not allowed on a 'kernels loop' construct that has a 'worker' clause with an argument}}48  // expected-note@+1{{previous 'worker' clause is here}}49#pragma acc kernels loop worker(num:I) num_workers(1)50  for(int i = 0; i < 5; ++i);51}52 53void NormalUses() {54  TemplUses<4>();55 56  int I;57#pragma acc parallel loop worker58  for(int i = 0; i < 5; ++i);59 60  // expected-error@+1{{expected expression}}61#pragma acc parallel loop worker()62  for(int i = 0; i < 5; ++i);63 64  // expected-error@+1{{'num' argument on 'worker' clause is not permitted on a 'parallel loop' construct}}65#pragma acc parallel loop worker(I)66  for(int i = 0; i < 5; ++i);67 68  // expected-error@+1{{'num' argument on 'worker' clause is not permitted on a 'parallel loop' construct}}69#pragma acc parallel loop worker(num:I)70  for(int i = 0; i < 5; ++i);71 72#pragma acc serial loop worker73  for(int i = 0; i < 5; ++i);74 75  // expected-error@+1{{expected expression}}76#pragma acc serial loop worker()77  for(int i = 0; i < 5; ++i);78 79  // expected-error@+1{{'num' argument on 'worker' clause is not permitted on a 'serial loop' construct}}80#pragma acc serial loop worker(I)81  for(int i = 0; i < 5; ++i);82 83  // expected-error@+1{{'num' argument on 'worker' clause is not permitted on a 'serial loop' construct}}84#pragma acc serial loop worker(num:I)85  for(int i = 0; i < 5; ++i);86 87#pragma acc kernels loop worker(I)88  for(int i = 0; i < 5; ++i);89 90#pragma acc kernels loop worker(num:I)91  for(int i = 0; i < 5; ++i);92 93  // expected-error@+2{{'num' argument to 'worker' clause not allowed on a 'kernels loop' construct that has a 'num_workers' clause}}94  // expected-note@+1{{previous 'num_workers' clause is here}}95#pragma acc kernels loop num_workers(1) worker(num:I)96  for(int i = 0; i < 5; ++i);97 98  // expected-error@+2{{'num_workers' clause not allowed on a 'kernels loop' construct that has a 'worker' clause with an argument}}99  // expected-note@+1{{previous 'worker' clause is here}}100#pragma acc kernels loop worker(num:I) num_workers(1)101  for(int i = 0; i < 5; ++i);102 103  // OK, kernels loop is a new compute construct104#pragma acc kernels num_workers(1)105  for(int i = 0; i < 5; ++i) {106#pragma acc kernels loop worker(num:1)107  for(int i = 0; i < 5; ++i);108  }109#pragma acc kernels loop num_workers(1)110  for(int i = 0; i < 5; ++i) {111#pragma acc kernels loop worker(num:1)112  for(int i = 0; i < 5; ++i);113  }114 115#pragma acc kernels loop num_workers(1)116  for(int i = 0; i < 5; ++i) {117  // expected-error@+2{{'num' argument to 'worker' clause not allowed on a 'loop' construct associated with a 'kernels loop' construct that has a 'num_workers' clause}}118  // expected-note@-3{{previous 'num_workers' clause is here}}119#pragma acc loop worker(num:1)120  for(int i = 0; i < 5; ++i);121  }122 123#pragma acc parallel loop worker124  for(int i = 0; i < 5; ++i) {125    // expected-error@+4{{loop with a 'gang' clause may not exist in the region of a 'worker' clause}}126    // expected-note@-3{{previous 'worker' clause is here}}127    // expected-error@+2{{loop with a 'worker' clause may not exist in the region of a 'worker' clause}}128    // expected-note@-5{{previous 'worker' clause is here}}129#pragma acc loop gang, worker, vector130  for(int i = 0; i < 5; ++i);131  }132#pragma acc kernels loop worker133  for(int i = 0; i < 5; ++i) {134    // expected-error@+4{{loop with a 'gang' clause may not exist in the region of a 'worker' clause}}135    // expected-note@-3{{previous 'worker' clause is here}}136    // expected-error@+2{{loop with a 'worker' clause may not exist in the region of a 'worker' clause}}137    // expected-note@-5{{previous 'worker' clause is here}}138#pragma acc loop gang, worker, vector139  for(int i = 0; i < 5; ++i);140  }141#pragma acc serial loop worker142  for(int i = 0; i < 5; ++i) {143    // expected-error@+4{{loop with a 'gang' clause may not exist in the region of a 'worker' clause}}144    // expected-note@-3{{previous 'worker' clause is here}}145    // expected-error@+2{{loop with a 'worker' clause may not exist in the region of a 'worker' clause}}146    // expected-note@-5{{previous 'worker' clause is here}}147#pragma acc loop gang, worker, vector148  for(int i = 0; i < 5; ++i);149  }150}151