1 // expected-no-diagnostics 2 #ifndef HEADER 3 #define HEADER 4 5 // Test host codegen. 6 // RUN: %clang_cc1 -DCK1 -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-64 7 // RUN: %clang_cc1 -DCK1 -fopenmp -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-pch -o %t %s 8 // RUN: %clang_cc1 -DCK1 -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-64 9 // RUN: %clang_cc1 -DCK1 -verify -fopenmp -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-32 10 // RUN: %clang_cc1 -DCK1 -fopenmp -x c++ -std=c++11 -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-pch -o %t %s 11 // RUN: %clang_cc1 -DCK1 -fopenmp -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix CK1 --check-prefix CK1-32 12 13 // RUN: %clang_cc1 -DCK1 -verify -fopenmp-simd -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY0 %s 14 // RUN: %clang_cc1 -DCK1 -fopenmp-simd -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-pch -o %t %s 15 // RUN: %clang_cc1 -DCK1 -fopenmp-simd -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY0 %s 16 // RUN: %clang_cc1 -DCK1 -verify -fopenmp-simd -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY0 %s 17 // RUN: %clang_cc1 -DCK1 -fopenmp-simd -x c++ -std=c++11 -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-pch -o %t %s 18 // RUN: %clang_cc1 -DCK1 -fopenmp-simd -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY0 %s 19 // SIMD-ONLY0-NOT: {{__kmpc|__tgt}} 20 #ifdef CK1 21 22 template <typename T, int X, long long Y> 23 struct SS{ 24 T a[X]; 25 float b; 26 // CK1: define {{.*}}i32 @{{.+}}foo{{.+}}( 27 int foo(void) { 28 29 // CK1: call i32 @__tgt_target_teams( 30 // CK1: call void @[[OFFL1:.+]]( 31 #pragma omp target 32 #pragma omp teams distribute parallel for 33 for(int i = 0; i < X; i++) { 34 a[i] = (T)0; 35 } 36 // CK1: call i32 @__tgt_target_teams( 37 // CK1: call void @[[OFFL2:.+]]( 38 #pragma omp target 39 #pragma omp teams distribute parallel for schedule(static) 40 for(int i = 0; i < X; i++) { 41 a[i] = (T)0; 42 } 43 // CK1: call i32 @__tgt_target_teams( 44 // CK1: call void @[[OFFL3:.+]]( 45 #pragma omp target 46 #pragma omp teams distribute parallel for schedule(static, X/2) 47 for(int i = 0; i < X; i++) { 48 a[i] = (T)0; 49 } 50 51 // CK1: call i32 @__tgt_target_teams( 52 // CK1: call void @[[OFFL4:.+]]( 53 #pragma omp target 54 #pragma omp teams distribute parallel for schedule(dynamic) 55 for(int i = 0; i < X; i++) { 56 a[i] = (T)0; 57 } 58 59 // CK1: call i32 @__tgt_target_teams( 60 // CK1: call void @[[OFFL5:.+]]( 61 #pragma omp target 62 #pragma omp teams distribute parallel for schedule(dynamic, X/2) 63 for(int i = 0; i < X; i++) { 64 a[i] = (T)0; 65 } 66 67 // CK1: define internal void @[[OFFL1]]( 68 // CK1: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTL1:.+]] to {{.+}}, 69 // CK1: ret void 70 71 // CK1: define internal void @[[OUTL1]]({{.+}}) 72 // CK1: call void @__kmpc_for_static_init_4( 73 // CK1: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL1:.+]] to 74 // CK1: call void @__kmpc_for_static_fini( 75 // CK1: ret void 76 77 // CK1: define internal void @[[PAR_OUTL1]]({{.+}}) 78 // CK1: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34, 79 // CK1: call void @__kmpc_for_static_fini( 80 // CK1: ret void 81 82 // CK1: define internal void @[[OFFL2]]( 83 // CK1: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTL2:.+]] to {{.+}}, 84 // CK1: ret void 85 86 // CK1: define internal void @[[OUTL2]]({{.+}}) 87 // CK1: call void @__kmpc_for_static_init_4( 88 // CK1: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL2:.+]] to 89 // CK1: call void @__kmpc_for_static_fini( 90 // CK1: ret void 91 92 // CK1: define internal void @[[PAR_OUTL2]]({{.+}}) 93 // CK1: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34, 94 // CK1: call void @__kmpc_for_static_fini( 95 // CK1: ret void 96 97 // CK1: define internal void @[[OFFL3]]( 98 // CK1: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTL3:.+]] to {{.+}}, 99 // CK1: ret void 100 101 // CK1: define internal void @[[OUTL3]]({{.+}}) 102 // CK1: call void @__kmpc_for_static_init_4( 103 // CK1: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL3:.+]] to 104 // CK1: call void @__kmpc_for_static_fini( 105 // CK1: ret void 106 107 // CK1: define internal void @[[PAR_OUTL3]]({{.+}}) 108 // CK1: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 33, 109 // CK1: call void @__kmpc_for_static_fini( 110 // CK1: ret void 111 112 // CK1: define internal void @[[OFFL4]]( 113 // CK1: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTL4:.+]] to {{.+}}, 114 // CK1: ret void 115 116 // CK1: define internal void @[[OUTL4]]({{.+}}) 117 // CK1: call void @__kmpc_for_static_init_4( 118 // CK1: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL4:.+]] to 119 // CK1: call void @__kmpc_for_static_fini( 120 // CK1: ret void 121 122 // CK1: define internal void @[[PAR_OUTL4]]({{.+}}) 123 // CK1: call void @__kmpc_dispatch_init_4({{.+}}, {{.+}}, i32 35, 124 // CK1: call {{.+}} @__kmpc_dispatch_next_4( 125 // CK1: ret void 126 127 // CK1: define internal void @[[OFFL5]]( 128 // CK1: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTL5:.+]] to {{.+}}, 129 // CK1: ret void 130 131 // CK1: define internal void @[[OUTL5]]({{.+}}) 132 // CK1: call void @__kmpc_for_static_init_4( 133 // CK1: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL5:.+]] to 134 // CK1: call void @__kmpc_for_static_fini( 135 // CK1: ret void 136 137 // CK1: define internal void @[[PAR_OUTL5]]({{.+}}) 138 // CK1: call void @__kmpc_dispatch_init_4({{.+}}, {{.+}}, i32 35, 139 // CK1: call {{.+}} @__kmpc_dispatch_next_4( 140 // CK1: ret void 141 142 return a[0]; 143 } 144 }; 145 146 int teams_template_struct(void) { 147 SS<int, 123, 456> V; 148 return V.foo(); 149 150 } 151 #endif // CK1 152 153 // Test host codegen. 154 // RUN: %clang_cc1 -DCK2 -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix CK2 --check-prefix CK2-64 155 // RUN: %clang_cc1 -DCK2 -fopenmp -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-pch -o %t %s 156 // RUN: %clang_cc1 -DCK2 -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix CK2 --check-prefix CK2-64 157 // RUN: %clang_cc1 -DCK2 -verify -fopenmp -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix CK2 --check-prefix CK2-32 158 // RUN: %clang_cc1 -DCK2 -fopenmp -x c++ -std=c++11 -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-pch -o %t %s 159 // RUN: %clang_cc1 -DCK2 -fopenmp -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s --check-prefix CK2 --check-prefix CK2-32 160 161 // RUN: %clang_cc1 -DCK2 -verify -fopenmp-simd -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY1 %s 162 // RUN: %clang_cc1 -DCK2 -fopenmp-simd -x c++ -std=c++11 -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -emit-pch -o %t %s 163 // RUN: %clang_cc1 -DCK2 -fopenmp-simd -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=powerpc64le-ibm-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY1 %s 164 // RUN: %clang_cc1 -DCK2 -verify -fopenmp-simd -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY1 %s 165 // RUN: %clang_cc1 -DCK2 -fopenmp-simd -x c++ -std=c++11 -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -emit-pch -o %t %s 166 // RUN: %clang_cc1 -DCK2 -fopenmp-simd -x c++ -triple i386-unknown-unknown -fopenmp-targets=i386-pc-linux-gnu -std=c++11 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY1 %s 167 // SIMD-ONLY1-NOT: {{__kmpc|__tgt}} 168 #ifdef CK2 169 170 template <typename T, int n> 171 int tmain(T argc) { 172 T a[n]; 173 int m = 10; 174 #pragma omp target 175 #pragma omp teams distribute parallel for 176 for(int i = 0; i < n; i++) { 177 a[i] = (T)0; 178 } 179 #pragma omp target 180 #pragma omp teams distribute parallel for schedule(static) 181 for(int i = 0; i < n; i++) { 182 a[i] = (T)0; 183 } 184 #pragma omp target 185 #pragma omp teams distribute parallel for schedule(static, m) 186 for(int i = 0; i < n; i++) { 187 a[i] = (T)0; 188 } 189 #pragma omp target 190 #pragma omp teams distribute parallel for schedule(dynamic) 191 for(int i = 0; i < n; i++) { 192 a[i] = (T)0; 193 } 194 #pragma omp target 195 #pragma omp teams distribute parallel for schedule(dynamic, m) 196 for(int i = 0; i < n; i++) { 197 a[i] = (T)0; 198 } 199 return 0; 200 } 201 202 int main (int argc, char **argv) { 203 int n = 100; 204 int a[n]; 205 int m = 10; 206 #pragma omp target 207 #pragma omp teams distribute parallel for 208 for(int i = 0; i < n; i++) { 209 a[i] = 0; 210 } 211 #pragma omp target 212 #pragma omp teams distribute parallel for dist_schedule(static) 213 for(int i = 0; i < n; i++) { 214 a[i] = 0; 215 } 216 #pragma omp target 217 #pragma omp teams distribute parallel for dist_schedule(static, m) 218 for(int i = 0; i < n; i++) { 219 a[i] = 0; 220 } 221 #pragma omp target 222 #pragma omp teams distribute parallel for schedule(dynamic) 223 for(int i = 0; i < n; i++) { 224 a[i] = 0; 225 } 226 #pragma omp target 227 #pragma omp teams distribute parallel for schedule(dynamic, m) 228 for(int i = 0; i < n; i++) { 229 a[i] = 0; 230 } 231 return tmain<int, 10>(argc); 232 } 233 234 // CK2: define {{.*}}i32 @{{[^,]+}}(i{{.+}}{{.+}} %[[ARGC:.+]], {{.+}}) 235 // CK2: call i32 @__tgt_target_teams( 236 // CK2: call void @[[OFFL1:.+]]({{.+}}) 237 // CK2: call i32 @__tgt_target_teams( 238 // CK2: call void @[[OFFL2:.+]]({{.+}}) 239 // CK2: call i32 @__tgt_target_teams( 240 // CK2: call void @[[OFFL3:.+]]({{.+}}) 241 // CK2: call i32 @__tgt_target_teams( 242 // CK2: call void @[[OFFL4:.+]]({{.+}}) 243 // CK2: call i32 @__tgt_target_teams( 244 // CK2: call void @[[OFFL5:.+]]({{.+}}) 245 // CK2: {{%.+}} = call{{.*}} i32 @[[TMAIN:.+]]({{.+}}) 246 // CK2: ret 247 248 // CK2: define {{.*}}void @[[OFFL1]]({{.+}}) 249 // CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 3, {{.+}} @[[OUTL1:.+]] to {{.+}}, 250 // CK2: ret void 251 252 // CK2: define internal void @[[OUTL1]]({{.+}}) 253 // CK2: call void @__kmpc_for_static_init_4( 254 // CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL1:.+]] to 255 // CK2: call void @__kmpc_for_static_fini( 256 // CK2: ret void 257 258 // CK2: define internal void @[[PAR_OUTL1]]({{.+}}) 259 // CK2: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34, 260 // CK2: call void @__kmpc_for_static_fini( 261 // CK2: ret void 262 263 // CK2: define {{.*}}void @[[OFFL2]]({{.+}}) 264 // CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 3, {{.+}} @[[OUTL2:.+]] to {{.+}}, 265 // CK2: ret void 266 267 // CK2: define internal void @[[OUTL2]]({{.+}}) 268 // CK2: call void @__kmpc_for_static_init_4( 269 // CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL2:.+]] to 270 // CK2: call void @__kmpc_for_static_fini( 271 // CK2: ret void 272 273 // CK2: define internal void @[[PAR_OUTL2]]({{.+}}) 274 // CK2: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34, 275 // CK2: call void @__kmpc_for_static_fini( 276 // CK2: ret void 277 278 // CK2: define {{.*}}void @[[OFFL3]]({{.+}}) 279 // CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 4, {{.+}} @[[OUTL3:.+]] to {{.+}}, 280 // CK2: ret void 281 282 // CK2: define internal void @[[OUTL3]]({{.+}}) 283 // CK2: call void @__kmpc_for_static_init_4( 284 // CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL3:.+]] to 285 // CK2: call void @__kmpc_for_static_fini( 286 // CK2: ret void 287 288 // CK2: define internal void @[[PAR_OUTL3]]({{.+}}) 289 // CK2: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34 290 // CK2: call void @__kmpc_for_static_fini( 291 // CK2: ret void 292 293 // CK2: define {{.*}}void @[[OFFL4]]({{.+}}) 294 // CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 {{.+}}, {{.+}} @[[OUTL4:.+]] to {{.+}}, 295 // CK2: ret void 296 297 // CK2: define internal void @[[OUTL4]]({{.+}}) 298 // CK2: call void @__kmpc_for_static_init_4( 299 // CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL4:.+]] to 300 // CK2: call void @__kmpc_for_static_fini( 301 // CK2: ret void 302 303 // CK2: define internal void @[[PAR_OUTL4]]({{.+}}) 304 // CK2: call void @__kmpc_dispatch_init_4({{.+}}, {{.+}}, i32 35, 305 // CK2: call {{.+}} @__kmpc_dispatch_next_4( 306 // CK2: ret void 307 308 309 // CK2: define {{.*}}void @[[OFFL5]]({{.+}}) 310 // CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 {{.+}}, {{.+}} @[[OUTL5:.+]] to {{.+}}, 311 // CK2: ret void 312 313 // CK2: define internal void @[[OUTL5]]({{.+}}) 314 // CK2: call void @__kmpc_for_static_init_4( 315 // CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTL5:.+]] to 316 // CK2: call void @__kmpc_for_static_fini( 317 // CK2: ret void 318 319 // CK2: define internal void @[[PAR_OUTL5]]({{.+}}) 320 // CK2: call void @__kmpc_dispatch_init_4({{.+}}, {{.+}}, i32 35, 321 // CK2: call {{.+}} @__kmpc_dispatch_next_4( 322 // CK2: ret void 323 324 // CK2: define {{.*}}i32 @[[TMAIN]]({{.+}}) 325 // CK2: call i32 @__tgt_target_teams( 326 // CK2: call void @[[OFFLT1:.+]]({{.+}}) 327 // CK2: call i32 @__tgt_target_teams( 328 // CK2: call void @[[OFFLT2:.+]]({{.+}}) 329 // CK2: call i32 @__tgt_target_teams( 330 // CK2: call void @[[OFFLT3:.+]]({{.+}}) 331 // CK2: call i32 @__tgt_target_teams( 332 // CK2: call void @[[OFFLT4:.+]]({{.+}}) 333 // CK2: call i32 @__tgt_target_teams( 334 // CK2: call void @[[OFFLT5:.+]]({{.+}}) 335 // CK2: ret 336 // CK2-NEXT: } 337 338 // CK2: define {{.*}}void @[[OFFLT1]]({{.+}}) 339 // CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTLT1:.+]] to {{.+}}, 340 // CK2: ret void 341 342 // CK2: define internal void @[[OUTLT1]]({{.+}}) 343 // CK2: call void @__kmpc_for_static_init_4( 344 // CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTLT1:.+]] to 345 // CK2: call void @__kmpc_for_static_fini( 346 // CK2: ret void 347 348 // CK2: define internal void @[[PAR_OUTLT1]]({{.+}}) 349 // CK2: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34, 350 // CK2: call void @__kmpc_for_static_fini( 351 // CK2: ret void 352 353 // CK2: define {{.*}}void @[[OFFLT2]]({{.+}}) 354 // CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 1, {{.+}} @[[OUTLT2:.+]] to {{.+}}, 355 // CK2: ret void 356 357 // CK2: define internal void @[[OUTLT2]]({{.+}}) 358 // CK2: call void @__kmpc_for_static_init_4( 359 // CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTLT2:.+]] to 360 // CK2: call void @__kmpc_for_static_fini( 361 // CK2: ret void 362 363 // CK2: define internal void @[[PAR_OUTLT2]]({{.+}}) 364 // CK2: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 34, 365 // CK2: call void @__kmpc_for_static_fini( 366 // CK2: ret void 367 368 // CK2: define {{.*}}void @[[OFFLT3]]({{.+}}) 369 // CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 {{.+}}, {{.+}} @[[OUTLT3:.+]] to {{.+}}, 370 // CK2: ret void 371 372 // CK2: define internal void @[[OUTLT3]]({{.+}}) 373 // CK2: call void @__kmpc_for_static_init_4( 374 // CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTLT3:.+]] to 375 // CK2: call void @__kmpc_for_static_fini( 376 // CK2: ret void 377 378 // CK2: define internal void @[[PAR_OUTLT3]]({{.+}}) 379 // CK2: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, i32 33, 380 // CK2: call void @__kmpc_for_static_fini( 381 // CK2: ret void 382 383 // CK2: define {{.*}}void @[[OFFLT4]]({{.+}}) 384 // CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 {{.+}}, {{.+}} @[[OUTLT4:.+]] to {{.+}}, 385 // CK2: ret void 386 387 // CK2: define internal void @[[OUTLT4]]({{.+}}) 388 // CK2: call void @__kmpc_for_static_init_4( 389 // CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTLT4:.+]] to 390 // CK2: call void @__kmpc_for_static_fini( 391 // CK2: ret void 392 393 // CK2: define internal void @[[PAR_OUTLT4]]({{.+}}) 394 // CK2: call void @__kmpc_dispatch_init_4({{.+}}, {{.+}}, i32 35, 395 // CK2: call {{.+}} @__kmpc_dispatch_next_4( 396 // CK2: ret void 397 398 // CK2: define {{.*}}void @[[OFFLT5]]({{.+}}) 399 // CK2: call void {{.+}} @__kmpc_fork_teams({{.+}}, i32 {{.+}}, {{.+}} @[[OUTLT5:.+]] to {{.+}}, 400 // CK2: ret void 401 402 // CK2: define internal void @[[OUTLT5]]({{.+}}) 403 // CK2: call void @__kmpc_for_static_init_4( 404 // CK2: call void {{.*}} @__kmpc_fork_call({{.+}}, {{.+}}, {{.+}} @[[PAR_OUTLT5:.+]] to 405 // CK2: call void @__kmpc_for_static_fini( 406 // CK2: ret void 407 408 // CK2: define internal void @[[PAR_OUTLT5]]({{.+}}) 409 // CK2: call void @__kmpc_dispatch_init_4({{.+}}, {{.+}}, i32 35, 410 // CK2: call {{.+}} @__kmpc_dispatch_next_4( 411 // CK2: ret void 412 413 #endif // CK2 414 #endif // #ifndef HEADER 415