brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.2 KiB · 91117e7 Raw
365 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=45 -ast-print %s -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP452// RUN: %clang_cc1 -fopenmp -fopenmp-version=45 -x c++ -std=c++11 -emit-pch -o %t %s -Wno-openmp-mapping3// RUN: %clang_cc1 -fopenmp -fopenmp-version=45 -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP454// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=50 -DOMP5 -ast-print %s -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP505// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -DOMP5 -x c++ -std=c++11 -emit-pch -o %t %s -Wno-openmp-mapping6// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -DOMP5 -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP507// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=51 -ast-print %s -Wno-openmp-mapping -DOMP51 | FileCheck %s --check-prefix=CHECK --check-prefix=OMP518// RUN: %clang_cc1 -fopenmp -fopenmp-version=51 -x c++ -std=c++11 -emit-pch -o %t %s -Wno-openmp-mapping -DOMP519// RUN: %clang_cc1 -fopenmp -fopenmp-version=51 -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping -DOMP51 | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5110// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=52 -ast-print %s -Wno-openmp-mapping -DOMP52 | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5211// RUN: %clang_cc1 -fopenmp -fopenmp-version=52 -x c++ -std=c++11 -emit-pch -o %t %s -Wno-openmp-mapping -DOMP5212// RUN: %clang_cc1 -fopenmp -fopenmp-version=52 -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping -DOMP52 | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5213 14// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=45 -ast-print %s -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP4515// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=45 -x c++ -std=c++11 -emit-pch -o %t %s -Wno-openmp-mapping16// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=45 -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP4517// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=50 -DOMP5 -ast-print %s -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5018// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=50 -DOMP5 -x c++ -std=c++11 -emit-pch -o %t %s -Wno-openmp-mapping19// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=50 -DOMP5 -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5020// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=51 -ast-print %s -Wno-openmp-mapping -DOMP51 | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5121// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=51 -x c++ -std=c++11 -emit-pch -o %t %s -Wno-openmp-mapping -DOMP5122// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=51 -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping -DOMP51 | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5123// expected-no-diagnostics24// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=52 -ast-print %s -Wno-openmp-mapping -DOMP52 | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5225// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=52 -x c++ -std=c++11 -emit-pch -o %t %s -Wno-openmp-mapping -DOMP5226// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=52 -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping -DOMP52 | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5227// expected-no-diagnostics28 29#ifndef HEADER30#define HEADER31 32typedef void **omp_allocator_handle_t;33extern const omp_allocator_handle_t omp_null_allocator;34extern const omp_allocator_handle_t omp_default_mem_alloc;35extern const omp_allocator_handle_t omp_large_cap_mem_alloc;36extern const omp_allocator_handle_t omp_const_mem_alloc;37extern const omp_allocator_handle_t omp_high_bw_mem_alloc;38extern const omp_allocator_handle_t omp_low_lat_mem_alloc;39extern const omp_allocator_handle_t omp_cgroup_mem_alloc;40extern const omp_allocator_handle_t omp_pteam_mem_alloc;41extern const omp_allocator_handle_t omp_thread_mem_alloc;42 43void foo() {}44 45struct S {46  S(): a(0) {}47  S(int v) : a(v) {}48  int a;49  typedef int type;50};51 52template <typename T>53class S7 : public T {54protected:55  T a;56  S7() : a(0) {}57 58public:59  S7(typename T::type v) : a(v) {60#pragma omp target simd private(a) private(this->a) private(T::a)61    for (int k = 0; k < a.a; ++k)62      ++this->a.a;63  }64  S7 &operator=(S7 &s) {65#pragma omp target simd private(a) private(this->a)66    for (int k = 0; k < s.a.a; ++k)67      ++s.a.a;68    return *this;69  }70};71 72// CHECK: #pragma omp target simd private(this->a) private(this->a) private(T::a){{$}}73// CHECK: #pragma omp target simd private(this->a) private(this->a)74// CHECK: #pragma omp target simd private(this->a) private(this->a) private(this->S::a)75 76class S8 : public S7<S> {77  S8() {}78 79public:80  S8(int v) : S7<S>(v){81#pragma omp target simd private(a) private(this->a) private(S7<S>::a)82    for (int k = 0; k < a.a; ++k)83      ++this->a.a;84  }85  S8 &operator=(S8 &s) {86#pragma omp target simd private(a) private(this->a)87    for (int k = 0; k < s.a.a; ++k)88      ++s.a.a;89    return *this;90  }91};92 93// CHECK: #pragma omp target simd private(this->a) private(this->a) private(this->S7<S>::a)94// CHECK: #pragma omp target simd private(this->a) private(this->a)95 96template <class T, int N>97T tmain(T argc, T *argv) {98  T b = argc, c, d, e, f, h;99  T arr[N][10], arr1[N];100  T i, j;101  T s;102  static T a;103// CHECK: static T a;104  static T g;105  const T clen = 5;106// CHECK: T clen = 5;107  T *p;108#pragma omp threadprivate(g)109#pragma omp target simd linear(a) allocate(a)110  // CHECK: #pragma omp target simd linear(a) allocate(a)111  for (T i = 0; i < 2; ++i)112    a = 2;113// CHECK-NEXT: for (T i = 0; i < 2; ++i)114// CHECK-NEXT: a = 2;115#pragma omp target simd allocate(f) private(argc, b), firstprivate(c, d), lastprivate(d, f) collapse(N) if (target :argc) reduction(+ : h)116  for (int i = 0; i < 2; ++i)117    for (int j = 0; j < 2; ++j)118      for (int j = 0; j < 2; ++j)119        for (int j = 0; j < 2; ++j)120          for (int j = 0; j < 2; ++j)121            foo();122  // CHECK-NEXT: #pragma omp target simd allocate(f) private(argc,b) firstprivate(c,d) lastprivate(d,f) collapse(N) if(target: argc) reduction(+: h)123  // CHECK-NEXT: for (int i = 0; i < 2; ++i)124  // CHECK-NEXT: for (int j = 0; j < 2; ++j)125  // CHECK-NEXT: for (int j = 0; j < 2; ++j)126  // CHECK-NEXT: for (int j = 0; j < 2; ++j)127  // CHECK-NEXT: for (int j = 0; j < 2; ++j)128  // CHECK-NEXT: foo();129 130#pragma omp target simd private(argc,b) firstprivate(argv) if(target:argc > 0) reduction(+:c, arr1[argc]) reduction(max:e, arr[:N][0:10])131  for (T i = 0; i < 2; ++i) {}132  // CHECK: #pragma omp target simd private(argc,b) firstprivate(argv) if(target: argc > 0) reduction(+: c,arr1[argc]) reduction(max: e,arr[:N][0:10])133  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {134  // CHECK-NEXT: }135 136#pragma omp target simd if(N) reduction(^:e, f, arr[0:N][:argc]) reduction(&& : h)137  for (T i = 0; i < 2; ++i) {}138  // CHECK: #pragma omp target simd if(N) reduction(^: e,f,arr[0:N][:argc]) reduction(&&: h)139  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {140  // CHECK-NEXT: }141 142#ifdef OMP5143#pragma omp target simd if(target:argc > 0) if (simd:argc) allocate(omp_default_mem_alloc:f) private(f) uses_allocators(omp_default_mem_alloc)144#else145#pragma omp target simd if(target:argc > 0)146#endif // OMP5147  for (T i = 0; i < 2; ++i) {}148  // OMP45: #pragma omp target simd if(target: argc > 0)149  // OMP50: #pragma omp target simd if(target: argc > 0) if(simd: argc) allocate(omp_default_mem_alloc: f) private(f) uses_allocators(omp_default_mem_alloc)150  // OMP51: #pragma omp target simd if(target: argc > 0)151  // OMP52: #pragma omp target simd if(target: argc > 0)152  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {153  // CHECK-NEXT: }154 155#pragma omp target simd if(N)156  for (T i = 0; i < 2; ++i) {}157  // CHECK: #pragma omp target simd if(N)158  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {159  // CHECK-NEXT: }160 161#pragma omp target simd map(i)162  for (T i = 0; i < 2; ++i) {}163  // CHECK: #pragma omp target simd map(tofrom: i)164  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {165  // CHECK-NEXT: }166 167#pragma omp target simd map(arr1[0:10], i)168  for (T i = 0; i < 2; ++i) {}169  // CHECK: #pragma omp target simd map(tofrom: arr1[0:10],i)170  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {171  // CHECK-NEXT: }172 173#pragma omp target simd map(to: i) map(from: j)174  for (T i = 0; i < 2; ++i) {}175  // CHECK: #pragma omp target simd map(to: i) map(from: j)176  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {177  // CHECK-NEXT: }178 179#pragma omp target simd map(always,alloc: i)180  for (T i = 0; i < 2; ++i) {}181  // CHECK: #pragma omp target simd map(always,alloc: i)182  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {183  // CHECK-NEXT: }184 185#pragma omp target simd nowait186  for (T i = 0; i < 2; ++i) {}187  // CHECK: #pragma omp target simd nowait188  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {189  // CHECK-NEXT: }190 191#pragma omp target simd depend(in : argc, arr[i:argc], arr1[:])192  for (T i = 0; i < 2; ++i) {}193  // CHECK: #pragma omp target simd depend(in : argc,arr[i:argc],arr1[:])194  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {195  // CHECK-NEXT: }196 197#pragma omp target simd defaultmap(tofrom: scalar)198  for (T i = 0; i < 2; ++i) {}199  // CHECK: #pragma omp target simd defaultmap(tofrom: scalar)200  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {201  // CHECK-NEXT: }202 203#pragma omp target simd safelen(clen-1)204  for (T i = 0; i < 2; ++i) {}205  // CHECK: #pragma omp target simd safelen(clen - 1)206  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {207  // CHECK-NEXT: }208 209#pragma omp target simd simdlen(clen-1)210  for (T i = 0; i < 2; ++i) {}211  // CHECK: #pragma omp target simd simdlen(clen - 1)212  // CHECK-NEXT: for (T i = 0; i < 2; ++i) {213  // CHECK-NEXT: }214 215#pragma omp target simd aligned(arr1:N-1)216  for (T i = 0; i < N; ++i) {}217  // CHECK: #pragma omp target simd aligned(arr1: N - 1)218  // CHECK-NEXT: for (T i = 0; i < N; ++i) {219  // CHECK-NEXT: }220 221#pragma omp target simd is_device_ptr(p)222  for (T i = 0; i < N; ++i) {}223  // CHECK: #pragma omp target simd is_device_ptr(p)224  // CHECK-NEXT: for (T i = 0; i < N; ++i) {225  // CHECK-NEXT: }226 227  return T();228}229 230int main(int argc, char **argv) {231  int b = argc, c, d, e, f, h;232  int arr[5][10], arr1[5];233  int i, j;234  int s;235  static int a;236// CHECK: static int a;237  const int clen = 5;238// CHECK: int clen = 5;239  static float g;240#pragma omp threadprivate(g)241  int *p;242#pragma omp target simd linear(a)243  // CHECK: #pragma omp target simd linear(a)244  for (int i = 0; i < 2; ++i)245    a = 2;246// CHECK-NEXT: for (int i = 0; i < 2; ++i)247// CHECK-NEXT: a = 2;248 249#ifdef OMP52250#pragma omp target simd private(argc, b), firstprivate(argv, c), lastprivate(d, f) collapse(2) if (target: argc) reduction(+ : h) linear(a: step(-5))251#else252#pragma omp target simd private(argc, b), firstprivate(argv, c), lastprivate(d, f) collapse(2) if (target: argc) reduction(+ : h) linear(a:-5)253#endif254  for (int i = 0; i < 10; ++i)255    for (int j = 0; j < 10; ++j)256      foo();257  // CHECK: #pragma omp target simd private(argc,b) firstprivate(argv,c) lastprivate(d,f) collapse(2) if(target: argc) reduction(+: h) linear(a: step(-5))258  // CHECK-NEXT: for (int i = 0; i < 10; ++i)259  // CHECK-NEXT: for (int j = 0; j < 10; ++j)260  // CHECK-NEXT: foo();261 262#pragma omp target simd private(argc,b) firstprivate(argv) if (argc > 0) reduction(+:c, arr1[argc]) reduction(max:e, arr[:5][0:10])263  for (int i = 0; i < 2; ++i) {}264  // CHECK: #pragma omp target simd private(argc,b) firstprivate(argv) if(argc > 0) reduction(+: c,arr1[argc]) reduction(max: e,arr[:5][0:10])265  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {266  // CHECK-NEXT: }267 268#pragma omp target simd if (5) reduction(^:e, f, arr[0:5][:argc]) reduction(&& : h)269  for (int i = 0; i < 2; ++i) {}270  // CHECK: #pragma omp target simd if(5) reduction(^: e,f,arr[0:5][:argc]) reduction(&&: h)271  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {272  // CHECK-NEXT: }273 274#if defined(OMP51) || defined(OMP52)275#pragma omp target simd if (target:argc > 0) if(simd:argc) nontemporal(argc, c, d) lastprivate(conditional: d, f) order(reproducible:concurrent)276#elif OMP5277#pragma omp target simd if (target:argc > 0) if(simd:argc) nontemporal(argc, c, d) lastprivate(conditional: d, f) order(concurrent)278#else279#pragma omp target simd if (target:argc > 0)280#endif // OMP51281  for (int i = 0; i < 2; ++i) {}282  // OMP45: #pragma omp target simd if(target: argc > 0)283  // OMP50: #pragma omp target simd if(target: argc > 0) if(simd: argc) nontemporal(argc,c,d) lastprivate(conditional: d,f) order(concurrent)284  // OMP51: #pragma omp target simd if(target: argc > 0) if(simd: argc) nontemporal(argc,c,d) lastprivate(conditional: d,f) order(reproducible: concurrent)285  // OMP52: #pragma omp target simd if(target: argc > 0) if(simd: argc) nontemporal(argc,c,d) lastprivate(conditional: d,f) order(reproducible: concurrent)286  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {287  // CHECK-NEXT: }288 289#pragma omp target simd if (5)290  for (int i = 0; i < 2; ++i) {}291  // CHECK: #pragma omp target simd if(5)292  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {293  // CHECK-NEXT: }294 295#pragma omp target simd map(i)296  for (int i = 0; i < 2; ++i) {}297  // CHECK: #pragma omp target simd  map(tofrom: i)298  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {299  // CHECK-NEXT: }300 301#pragma omp target simd map(arr1[0:10], i)302  for (int i = 0; i < 2; ++i) {}303  // CHECK: #pragma omp target simd map(tofrom: arr1[0:10],i)304  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {305  // CHECK-NEXT: }306 307#pragma omp target simd map(to: i) map(from: j)308  for (int i = 0; i < 2; ++i) {}309  // CHECK: #pragma omp target simd map(to: i) map(from: j)310  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {311  // CHECK-NEXT: }312 313#pragma omp target simd map(always,alloc: i)314  for (int i = 0; i < 2; ++i) {}315  // CHECK: #pragma omp target simd map(always,alloc: i)316  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {317  // CHECK-NEXT: }318 319#pragma omp target simd nowait320  for (int i = 0; i < 2; ++i) {}321  // CHECK: #pragma omp target simd nowait322  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {323  // CHECK-NEXT: }324 325#pragma omp target simd depend(in : argc, arr[i:argc], arr1[:])326  for (int i = 0; i < 2; ++i) {}327  // CHECK: #pragma omp target simd depend(in : argc,arr[i:argc],arr1[:])328  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {329  // CHECK-NEXT: }330 331#pragma omp target simd defaultmap(tofrom: scalar)332  for (int i = 0; i < 2; ++i) {}333  // CHECK: #pragma omp target simd defaultmap(tofrom: scalar)334  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {335  // CHECK-NEXT: }336 337#pragma omp target simd safelen(clen-1)338  for (int i = 0; i < 2; ++i) {}339  // CHECK: #pragma omp target simd safelen(clen - 1)340  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {341  // CHECK-NEXT: }342 343#pragma omp target simd simdlen(clen-1)344  for (int i = 0; i < 2; ++i) {}345  // CHECK: #pragma omp target simd simdlen(clen - 1)346  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {347  // CHECK-NEXT: }348 349#pragma omp target simd aligned(arr1:4)350  for (int i = 0; i < 2; ++i) {}351  // CHECK: #pragma omp target simd aligned(arr1: 4)352  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {353  // CHECK-NEXT: }354 355#pragma omp target simd is_device_ptr(p)356  for (int i = 0; i < 2; ++i) {}357  // CHECK: #pragma omp target simd is_device_ptr(p)358  // CHECK-NEXT: for (int i = 0; i < 2; ++i) {359  // CHECK-NEXT: }360 361  return (tmain<int, 5>(argc, &argc));362}363 364#endif365