brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.1 KiB · 80acf56 Raw
246 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=45 -ast-print %s | FileCheck %s2// 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 | FileCheck %s4 5// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=45 -ast-print %s | FileCheck %s6// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=45 -x c++ -std=c++11 -emit-pch -o %t %s7// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=45 -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck %s8 9// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=52 -ast-print %s | FileCheck %s10// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=52 -x c++ -std=c++11 -emit-pch -o %t %s11// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=52 -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck %s12 13// RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s14// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s15// RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck %s16 17// RUN: %clang_cc1 -verify -fopenmp-simd -ast-print %s | FileCheck %s18// RUN: %clang_cc1 -fopenmp-simd -x c++ -std=c++11 -emit-pch -o %t %s19// RUN: %clang_cc1 -fopenmp-simd -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck %s20 21// expected-no-diagnostics22 23#ifndef HEADER24#define HEADER25 26template <typename T, int C>27T tmain(T argc, T *argv) {28  T i, j, b, c, d, e, x[20];29 30  i = argc;31#pragma omp target enter data map(to: i)32 33#pragma omp target enter data map(to: i) if (target enter data: j > 0)34 35#pragma omp target enter data map(to: i) if (b)36 37#pragma omp target enter data map(to: c)38 39#pragma omp target enter data map(to: c) if(b>e)40 41#pragma omp target enter data map(alloc: x[0:10], c)42 43#pragma omp target enter data map(to: c) map(alloc: d)44 45#pragma omp target enter data map(always,alloc: e)46 47#pragma omp target enter data nowait map(to: i)48 49#pragma omp target enter data nowait map(to: i) if (target enter data: j > 0)50 51#pragma omp target enter data map(to: i) if (b) nowait52 53#pragma omp target enter data map(to: c) nowait54 55#pragma omp target enter data map(to: c) nowait if(b>e)56 57#pragma omp target enter data nowait map(alloc: x[0:10], c)58 59#pragma omp target enter data nowait map(to: c) map(alloc: d)60 61#pragma omp target enter data nowait map(always,alloc: e)62 63#pragma omp target enter data nowait depend(in : argc, argv[i:argc], x[:]) map(to: i)64 65#pragma omp target enter data nowait map(to: i) if (target enter data: j > 0) depend(in : argc, argv[i:argc], x[:])66 67#pragma omp target enter data depend(in : argc, argv[i:argc], x[:]) map(to: i) if (b) nowait68 69#pragma omp target enter data map(to: c) depend(in : argc, argv[i:argc], x[:]) nowait70 71#pragma omp target enter data map(to: c) nowait if(b>e) depend(in : argc, argv[i:argc], x[:])72 73#pragma omp target enter data nowait map(alloc: x[0:10], c) depend(in : argc, argv[i:argc], x[:])74 75#pragma omp target enter data nowait depend(in : argc, argv[i:argc], x[:]) map(to: c) map(alloc: d)76 77#pragma omp target enter data nowait map(always,alloc: e) depend(in : argc, argv[i:argc], x[:])78 79  return 0;80}81 82// CHECK: template <typename T, int C> T tmain(T argc, T *argv) {83// CHECK-NEXT: T i, j, b, c, d, e, x[20];84// CHECK-NEXT: i = argc;85// CHECK-NEXT: #pragma omp target enter data map(to: i){{$}}86// CHECK-NEXT: #pragma omp target enter data map(to: i) if(target enter data: j > 0)87// CHECK-NEXT: #pragma omp target enter data map(to: i) if(b)88// CHECK-NEXT: #pragma omp target enter data map(to: c)89// CHECK-NEXT: #pragma omp target enter data map(to: c) if(b > e)90// CHECK-NEXT: #pragma omp target enter data map(alloc: x[0:10],c)91// CHECK-NEXT: #pragma omp target enter data map(to: c) map(alloc: d)92// CHECK-NEXT: #pragma omp target enter data map(always,alloc: e)93// CHECK-NEXT: #pragma omp target enter data nowait map(to: i)94// CHECK-NEXT: #pragma omp target enter data nowait map(to: i) if(target enter data: j > 0)95// CHECK-NEXT: #pragma omp target enter data map(to: i) if(b) nowait96// CHECK-NEXT: #pragma omp target enter data map(to: c) nowait97// CHECK-NEXT: #pragma omp target enter data map(to: c) nowait if(b > e)98// CHECK-NEXT: #pragma omp target enter data nowait map(alloc: x[0:10],c)99// CHECK-NEXT: #pragma omp target enter data nowait map(to: c) map(alloc: d)100// CHECK-NEXT: #pragma omp target enter data nowait map(always,alloc: e)101// CHECK-NEXT: #pragma omp target enter data nowait depend(in : argc,argv[i:argc],x[:]) map(to: i)102// CHECK-NEXT: #pragma omp target enter data nowait map(to: i) if(target enter data: j > 0) depend(in : argc,argv[i:argc],x[:])103// CHECK-NEXT: #pragma omp target enter data depend(in : argc,argv[i:argc],x[:]) map(to: i) if(b) nowait104// CHECK-NEXT: #pragma omp target enter data map(to: c) depend(in : argc,argv[i:argc],x[:]) nowait105// CHECK-NEXT: #pragma omp target enter data map(to: c) nowait if(b > e) depend(in : argc,argv[i:argc],x[:])106// CHECK-NEXT: #pragma omp target enter data nowait map(alloc: x[0:10],c) depend(in : argc,argv[i:argc],x[:])107// CHECK-NEXT: #pragma omp target enter data nowait depend(in : argc,argv[i:argc],x[:]) map(to: c) map(alloc: d)108// CHECK-NEXT: #pragma omp target enter data nowait map(always,alloc: e) depend(in : argc,argv[i:argc],x[:])109// CHECK: template<> int tmain<int, 5>(int argc, int *argv) {110// CHECK-NEXT: int i, j, b, c, d, e, x[20];111// CHECK-NEXT: i = argc;112// CHECK-NEXT: #pragma omp target enter data map(to: i)113// CHECK-NEXT: #pragma omp target enter data map(to: i) if(target enter data: j > 0)114// CHECK-NEXT: #pragma omp target enter data map(to: i) if(b)115// CHECK-NEXT: #pragma omp target enter data map(to: c)116// CHECK-NEXT: #pragma omp target enter data map(to: c) if(b > e)117// CHECK-NEXT: #pragma omp target enter data map(alloc: x[0:10],c)118// CHECK-NEXT: #pragma omp target enter data map(to: c) map(alloc: d)119// CHECK-NEXT: #pragma omp target enter data map(always,alloc: e)120// CHECK-NEXT: #pragma omp target enter data nowait map(to: i)121// CHECK-NEXT: #pragma omp target enter data nowait map(to: i) if(target enter data: j > 0)122// CHECK-NEXT: #pragma omp target enter data map(to: i) if(b) nowait123// CHECK-NEXT: #pragma omp target enter data map(to: c) nowait124// CHECK-NEXT: #pragma omp target enter data map(to: c) nowait if(b > e)125// CHECK-NEXT: #pragma omp target enter data nowait map(alloc: x[0:10],c)126// CHECK-NEXT: #pragma omp target enter data nowait map(to: c) map(alloc: d)127// CHECK-NEXT: #pragma omp target enter data nowait map(always,alloc: e)128// CHECK-NEXT: #pragma omp target enter data nowait depend(in : argc,argv[i:argc],x[:]) map(to: i)129// CHECK-NEXT: #pragma omp target enter data nowait map(to: i) if(target enter data: j > 0) depend(in : argc,argv[i:argc],x[:])130// CHECK-NEXT: #pragma omp target enter data depend(in : argc,argv[i:argc],x[:]) map(to: i) if(b) nowait131// CHECK-NEXT: #pragma omp target enter data map(to: c) depend(in : argc,argv[i:argc],x[:]) nowait132// CHECK-NEXT: #pragma omp target enter data map(to: c) nowait if(b > e) depend(in : argc,argv[i:argc],x[:])133// CHECK-NEXT: #pragma omp target enter data nowait map(alloc: x[0:10],c) depend(in : argc,argv[i:argc],x[:])134// CHECK-NEXT: #pragma omp target enter data nowait depend(in : argc,argv[i:argc],x[:]) map(to: c) map(alloc: d)135// CHECK-NEXT: #pragma omp target enter data nowait map(always,alloc: e) depend(in : argc,argv[i:argc],x[:])136// CHECK: template<> char tmain<char, 1>(char argc, char *argv) {137// CHECK-NEXT: char i, j, b, c, d, e, x[20];138// CHECK-NEXT: i = argc;139// CHECK-NEXT: #pragma omp target enter data map(to: i)140// CHECK-NEXT: #pragma omp target enter data map(to: i) if(target enter data: j > 0)141// CHECK-NEXT: #pragma omp target enter data map(to: i) if(b)142// CHECK-NEXT: #pragma omp target enter data map(to: c)143// CHECK-NEXT: #pragma omp target enter data map(to: c) if(b > e)144// CHECK-NEXT: #pragma omp target enter data map(alloc: x[0:10],c)145// CHECK-NEXT: #pragma omp target enter data map(to: c) map(alloc: d)146// CHECK-NEXT: #pragma omp target enter data map(always,alloc: e)147// CHECK-NEXT: #pragma omp target enter data nowait map(to: i)148// CHECK-NEXT: #pragma omp target enter data nowait map(to: i) if(target enter data: j > 0)149// CHECK-NEXT: #pragma omp target enter data map(to: i) if(b) nowait150// CHECK-NEXT: #pragma omp target enter data map(to: c) nowait151// CHECK-NEXT: #pragma omp target enter data map(to: c) nowait if(b > e)152// CHECK-NEXT: #pragma omp target enter data nowait map(alloc: x[0:10],c)153// CHECK-NEXT: #pragma omp target enter data nowait map(to: c) map(alloc: d)154// CHECK-NEXT: #pragma omp target enter data nowait map(always,alloc: e)155// CHECK-NEXT: #pragma omp target enter data nowait depend(in : argc,argv[i:argc],x[:]) map(to: i)156// CHECK-NEXT: #pragma omp target enter data nowait map(to: i) if(target enter data: j > 0) depend(in : argc,argv[i:argc],x[:])157// CHECK-NEXT: #pragma omp target enter data depend(in : argc,argv[i:argc],x[:]) map(to: i) if(b) nowait158// CHECK-NEXT: #pragma omp target enter data map(to: c) depend(in : argc,argv[i:argc],x[:]) nowait159// CHECK-NEXT: #pragma omp target enter data map(to: c) nowait if(b > e) depend(in : argc,argv[i:argc],x[:])160// CHECK-NEXT: #pragma omp target enter data nowait map(alloc: x[0:10],c) depend(in : argc,argv[i:argc],x[:])161// CHECK-NEXT: #pragma omp target enter data nowait depend(in : argc,argv[i:argc],x[:]) map(to: c) map(alloc: d)162// CHECK-NEXT: #pragma omp target enter data nowait map(always,alloc: e) depend(in : argc,argv[i:argc],x[:])163 164int main (int argc, char **argv) {165  int b = argc, i, c, d, e, f, g, x[20];166  static int a;167// CHECK: static int a;168 169#pragma omp target enter data map(to: a)170// CHECK:      #pragma omp target enter data map(to: a)171  a=2;172// CHECK-NEXT: a = 2;173#pragma omp target enter data map(to: a) if (target enter data: b)174// CHECK: #pragma omp target enter data map(to: a) if(target enter data: b)175 176#pragma omp target enter data map(to: a) if (b > g)177// CHECK: #pragma omp target enter data map(to: a) if(b > g)178 179#pragma omp target enter data map(to: c)180// CHECK-NEXT: #pragma omp target enter data map(to: c)181 182#pragma omp target enter data map(alloc: c) if(b>g)183// CHECK-NEXT: #pragma omp target enter data map(alloc: c) if(b > g)184 185#pragma omp target enter data map(to: x[0:10], c)186// CHECK-NEXT: #pragma omp target enter data map(to: x[0:10],c)187 188#pragma omp target enter data map(to: c) map(alloc: d)189// CHECK-NEXT: #pragma omp target enter data map(to: c) map(alloc: d)190 191#pragma omp target enter data map(always,alloc: e)192// CHECK-NEXT: #pragma omp target enter data map(always,alloc: e)193 194#pragma omp target enter data nowait map(to: a)195// CHECK:      #pragma omp target enter data nowait map(to: a)196 197#pragma omp target enter data nowait map(to: a) if (target enter data: b)198// CHECK: #pragma omp target enter data nowait map(to: a) if(target enter data: b)199 200#pragma omp target enter data map(to: a) if (b > g) nowait201// CHECK: #pragma omp target enter data map(to: a) if(b > g) nowait202 203#pragma omp target enter data map(to: c) nowait204// CHECK-NEXT: #pragma omp target enter data map(to: c) nowait205 206#pragma omp target enter data map(alloc: c) nowait if(b>g)207// CHECK-NEXT: #pragma omp target enter data map(alloc: c) nowait if(b > g)208 209#pragma omp target enter data nowait map(to: x[0:10], c)210// CHECK-NEXT: #pragma omp target enter data nowait map(to: x[0:10],c)211 212#pragma omp target enter data nowait map(to: c) map(alloc: d)213// CHECK-NEXT: #pragma omp target enter data nowait map(to: c) map(alloc: d)214 215#pragma omp target enter data nowait map(always,alloc: e)216// CHECK-NEXT: #pragma omp target enter data nowait map(always,alloc: e)217 218#pragma omp target enter data depend(in : argc, argv[i:argc], x[:]) nowait map(to: a)219// CHECK:      #pragma omp target enter data depend(in : argc,argv[i:argc],x[:]) nowait map(to: a)220 221#pragma omp target enter data nowait depend(in : argc, argv[i:argc], x[:]) map(to: a) if (target enter data: b)222// CHECK: #pragma omp target enter data nowait depend(in : argc,argv[i:argc],x[:]) map(to: a) if(target enter data: b)223 224#pragma omp target enter data map(to: a) depend(in : argc, argv[i:argc], x[:]) if (b > g) nowait225// CHECK: #pragma omp target enter data map(to: a) depend(in : argc,argv[i:argc],x[:]) if(b > g) nowait226 227#pragma omp target enter data map(to: c) nowait depend(in : argc, argv[i:argc], x[:])228// CHECK-NEXT: #pragma omp target enter data map(to: c) nowait depend(in : argc,argv[i:argc],x[:])229 230#pragma omp target enter data depend(in : argc, argv[i:argc], x[:]) map(alloc: c) nowait if(b>g)231// CHECK-NEXT: #pragma omp target enter data depend(in : argc,argv[i:argc],x[:]) map(alloc: c) nowait if(b > g)232 233#pragma omp target enter data nowait map(to: x[0:10], c) depend(in : argc, argv[i:argc], x[:])234// CHECK-NEXT: #pragma omp target enter data nowait map(to: x[0:10],c) depend(in : argc,argv[i:argc],x[:])235 236#pragma omp target enter data nowait map(to: c) depend(in : argc, argv[i:argc], x[:]) map(alloc: d)237// CHECK-NEXT: #pragma omp target enter data nowait map(to: c) depend(in : argc,argv[i:argc],x[:]) map(alloc: d)238 239#pragma omp target enter data nowait map(always,alloc: e) depend(in : argc, argv[i:argc], x[:])240// CHECK-NEXT: #pragma omp target enter data nowait map(always,alloc: e) depend(in : argc,argv[i:argc],x[:])241 242  return tmain<int, 5>(argc, &argc) + tmain<char, 1>(argv[0][0], argv[0]);243}244 245#endif246