diff --git a/openmp/libomptarget/DeviceRTL/include/Interface.h b/openmp/libomptarget/DeviceRTL/include/Interface.h index 1a8471a2352f..027d2c9e1364 100644 --- a/openmp/libomptarget/DeviceRTL/include/Interface.h +++ b/openmp/libomptarget/DeviceRTL/include/Interface.h @@ -198,6 +198,9 @@ void __kmpc_end_sharing_variables(); /// Called by the worker threads in the parallel region (function). void __kmpc_get_shared_variables(void ***GlobalArgs); +/// External interface to get the thread ID. +uint32_t __kmpc_get_hardware_thread_id_in_block(); + /// Kernel /// ///{ diff --git a/openmp/libomptarget/DeviceRTL/src/Mapping.cpp b/openmp/libomptarget/DeviceRTL/src/Mapping.cpp index 3bd055322cfb..ee2aeeea4700 100644 --- a/openmp/libomptarget/DeviceRTL/src/Mapping.cpp +++ b/openmp/libomptarget/DeviceRTL/src/Mapping.cpp @@ -226,4 +226,9 @@ bool mapping::isSPMDMode() { return IsSPMDMode; } bool mapping::isGenericMode() { return !isSPMDMode(); } ///} +extern "C" { +uint32_t __kmpc_get_hardware_thread_id_in_block() { + return mapping::getThreadIdInBlock(); +} +} #pragma omp end declare target