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