LLVM OpenMP 20.0.0git
parallel-wsloop-collapse-intfor.cpp
Go to the documentation of this file.
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
9int 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
#define i
Definition: kmp_stub.cpp:87
size_t sizes[]