forked from OSchip/llvm-project
[OpenMP][RTL] Remove dead code
RequiresDataSharing was always 0, resulting dead code in device runtime library. Reviewed By: jdoerfert, JonChesterfield Differential Revision: https://reviews.llvm.org/D88829
This commit is contained in:
parent
fe2bd543f5
commit
3a12ff0dac
|
@ -35,7 +35,7 @@ enum OpenMPRTLFunctionNVPTX {
|
|||
/// Call to void __kmpc_kernel_deinit(int16_t IsOMPRuntimeInitialized);
|
||||
OMPRTL_NVPTX__kmpc_kernel_deinit,
|
||||
/// Call to void __kmpc_spmd_kernel_init(kmp_int32 thread_limit,
|
||||
/// int16_t RequiresOMPRuntime, int16_t RequiresDataSharing);
|
||||
/// int16_t RequiresOMPRuntime);
|
||||
OMPRTL_NVPTX__kmpc_spmd_kernel_init,
|
||||
/// Call to void __kmpc_spmd_kernel_deinit_v2(int16_t RequiresOMPRuntime);
|
||||
OMPRTL_NVPTX__kmpc_spmd_kernel_deinit_v2,
|
||||
|
@ -1345,8 +1345,7 @@ void CGOpenMPRuntimeGPU::emitSPMDEntryHeader(
|
|||
|
||||
llvm::Value *Args[] = {getThreadLimit(CGF, /*IsInSPMDExecutionMode=*/true),
|
||||
/*RequiresOMPRuntime=*/
|
||||
Bld.getInt16(RequiresFullRuntime ? 1 : 0),
|
||||
/*RequiresDataSharing=*/Bld.getInt16(0)};
|
||||
Bld.getInt16(RequiresFullRuntime ? 1 : 0)};
|
||||
CGF.EmitRuntimeCall(
|
||||
createNVPTXRuntimeFunction(OMPRTL_NVPTX__kmpc_spmd_kernel_init), Args);
|
||||
|
||||
|
@ -1561,7 +1560,7 @@ CGOpenMPRuntimeGPU::createNVPTXRuntimeFunction(unsigned Function) {
|
|||
case OMPRTL_NVPTX__kmpc_spmd_kernel_init: {
|
||||
// Build void __kmpc_spmd_kernel_init(kmp_int32 thread_limit,
|
||||
// int16_t RequiresOMPRuntime, int16_t RequiresDataSharing);
|
||||
llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
|
||||
llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty};
|
||||
auto *FnTy =
|
||||
llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
|
||||
RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_spmd_kernel_init");
|
||||
|
|
|
@ -32,7 +32,7 @@ int test_amdgcn_target_tid_threads_simd() {
|
|||
|
||||
// CHECK: [[NUM_THREADS:%.+]] = call i64 @__ockl_get_local_size(i32 0)
|
||||
// CHECK-NEXT: [[VAR:%.+]] = trunc i64 [[NUM_THREADS]] to i32
|
||||
// CHECK-NEXT: call void @__kmpc_spmd_kernel_init(i32 [[VAR]], i16 0, i16 0)
|
||||
// CHECK-NEXT: call void @__kmpc_spmd_kernel_init(i32 [[VAR]], i16 0)
|
||||
#pragma omp target simd
|
||||
for (int i = 0; i < N; i++) {
|
||||
arr[i] = 1;
|
||||
|
|
|
@ -21,28 +21,28 @@ int a;
|
|||
// CHECK-NOT: @__omp_offloading_{{.+}}_exec_mode = weak constant i8 1
|
||||
|
||||
void foo() {
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
#pragma omp target teams distribute parallel for simd if(a)
|
||||
|
@ -67,28 +67,28 @@ void foo() {
|
|||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
int a;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
#pragma omp target teams distribute parallel for lastprivate(a)
|
||||
|
@ -112,28 +112,28 @@ int a;
|
|||
#pragma omp target teams distribute parallel for schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
#pragma omp target teams
|
||||
|
@ -175,28 +175,28 @@ int a;
|
|||
#pragma omp distribute parallel for simd schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
#pragma omp target teams
|
||||
|
@ -227,28 +227,28 @@ int a;
|
|||
#pragma omp distribute parallel for schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[DISTR_LIGHT]]
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[DISTR_FULL]]
|
||||
// CHECK-DAG: [[FULL]]
|
||||
#pragma omp target
|
||||
|
@ -286,22 +286,22 @@ int a;
|
|||
#pragma omp distribute parallel for schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
#pragma omp target parallel for if(a)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
|
@ -324,28 +324,28 @@ int a;
|
|||
#pragma omp target parallel for schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK-DAG: [[BAR_LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK-DAG: [[BAR_LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK-DAG: [[BAR_LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK-DAG: [[BAR_FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK-DAG: [[BAR_FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK-DAG: [[BAR_FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK-DAG: [[BAR_FULL]]
|
||||
#pragma omp target parallel if(a)
|
||||
|
@ -376,27 +376,27 @@ int a;
|
|||
#pragma omp for simd schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK-DAG: [[BAR_FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK-DAG: [[BAR_LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK-DAG: [[BAR_LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK-DAG: [[BAR_FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK-DAG: [[BAR_FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK-DAG: [[BAR_FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK-DAG: [[BAR_FULL]]
|
||||
#pragma omp target
|
||||
|
@ -434,22 +434,22 @@ int a;
|
|||
#pragma omp for simd schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 0)
|
||||
// CHECK-DAG: [[FOR_LIGHT]]
|
||||
// CHECK-DAG: [[LIGHT]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK-DAG: [[FULL]]
|
||||
#pragma omp target
|
||||
#pragma omp parallel for
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
// CHECK-NOT: @__omp_offloading_{{.+}}_exec_mode = weak constant i8 1
|
||||
|
||||
void foo() {
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
#pragma omp target teams distribute parallel for simd
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
|
@ -40,13 +40,13 @@ void foo() {
|
|||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
int a;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
#pragma omp target teams distribute parallel for lastprivate(a)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
a = i;
|
||||
|
@ -68,13 +68,13 @@ int a;
|
|||
#pragma omp target teams distribute parallel for schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
#pragma omp target teams
|
||||
#pragma omp distribute parallel for simd
|
||||
for (int i = 0; i < 10; ++i)
|
||||
|
@ -103,13 +103,13 @@ int a;
|
|||
#pragma omp distribute parallel for simd schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
#pragma omp target teams
|
||||
#pragma omp distribute parallel for
|
||||
for (int i = 0; i < 10; ++i)
|
||||
|
@ -138,13 +138,13 @@ int a;
|
|||
#pragma omp distribute parallel for schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
#pragma omp target
|
||||
#pragma omp teams
|
||||
#pragma omp distribute parallel for
|
||||
|
@ -180,13 +180,13 @@ int a;
|
|||
#pragma omp distribute parallel for schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
#pragma omp target parallel for
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
|
@ -208,13 +208,13 @@ int a;
|
|||
#pragma omp target parallel for schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
#pragma omp target parallel
|
||||
#pragma omp for simd
|
||||
for (int i = 0; i < 10; ++i)
|
||||
|
@ -243,13 +243,13 @@ int a;
|
|||
#pragma omp for simd schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
#pragma omp target
|
||||
#pragma omp parallel
|
||||
#pragma omp for simd ordered
|
||||
|
@ -285,13 +285,13 @@ int a;
|
|||
#pragma omp for simd schedule(guided)
|
||||
for (int i = 0; i < 10; ++i)
|
||||
;
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 {{.+}})
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
#pragma omp target
|
||||
#pragma omp parallel for
|
||||
for (int i = 0; i < 10; ++i)
|
||||
|
|
|
@ -61,7 +61,7 @@ int bar(int n){
|
|||
// CHECK: store i16* {{%.+}}, i16** [[AA_ADDR]], align
|
||||
// CHECK: [[AA:%.+]] = load i16*, i16** [[AA_ADDR]], align
|
||||
// CHECK: [[THREAD_LIMIT:%.+]] = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 1, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 1)
|
||||
// CHECK: call void @__kmpc_data_sharing_init_stack_spmd
|
||||
// CHECK: br label {{%?}}[[EXEC:.+]]
|
||||
//
|
||||
|
@ -99,7 +99,7 @@ int bar(int n){
|
|||
// CHECK: [[AA:%.+]] = load i16*, i16** [[AA_ADDR]], align
|
||||
// CHECK: [[B:%.+]] = load [10 x i32]*, [10 x i32]** [[B_ADDR]], align
|
||||
// CHECK: [[THREAD_LIMIT:%.+]] = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 1, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 1)
|
||||
// CHECK: call void @__kmpc_data_sharing_init_stack_spmd
|
||||
// CHECK: br label {{%?}}[[EXEC:.+]]
|
||||
//
|
||||
|
|
|
@ -53,7 +53,7 @@ int bar(int n){
|
|||
// CHECK: store i16* {{%.+}}, i16** [[AA_ADDR]], align
|
||||
// CHECK: [[AA:%.+]] = load i16*, i16** [[AA_ADDR]], align
|
||||
// CHECK: [[THREAD_LIMIT:%.+]] = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 1, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 1)
|
||||
// CHECK: call void @__kmpc_data_sharing_init_stack_spmd()
|
||||
// CHECK: [[GTID:%.+]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @{{.+}})
|
||||
// CHECK: store i32 [[GTID]], i32* [[THREADID:%.+]],
|
||||
|
@ -84,7 +84,7 @@ int bar(int n){
|
|||
// CHECK: [[AA:%.+]] = load i16*, i16** [[AA_ADDR]], align
|
||||
// CHECK: [[B:%.+]] = load [10 x i32]*, [10 x i32]** [[B_ADDR]], align
|
||||
// CHECK: [[THREAD_LIMIT:%.+]] = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 1, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 1)
|
||||
// CHECK: call void @__kmpc_data_sharing_init_stack_spmd()
|
||||
// CHECK: [[GTID:%.+]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @{{.+}})
|
||||
// CHECK: store i32 [[GTID]], i32* [[THREADID:%.+]],
|
||||
|
|
|
@ -54,7 +54,7 @@ int bar(int n){
|
|||
}
|
||||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+template.+l29}}(
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_data_sharing_init_stack_spmd
|
||||
// CHECK: br label {{%?}}[[EXEC:.+]]
|
||||
//
|
||||
|
@ -72,7 +72,7 @@ int bar(int n){
|
|||
// CHECK: }
|
||||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+template.+l33}}(
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_data_sharing_init_stack_spmd
|
||||
// CHECK: br label {{%?}}[[EXEC:.+]]
|
||||
//
|
||||
|
@ -90,7 +90,7 @@ int bar(int n){
|
|||
// CHECK: }
|
||||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+template.+l38}}(
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_data_sharing_init_stack_spmd
|
||||
// CHECK: br label {{%?}}[[EXEC:.+]]
|
||||
//
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -61,28 +61,28 @@ int bar(int n){
|
|||
}
|
||||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+l32}}(
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0)
|
||||
// CHECK-NOT: call void @__kmpc_for_static_init
|
||||
// CHECK-NOT: call void @__kmpc_for_static_fini
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
// CHECK: ret void
|
||||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+l37}}(
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0)
|
||||
// CHECK-NOT: call void @__kmpc_for_static_init
|
||||
// CHECK-NOT: call void @__kmpc_for_static_fini
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
// CHECK: ret void
|
||||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+l42}}(
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0)
|
||||
// CHECK-NOT: call void @__kmpc_for_static_init
|
||||
// CHECK-NOT: call void @__kmpc_for_static_fini
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
// CHECK: ret void
|
||||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+l47}}(
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0)
|
||||
// CHECK-NOT: call void @__kmpc_for_static_init
|
||||
// CHECK-NOT: call void @__kmpc_for_static_fini
|
||||
// CHECK-NOT: call void @__kmpc_nvptx_end_reduce_nowait(
|
||||
|
|
|
@ -232,7 +232,7 @@ int bar(int n){
|
|||
// CHECK: ret void
|
||||
|
||||
// CHECK: define weak void @__omp_offloading_{{.*}}ftemplate{{.*}}_l37(
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 {{.+}}, i16 1)
|
||||
// CHECK: call void @__kmpc_data_sharing_init_stack_spmd
|
||||
// CHECK-NOT: call i8* @__kmpc_data_sharing_push_stack(
|
||||
// CHECK-NOT: call void @__kmpc_serialized_parallel(
|
||||
|
|
|
@ -100,7 +100,7 @@ int bar(int n){
|
|||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+}}_l50(
|
||||
// CHECK-DAG: [[THREAD_LIMIT:%.+]] = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0)
|
||||
// CHECK: call void [[PARALLEL:@.+]](
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
||||
|
@ -128,7 +128,7 @@ int bar(int n){
|
|||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+}}(
|
||||
// CHECK-DAG: [[THREAD_LIMIT:%.+]] = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
// CHECK: ret void
|
||||
|
||||
|
@ -143,7 +143,7 @@ int bar(int n){
|
|||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+}}(
|
||||
// CHECK-DAG: [[THREAD_LIMIT:%.+]] = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
// CHECK: ret void
|
||||
|
||||
|
@ -159,7 +159,7 @@ int bar(int n){
|
|||
// Distribute with collapse(2)
|
||||
// CHECK: define {{.*}}void {{@__omp_offloading_.+}}({{.+}}, i{{32|64}} [[F_IN:%.+]])
|
||||
// CHECK-DAG: [[THREAD_LIMIT:%.+]] = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
// CHECK: ret void
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ int bar(int n){
|
|||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+}}_l43(
|
||||
// CHECK-DAG: [[THREAD_LIMIT:%.+]] = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
||||
// SEQ: [[SHARED:%.+]] = load i16, i16* [[KERNEL_SHARED]],
|
||||
|
@ -109,7 +109,7 @@ int bar(int n){
|
|||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+}}(
|
||||
// CHECK-DAG: [[THREAD_LIMIT:%.+]] = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
||||
// CHECK: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, {{.+}} 91,
|
||||
|
@ -124,7 +124,7 @@ int bar(int n){
|
|||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+}}(
|
||||
// CHECK-DAG: [[THREAD_LIMIT:%.+]] = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
||||
// CHECK: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, {{.+}} 91,
|
||||
|
@ -140,7 +140,7 @@ int bar(int n){
|
|||
// CHECK: define {{.*}}void {{@__omp_offloading_.+}}({{.+}}, i{{32|64}} [[F_IN:%.+]])
|
||||
// CHECK: store {{.+}} [[F_IN]], {{.+}}* {{.+}},
|
||||
// CHECK-DAG: [[THREAD_LIMIT:%.+]] = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x()
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 [[THREAD_LIMIT]], i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
||||
// CHECK: store {{.+}} 99, {{.+}}* [[COMB_UB:%.+]], align
|
||||
|
|
|
@ -70,7 +70,7 @@ int bar(int n){
|
|||
}
|
||||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+}}_l37(
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
||||
// CHECK: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, {{.+}} 91,
|
||||
|
@ -78,7 +78,7 @@ int bar(int n){
|
|||
// CHECK: ret void
|
||||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+}}_l43(
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
||||
// CHECK: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, {{.+}} 91,
|
||||
|
@ -86,7 +86,7 @@ int bar(int n){
|
|||
// CHECK: ret void
|
||||
|
||||
// CHECK-LABEL: define {{.*}}void {{@__omp_offloading_.+}}_l48(
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
||||
// CHECK: call void @__kmpc_for_static_init_4({{.+}}, {{.+}}, {{.+}} 91,
|
||||
|
@ -95,7 +95,7 @@ int bar(int n){
|
|||
|
||||
// CHECK: define {{.*}}void {{@__omp_offloading_.+}}_l53({{.+}}, i{{32|64}} [[F_IN:%.+]])
|
||||
// CHECK: store {{.+}} [[F_IN]], {{.+}}* {{.+}},
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_init(i32 %{{.+}}, i16 0)
|
||||
// CHECK: call void @__kmpc_spmd_kernel_deinit_v2(i16 0)
|
||||
|
||||
// CHECK: store {{.+}} 99, {{.+}}* [[COMB_UB:%.+]], align
|
||||
|
|
|
@ -92,15 +92,7 @@ struct __kmpc_data_sharing_worker_slot_static {
|
|||
void *DataEnd;
|
||||
char Data[DS_Worker_Warp_Slot_Size];
|
||||
};
|
||||
// Additional master slot type which is initialized with the default master slot
|
||||
// size of 4 bytes.
|
||||
struct __kmpc_data_sharing_master_slot_static {
|
||||
__kmpc_data_sharing_slot *Next;
|
||||
__kmpc_data_sharing_slot *Prev;
|
||||
void *PrevSlotStackPtr;
|
||||
void *DataEnd;
|
||||
char Data[DS_Slot_Size];
|
||||
};
|
||||
|
||||
extern DEVICE SHARED DataSharingStateTy DataSharingState;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -204,37 +196,6 @@ public:
|
|||
// init
|
||||
INLINE void InitTeamDescr();
|
||||
|
||||
INLINE __kmpc_data_sharing_slot *RootS(int wid, bool IsMasterThread) {
|
||||
// If this is invoked by the master thread of the master warp then
|
||||
// initialize it with a smaller slot.
|
||||
if (IsMasterThread) {
|
||||
// Do not initialize this slot again if it has already been initalized.
|
||||
if (master_rootS[0].DataEnd == &master_rootS[0].Data[0] + DS_Slot_Size)
|
||||
return 0;
|
||||
// Initialize the pointer to the end of the slot given the size of the
|
||||
// data section. DataEnd is non-inclusive.
|
||||
master_rootS[0].DataEnd = &master_rootS[0].Data[0] + DS_Slot_Size;
|
||||
// We currently do not have a next slot.
|
||||
master_rootS[0].Next = 0;
|
||||
master_rootS[0].Prev = 0;
|
||||
master_rootS[0].PrevSlotStackPtr = 0;
|
||||
return (__kmpc_data_sharing_slot *)&master_rootS[0];
|
||||
}
|
||||
// Do not initialize this slot again if it has already been initalized.
|
||||
if (worker_rootS[wid].DataEnd ==
|
||||
&worker_rootS[wid].Data[0] + DS_Worker_Warp_Slot_Size)
|
||||
return 0;
|
||||
// Initialize the pointer to the end of the slot given the size of the data
|
||||
// section. DataEnd is non-inclusive.
|
||||
worker_rootS[wid].DataEnd =
|
||||
&worker_rootS[wid].Data[0] + DS_Worker_Warp_Slot_Size;
|
||||
// We currently do not have a next slot.
|
||||
worker_rootS[wid].Next = 0;
|
||||
worker_rootS[wid].Prev = 0;
|
||||
worker_rootS[wid].PrevSlotStackPtr = 0;
|
||||
return (__kmpc_data_sharing_slot *)&worker_rootS[wid];
|
||||
}
|
||||
|
||||
INLINE __kmpc_data_sharing_slot *GetPreallocatedSlotAddr(int wid) {
|
||||
worker_rootS[wid].DataEnd =
|
||||
&worker_rootS[wid].Data[0] + DS_Worker_Warp_Slot_Size;
|
||||
|
@ -253,7 +214,6 @@ private:
|
|||
|
||||
ALIGN(16)
|
||||
__kmpc_data_sharing_worker_slot_static worker_rootS[DS_Max_Warp_Number];
|
||||
ALIGN(16) __kmpc_data_sharing_master_slot_static master_rootS[1];
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -77,8 +77,7 @@ EXTERN void __kmpc_kernel_deinit(int16_t IsOMPRuntimeInitialized) {
|
|||
omptarget_nvptx_workFn = 0;
|
||||
}
|
||||
|
||||
EXTERN void __kmpc_spmd_kernel_init(int ThreadLimit, int16_t RequiresOMPRuntime,
|
||||
int16_t RequiresDataSharing) {
|
||||
EXTERN void __kmpc_spmd_kernel_init(int ThreadLimit, int16_t RequiresOMPRuntime) {
|
||||
PRINT0(LD_IO, "call to __kmpc_spmd_kernel_init\n");
|
||||
|
||||
setExecutionParameters(Spmd, RequiresOMPRuntime ? RuntimeInitialized
|
||||
|
@ -134,15 +133,6 @@ EXTERN void __kmpc_spmd_kernel_init(int ThreadLimit, int16_t RequiresOMPRuntime,
|
|||
"thread will execute parallel region with id %d in a team of "
|
||||
"%d threads\n",
|
||||
(int)newTaskDescr->ThreadId(), (int)ThreadLimit);
|
||||
|
||||
if (RequiresDataSharing && GetLaneId() == 0) {
|
||||
// Warp master initializes data sharing environment.
|
||||
unsigned WID = threadId / WARPSIZE;
|
||||
__kmpc_data_sharing_slot *RootS = currTeamDescr.RootS(
|
||||
WID, WID == WARPSIZE - 1);
|
||||
DataSharingState.SlotPtr[WID] = RootS;
|
||||
DataSharingState.StackPtr[WID] = (void *)&RootS->Data[0];
|
||||
}
|
||||
}
|
||||
|
||||
EXTERN void __kmpc_spmd_kernel_deinit_v2(int16_t RequiresOMPRuntime) {
|
||||
|
|
|
@ -421,8 +421,8 @@ EXTERN int32_t __kmpc_cancel(kmp_Ident *loc, int32_t global_tid,
|
|||
// non standard
|
||||
EXTERN void __kmpc_kernel_init(int ThreadLimit, int16_t RequiresOMPRuntime);
|
||||
EXTERN void __kmpc_kernel_deinit(int16_t IsOMPRuntimeInitialized);
|
||||
EXTERN void __kmpc_spmd_kernel_init(int ThreadLimit, int16_t RequiresOMPRuntime,
|
||||
int16_t RequiresDataSharing);
|
||||
EXTERN void __kmpc_spmd_kernel_init(int ThreadLimit,
|
||||
int16_t RequiresOMPRuntime);
|
||||
EXTERN void __kmpc_spmd_kernel_deinit_v2(int16_t RequiresOMPRuntime);
|
||||
EXTERN void __kmpc_kernel_prepare_parallel(void *WorkFn);
|
||||
EXTERN bool __kmpc_kernel_parallel(void **WorkFn);
|
||||
|
|
Loading…
Reference in New Issue