brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.2 KiB · 0495bff Raw
185 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 %s3// 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 -ast-print %s -Wno-openmp-mapping -DOMP5 | FileCheck %s --check-prefix CHECK --check-prefix OMP505// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s -DOMP56// RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping -DOMP5 | 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 -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=60 -ast-print %s -Wno-openmp-mapping -DOMP51 | FileCheck %s --check-prefix CHECK --check-prefix OMP5111// RUN: %clang_cc1 -fopenmp -fopenmp-version=60 -x c++ -std=c++11 -emit-pch -o %t %s -DOMP5112// RUN: %clang_cc1 -fopenmp -fopenmp-version=60 -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping -DOMP51 | FileCheck %s --check-prefix CHECK --check-prefix OMP5113 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 %s16// 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 -ast-print %s -Wno-openmp-mapping -DOMP5 | FileCheck %s --check-prefix CHECK --check-prefix OMP5018// RUN: %clang_cc1 -fopenmp-simd -x c++ -std=c++11 -emit-pch -o %t %s -DOMP519// RUN: %clang_cc1 -fopenmp-simd -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping -DOMP5 | 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 -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// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=60 -ast-print %s -Wno-openmp-mapping -DOMP51 | FileCheck %s --check-prefix CHECK --check-prefix OMP5124// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=60 -x c++ -std=c++11 -emit-pch -o %t %s -DOMP5125// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=60 -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping -DOMP51 | FileCheck %s --check-prefix CHECK --check-prefix OMP5126// expected-no-diagnostics27 28#ifndef HEADER29#define HEADER30 31struct S {32  S(): a(0) {}33  S(int v) : a(v) {}34  int a;35  typedef int type;36};37 38template <typename T>39class S7 : public T {40protected:41  T a;42  S7() : a(0) {}43 44public:45  S7(typename T::type v) : a(v) {46#pragma omp target47#pragma omp teams48#pragma omp distribute parallel for simd private(a) private(this->a) private(T::a)49    for (int k = 0; k < a.a; ++k)50      ++this->a.a;51  }52  S7 &operator=(S7 &s) {53    int k;54#pragma omp target55#pragma omp teams56#pragma omp distribute parallel for simd private(a) private(this->a) linear(k)57    for (k = 0; k < s.a.a; ++k)58      ++s.a.a;59    return *this;60  }61};62 63// CHECK: #pragma omp distribute parallel for simd private(this->a) private(this->a) private(T::a){{$}}64// CHECK: #pragma omp distribute parallel for simd private(this->a) private(this->a) linear(k)65// CHECK: #pragma omp distribute parallel for simd private(this->a) private(this->a) private(this->S::a)66 67class S8 : public S7<S> {68  S8() {}69 70public:71  S8(int v) : S7<S>(v){72#pragma omp target73#pragma omp teams74#pragma omp distribute parallel for simd private(a) private(this->a) private(S7<S>::a)75    for (int k = 0; k < a.a; ++k)76      ++this->a.a;77  }78  S8 &operator=(S8 &s) {79#pragma omp target80#pragma omp teams81#pragma omp distribute parallel for simd private(a) private(this->a)82    for (int k = 0; k < s.a.a; ++k)83      ++s.a.a;84    return *this;85  }86};87 88// CHECK: #pragma omp distribute parallel for simd private(this->a) private(this->a) private(this->S7<S>::a)89// CHECK: #pragma omp distribute parallel for simd private(this->a) private(this->a)90 91template <class T, int N>92T tmain(T argc) {93  T b = argc, c, d, e, f, h;94  static T a;95// CHECK: static T a;96  static T g;97#pragma omp threadprivate(g)98#pragma omp target99#pragma omp teams100#pragma omp distribute parallel for simd dist_schedule(static, a) schedule(dynamic) default(none) copyin(g) firstprivate(a) allocate(a)101  // CHECK: #pragma omp distribute parallel for simd dist_schedule(static, a) schedule(dynamic) default(none) copyin(g) firstprivate(a) allocate(a)102  for (int i = 0; i < 2; ++i)103    a = 2;104// CHECK-NEXT: for (int i = 0; i < 2; ++i)105// CHECK-NEXT: a = 2;106#pragma omp target107#pragma omp teams108#pragma omp distribute parallel for simd allocate(argc) private(argc, b), firstprivate(c, d), lastprivate(f) collapse(N) schedule(static, N) if (parallel :argc) num_threads(N) default(shared) shared(e) reduction(+ : h) dist_schedule(static,N)109  for (int i = 0; i < 2; ++i)110    for (int j = 0; j < 2; ++j)111      for (int j = 0; j < 2; ++j)112        for (int j = 0; j < 2; ++j)113          for (int j = 0; j < 2; ++j)114  for (int i = 0; i < 2; ++i)115    for (int j = 0; j < 2; ++j)116      for (int j = 0; j < 2; ++j)117        for (int j = 0; j < 2; ++j)118          for (int j = 0; j < 2; ++j)119            a++;120  // CHECK: #pragma omp distribute parallel for simd allocate(argc) private(argc,b) firstprivate(c,d) lastprivate(f) collapse(N) schedule(static, N) if(parallel: argc) num_threads(N) default(shared) shared(e) reduction(+: h) dist_schedule(static, N)121  // CHECK-NEXT: for (int i = 0; i < 2; ++i)122  // CHECK-NEXT: for (int j = 0; j < 2; ++j)123  // CHECK-NEXT: for (int j = 0; j < 2; ++j)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 i = 0; i < 2; ++i)127  // CHECK-NEXT: for (int j = 0; j < 2; ++j)128  // CHECK-NEXT: for (int j = 0; j < 2; ++j)129  // CHECK-NEXT: for (int j = 0; j < 2; ++j)130  // CHECK-NEXT: for (int j = 0; j < 2; ++j)131  // CHECK-NEXT: a++;132  return T();133}134 135int main(int argc, char **argv) {136  int b = argc, c, d, e, f, h;137  int x[200];138  static int a;139// CHECK: static int a;140  static float g;141#pragma omp threadprivate(g)142#pragma omp target143#pragma omp teams144#pragma omp distribute parallel for simd schedule(guided, argc) default(none) copyin(g) dist_schedule(static, a) private(a) shared(argc)145  // CHECK: #pragma omp distribute parallel for simd schedule(guided, argc) default(none) copyin(g) dist_schedule(static, a) private(a) shared(argc)146  for (int i = 0; i < 2; ++i)147    a = 2;148// CHECK-NEXT: for (int i = 0; i < 2; ++i)149// CHECK-NEXT: a = 2;150#pragma omp target151#pragma omp teams152#pragma omp distribute parallel for simd private(argc, b), firstprivate(argv, c), lastprivate(d, f) collapse(2) schedule(auto) if (argc) num_threads(a) default(shared) shared(e) reduction(+ : h) dist_schedule(static, b)153  for (int i = 0; i < 10; ++i)154    for (int j = 0; j < 10; ++j)155      a++;156  // CHECK: #pragma omp distribute parallel for simd private(argc,b) firstprivate(argv,c) lastprivate(d,f) collapse(2) schedule(auto) if(argc) num_threads(a) default(shared) shared(e) reduction(+: h) dist_schedule(static, b)157  // CHECK-NEXT: for (int i = 0; i < 10; ++i)158  // CHECK-NEXT: for (int j = 0; j < 10; ++j)159  // CHECK-NEXT: a++;160 161  int i;162#pragma omp target163#pragma omp teams164#ifdef OMP51165#pragma omp distribute parallel for simd aligned(x:8) linear(i:2) safelen(8) simdlen(8) if(simd: argc) nontemporal(argc, c, d) order(unconstrained:concurrent)166#elif OMP5167#pragma omp distribute parallel for simd aligned(x:8) linear(i:2) safelen(8) simdlen(8) if(simd: argc) nontemporal(argc, c, d) order(concurrent)168#else169#pragma omp distribute parallel for simd aligned(x:8) linear(i:2) safelen(8) simdlen(8)170#endif // OMP51171  for (i = 0; i < 100; i++)172    for (int j = 0; j < 200; j++)173      a += h + x[j];174  // OMP45: #pragma omp distribute parallel for simd aligned(x: 8) linear(i: step(2)) safelen(8) simdlen(8)175  // OMP50: #pragma omp distribute parallel for simd aligned(x: 8) linear(i: step(2)) safelen(8) simdlen(8) if(simd: argc) nontemporal(argc,c,d) order(concurrent)176  // OMP51: #pragma omp distribute parallel for simd aligned(x: 8) linear(i: step(2)) safelen(8) simdlen(8) if(simd: argc) nontemporal(argc,c,d) order(unconstrained: concurrent)177  // CHECK-NEXT: for (i = 0; i < 100; i++)178  // CHECK-NEXT: for (int j = 0; j < 200; j++)179  // CHECK-NEXT: a += h + x[j];180 181  return (tmain<int, 5>(argc) + tmain<char, 1>(argv[0][0]));182}183 184#endif185