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