LLVM OpenMP
runtime
test
transform
flatten
depth-intfor.c
Go to the documentation of this file.
1
// RUN: %libomp-compile -fopenmp-version=61 && %libomp-run \
2
// RUN: | FileCheck %s --match-full-lines
3
4
// 'depth(3)' fully flattens a three-deep perfectly nested loop into one loop.
5
// This verifies that the flattened loop preserves the exact row-major
6
// visitation order of the original nest, including non-unit steps and non-zero
7
// start values.
8
9
#ifndef HEADER
10
#define HEADER
11
12
#include <stdlib.h>
13
#include <stdio.h>
14
15
int
main
() {
16
printf(
"do\n"
);
17
#pragma omp flatten depth(3)
18
for
(
int
i
= 7;
i
< 11;
i
+= 2)
19
for
(
int
j
= 1;
j
< 4;
j
+= 1)
20
for
(
int
k = 0; k < 2; ++k)
21
printf(
"i=%d j=%d k=%d\n"
,
i
,
j
, k);
22
printf(
"done\n"
);
23
return
EXIT_SUCCESS;
24
}
25
26
#endif
/* HEADER */
27
28
// CHECK: do
29
// CHECK-NEXT: i=7 j=1 k=0
30
// CHECK-NEXT: i=7 j=1 k=1
31
// CHECK-NEXT: i=7 j=2 k=0
32
// CHECK-NEXT: i=7 j=2 k=1
33
// CHECK-NEXT: i=7 j=3 k=0
34
// CHECK-NEXT: i=7 j=3 k=1
35
// CHECK-NEXT: i=9 j=1 k=0
36
// CHECK-NEXT: i=9 j=1 k=1
37
// CHECK-NEXT: i=9 j=2 k=0
38
// CHECK-NEXT: i=9 j=2 k=1
39
// CHECK-NEXT: i=9 j=3 k=0
40
// CHECK-NEXT: i=9 j=3 k=1
41
// CHECK-NEXT: done
main
int main()
Definition
depth-intfor.c:15
i
#define i
Definition
kmp_stub.cpp:88
j
int j
Definition
omp_single_copyprivate.c:6
Generated on
for LLVM OpenMP by
1.14.0