1*b0b6c16bSMichael Kruse // RUN: %libomp-cxx-compile-and-run | FileCheck %s --match-full-lines 2*b0b6c16bSMichael Kruse 3*b0b6c16bSMichael Kruse #ifndef HEADER 4*b0b6c16bSMichael Kruse #define HEADER 5*b0b6c16bSMichael Kruse 6*b0b6c16bSMichael Kruse #include <cstdlib> 7*b0b6c16bSMichael Kruse #include <cstdio> 8*b0b6c16bSMichael Kruse main()9*b0b6c16bSMichael Kruseint main() { 10*b0b6c16bSMichael Kruse printf("do\n"); 11*b0b6c16bSMichael Kruse #pragma omp parallel for collapse(3) num_threads(1) 12*b0b6c16bSMichael Kruse for (int i = 0; i < 3; ++i) 13*b0b6c16bSMichael Kruse #pragma omp tile sizes(3, 3) 14*b0b6c16bSMichael Kruse for (int j = 0; j < 4; ++j) 15*b0b6c16bSMichael Kruse for (int k = 0; k < 5; ++k) 16*b0b6c16bSMichael Kruse printf("i=%d j=%d k=%d\n", i, j, k); 17*b0b6c16bSMichael Kruse printf("done\n"); 18*b0b6c16bSMichael Kruse return EXIT_SUCCESS; 19*b0b6c16bSMichael Kruse } 20*b0b6c16bSMichael Kruse 21*b0b6c16bSMichael Kruse #endif /* HEADER */ 22*b0b6c16bSMichael Kruse 23*b0b6c16bSMichael Kruse // CHECK: do 24*b0b6c16bSMichael Kruse 25*b0b6c16bSMichael Kruse // Full tile 26*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=0 k=0 27*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=0 k=1 28*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=0 k=2 29*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=1 k=0 30*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=1 k=1 31*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=1 k=2 32*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=2 k=0 33*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=2 k=1 34*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=2 k=2 35*b0b6c16bSMichael Kruse 36*b0b6c16bSMichael Kruse // Partial tile 37*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=0 k=3 38*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=0 k=4 39*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=1 k=3 40*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=1 k=4 41*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=2 k=3 42*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=2 k=4 43*b0b6c16bSMichael Kruse 44*b0b6c16bSMichael Kruse // Partial tile 45*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=3 k=0 46*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=3 k=1 47*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=3 k=2 48*b0b6c16bSMichael Kruse 49*b0b6c16bSMichael Kruse // Partial tile 50*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=3 k=3 51*b0b6c16bSMichael Kruse // CHECK-NEXT: i=0 j=3 k=4 52*b0b6c16bSMichael Kruse 53*b0b6c16bSMichael Kruse // Full tile 54*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=0 k=0 55*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=0 k=1 56*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=0 k=2 57*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=1 k=0 58*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=1 k=1 59*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=1 k=2 60*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=2 k=0 61*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=2 k=1 62*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=2 k=2 63*b0b6c16bSMichael Kruse 64*b0b6c16bSMichael Kruse // Partial tiles 65*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=0 k=3 66*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=0 k=4 67*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=1 k=3 68*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=1 k=4 69*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=2 k=3 70*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=2 k=4 71*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=3 k=0 72*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=3 k=1 73*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=3 k=2 74*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=3 k=3 75*b0b6c16bSMichael Kruse // CHECK-NEXT: i=1 j=3 k=4 76*b0b6c16bSMichael Kruse 77*b0b6c16bSMichael Kruse // Full tile 78*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=0 k=0 79*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=0 k=1 80*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=0 k=2 81*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=1 k=0 82*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=1 k=1 83*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=1 k=2 84*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=2 k=0 85*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=2 k=1 86*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=2 k=2 87*b0b6c16bSMichael Kruse 88*b0b6c16bSMichael Kruse // Partial tiles 89*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=0 k=3 90*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=0 k=4 91*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=1 k=3 92*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=1 k=4 93*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=2 k=3 94*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=2 k=4 95*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=3 k=0 96*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=3 k=1 97*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=3 k=2 98*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=3 k=3 99*b0b6c16bSMichael Kruse // CHECK-NEXT: i=2 j=3 k=4 100*b0b6c16bSMichael Kruse // CHECK-NEXT: done 101