aboutsummaryrefslogtreecommitdiff
path: root/libgomp/target.c
diff options
context:
space:
mode:
authorMarcel Vollweiler <marcel@codesourcery.com>2022-05-06 07:28:26 -0700
committerMarcel Vollweiler <marcel@codesourcery.com>2022-05-06 07:28:26 -0700
commit4043f53cb4a3541f7a6e4f4132419f78ab7ec4f7 (patch)
tree9ef3279dec3be0ec7bcfa521b60274ee6dab9814 /libgomp/target.c
parentaa8bdfee1db818b9a56908ab0197ff02c54bf281 (diff)
downloadgcc-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.c18
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;