aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>2018-05-09 13:52:49 +0000
committervries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>2018-05-09 13:52:49 +0000
commit2e3e0ea7e5cc2c4a850a95d79357ff83d986304f (patch)
tree09f3372550d0a9f29fae94eb1220e3609cca1b1e
parent8ce6f78c1f9f91a504cd606b41d4a8d51fb6e5da (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/ChangeLog12
-rw-r--r--libgomp/oacc-async.c6
-rw-r--r--libgomp/oacc-cuda.c4
-rw-r--r--libgomp/oacc-int.h22
-rw-r--r--libgomp/oacc-mem.c2
-rw-r--r--libgomp/oacc-parallel.c2
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);