28 lines
1.1 KiB
C++
28 lines
1.1 KiB
C++
// Split inside `#pragma omp target` — host and device IR show `.split.iv`.
|
|
//
|
|
// RUN: %clang_cc1 -DCK_SPLIT -verify -fopenmp -fopenmp-version=60 -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=nvptx64-nvidia-cuda -emit-llvm %s -o - 2>&1 | FileCheck -check-prefix=HOST %s
|
|
// RUN: %clang_cc1 -DCK_SPLIT -verify -fopenmp -fopenmp-version=60 -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=nvptx64-nvidia-cuda -emit-llvm-bc %s -o %t-split-host.bc
|
|
// RUN: %clang_cc1 -DCK_SPLIT -verify -fopenmp -fopenmp-version=60 -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=nvptx64-nvidia-cuda -emit-llvm %s -fopenmp-is-target-device -fopenmp-host-ir-file-path %t-split-host.bc -o - 2>&1 | FileCheck -check-prefix=DEVICE %s
|
|
|
|
// expected-no-diagnostics
|
|
|
|
#ifdef CK_SPLIT
|
|
extern "C" void body(int);
|
|
|
|
void host_split_in_target(int n) {
|
|
#pragma omp target map(to : n)
|
|
{
|
|
#pragma omp split counts(2, omp_fill)
|
|
for (int i = 0; i < n; ++i)
|
|
body(i);
|
|
}
|
|
}
|
|
|
|
// HOST: define {{.*}}void {{.*}}host_split_in_target
|
|
// HOST: .split.iv
|
|
// HOST: __tgt_target_kernel
|
|
|
|
// DEVICE: define {{.*}}void @__omp_offloading_
|
|
// DEVICE: .split.iv
|
|
#endif
|