diff options
author | vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4> | 2018-05-09 13:52:49 +0000 |
---|---|---|
committer | vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4> | 2018-05-09 13:52:49 +0000 |
commit | 2e3e0ea7e5cc2c4a850a95d79357ff83d986304f (patch) | |
tree | 09f3372550d0a9f29fae94eb1220e3609cca1b1e | |
parent | 8ce6f78c1f9f91a504cd606b41d4a8d51fb6e5da (diff) |
[openacc] Factor out async argument utility functions
2018-05-09 Tom de Vries <tom@codesourcery.com>
PR libgomp/83792
* oacc-int.h (async_valid_stream_id_p, async_valid_p)
(async_synchronous_p): New function.
* oacc-async.c (acc_async_test, acc_wait, acc_wait_all_async): Use
async_valid_p.
* oacc-cuda.c (acc_get_cuda_stream, acc_set_cuda_stream): Use
async_valid_stream_id_p.
* oacc-mem.c (gomp_acc_remove_pointer): Use async_synchronous_p.
* oacc-parallel.c (GOACC_parallel_keyed): Same.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260081 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libgomp/ChangeLog | 12 | ||||
-rw-r--r-- | libgomp/oacc-async.c | 6 | ||||
-rw-r--r-- | libgomp/oacc-cuda.c | 4 | ||||
-rw-r--r-- | libgomp/oacc-int.h | 22 | ||||
-rw-r--r-- | libgomp/oacc-mem.c | 2 | ||||
-rw-r--r-- | libgomp/oacc-parallel.c | 2 |
6 files changed, 41 insertions, 7 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 74a3842af40..569c0f1c859 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,15 @@ +2018-05-09 Tom de Vries <tom@codesourcery.com> + + PR libgomp/83792 + * oacc-int.h (async_valid_stream_id_p, async_valid_p) + (async_synchronous_p): New function. + * oacc-async.c (acc_async_test, acc_wait, acc_wait_all_async): Use + async_valid_p. + * oacc-cuda.c (acc_get_cuda_stream, acc_set_cuda_stream): Use + async_valid_stream_id_p. + * oacc-mem.c (gomp_acc_remove_pointer): Use async_synchronous_p. + * oacc-parallel.c (GOACC_parallel_keyed): Same. + 2018-05-07 Tom de Vries <tom@codesourcery.com> PR testsuite/85677 diff --git a/libgomp/oacc-async.c b/libgomp/oacc-async.c index 7cdb627c96a..a4e186386df 100644 --- a/libgomp/oacc-async.c +++ b/libgomp/oacc-async.c @@ -34,7 +34,7 @@ int acc_async_test (int async) { - if (async < acc_async_sync) + if (!async_valid_p (async)) gomp_fatal ("invalid async argument: %d", async); struct goacc_thread *thr = goacc_thread (); @@ -59,7 +59,7 @@ acc_async_test_all (void) void acc_wait (int async) { - if (async < acc_async_sync) + if (!async_valid_p (async)) gomp_fatal ("invalid async argument: %d", async); struct goacc_thread *thr = goacc_thread (); @@ -117,7 +117,7 @@ acc_async_wait_all (void) void acc_wait_all_async (int async) { - if (async < acc_async_sync) + if (!async_valid_p (async)) gomp_fatal ("invalid async argument: %d", async); struct goacc_thread *thr = goacc_thread (); diff --git a/libgomp/oacc-cuda.c b/libgomp/oacc-cuda.c index c388170bffb..20774c1b487 100644 --- a/libgomp/oacc-cuda.c +++ b/libgomp/oacc-cuda.c @@ -58,7 +58,7 @@ acc_get_cuda_stream (int async) { struct goacc_thread *thr = goacc_thread (); - if (async < 0) + if (!async_valid_stream_id_p (async)) return NULL; if (thr && thr->dev && thr->dev->openacc.cuda.get_stream_func) @@ -72,7 +72,7 @@ acc_set_cuda_stream (int async, void *stream) { struct goacc_thread *thr; - if (async < 0 || stream == NULL) + if (!async_valid_stream_id_p (async) || stream == NULL) return 0; goacc_lazy_initialize (); diff --git a/libgomp/oacc-int.h b/libgomp/oacc-int.h index 912433a3ddd..cdd0f7f0f73 100644 --- a/libgomp/oacc-int.h +++ b/libgomp/oacc-int.h @@ -99,6 +99,28 @@ void goacc_restore_bind (void); void goacc_lazy_initialize (void); void goacc_host_init (void); +static inline bool +async_valid_stream_id_p (int async) +{ + return async >= 0; +} + +static inline bool +async_valid_p (int async) +{ + return (async == acc_async_noval || async == acc_async_sync + || async_valid_stream_id_p (async)); +} + +static inline bool +async_synchronous_p (int async) +{ + if (!async_valid_p (async)) + return true; + + return async == acc_async_sync; +} + #ifdef HAVE_ATTRIBUTE_VISIBILITY # pragma GCC visibility pop #endif diff --git a/libgomp/oacc-mem.c b/libgomp/oacc-mem.c index 5cc8fcf1471..158f0862018 100644 --- a/libgomp/oacc-mem.c +++ b/libgomp/oacc-mem.c @@ -723,7 +723,7 @@ gomp_acc_remove_pointer (void *h, bool force_copyfrom, int async, int mapnum) gomp_mutex_unlock (&acc_dev->lock); /* If running synchronously, unmap immediately. */ - if (async < acc_async_noval) + if (async_synchronous_p (async)) gomp_unmap_vars (t, true); else t->device_descr->openacc.register_async_cleanup_func (t, async); diff --git a/libgomp/oacc-parallel.c b/libgomp/oacc-parallel.c index a71b399a760..cfba5816036 100644 --- a/libgomp/oacc-parallel.c +++ b/libgomp/oacc-parallel.c @@ -183,7 +183,7 @@ GOACC_parallel_keyed (int device, void (*fn) (void *), async, dims, tgt); /* If running synchronously, unmap immediately. */ - if (async < acc_async_noval) + if (async_synchronous_p (async)) gomp_unmap_vars (tgt, true); else tgt->device_descr->openacc.register_async_cleanup_func (tgt, async); |