forked from OSchip/llvm-project
[Libomptarget] Introduce new main thread ID runtime function
This patch introduces `__kmpc_is_generic_main_thread_id` which splits the old comparison into its own runtime function. The purpose of this is so we can fold this part independently, so when both this and `is_spmd_mode` are folded the final function will be folded as well. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D106437
This commit is contained in:
parent
7d57639264
commit
1684012a47
|
@ -441,6 +441,8 @@ __OMP_RTL(__kmpc_barrier_simple_spmd, false, Void, IdentPtr, Int32)
|
|||
__OMP_RTL(__kmpc_warp_active_thread_mask, false, LanemaskTy,)
|
||||
__OMP_RTL(__kmpc_syncwarp, false, Void, LanemaskTy)
|
||||
|
||||
__OMP_RTL(__kmpc_is_generic_main_thread_id, false, Int8, Int32)
|
||||
|
||||
__OMP_RTL(__last, false, Void, )
|
||||
|
||||
#undef __OMP_RTL
|
||||
|
|
|
@ -162,7 +162,11 @@ EXTERN int8_t __kmpc_is_spmd_exec_mode() {
|
|||
}
|
||||
|
||||
EXTERN int8_t __kmpc_is_generic_main_thread(kmp_int32 Tid) {
|
||||
return !__kmpc_is_spmd_exec_mode() && GetMasterThreadID() == Tid;
|
||||
return !__kmpc_is_spmd_exec_mode() && __kmpc_is_generic_main_thread_id(Tid);
|
||||
}
|
||||
|
||||
NOINLINE EXTERN int8_t __kmpc_is_generic_main_thread_id(kmp_int32 Tid) {
|
||||
return GetMasterThreadID() == Tid;
|
||||
}
|
||||
|
||||
EXTERN bool __kmpc_kernel_parallel(void**WorkFn);
|
||||
|
|
|
@ -453,6 +453,10 @@ EXTERN int8_t __kmpc_is_spmd_exec_mode();
|
|||
/// thread in generic mode outside of a parallel region.
|
||||
EXTERN int8_t __kmpc_is_generic_main_thread(kmp_int32 Tid);
|
||||
|
||||
/// Return true if the hardware thread id \p Tid represents the OpenMP main
|
||||
/// thread in generic mode.
|
||||
EXTERN int8_t __kmpc_is_generic_main_thread_id(kmp_int32 Tid);
|
||||
|
||||
EXTERN void __kmpc_get_team_static_memory(int16_t isSPMDExecutionMode,
|
||||
const void *buf, size_t size,
|
||||
int16_t is_shared, const void **res);
|
||||
|
|
Loading…
Reference in New Issue