xref: /llvm-project/openmp/runtime/test/transform/reverse/parallel-wsloop-collapse-intfor.cpp (revision 80865c01e1b8d3a6bea308fda7bbc53047dcc2e7)
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