diff --git a/openmp/libomptarget/deviceRTLs/nvptx/src/interface.h b/openmp/libomptarget/deviceRTLs/nvptx/src/interface.h --- a/openmp/libomptarget/deviceRTLs/nvptx/src/interface.h +++ b/openmp/libomptarget/deviceRTLs/nvptx/src/interface.h @@ -423,6 +423,8 @@ // vote EXTERN int32_t __kmpc_warp_active_thread_mask(); +// syncwarp +EXTERN void __kmpc_syncwarp(int32_t); // tasks EXTERN kmp_TaskDescr *__kmpc_omp_task_alloc(kmp_Ident *loc, diff --git a/openmp/libomptarget/deviceRTLs/nvptx/src/sync.cu b/openmp/libomptarget/deviceRTLs/nvptx/src/sync.cu --- a/openmp/libomptarget/deviceRTLs/nvptx/src/sync.cu +++ b/openmp/libomptarget/deviceRTLs/nvptx/src/sync.cu @@ -11,6 +11,7 @@ //===----------------------------------------------------------------------===// #include "omptarget-nvptx.h" +#include "target_impl.h" //////////////////////////////////////////////////////////////////////////////// // KMP Ordered calls @@ -144,3 +145,12 @@ PRINT0(LD_IO, "call __kmpc_warp_active_thread_mask\n"); return __ACTIVEMASK(); } + +//////////////////////////////////////////////////////////////////////////////// +// Syncwarp +//////////////////////////////////////////////////////////////////////////////// + +EXTERN void __kmpc_syncwarp(int32_t Mask) { + PRINT0(LD_IO, "call __kmpc_syncwarp\n"); + __kmpc_impl_syncwarp(Mask); +} diff --git a/openmp/libomptarget/deviceRTLs/nvptx/src/target_impl.h b/openmp/libomptarget/deviceRTLs/nvptx/src/target_impl.h --- a/openmp/libomptarget/deviceRTLs/nvptx/src/target_impl.h +++ b/openmp/libomptarget/deviceRTLs/nvptx/src/target_impl.h @@ -38,4 +38,6 @@ INLINE int __kmpc_impl_popc(uint32_t x) { return __popc(x); } +INLINE void __kmpc_impl_syncwarp(int32_t Mask) { __SYNCWARP(Mask); } + #endif