| // 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 |