LLVM OpenMP
parallel-wsloop-collapse-through-tile.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// collapse(3) reaches through a tiled loop to include the inner `j` loop.
5
6#ifndef HEADER
7#define HEADER
8
9#include <cstdlib>
10#include <cstdio>
11
12int main() {
13 printf("do\n");
14#pragma omp parallel for collapse(3) num_threads(1)
15#pragma omp tile sizes(4)
16 for (int i = 0; i < 6; ++i)
17 for (int j = 0; j < 2; ++j)
18 printf("i=%d j=%d\n", i, j);
19 printf("done\n");
20 return EXIT_SUCCESS;
21}
22
23#endif /* HEADER */
24
25// CHECK: do
26// CHECK-NEXT: i=0 j=0
27// CHECK-NEXT: i=0 j=1
28// CHECK-NEXT: i=1 j=0
29// CHECK-NEXT: i=1 j=1
30// CHECK-NEXT: i=2 j=0
31// CHECK-NEXT: i=2 j=1
32// CHECK-NEXT: i=3 j=0
33// CHECK-NEXT: i=3 j=1
34// CHECK-NEXT: i=4 j=0
35// CHECK-NEXT: i=4 j=1
36// CHECK-NEXT: i=5 j=0
37// CHECK-NEXT: i=5 j=1
38// CHECK-NEXT: done
#define i
Definition kmp_stub.cpp:87