]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libgomp/oacc-host.c
libgomp: Make libgomp.c/declare-variant-1.c test x86 specific
[thirdparty/gcc.git] / libgomp / oacc-host.c
index 2de3c374da16f87044e093b4da919b38a4343fd6..fbab75d7d43b0f794cac531054f3159c0584ad0f 100644 (file)
@@ -1,6 +1,6 @@
 /* OpenACC Runtime Library: acc_device_host.
 
-   Copyright (C) 2013-2018 Free Software Foundation, Inc.
+   Copyright (C) 2013-2023 Free Software Foundation, Inc.
 
    Contributed by Mentor Embedded.
 
@@ -32,7 +32,6 @@
 
 #include <stdbool.h>
 #include <stddef.h>
-#include <stdint.h>
 
 static struct gomp_device_descr host_dispatch;
 
@@ -55,7 +54,7 @@ host_get_type (void)
 }
 
 static int
-host_get_num_devices (void)
+host_get_num_devices (unsigned int omp_requires_mask __attribute__((unused)))
 {
   return 1;
 }
@@ -82,7 +81,9 @@ static int
 host_load_image (int n __attribute__ ((unused)),
                 unsigned v __attribute__ ((unused)),
                 const void *t __attribute__ ((unused)),
-                struct addr_pair **r __attribute__ ((unused)))
+                struct addr_pair **r __attribute__ ((unused)),
+                uint64_t **f __attribute__ ((unused)),
+                uint64_t *i __attribute__ ((unused)))
 {
   return 0;
 }
@@ -140,55 +141,112 @@ host_openacc_exec (void (*fn) (void *),
                   size_t mapnum __attribute__ ((unused)),
                   void **hostaddrs,
                   void **devaddrs __attribute__ ((unused)),
-                  int async __attribute__ ((unused)),
-                  unsigned *dims __attribute ((unused)),
+                  unsigned *dims __attribute__ ((unused)),
                   void *targ_mem_desc __attribute__ ((unused)))
 {
   fn (hostaddrs);
 }
 
 static void
-host_openacc_register_async_cleanup (void *targ_mem_desc __attribute__ ((unused)),
-                                    int async __attribute__ ((unused)))
+host_openacc_async_exec (void (*fn) (void *),
+                        size_t mapnum __attribute__ ((unused)),
+                        void **hostaddrs,
+                        void **devaddrs __attribute__ ((unused)),
+                        unsigned *dims __attribute__ ((unused)),
+                        void *targ_mem_desc __attribute__ ((unused)),
+                        struct goacc_asyncqueue *aq __attribute__ ((unused)))
 {
+  fn (hostaddrs);
 }
 
 static int
-host_openacc_async_test (int async __attribute__ ((unused)))
+host_openacc_async_test (struct goacc_asyncqueue *aq __attribute__ ((unused)))
 {
   return 1;
 }
 
-static int
-host_openacc_async_test_all (void)
+static bool
+host_openacc_async_synchronize (struct goacc_asyncqueue *aq
+                               __attribute__ ((unused)))
 {
-  return 1;
+  return true;
 }
 
-static void
-host_openacc_async_wait (int async __attribute__ ((unused)))
+static bool
+host_openacc_async_serialize (struct goacc_asyncqueue *aq1
+                             __attribute__ ((unused)),
+                             struct goacc_asyncqueue *aq2
+                             __attribute__ ((unused)))
 {
+  return true;
 }
 
-static void
-host_openacc_async_wait_async (int async1 __attribute__ ((unused)),
-                              int async2 __attribute__ ((unused)))
+static bool
+host_openacc_async_host2dev (int ord __attribute__ ((unused)),
+                            void *dst __attribute__ ((unused)),
+                            const void *src __attribute__ ((unused)),
+                            size_t n __attribute__ ((unused)),
+                            struct goacc_asyncqueue *aq
+                            __attribute__ ((unused)))
 {
+  return true;
 }
 
-static void
-host_openacc_async_wait_all (void)
+static bool
+host_openacc_async_dev2host (int ord __attribute__ ((unused)),
+                            void *dst __attribute__ ((unused)),
+                            const void *src __attribute__ ((unused)),
+                            size_t n __attribute__ ((unused)),
+                            struct goacc_asyncqueue *aq
+                            __attribute__ ((unused)))
 {
+  return true;
 }
 
 static void
-host_openacc_async_wait_all_async (int async __attribute__ ((unused)))
+host_openacc_async_queue_callback (struct goacc_asyncqueue *aq
+                                  __attribute__ ((unused)),
+                                  void (*callback_fn)(void *)
+                                  __attribute__ ((unused)),
+                                  void *userptr __attribute__ ((unused)))
 {
 }
 
-static void
-host_openacc_async_set_async (int async __attribute__ ((unused)))
+static struct goacc_asyncqueue *
+host_openacc_async_construct (int device __attribute__((unused)))
+{
+  /* Non-NULL 0xffff... value as opaque dummy.  */
+  return (struct goacc_asyncqueue *) -1;
+}
+
+static bool
+host_openacc_async_destruct (struct goacc_asyncqueue *aq
+                            __attribute__ ((unused)))
+{
+  return true;
+}
+
+static union goacc_property_value
+host_openacc_get_property (int n, enum goacc_property prop)
 {
+  union goacc_property_value nullval = { .val = 0 };
+
+  if (n >= host_get_num_devices (0))
+    return nullval;
+
+  switch (prop)
+    {
+    case GOACC_PROPERTY_NAME:
+      return (union goacc_property_value) { .ptr = "GOMP" };
+    case GOACC_PROPERTY_VENDOR:
+      return (union goacc_property_value) { .ptr = "GNU" };
+    case GOACC_PROPERTY_DRIVER:
+      return (union goacc_property_value) { .ptr = VERSION };
+    case GOACC_PROPERTY_MEMORY:
+    case GOACC_PROPERTY_FREE_MEMORY:
+    default:
+      return nullval;
+    }
 }
 
 static void *
