LLVM OpenMP
parallel-wsloop-collapse-through-tile-compose.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 consuming a tile composed with reverse.
5
6#ifndef HEADER
7#define HEADER
8
9#include <cstdlib>
10#include <cstdio>
11
12int main() {
13 printf("rev2\n");
14#pragma omp parallel for collapse(2) num_threads(1)
15#pragma omp tile sizes(2)
16#pragma omp reverse
17 for (int i = 0; i < 5; ++i)
18 printf("i=%d\n", i);
19
20 printf("rev3\n");
21#pragma omp parallel for collapse(3) num_threads(1)
22#pragma omp tile sizes(2)
23#pragma omp reverse
24 for (int i = 0; i < 5; ++i)
25 for (int j = 0; j < 2; ++j)
26 printf("i=%d j=%d\n", i, j);
27
28 printf("done\n");
29 return EXIT_SUCCESS;
30}
31
32#endif /* HEADER */
33
34// CHECK: rev2
35// CHECK-NEXT: i=4
36// CHECK-NEXT: i=3
37// CHECK-NEXT: i=2
38// CHECK-NEXT: i=1
39// CHECK-NEXT: i=0
40// CHECK-NEXT: rev3
41// CHECK-NEXT: i=4 j=0
42// CHECK-NEXT: i=4 j=1
43// CHECK-NEXT: i=3 j=0
44// CHECK-NEXT: i=3 j=1
45// CHECK-NEXT: i=2 j=0
46// CHECK-NEXT: i=2 j=1
47// CHECK-NEXT: i=1 j=0
48// CHECK-NEXT: i=1 j=1
49// CHECK-NEXT: i=0 j=0
50// CHECK-NEXT: i=0 j=1
51// CHECK-NEXT: done
#define i
Definition kmp_stub.cpp:87