| // clang-format off |
| // RUN: %libomptarget-compileopt-generic |
| // RUN: env LIBOMPTARGET_INFO=16 \ |
| // RUN: %libomptarget-run-generic 2>&1 | %fcheck-generic --check-prefixes=CHECK,SPMD |
| // RUN: %libomptarget-compileopt-generic -mllvm --openmp-opt-disable-spmdization |
| // RUN: env LIBOMPTARGET_INFO=16 \ |
| // RUN: %libomptarget-run-generic 2>&1 | %fcheck-generic --check-prefixes=CHECK,GENERIC |
| // clang-format on |
| |
| // UNSUPPORTED: aarch64-unknown-linux-gnu |
| // UNSUPPORTED: aarch64-unknown-linux-gnu-LTO |
| // UNSUPPORTED: x86_64-pc-linux-gnu |
| // UNSUPPORTED: x86_64-pc-linux-gnu-LTO |
| // UNSUPPORTED: s390x-ibm-linux-gnu |
| // UNSUPPORTED: s390x-ibm-linux-gnu-LTO |
| |
| #include <omp.h> |
| #include <stdio.h> |
| |
| __attribute__((weak)) void noop() {} |
| |
| int main(void) { |
| int nthreads = 0, ip = 0, lvl = 0, alvl = 0, nested = 0, tid = 0, maxt = 0; |
| |
| #pragma omp target map(from : nthreads, ip, lvl, alvl, nested, tid, maxt) |
| { |
| nthreads = omp_get_num_threads(); |
| ip = omp_in_parallel(); |
| lvl = omp_get_level(); |
| alvl = omp_get_active_level(); |
| nested = omp_get_nested(); |
| tid = omp_get_thread_num(); |
| maxt = omp_get_max_threads(); |
| #pragma omp parallel |
| noop(); |
| } |
| printf("NumThreads: %i, InParallel: %i, Level: %i, ActiveLevel: %i, Nested: %i, " |
| "ThreadNum: %i, MaxThreads: %i\n", |
| nthreads, ip, lvl, alvl, nested, tid, maxt); |
| // GENERIC: Generic mode |
| // SPMD: Generic-SPMD mode |
| // CHECK: NumThreads: 1, InParallel: 0, Level: 0, ActiveLevel: 0, Nested: 0, ThreadNum: 0, MaxThreads: |
| return 0; |
| } |