brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.9 KiB · 4836d77 Raw
270 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -ast-print %s -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP452// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s3// RUN: %clang_cc1 -fopenmp -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 %s6// 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 -DOMP51 -ast-print %s -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP518// RUN: %clang_cc1 -fopenmp -DOMP51 -x c++ -std=c++11 -emit-pch -o %t %s9// RUN: %clang_cc1 -fopenmp -DOMP51 -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5110 11// RUN: %clang_cc1 -verify -fopenmp-simd -ast-print %s -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP4512// RUN: %clang_cc1 -fopenmp-simd -x c++ -std=c++11 -emit-pch -o %t %s13// RUN: %clang_cc1 -fopenmp-simd -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP4514// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=50 -DOMP5 -ast-print %s -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5015// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=50 -DOMP5 -x c++ -std=c++11 -emit-pch -o %t %s16// 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=OMP5017// RUN: %clang_cc1 -verify -fopenmp-simd -DOMP51 -ast-print %s -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5118// RUN: %clang_cc1 -fopenmp-simd -DOMP51 -x c++ -std=c++11 -emit-pch -o %t %s19// RUN: %clang_cc1 -fopenmp-simd -DOMP51 -std=c++11 -include-pch %t -verify %s -ast-print -Wno-openmp-mapping | FileCheck %s --check-prefix=CHECK --check-prefix=OMP5120// expected-no-diagnostics21 22#ifndef HEADER23#define HEADER24 25void foo() {}26 27struct S {28  S(): a(0) {}29  S(int v) : a(v) {}30  int a;31  typedef int type;32};33 34template <typename T>35class S7 : public T {36protected:37  T a;38  S7() : a(0) {}39 40public:41  S7(typename T::type v) : a(v) {42#pragma omp target43#pragma omp teams distribute simd private(a) private(this->a) private(T::a)44    for (int k = 0; k < a.a; ++k)45      ++this->a.a;46  }47  S7 &operator=(S7 &s) {48    int k;49#pragma omp target50#pragma omp teams distribute simd private(a) private(this->a) linear(k)51    for (k = 0; k < s.a.a; ++k)52      ++s.a.a;53    return *this;54  }55  void foo() {56    int b, argv, d, c, e, f;57#pragma omp target58#pragma omp teams distribute simd default(none), private(b) firstprivate(argv) shared(d) reduction(+:c) reduction(max:e) num_teams(f) thread_limit(d)59    for (int k = 0; k < a.a; ++k)60      ++a.a;61  }62  void bar() {63    int arr[10];64    const int alen = 16;65    const int slen1 = 8;66    const int slen2 = 8;67#pragma omp target68#ifdef OMP569#pragma omp teams distribute simd simdlen(slen1) safelen(slen2) aligned(arr:alen) if(arr[0])70#else71#pragma omp teams distribute simd simdlen(slen1) safelen(slen2) aligned(arr:alen)72#endif // OMP573    for (int k = 0; k < a.a; ++k)74      ++a.a;75  }76};77// CHECK: #pragma omp target78// CHECK-NEXT: #pragma omp teams distribute simd private(this->a) private(this->a) private(T::a)79// CHECK: #pragma omp target80// CHECK-NEXT: #pragma omp teams distribute simd private(this->a) private(this->a) linear(k)81// CHECK: #pragma omp target82// CHECK-NEXT: #pragma omp teams distribute simd default(none) private(b) firstprivate(argv) shared(d) reduction(+: c) reduction(max: e) num_teams(f) thread_limit(d)83// CHECK: #pragma omp target84// OMP45-NEXT: #pragma omp teams distribute simd simdlen(slen1) safelen(slen2) aligned(arr: alen)85// OMP50-NEXT: #pragma omp teams distribute simd simdlen(slen1) safelen(slen2) aligned(arr: alen) if(arr[0])86// CHECK: #pragma omp target87// CHECK-NEXT: #pragma omp teams distribute simd private(this->a) private(this->a) private(this->S::a)88 89class S8 : public S7<S> {90  S8() {}91 92public:93  S8(int v) : S7<S>(v){94#pragma omp target95#pragma omp teams distribute simd private(a) private(this->a) private(S7 <S>::a)96    for (int k = 0; k < a.a; ++k)97      ++this->a.a;98  }99  S8 &operator=(S8 &s) {100#pragma omp target101#pragma omp teams distribute simd private(a) private(this->a)102    for (int k = 0; k < s.a.a; ++k)103      ++s.a.a;104    return *this;105  }106  void bar() {107    int b, argv, d, c, e, f;108#pragma omp target109#pragma omp teams distribute simd default(none), private(b) firstprivate(argv) shared(d) reduction(+:c) reduction(max:e) num_teams(f) thread_limit(d)110    for (int k = 0; k < a.a; ++k)111      ++a.a;112  }113  void foo() {114    const int alen = 16;115    const int slen1 = 8;116    const int slen2 = 8;117    int arr[10];118#pragma omp target119#pragma omp teams distribute simd simdlen(slen1) safelen(slen2) aligned(arr:alen)120    for (int k = 0; k < a.a; ++k)121      ++a.a;122  }123};124// CHECK: #pragma omp target125// CHECK-NEXT: #pragma omp teams distribute simd private(this->a) private(this->a) private(this->S7<S>::a)126// CHECK: #pragma omp target127// CHECK-NEXT: #pragma omp teams distribute simd private(this->a) private(this->a)128// CHECK: #pragma omp target129// CHECK-NEXT: #pragma omp teams distribute simd default(none) private(b) firstprivate(argv) shared(d) reduction(+: c) reduction(max: e) num_teams(f) thread_limit(d)130// CHECK: #pragma omp target131// CHECK-NEXT: #pragma omp teams distribute simd simdlen(slen1) safelen(slen2) aligned(arr: alen)132 133template <class T, int N>134T tmain(T argc) {135  T b = argc, c, d, e, f, g;136  static T a;137// CHECK: static T a;138  const T clen = 5;139  const T alen = 16;140  int arr[10];141#pragma omp target142#pragma omp teams distribute simd143  for (int i=0; i < 2; ++i)144    a = 2;145// CHECK: #pragma omp target146// CHECK-NEXT: #pragma omp teams distribute simd{{$}}147// CHECK-NEXT: for (int i = 0; i < 2; ++i)148// CHECK-NEXT: a = 2;149#pragma omp target150#pragma omp teams distribute simd allocate(b) private(argc, b), firstprivate(c, d), collapse(2) allocate(c)151  for (int i = 0; i < 10; ++i)152    for (int j = 0; j < 10; ++j)153      foo();154// CHECK: #pragma omp target155// CHECK-NEXT: #pragma omp teams distribute simd allocate(b) private(argc,b) firstprivate(c,d) collapse(2) allocate(c)156// CHECK-NEXT: for (int i = 0; i < 10; ++i)157// CHECK-NEXT: for (int j = 0; j < 10; ++j)158// CHECK-NEXT: foo();159  for (int i = 0; i < 10; ++i)160    foo();161// CHECK: for (int i = 0; i < 10; ++i)162// CHECK-NEXT: foo();163#pragma omp target164#pragma omp teams distribute simd165  for (int i = 0; i < 10; ++i)166    foo();167// CHECK: #pragma omp target168// CHECK-NEXT: #pragma omp teams distribute simd169// CHECK-NEXT: for (int i = 0; i < 10; ++i)170// CHECK-NEXT: foo();171#pragma omp target172#pragma omp teams distribute simd default(none), private(b) firstprivate(argc) shared(d) reduction(+:c) reduction(max:e) num_teams(f) thread_limit(d)173    for (int k = 0; k < 10; ++k)174      e += d + argc;175// CHECK: #pragma omp target176// CHECK-NEXT: #pragma omp teams distribute simd default(none) private(b) firstprivate(argc) shared(d) reduction(+: c) reduction(max: e) num_teams(f) thread_limit(d)177// CHECK-NEXT: for (int k = 0; k < 10; ++k)178// CHECK-NEXT: e += d + argc;179#pragma omp target180#pragma omp teams distribute simd simdlen(clen-1)181  for (int k = 0; k < 10; ++k)182    e += d + argc;183// CHECK: #pragma omp target184// CHECK-NEXT: #pragma omp teams distribute simd simdlen(clen - 1)185// CHECK-NEXT: for (int k = 0; k < 10; ++k)186// CHECK-NEXT: e += d + argc;187#pragma omp target188#pragma omp teams distribute simd safelen(clen-1) aligned(arr:alen)189  for (int k = 0; k < 10; ++k)190    e += d + argc + arr[k];191// CHECK: #pragma omp target192// CHECK-NEXT: #pragma omp teams distribute simd safelen(clen - 1) aligned(arr: alen)193// CHECK-NEXT: for (int k = 0; k < 10; ++k)194// CHECK-NEXT: e += d + argc + arr[k];195  return T();196}197 198int main (int argc, char **argv) {199  int b = argc, c, d, e, f, g;200  static int a;201// CHECK: static int a;202  const int clen = 5;203  const int N = 10;204  int arr[10];205#pragma omp target206#pragma omp teams distribute simd207  for (int i=0; i < 2; ++i)208    a = 2;209// CHECK: #pragma omp target210// CHECK-NEXT: #pragma omp teams distribute simd211// CHECK-NEXT: for (int i = 0; i < 2; ++i)212// CHECK-NEXT: a = 2;213#pragma omp target214#pragma omp teams distribute simd private(argc,b),firstprivate(argv, c), collapse(2)215  for (int i = 0; i < 10; ++i)216    for (int j = 0; j < 10; ++j)217      foo();218// CHECK: #pragma omp target219// CHECK-NEXT: #pragma omp teams distribute simd private(argc,b) firstprivate(argv,c) collapse(2)220// CHECK-NEXT: for (int i = 0; i < 10; ++i)221// CHECK-NEXT: for (int j = 0; j < 10; ++j)222// CHECK-NEXT: foo();223  for (int i = 0; i < 10; ++i)224    foo();225// CHECK: for (int i = 0; i < 10; ++i)226// CHECK-NEXT: foo();227#pragma omp target228#pragma omp teams distribute simd229  for (int i = 0; i < 10; ++i)foo();230// CHECK: #pragma omp target231// CHECK-NEXT: #pragma omp teams distribute simd232// CHECK-NEXT: for (int i = 0; i < 10; ++i)233// CHECK-NEXT: foo();234#pragma omp target235#pragma omp teams distribute simd default(none), private(b) firstprivate(argc) shared(d) reduction(+:c) reduction(max:e) num_teams(f) thread_limit(d)236  for (int k = 0; k < 10; ++k)237    e += d + argc;238// CHECK: #pragma omp target239// CHECK-NEXT: #pragma omp teams distribute simd default(none) private(b) firstprivate(argc) shared(d) reduction(+: c) reduction(max: e) num_teams(f) thread_limit(d)240// CHECK-NEXT: for (int k = 0; k < 10; ++k)241// CHECK-NEXT: e += d + argc;242#pragma omp target243#pragma omp teams distribute simd simdlen(clen-1)244  for (int k = 0; k < 10; ++k)245    e += d + argc;246// CHECK: #pragma omp target247// CHECK-NEXT: #pragma omp teams distribute simd simdlen(clen - 1)248// CHECK-NEXT: for (int k = 0; k < 10; ++k)249// CHECK-NEXT: e += d + argc;250#pragma omp target251#ifdef OMP51252#pragma omp teams distribute simd safelen(clen-1) aligned(arr:N+6) if(simd:b) nontemporal(argc, c, d) order(unconstrained:concurrent)253#elif OMP5254#pragma omp teams distribute simd safelen(clen-1) aligned(arr:N+6) if(simd:b) nontemporal(argc, c, d) order(concurrent)255#else256#pragma omp teams distribute simd safelen(clen-1) aligned(arr:N+6)257#endif // OMP51258  for (int k = 0; k < 10; ++k)259    e += d + argc + arr[k];260// CHECK: #pragma omp target261// OMP45-NEXT: #pragma omp teams distribute simd safelen(clen - 1) aligned(arr: N + 6)262// OMP50-NEXT: #pragma omp teams distribute simd safelen(clen - 1) aligned(arr: N + 6) if(simd: b) nontemporal(argc,c,d) order(concurrent)263// OMP51-NEXT: #pragma omp teams distribute simd safelen(clen - 1) aligned(arr: N + 6) if(simd: b) nontemporal(argc,c,d) order(unconstrained: concurrent)264// CHECK-NEXT: for (int k = 0; k < 10; ++k)265// CHECK-NEXT: e += d + argc + arr[k];266  return (0);267}268 269#endif270