brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.2 KiB · cddb69a Raw
253 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck -check-prefixes CHECK,OMP51 %s2// 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 | FileCheck -check-prefixes CHECK,OMP51 %s4 5// RUN: %clang_cc1 -verify -fopenmp-version=52 -fopenmp -ast-print %s | FileCheck -check-prefixes CHECK,OMP52 %s6// RUN: %clang_cc1 -fopenmp -fopenmp-version=52 -x c++ -std=c++11 -emit-pch -o %t %s7// RUN: %clang_cc1 -fopenmp -fopenmp-version=52 -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck -check-prefixes CHECK,OMP52 %s8 9// RUN: %clang_cc1 -verify -fopenmp-simd -ast-print %s | FileCheck -check-prefixes CHECK,OMP51 %s10// RUN: %clang_cc1 -fopenmp-simd -x c++ -std=c++11 -emit-pch -o %t %s11// RUN: %clang_cc1 -fopenmp-simd -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck -check-prefixes CHECK,OMP51 %s12// expected-no-diagnostics13 14#ifndef HEADER15#define HEADER16 17void foo() {}18 19template <class T, int N>20T tmain (T argc) {21  T b = argc, c, d, e, f, g;22  static T a;23  #pragma omp for ordered24  for (int i =0 ; i < argc; ++i)25  #pragma omp ordered26  {27    a=2;28  }29  #pragma omp for ordered30  for (int i =0 ; i < argc; ++i)31  #pragma omp ordered threads32  {33    a=2;34  }35  #pragma omp simd36  for (int i =0 ; i < argc; ++i)37  #pragma omp ordered simd38  {39    a=2;40  }41  #pragma omp for simd42  for (int i =0 ; i < argc; ++i)43  #pragma omp ordered simd44  {45    a=2;46  }47  #pragma omp parallel for simd48  for (int i =0 ; i < argc; ++i)49  #pragma omp ordered simd50  {51    a=2;52  }53  #pragma omp parallel for ordered(1)54  for (int i =0 ; i < argc; ++i) {55#if _OPENMP >= 20211156  #pragma omp ordered doacross(source:)57  #pragma omp ordered doacross(sink:i+N)58  #pragma omp ordered doacross(sink: omp_cur_iteration - 1)59  #pragma omp ordered doacross(source: omp_cur_iteration)60#else61  #pragma omp ordered depend(source)62  #pragma omp ordered depend(sink:i+N)63#endif64    a = 2;65  }66  return (0);67}68 69// CHECK: static T a;70// CHECK-NEXT: #pragma omp for ordered71// CHECK-NEXT: for (int i = 0; i < argc; ++i)72// CHECK-NEXT: #pragma omp ordered{{$}}73// CHECK-NEXT: {74// CHECK-NEXT: a = 2;75// CHECK-NEXT: }76// CHECK-NEXT: #pragma omp for ordered77// CHECK-NEXT: for (int i = 0; i < argc; ++i)78// CHECK-NEXT: #pragma omp ordered threads79// CHECK-NEXT: {80// CHECK-NEXT: a = 2;81// CHECK-NEXT: }82// CHECK-NEXT: #pragma omp simd83// CHECK-NEXT: for (int i = 0; i < argc; ++i)84// CHECK-NEXT: #pragma omp ordered simd85// CHECK-NEXT: {86// CHECK-NEXT: a = 2;87// CHECK-NEXT: }88// CHECK-NEXT: #pragma omp for simd89// CHECK-NEXT: for (int i = 0; i < argc; ++i)90// CHECK-NEXT: #pragma omp ordered simd91// CHECK-NEXT: {92// CHECK-NEXT: a = 2;93// CHECK-NEXT: }94// CHECK-NEXT: #pragma omp parallel for simd95// CHECK-NEXT: for (int i = 0; i < argc; ++i)96// CHECK-NEXT: #pragma omp ordered simd97// CHECK-NEXT: {98// CHECK-NEXT: a = 2;99// CHECK-NEXT: }100// CHECK-NEXT: #pragma omp parallel for ordered(1)101// CHECK-NEXT: for (int i = 0; i < argc; ++i) {102#if _OPENMP >= 202111103// OMP52: #pragma omp ordered doacross(source:)104// OMP52-NEXT: #pragma omp ordered doacross(sink: i + N)105// OMP52-NEXT: #pragma omp ordered doacross(sink: omp_cur_iteration - 1)106// OMP52-NEXT: #pragma omp ordered doacross(source: omp_cur_iteration)107#else108// OMP51: #pragma omp ordered depend(source)109// OMP51-NEXT: #pragma omp ordered depend(sink : i + N)110#endif111// CHECK-NEXT: a = 2;112// CHECK-NEXT: }113// CHECK: static int a;114// CHECK-NEXT: #pragma omp for ordered115// CHECK-NEXT: for (int i = 0; i < argc; ++i)116// CHECK-NEXT: #pragma omp ordered117// CHECK-NEXT: {118// CHECK-NEXT: a = 2;119// CHECK-NEXT: }120// CHECK-NEXT: #pragma omp for ordered121// CHECK-NEXT: for (int i = 0; i < argc; ++i)122// CHECK-NEXT: #pragma omp ordered threads123// CHECK-NEXT: {124// CHECK-NEXT: a = 2;125// CHECK-NEXT: }126// CHECK-NEXT: #pragma omp simd127// CHECK-NEXT: for (int i = 0; i < argc; ++i)128// CHECK-NEXT: #pragma omp ordered simd129// CHECK-NEXT: {130// CHECK-NEXT: a = 2;131// CHECK-NEXT: }132// CHECK-NEXT: #pragma omp for simd133// CHECK-NEXT: for (int i = 0; i < argc; ++i)134// CHECK-NEXT: #pragma omp ordered simd135// CHECK-NEXT: {136// CHECK-NEXT: a = 2;137// CHECK-NEXT: }138// CHECK-NEXT: #pragma omp parallel for simd139// CHECK-NEXT: for (int i = 0; i < argc; ++i)140// CHECK-NEXT: #pragma omp ordered simd141// CHECK-NEXT: {142// CHECK-NEXT: a = 2;143// CHECK-NEXT: }144// CHECK-NEXT: #pragma omp parallel for ordered(1)145// CHECK-NEXT: for (int i = 0; i < argc; ++i) {146#if _OPENMP >= 202111147// OMP52: #pragma omp ordered doacross(source:)148// OMP52-NEXT: #pragma omp ordered doacross(sink: i + 3)149// OMP52-NEXT: #pragma omp ordered doacross(sink: omp_cur_iteration - 1)150// OMP52-NEXT: #pragma omp ordered doacross(source: omp_cur_iteration)151#else152// OMP51: #pragma omp ordered depend(source)153// OMP51-NEXT: #pragma omp ordered depend(sink : i + 3)154#endif155// CHECK-NEXT: a = 2;156// CHECK-NEXT: }157 158// CHECK-LABEL: int main(159int main (int argc, char **argv) {160  int b = argc, c, d, e, f, g;161  static int a;162// CHECK: static int a;163  #pragma omp for ordered164  for (int i =0 ; i < argc; ++i)165  #pragma omp ordered166  {167    a=2;168  }169  #pragma omp for ordered170  for (int i =0 ; i < argc; ++i)171  #pragma omp ordered threads172  {173    a=2;174  }175  #pragma omp simd176  for (int i =0 ; i < argc; ++i)177  #pragma omp ordered simd178  {179    a=2;180  }181  #pragma omp for simd182  for (int i =0 ; i < argc; ++i)183  #pragma omp ordered simd184  {185    a=2;186  }187  #pragma omp parallel for simd188  for (int i =0 ; i < argc; ++i)189  #pragma omp ordered simd190  {191    a=2;192  }193  #pragma omp parallel for ordered(1)194  for (int i =0 ; i < argc; ++i) {195#if _OPENMP >= 202111196  #pragma omp ordered doacross(source:)197  #pragma omp ordered doacross(sink: i - 5)198  #pragma omp ordered doacross(sink: omp_cur_iteration - 1)199  #pragma omp ordered doacross(source: omp_cur_iteration)200#else201  #pragma omp ordered depend(source)202  #pragma omp ordered depend(sink: i - 5)203#endif204    a = 2;205  }206// CHECK-NEXT: #pragma omp for ordered207// CHECK-NEXT: for (int i = 0; i < argc; ++i)208// CHECK-NEXT: #pragma omp ordered209// CHECK-NEXT: {210// CHECK-NEXT: a = 2;211// CHECK-NEXT: }212// CHECK-NEXT: #pragma omp for ordered213// CHECK-NEXT: for (int i = 0; i < argc; ++i)214// CHECK-NEXT: #pragma omp ordered threads215// CHECK-NEXT: {216// CHECK-NEXT: a = 2;217// CHECK-NEXT: }218// CHECK-NEXT: #pragma omp simd219// CHECK-NEXT: for (int i = 0; i < argc; ++i)220// CHECK-NEXT: #pragma omp ordered simd221// CHECK-NEXT: {222// CHECK-NEXT: a = 2;223// CHECK-NEXT: }224// CHECK-NEXT: #pragma omp for simd225// CHECK-NEXT: for (int i = 0; i < argc; ++i)226// CHECK-NEXT: #pragma omp ordered simd227// CHECK-NEXT: {228// CHECK-NEXT: a = 2;229// CHECK-NEXT: }230// CHECK-NEXT: #pragma omp parallel for simd231// CHECK-NEXT: for (int i = 0; i < argc; ++i)232// CHECK-NEXT: #pragma omp ordered simd233// CHECK-NEXT: {234// CHECK-NEXT: a = 2;235// CHECK-NEXT: }236// CHECK-NEXT: #pragma omp parallel for ordered(1)237// CHECK-NEXT: for (int i = 0; i < argc; ++i) {238#if _OPENMP >= 202111239// OMP52: #pragma omp ordered doacross(source:)240// OMP52-NEXT: #pragma omp ordered doacross(sink: i - 5)241// OMP52-NEXT: #pragma omp ordered doacross(sink: omp_cur_iteration - 1)242// OMP52-NEXT: #pragma omp ordered doacross(source: omp_cur_iteration)243#else244// OMP51: #pragma omp ordered depend(source)245// OMP51-NEXT: #pragma omp ordered depend(sink : i - 5)246#endif247// CHECK-NEXT: a = 2;248// CHECK-NEXT: }249  return tmain<int, 3>(argc);250}251 252#endif253