@@ -224,30 +282,35 @@ static struct gomp_device_descr host_dispatch =
     .free_func = host_free,
     .dev2host_func = host_dev2host,
     .host2dev_func = host_host2dev,
+    .memcpy2d_func = NULL,
+    .memcpy3d_func = NULL,
     .run_func = host_run,
 
     .mem_map = { NULL },
-    /* .lock initilized in goacc_host_init.  */
+    .mem_map_rev = { NULL },
+    /* .lock initialized in goacc_host_init.  */
     .state = GOMP_DEVICE_UNINITIALIZED,
 
     .openacc = {
-      .data_environ = NULL,
-
       .exec_func = host_openacc_exec,
 
-      .register_async_cleanup_func = host_openacc_register_async_cleanup,
-
-      .async_test_func = host_openacc_async_test,
-      .async_test_all_func = host_openacc_async_test_all,
-      .async_wait_func = host_openacc_async_wait,
-      .async_wait_async_func = host_openacc_async_wait_async,
-      .async_wait_all_func = host_openacc_async_wait_all,
-      .async_wait_all_async_func = host_openacc_async_wait_all_async,
-      .async_set_async_func = host_openacc_async_set_async,
-
       .create_thread_data_func = host_openacc_create_thread_data,
       .destroy_thread_data_func = host_openacc_destroy_thread_data,
 
+      .async = {
+       .construct_func = host_openacc_async_construct,
+       .destruct_func = host_openacc_async_destruct,
+       .test_func = host_openacc_async_test,
+       .synchronize_func = host_openacc_async_synchronize,
+       .serialize_func = host_openacc_async_serialize,
+       .queue_callback_func = host_openacc_async_queue_callback,
+       .exec_func = host_openacc_async_exec,
+       .dev2host_func = host_openacc_async_dev2host,
+       .host2dev_func = host_openacc_async_host2dev,
+      },
+
+      .get_property_func = host_openacc_get_property,
+
       .cuda = {
        .get_current_device_func = NULL,
        .get_current_context_func = NULL,