diff options
author | Marcel Vollweiler <marcel@codesourcery.com> | 2022-05-06 07:28:26 -0700 |
---|---|---|
committer | Marcel Vollweiler <marcel@codesourcery.com> | 2022-05-06 07:28:26 -0700 |
commit | 4043f53cb4a3541f7a6e4f4132419f78ab7ec4f7 (patch) | |
tree | 9ef3279dec3be0ec7bcfa521b60274ee6dab9814 /libgomp/target.c | |
parent | aa8bdfee1db818b9a56908ab0197ff02c54bf281 (diff) | |
download | gcc-4043f53cb4a3541f7a6e4f4132419f78ab7ec4f7.zip gcc-4043f53cb4a3541f7a6e4f4132419f78ab7ec4f7.tar.gz gcc-4043f53cb4a3541f7a6e4f4132419f78ab7ec4f7.tar.bz2 |
OpenMP, libgomp: Add new runtime routine omp_target_is_accessible.
gcc/ChangeLog:
* omp-low.cc (omp_runtime_api_call): Added target_is_accessible to
omp_runtime_apis array.
libgomp/ChangeLog:
* libgomp.map: Added omp_target_is_accessible.
* libgomp.texi: Tagged omp_target_is_accessible as supported.
* omp.h.in: Added omp_target_is_accessible.
* omp_lib.f90.in: Added interface for omp_target_is_accessible.
* omp_lib.h.in: Likewise.
* target.c (omp_target_is_accessible): Added implementation of
omp_target_is_accessible.
* testsuite/libgomp.c-c++-common/target-is-accessible-1.c: New test.
* testsuite/libgomp.fortran/target-is-accessible-1.f90: New test.
Diffstat (limited to 'libgomp/target.c')
-rw-r--r-- | libgomp/target.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libgomp/target.c b/libgomp/target.c index 86930ea..4d62efd 100644 --- a/libgomp/target.c +++ b/libgomp/target.c @@ -3704,6 +3704,24 @@ omp_get_mapped_ptr (const void *ptr, int device_num) } int +omp_target_is_accessible (const void *ptr, size_t size, int device_num) +{ + if (device_num < 0 || device_num > gomp_get_num_devices ()) + return false; + + if (device_num == gomp_get_num_devices ()) + return true; + + struct gomp_device_descr *devicep = resolve_device (device_num); + if (devicep == NULL) + return false; + + /* TODO: Unified shared memory must be handled when available. */ + + return devicep->capabilities & GOMP_OFFLOAD_CAP_SHARED_MEM; +} + +int omp_pause_resource (omp_pause_resource_t kind, int device_num) { (void) kind; |