LLVM OpenMP
parallel-wsloop-collapse-through-tile-2d.cpp
Go to the documentation of this file.
1// RUN: %libomp-cxx-compile-and-run | FileCheck %s --match-full-lines
2// RUN: %libomp-cxx-compile -O2 && %libomp-run | FileCheck %s --match-full-lines
3
4// 2-D tile consumed by collapse(4) (full) and collapse(3) (partial).
5
6#ifndef HEADER
7#define HEADER
8
9#include <cstdlib>
10#include <cstdio>
11
12int main() {
13 printf("full4\n");
14#pragma omp parallel for collapse(4) num_threads(1)
15#pragma omp tile sizes(2, 2)
16 for (int i = 0; i < 3; ++i)
17 for (int j = 0; j < 3; ++j)
18 printf("i=%d j=%d\n", i, j);
19
20 printf("part3\n");
21#pragma omp parallel for collapse(3) num_threads(1)
22#pragma omp tile sizes(2, 2)
23 for (int i = 0; i < 3; ++i)
24 for (int j = 0; j < 4; ++j)
25 printf("i=%d j=%d\n", i, j);
26
27 printf("done\n");
28 return EXIT_SUCCESS;
29}
30
31#endif /* HEADER */
32
33// CHECK: full4
34// CHECK-NEXT: i=0 j=0
35// CHECK-NEXT: i=0 j=1
36// CHECK-NEXT: i=1 j=0
37// CHECK-NEXT: i=1 j=1
38// CHECK-NEXT: i=0 j=2
39// CHECK-NEXT: i=1 j=2
40// CHECK-NEXT: i=2 j=0
41// CHECK-NEXT: i=2 j=1
42// CHECK-NEXT: i=2 j=2
43// CHECK-NEXT: part3
44// CHECK-NEXT: i=0 j=0
45// CHECK-NEXT: i=0 j=1
46// CHECK-NEXT: i=1 j=0
47// CHECK-NEXT: i=1 j=1
48// CHECK-NEXT: i=0 j=2
49// CHECK-NEXT: i=0 j=3
50// CHECK-NEXT: i=1 j=2
51// CHECK-NEXT: i=1 j=3
52// CHECK-NEXT: i=2 j=0
53// CHECK-NEXT: i=2 j=1
54// CHECK-NEXT: i=2 j=2
55// CHECK-NEXT: i=2 j=3
56// CHECK-NEXT: done
#define i
Definition kmp_stub.cpp:87