[Openmp-commits] [openmp] r298605 - GOMP compatibility: add missing OpenMP4.0 task deps handling code

Paul Osmialowski via Openmp-commits openmp-commits at lists.llvm.org
Thu Mar 23 08:03:18 PDT 2017


Author: pawosm01
Date: Thu Mar 23 10:03:17 2017
New Revision: 298605

URL: http://llvm.org/viewvc/llvm-project?rev=298605&view=rev
Log:
GOMP compatibility: add missing OpenMP4.0 task deps handling code

Differential Revision: https://reviews.llvm.org/D31071

Modified:
    openmp/trunk/runtime/src/kmp_gsupport.cpp

Modified: openmp/trunk/runtime/src/kmp_gsupport.cpp
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_gsupport.cpp?rev=298605&r1=298604&r2=298605&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_gsupport.cpp (original)
+++ openmp/trunk/runtime/src/kmp_gsupport.cpp Thu Mar 23 10:03:17 2017
@@ -918,7 +918,11 @@ PARALLEL_LOOP_START(xexpand(KMP_API_NAME
 
 void
 xexpand(KMP_API_NAME_GOMP_TASK)(void (*func)(void *), void *data, void (*copy_func)(void *, void *),
-  long arg_size, long arg_align, bool if_cond, unsigned gomp_flags)
+  long arg_size, long arg_align, bool if_cond, unsigned gomp_flags
+#if OMP_40_ENABLED
+  , void **depend
+#endif
+)
 {
     MKLOC(loc, "GOMP_task");
     int gtid = __kmp_entry_gtid();
@@ -962,6 +966,23 @@ xexpand(KMP_API_NAME_GOMP_TASK)(void (*f
     }
 
     if (if_cond) {
+#if OMP_40_ENABLED
+        if (gomp_flags & 8) {
+            KMP_ASSERT(depend);
+            const size_t ndeps = (kmp_intptr_t)depend[0];
+            const size_t nout = (kmp_intptr_t)depend[1];
+            kmp_depend_info_t dep_list[ndeps];
+
+            for (size_t i = 0U; i < ndeps; i++) {
+                dep_list[i].base_addr = (kmp_intptr_t)depend[2U + i];
+                dep_list[i].len = 0U;
+                dep_list[i].flags.in = 1;
+                dep_list[i].flags.out = (i < nout);
+            }
+            __kmpc_omp_task_with_deps(&loc, gtid, task, ndeps, dep_list, 0, NULL);
+        }
+        else
+#endif
         __kmpc_omp_task(&loc, gtid, task);
     }
     else {




More information about the Openmp-commits mailing list