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