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