#include int main () { int d = omp_get_default_device (); int id = omp_get_initial_device (); int n = omp_get_num_devices (); void *p; if (d < 0 || d >= n) d = id; if (!omp_target_is_accessible (p, sizeof (int), n)) __builtin_abort (); if (!omp_target_is_accessible (p, sizeof (int), id)) __builtin_abort (); if (!omp_target_is_accessible (p, sizeof (int), omp_initial_device)) __builtin_abort (); if (omp_target_is_accessible (p, sizeof (int), -5)) __builtin_abort (); if (omp_target_is_accessible (p, sizeof (int), n + 1)) __builtin_abort (); /* Currently, a host pointer is accessible if the device supports shared memory or omp_target_is_accessible is executed on the host. This test case must be adapted when unified shared memory is avialable. */ int a[128]; for (int d = 0; d <= omp_get_num_devices (); d++) { int shared_mem = 0; #pragma omp target map (alloc: shared_mem) device (d) shared_mem = 1; if (omp_target_is_accessible (p, sizeof (int), d) != shared_mem) __builtin_abort (); if (omp_target_is_accessible (a, 128 * sizeof (int), d) != shared_mem) __builtin_abort (); for (int i = 0; i < 128; i++) if (omp_target_is_accessible (&a[i], sizeof (int), d) != shared_mem) __builtin_abort (); } return 0; }