LLVM OpenMP
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
15int 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
int main()
#define i
Definition kmp_stub.cpp:88