xref: /llvm-project/openmp/runtime/test/transform/tile/intfor.c (revision b0b6c16b470a7d5d9c63765058cca0ebe07ad57d)
1*b0b6c16bSMichael Kruse // RUN: %libomp-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 <stdlib.h>
7*b0b6c16bSMichael Kruse #include <stdio.h>
8*b0b6c16bSMichael Kruse 
9*b0b6c16bSMichael Kruse // TODO: The OpenMP specification explicitly does not define when and how often
10*b0b6c16bSMichael Kruse // expressions in the clause are evaluated. Currently Clang evaluates it again
11*b0b6c16bSMichael Kruse // whenever needed, but function calls in clauses are not common. A better
12*b0b6c16bSMichael Kruse // implementation would evaluate it just once and reuse the result.
tilesize(int i)13*b0b6c16bSMichael Kruse static int tilesize(int i) {
14*b0b6c16bSMichael Kruse   printf("tilesize(%d)\n", i);
15*b0b6c16bSMichael Kruse   return 3;
16*b0b6c16bSMichael Kruse }
17*b0b6c16bSMichael Kruse 
main()18*b0b6c16bSMichael Kruse int main() {
19*b0b6c16bSMichael Kruse   printf("do\n");
20*b0b6c16bSMichael Kruse #pragma omp tile sizes(tilesize(1), tilesize(2))
21*b0b6c16bSMichael Kruse   for (int i = 7; i < 19; i += 3)
22*b0b6c16bSMichael Kruse     for (int j = 7; j < 20; j += 3)
23*b0b6c16bSMichael Kruse       printf("i=%d j=%d\n", i, j);
24*b0b6c16bSMichael Kruse   printf("done\n");
25*b0b6c16bSMichael Kruse   return EXIT_SUCCESS;
26*b0b6c16bSMichael Kruse }
27*b0b6c16bSMichael Kruse 
28*b0b6c16bSMichael Kruse #endif /* HEADER */
29*b0b6c16bSMichael Kruse 
30*b0b6c16bSMichael Kruse // CHECK:      do
31*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
32*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
33*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
34*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
35*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
36*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
37*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
38*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
39*b0b6c16bSMichael Kruse // CHECK-NEXT: i=7 j=7
40*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
41*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
42*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
43*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
44*b0b6c16bSMichael Kruse // CHECK-NEXT: i=7 j=10
45*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
46*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
47*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
48*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
49*b0b6c16bSMichael Kruse // CHECK-NEXT: i=7 j=13
50*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
51*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
52*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
53*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
54*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
55*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
56*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
57*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
58*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
59*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
60*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
61*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
62*b0b6c16bSMichael Kruse // CHECK-NEXT: i=10 j=7
63*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
64*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
65*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
66*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
67*b0b6c16bSMichael Kruse // CHECK-NEXT: i=10 j=10
68*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
69*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
70*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
71*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
72*b0b6c16bSMichael Kruse // CHECK-NEXT: i=10 j=13
73*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
74*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
75*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
76*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
77*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
78*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
79*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
80*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
81*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
82*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
83*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
84*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
85*b0b6c16bSMichael Kruse // CHECK-NEXT: i=13 j=7
86*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
87*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
88*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
89*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
90*b0b6c16bSMichael Kruse // CHECK-NEXT: i=13 j=10
91*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
92*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
93*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
94*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
95*b0b6c16bSMichael Kruse // CHECK-NEXT: i=13 j=13
96*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
97*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
98*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
99*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
100*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
101*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
102*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
103*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
104*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
105*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
106*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
107*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
108*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
109*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
110*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
111*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
112*b0b6c16bSMichael Kruse // CHECK-NEXT: i=7 j=16
113*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
114*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
115*b0b6c16bSMichael Kruse // CHECK-NEXT: i=7 j=19
116*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
117*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
118*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
119*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
120*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
121*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
122*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
123*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
124*b0b6c16bSMichael Kruse // CHECK-NEXT: i=10 j=16
125*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
126*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
127*b0b6c16bSMichael Kruse // CHECK-NEXT: i=10 j=19
128*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
129*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
130*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
131*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
132*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
133*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
134*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
135*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
136*b0b6c16bSMichael Kruse // CHECK-NEXT: i=13 j=16
137*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
138*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
139*b0b6c16bSMichael Kruse // CHECK-NEXT: i=13 j=19
140*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
141*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
142*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
143*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
144*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
145*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
146*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
147*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
148*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
149*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
150*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
151*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
152*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
153*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
154*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
155*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
156*b0b6c16bSMichael Kruse // CHECK-NEXT: i=16 j=7
157*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
158*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
159*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
160*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
161*b0b6c16bSMichael Kruse // CHECK-NEXT: i=16 j=10
162*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
163*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
164*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
165*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
166*b0b6c16bSMichael Kruse // CHECK-NEXT: i=16 j=13
167*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
168*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
169*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
170*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
171*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
172*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
173*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
174*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
175*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
176*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
177*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
178*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
179*b0b6c16bSMichael Kruse // CHECK-NEXT: i=16 j=16
180*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
181*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
182*b0b6c16bSMichael Kruse // CHECK-NEXT: i=16 j=19
183*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
184*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
185*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
186*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
187*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
188*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(2)
189*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
190*b0b6c16bSMichael Kruse // CHECK-NEXT: tilesize(1)
191*b0b6c16bSMichael Kruse // CHECK-NEXT: done