210 lines · cpp
1// RUN: %clang_cc1 -fopenmp -x c++ -triple x86_64-unknown-unknown -emit-llvm -fexceptions -fcxx-exceptions -o - %s | FileCheck %s2 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 %s4// SIMD-ONLY0-NOT: {{__kmpc|__tgt}}5 6int main() {7// CHECK: @__kmpc_for_static_init8// CHECK-NOT: !llvm.access.group9// CHECK: @__kmpc_for_static_fini10#pragma omp for11 for(int i = 0; i < 10; ++i);12// CHECK: @__kmpc_for_static_init13// CHECK: !llvm.access.group14// CHECK: @__kmpc_for_static_fini15#pragma omp for simd16 for(int i = 0; i < 10; ++i);17// CHECK: @__kmpc_for_static_init18// CHECK-NOT: !llvm.access.group19// CHECK: @__kmpc_for_static_fini20#pragma omp for schedule(static)21 for(int i = 0; i < 10; ++i);22// CHECK: @__kmpc_for_static_init23// CHECK: !llvm.access.group24// CHECK: @__kmpc_for_static_fini25#pragma omp for simd schedule(static)26 for(int i = 0; i < 10; ++i);27// CHECK: @__kmpc_for_static_init28// CHECK-NOT: !llvm.access.group29// CHECK: @__kmpc_for_static_fini30#pragma omp for schedule(static, 2)31 for(int i = 0; i < 10; ++i);32// CHECK: @__kmpc_for_static_init33// CHECK: !llvm.access.group34// CHECK: @__kmpc_for_static_fini35#pragma omp for simd schedule(static, 2)36 for(int i = 0; i < 10; ++i);37// CHECK: @__kmpc_dispatch_init38// CHECK: !llvm.access.group39#pragma omp for schedule(auto)40 for(int i = 0; i < 10; ++i);41// CHECK: @__kmpc_dispatch_init42// CHECK: !llvm.access.group43#pragma omp for simd schedule(auto)44 for(int i = 0; i < 10; ++i);45// CHECK: @__kmpc_dispatch_init46// CHECK: !llvm.access.group47#pragma omp for schedule(runtime)48 for(int i = 0; i < 10; ++i);49// CHECK: @__kmpc_dispatch_init50// CHECK: !llvm.access.group51#pragma omp for simd schedule(runtime)52 for(int i = 0; i < 10; ++i);53// CHECK: @__kmpc_dispatch_init54// CHECK: !llvm.access.group55#pragma omp for schedule(guided)56 for(int i = 0; i < 10; ++i);57// CHECK: @__kmpc_dispatch_init58// CHECK: !llvm.access.group59#pragma omp for simd schedule(guided)60 for(int i = 0; i < 10; ++i);61// CHECK: @__kmpc_dispatch_init62// CHECK: !llvm.access.group63#pragma omp for schedule(dynamic)64 for(int i = 0; i < 10; ++i);65// CHECK: @__kmpc_dispatch_init66// CHECK: !llvm.access.group67#pragma omp for simd schedule(dynamic)68 for(int i = 0; i < 10; ++i);69// CHECK: @__kmpc_for_static_init70// CHECK-NOT: !llvm.access.group71// CHECK: @__kmpc_for_static_fini72#pragma omp for schedule(monotonic: static)73 for(int i = 0; i < 10; ++i);74// CHECK: @__kmpc_for_static_init75// CHECK: !llvm.access.group76// CHECK: @__kmpc_for_static_fini77#pragma omp for simd schedule(monotonic: static)78 for(int i = 0; i < 10; ++i);79// CHECK: @__kmpc_for_static_init80// CHECK-NOT: !llvm.access.group81// CHECK: @__kmpc_for_static_fini82#pragma omp for schedule(monotonic: static, 2)83 for(int i = 0; i < 10; ++i);84// CHECK: @__kmpc_for_static_init85// CHECK: !llvm.access.group86// CHECK: @__kmpc_for_static_fini87#pragma omp for simd schedule(monotonic: static, 2)88 for(int i = 0; i < 10; ++i);89// CHECK: @__kmpc_dispatch_init90// CHECK-NOT: !llvm.access.group91#pragma omp for schedule(monotonic: auto)92 for(int i = 0; i < 10; ++i);93// CHECK: @__kmpc_dispatch_init94// CHECK: !llvm.access.group95#pragma omp for simd schedule(monotonic: auto)96 for(int i = 0; i < 10; ++i);97// CHECK: @__kmpc_dispatch_init98// CHECK-NOT: !llvm.access.group99#pragma omp for schedule(monotonic: runtime)100 for(int i = 0; i < 10; ++i);101// CHECK: @__kmpc_dispatch_init102// CHECK: !llvm.access.group103#pragma omp for simd schedule(monotonic: runtime)104 for(int i = 0; i < 10; ++i);105// CHECK: @__kmpc_dispatch_init106// CHECK-NOT: !llvm.access.group107#pragma omp for schedule(monotonic: guided)108 for(int i = 0; i < 10; ++i);109// CHECK: @__kmpc_dispatch_init110// CHECK: !llvm.access.group111#pragma omp for simd schedule(monotonic: guided)112 for(int i = 0; i < 10; ++i);113// CHECK: @__kmpc_dispatch_init114// CHECK-NOT: !llvm.access.group115#pragma omp for schedule(monotonic: dynamic)116 for(int i = 0; i < 10; ++i);117// CHECK: @__kmpc_dispatch_init118// CHECK: !llvm.access.group119#pragma omp for simd schedule(monotonic: dynamic)120 for(int i = 0; i < 10; ++i);121// CHECK: @__kmpc_dispatch_init122// CHECK: !llvm.access.group123#pragma omp for schedule(nonmonotonic: guided)124 for(int i = 0; i < 10; ++i);125// CHECK: @__kmpc_dispatch_init126// CHECK: !llvm.access.group127#pragma omp for simd schedule(nonmonotonic: guided)128 for(int i = 0; i < 10; ++i);129// CHECK: @__kmpc_dispatch_init130// CHECK: !llvm.access.group131#pragma omp for schedule(nonmonotonic: dynamic)132 for(int i = 0; i < 10; ++i);133// CHECK: @__kmpc_dispatch_init134// CHECK: !llvm.access.group135#pragma omp for simd schedule(nonmonotonic: dynamic)136 for(int i = 0; i < 10; ++i);137// CHECK: call void @__kmpc_for_static_init_4(ptr {{.+}}, i32 %{{.+}}, i32 1073741858,138// CHECK: !llvm.access.group139#pragma omp for simd schedule(nonmonotonic: static)140 for(int i = 0; i < 10; ++i);141// CHECK: call void @__kmpc_dispatch_init_4(ptr {{.+}}, i32 %{{.+}}, i32 1073741862,142// CHECK: !llvm.access.group143#pragma omp for schedule(nonmonotonic: auto)144 for(int i = 0; i < 10; ++i);145// CHECK: call void @__kmpc_dispatch_init_4(ptr {{.+}}, i32 %{{.+}}, i32 1073741861,146// CHECK: !llvm.access.group147#pragma omp for simd schedule(nonmonotonic: runtime)148 for(int i = 0; i < 10; ++i);149// CHECK: @__kmpc_dispatch_init150// CHECK-NOT: !llvm.access.group151// CHECK: @__kmpc_dispatch_next152#pragma omp for schedule(static) ordered153 for(int i = 0; i < 10; ++i);154// CHECK: @__kmpc_dispatch_init155// CHECK-NOT: !llvm.access.group156// CHECK: @__kmpc_dispatch_next157#pragma omp for simd schedule(static) ordered158 for(int i = 0; i < 10; ++i);159// CHECK: @__kmpc_dispatch_init160// CHECK-NOT: !llvm.access.group161// CHECK: @__kmpc_dispatch_next162#pragma omp for schedule(static, 2) ordered(1)163 for(int i = 0; i < 10; ++i);164// CHECK: @__kmpc_dispatch_init165// CHECK-NOT: !llvm.access.group166// CHECK: @__kmpc_dispatch_next167#pragma omp for simd schedule(static, 2) ordered168 for(int i = 0; i < 10; ++i);169// CHECK: @__kmpc_dispatch_init170// CHECK-NOT: !llvm.access.group171// CHECK: @__kmpc_dispatch_next172#pragma omp for schedule(auto) ordered(1)173 for(int i = 0; i < 10; ++i);174// CHECK: @__kmpc_dispatch_init175// CHECK-NOT: !llvm.access.group176#pragma omp for simd schedule(auto) ordered177 for(int i = 0; i < 10; ++i);178// CHECK: @__kmpc_dispatch_init179// CHECK-NOT: !llvm.access.group180// CHECK: @__kmpc_dispatch_next181#pragma omp for schedule(runtime) ordered182 for(int i = 0; i < 10; ++i);183// CHECK: @__kmpc_dispatch_init184// CHECK-NOT: !llvm.access.group185// CHECK: @__kmpc_dispatch_next186#pragma omp for simd schedule(runtime) ordered187 for(int i = 0; i < 10; ++i);188// CHECK: @__kmpc_dispatch_init189// CHECK-NOT: !llvm.access.group190// CHECK: @__kmpc_dispatch_next191#pragma omp for schedule(guided) ordered(1)192 for(int i = 0; i < 10; ++i);193// CHECK: @__kmpc_dispatch_init194// CHECK-NOT: !llvm.access.group195// CHECK: @__kmpc_dispatch_next196#pragma omp for simd schedule(guided) ordered197 for(int i = 0; i < 10; ++i);198// CHECK: @__kmpc_dispatch_init199// CHECK-NOT: !llvm.access.group200// CHECK: @__kmpc_dispatch_next201#pragma omp for schedule(dynamic) ordered(1)202 for(int i = 0; i < 10; ++i);203// CHECK: @__kmpc_dispatch_init204// CHECK-NOT: !llvm.access.group205// CHECK: @__kmpc_dispatch_next206#pragma omp for simd schedule(dynamic)207 for(int i = 0; i < 10; ++i);208 return 0;209}210