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