1*67e74705SXin Li // RUN: %clang_cc1 -fopenmp -x c++ -triple x86_64-unknown-unknown -emit-llvm -fexceptions -fcxx-exceptions -o - %s | FileCheck %s 2*67e74705SXin Li main()3*67e74705SXin Liint main() { 4*67e74705SXin Li // CHECK: @__kmpc_for_static_init 5*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 6*67e74705SXin Li // CHECK: @__kmpc_for_static_fini 7*67e74705SXin Li #pragma omp for 8*67e74705SXin Li for(int i = 0; i < 10; ++i); 9*67e74705SXin Li // CHECK: @__kmpc_for_static_init 10*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 11*67e74705SXin Li // CHECK: @__kmpc_for_static_fini 12*67e74705SXin Li #pragma omp for simd 13*67e74705SXin Li for(int i = 0; i < 10; ++i); 14*67e74705SXin Li // CHECK: @__kmpc_for_static_init 15*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 16*67e74705SXin Li // CHECK: @__kmpc_for_static_fini 17*67e74705SXin Li #pragma omp for schedule(static) 18*67e74705SXin Li for(int i = 0; i < 10; ++i); 19*67e74705SXin Li // CHECK: @__kmpc_for_static_init 20*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 21*67e74705SXin Li // CHECK: @__kmpc_for_static_fini 22*67e74705SXin Li #pragma omp for simd schedule(static) 23*67e74705SXin Li for(int i = 0; i < 10; ++i); 24*67e74705SXin Li // CHECK: @__kmpc_for_static_init 25*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 26*67e74705SXin Li // CHECK: @__kmpc_for_static_fini 27*67e74705SXin Li #pragma omp for schedule(static, 2) 28*67e74705SXin Li for(int i = 0; i < 10; ++i); 29*67e74705SXin Li // CHECK: @__kmpc_for_static_init 30*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 31*67e74705SXin Li // CHECK: @__kmpc_for_static_fini 32*67e74705SXin Li #pragma omp for simd schedule(static, 2) 33*67e74705SXin Li for(int i = 0; i < 10; ++i); 34*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 35*67e74705SXin Li // CHECK: !llvm.mem.parallel_loop_access 36*67e74705SXin Li #pragma omp for schedule(auto) 37*67e74705SXin Li for(int i = 0; i < 10; ++i); 38*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 39*67e74705SXin Li // CHECK: !llvm.mem.parallel_loop_access 40*67e74705SXin Li #pragma omp for simd schedule(auto) 41*67e74705SXin Li for(int i = 0; i < 10; ++i); 42*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 43*67e74705SXin Li // CHECK: !llvm.mem.parallel_loop_access 44*67e74705SXin Li #pragma omp for schedule(runtime) 45*67e74705SXin Li for(int i = 0; i < 10; ++i); 46*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 47*67e74705SXin Li // CHECK: !llvm.mem.parallel_loop_access 48*67e74705SXin Li #pragma omp for simd schedule(runtime) 49*67e74705SXin Li for(int i = 0; i < 10; ++i); 50*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 51*67e74705SXin Li // CHECK: !llvm.mem.parallel_loop_access 52*67e74705SXin Li #pragma omp for schedule(guided) 53*67e74705SXin Li for(int i = 0; i < 10; ++i); 54*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 55*67e74705SXin Li // CHECK: !llvm.mem.parallel_loop_access 56*67e74705SXin Li #pragma omp for simd schedule(guided) 57*67e74705SXin Li for(int i = 0; i < 10; ++i); 58*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 59*67e74705SXin Li // CHECK: !llvm.mem.parallel_loop_access 60*67e74705SXin Li #pragma omp for schedule(dynamic) 61*67e74705SXin Li for(int i = 0; i < 10; ++i); 62*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 63*67e74705SXin Li // CHECK: !llvm.mem.parallel_loop_access 64*67e74705SXin Li #pragma omp for simd schedule(dynamic) 65*67e74705SXin Li for(int i = 0; i < 10; ++i); 66*67e74705SXin Li // CHECK: @__kmpc_for_static_init 67*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 68*67e74705SXin Li // CHECK: @__kmpc_for_static_fini 69*67e74705SXin Li #pragma omp for schedule(monotonic: static) 70*67e74705SXin Li for(int i = 0; i < 10; ++i); 71*67e74705SXin Li // CHECK: @__kmpc_for_static_init 72*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 73*67e74705SXin Li // CHECK: @__kmpc_for_static_fini 74*67e74705SXin Li #pragma omp for simd schedule(monotonic: static) 75*67e74705SXin Li for(int i = 0; i < 10; ++i); 76*67e74705SXin Li // CHECK: @__kmpc_for_static_init 77*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 78*67e74705SXin Li // CHECK: @__kmpc_for_static_fini 79*67e74705SXin Li #pragma omp for schedule(monotonic: static, 2) 80*67e74705SXin Li for(int i = 0; i < 10; ++i); 81*67e74705SXin Li // CHECK: @__kmpc_for_static_init 82*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 83*67e74705SXin Li // CHECK: @__kmpc_for_static_fini 84*67e74705SXin Li #pragma omp for simd schedule(monotonic: static, 2) 85*67e74705SXin Li for(int i = 0; i < 10; ++i); 86*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 87*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 88*67e74705SXin Li #pragma omp for schedule(monotonic: auto) 89*67e74705SXin Li for(int i = 0; i < 10; ++i); 90*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 91*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 92*67e74705SXin Li #pragma omp for simd schedule(monotonic: auto) 93*67e74705SXin Li for(int i = 0; i < 10; ++i); 94*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 95*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 96*67e74705SXin Li #pragma omp for schedule(monotonic: runtime) 97*67e74705SXin Li for(int i = 0; i < 10; ++i); 98*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 99*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 100*67e74705SXin Li #pragma omp for simd schedule(monotonic: runtime) 101*67e74705SXin Li for(int i = 0; i < 10; ++i); 102*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 103*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 104*67e74705SXin Li #pragma omp for schedule(monotonic: guided) 105*67e74705SXin Li for(int i = 0; i < 10; ++i); 106*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 107*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 108*67e74705SXin Li #pragma omp for simd schedule(monotonic: guided) 109*67e74705SXin Li for(int i = 0; i < 10; ++i); 110*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 111*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 112*67e74705SXin Li #pragma omp for schedule(monotonic: dynamic) 113*67e74705SXin Li for(int i = 0; i < 10; ++i); 114*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 115*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 116*67e74705SXin Li #pragma omp for simd schedule(monotonic: dynamic) 117*67e74705SXin Li for(int i = 0; i < 10; ++i); 118*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 119*67e74705SXin Li // CHECK: !llvm.mem.parallel_loop_access 120*67e74705SXin Li #pragma omp for schedule(nonmonotonic: guided) 121*67e74705SXin Li for(int i = 0; i < 10; ++i); 122*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 123*67e74705SXin Li // CHECK: !llvm.mem.parallel_loop_access 124*67e74705SXin Li #pragma omp for simd schedule(nonmonotonic: guided) 125*67e74705SXin Li for(int i = 0; i < 10; ++i); 126*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 127*67e74705SXin Li // CHECK: !llvm.mem.parallel_loop_access 128*67e74705SXin Li #pragma omp for schedule(nonmonotonic: dynamic) 129*67e74705SXin Li for(int i = 0; i < 10; ++i); 130*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 131*67e74705SXin Li // CHECK: !llvm.mem.parallel_loop_access 132*67e74705SXin Li #pragma omp for simd schedule(nonmonotonic: dynamic) 133*67e74705SXin Li for(int i = 0; i < 10; ++i); 134*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 135*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 136*67e74705SXin Li // CHECK: @__kmpc_dispatch_next 137*67e74705SXin Li #pragma omp for schedule(static) ordered 138*67e74705SXin Li for(int i = 0; i < 10; ++i); 139*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 140*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 141*67e74705SXin Li // CHECK: @__kmpc_dispatch_next 142*67e74705SXin Li #pragma omp for simd schedule(static) ordered 143*67e74705SXin Li for(int i = 0; i < 10; ++i); 144*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 145*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 146*67e74705SXin Li // CHECK: @__kmpc_dispatch_next 147*67e74705SXin Li #pragma omp for schedule(static, 2) ordered(1) 148*67e74705SXin Li for(int i = 0; i < 10; ++i); 149*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 150*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 151*67e74705SXin Li // CHECK: @__kmpc_dispatch_next 152*67e74705SXin Li #pragma omp for simd schedule(static, 2) ordered 153*67e74705SXin Li for(int i = 0; i < 10; ++i); 154*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 155*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 156*67e74705SXin Li // CHECK: @__kmpc_dispatch_next 157*67e74705SXin Li #pragma omp for schedule(auto) ordered(1) 158*67e74705SXin Li for(int i = 0; i < 10; ++i); 159*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 160*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 161*67e74705SXin Li #pragma omp for simd schedule(auto) ordered 162*67e74705SXin Li for(int i = 0; i < 10; ++i); 163*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 164*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 165*67e74705SXin Li // CHECK: @__kmpc_dispatch_next 166*67e74705SXin Li #pragma omp for schedule(runtime) ordered 167*67e74705SXin Li for(int i = 0; i < 10; ++i); 168*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 169*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 170*67e74705SXin Li // CHECK: @__kmpc_dispatch_next 171*67e74705SXin Li #pragma omp for simd schedule(runtime) ordered 172*67e74705SXin Li for(int i = 0; i < 10; ++i); 173*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 174*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 175*67e74705SXin Li // CHECK: @__kmpc_dispatch_next 176*67e74705SXin Li #pragma omp for schedule(guided) ordered(1) 177*67e74705SXin Li for(int i = 0; i < 10; ++i); 178*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 179*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 180*67e74705SXin Li // CHECK: @__kmpc_dispatch_next 181*67e74705SXin Li #pragma omp for simd schedule(guided) ordered 182*67e74705SXin Li for(int i = 0; i < 10; ++i); 183*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 184*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 185*67e74705SXin Li // CHECK: @__kmpc_dispatch_next 186*67e74705SXin Li #pragma omp for schedule(dynamic) ordered(1) 187*67e74705SXin Li for(int i = 0; i < 10; ++i); 188*67e74705SXin Li // CHECK: @__kmpc_dispatch_init 189*67e74705SXin Li // CHECK-NOT: !llvm.mem.parallel_loop_access 190*67e74705SXin Li // CHECK: @__kmpc_dispatch_next 191*67e74705SXin Li #pragma omp for simd schedule(dynamic) 192*67e74705SXin Li for(int i = 0; i < 10; ++i); 193*67e74705SXin Li return 0; 194*67e74705SXin Li } 195