1*80865c01SMichael Kruse // RUN: %libomp-cxx-compile-and-run | FileCheck %s --match-full-lines 2*80865c01SMichael Kruse 3*80865c01SMichael Kruse #ifndef HEADER 4*80865c01SMichael Kruse #define HEADER 5*80865c01SMichael Kruse 6*80865c01SMichael Kruse #include <cstdlib> 7*80865c01SMichael Kruse #include <cstdio> 8*80865c01SMichael Kruse 9*80865c01SMichael Kruse int main() { 10*80865c01SMichael Kruse printf("do\n"); 11*80865c01SMichael Kruse #pragma omp parallel for collapse(3) num_threads(1) 12*80865c01SMichael Kruse for (int i = 0; i < 3; ++i) 13*80865c01SMichael Kruse #pragma omp reverse 14*80865c01SMichael Kruse for (int j = 0; j < 3; ++j) 15*80865c01SMichael Kruse for (int k = 0; k < 3; ++k) 16*80865c01SMichael Kruse printf("i=%d j=%d k=%d\n", i, j, k); 17*80865c01SMichael Kruse printf("done\n"); 18*80865c01SMichael Kruse return EXIT_SUCCESS; 19*80865c01SMichael Kruse } 20*80865c01SMichael Kruse 21*80865c01SMichael Kruse #endif /* HEADER */ 22*80865c01SMichael Kruse 23*80865c01SMichael Kruse // CHECK: do 24*80865c01SMichael Kruse // CHECK-NEXT: i=0 j=2 k=0 25*80865c01SMichael Kruse // CHECK-NEXT: i=0 j=2 k=1 26*80865c01SMichael Kruse // CHECK-NEXT: i=0 j=2 k=2 27*80865c01SMichael Kruse // CHECK-NEXT: i=0 j=1 k=0 28*80865c01SMichael Kruse // CHECK-NEXT: i=0 j=1 k=1 29*80865c01SMichael Kruse // CHECK-NEXT: i=0 j=1 k=2 30*80865c01SMichael Kruse // CHECK-NEXT: i=0 j=0 k=0 31*80865c01SMichael Kruse // CHECK-NEXT: i=0 j=0 k=1 32*80865c01SMichael Kruse // CHECK-NEXT: i=0 j=0 k=2 33*80865c01SMichael Kruse // CHECK-NEXT: i=1 j=2 k=0 34*80865c01SMichael Kruse // CHECK-NEXT: i=1 j=2 k=1 35*80865c01SMichael Kruse // CHECK-NEXT: i=1 j=2 k=2 36*80865c01SMichael Kruse // CHECK-NEXT: i=1 j=1 k=0 37*80865c01SMichael Kruse // CHECK-NEXT: i=1 j=1 k=1 38*80865c01SMichael Kruse // CHECK-NEXT: i=1 j=1 k=2 39*80865c01SMichael Kruse // CHECK-NEXT: i=1 j=0 k=0 40*80865c01SMichael Kruse // CHECK-NEXT: i=1 j=0 k=1 41*80865c01SMichael Kruse // CHECK-NEXT: i=1 j=0 k=2 42*80865c01SMichael Kruse // CHECK-NEXT: i=2 j=2 k=0 43*80865c01SMichael Kruse // CHECK-NEXT: i=2 j=2 k=1 44*80865c01SMichael Kruse // CHECK-NEXT: i=2 j=2 k=2 45*80865c01SMichael Kruse // CHECK-NEXT: i=2 j=1 k=0 46*80865c01SMichael Kruse // CHECK-NEXT: i=2 j=1 k=1 47*80865c01SMichael Kruse // CHECK-NEXT: i=2 j=1 k=2 48*80865c01SMichael Kruse // CHECK-NEXT: i=2 j=0 k=0 49*80865c01SMichael Kruse // CHECK-NEXT: i=2 j=0 k=1 50*80865c01SMichael Kruse // CHECK-NEXT: i=2 j=0 k=2 51*80865c01SMichael Kruse // CHECK-NEXT: done 52