xref: /llvm-project/openmp/runtime/test/transform/interchange/parallel-wsloop-collapse-intfor.cpp (revision 5c93a94f5adaa304922a936842162cba91785211)
1*5c93a94fSMichael Kruse // RUN: %libomp-cxx-compile-and-run | FileCheck %s --match-full-lines
2*5c93a94fSMichael Kruse 
3*5c93a94fSMichael Kruse #ifndef HEADER
4*5c93a94fSMichael Kruse #define HEADER
5*5c93a94fSMichael Kruse 
6*5c93a94fSMichael Kruse #include <cstdlib>
7*5c93a94fSMichael Kruse #include <cstdio>
8*5c93a94fSMichael Kruse 
9*5c93a94fSMichael Kruse int main() {
10*5c93a94fSMichael Kruse   printf("do\n");
11*5c93a94fSMichael Kruse #pragma omp parallel for collapse(4) num_threads(1)
12*5c93a94fSMichael Kruse   for (int i = 0; i < 3; ++i)
13*5c93a94fSMichael Kruse #pragma omp interchange
14*5c93a94fSMichael Kruse     for (int j = 0; j < 3; ++j)
15*5c93a94fSMichael Kruse       for (int k = 0; k < 3; ++k)
16*5c93a94fSMichael Kruse         for (int l = 0; l < 3; ++l)
17*5c93a94fSMichael Kruse           printf("i=%d j=%d k=%d l=%d\n", i, j, k, l);
18*5c93a94fSMichael Kruse   printf("done\n");
19*5c93a94fSMichael Kruse   return EXIT_SUCCESS;
20*5c93a94fSMichael Kruse }
21*5c93a94fSMichael Kruse 
22*5c93a94fSMichael Kruse #endif /* HEADER */
23*5c93a94fSMichael Kruse 
24*5c93a94fSMichael Kruse // CHECK:      do
25*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=0 k=0 l=0
26*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=0 k=0 l=1
27*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=0 k=0 l=2
28*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=1 k=0 l=0
29*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=1 k=0 l=1
30*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=1 k=0 l=2
31*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=2 k=0 l=0
32*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=2 k=0 l=1
33*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=2 k=0 l=2
34*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=0 k=1 l=0
35*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=0 k=1 l=1
36*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=0 k=1 l=2
37*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=1 k=1 l=0
38*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=1 k=1 l=1
39*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=1 k=1 l=2
40*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=2 k=1 l=0
41*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=2 k=1 l=1
42*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=2 k=1 l=2
43*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=0 k=2 l=0
44*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=0 k=2 l=1
45*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=0 k=2 l=2
46*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=1 k=2 l=0
47*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=1 k=2 l=1
48*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=1 k=2 l=2
49*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=2 k=2 l=0
50*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=2 k=2 l=1
51*5c93a94fSMichael Kruse // CHECK-NEXT: i=0 j=2 k=2 l=2
52*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=0 k=0 l=0
53*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=0 k=0 l=1
54*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=0 k=0 l=2
55*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=1 k=0 l=0
56*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=1 k=0 l=1
57*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=1 k=0 l=2
58*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=2 k=0 l=0
59*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=2 k=0 l=1
60*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=2 k=0 l=2
61*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=0 k=1 l=0
62*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=0 k=1 l=1
63*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=0 k=1 l=2
64*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=1 k=1 l=0
65*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=1 k=1 l=1
66*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=1 k=1 l=2
67*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=2 k=1 l=0
68*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=2 k=1 l=1
69*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=2 k=1 l=2
70*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=0 k=2 l=0
71*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=0 k=2 l=1
72*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=0 k=2 l=2
73*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=1 k=2 l=0
74*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=1 k=2 l=1
75*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=1 k=2 l=2
76*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=2 k=2 l=0
77*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=2 k=2 l=1
78*5c93a94fSMichael Kruse // CHECK-NEXT: i=1 j=2 k=2 l=2
79*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=0 k=0 l=0
80*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=0 k=0 l=1
81*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=0 k=0 l=2
82*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=1 k=0 l=0
83*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=1 k=0 l=1
84*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=1 k=0 l=2
85*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=2 k=0 l=0
86*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=2 k=0 l=1
87*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=2 k=0 l=2
88*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=0 k=1 l=0
89*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=0 k=1 l=1
90*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=0 k=1 l=2
91*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=1 k=1 l=0
92*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=1 k=1 l=1
93*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=1 k=1 l=2
94*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=2 k=1 l=0
95*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=2 k=1 l=1
96*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=2 k=1 l=2
97*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=0 k=2 l=0
98*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=0 k=2 l=1
99*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=0 k=2 l=2
100*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=1 k=2 l=0
101*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=1 k=2 l=1
102*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=1 k=2 l=2
103*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=2 k=2 l=0
104*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=2 k=2 l=1
105*5c93a94fSMichael Kruse // CHECK-NEXT: i=2 j=2 k=2 l=2
106*5c93a94fSMichael Kruse // CHECK-NEXT: done
107