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_warp_active_thread_mask, false, LanemaskTy,)
|
||||||
__OMP_RTL(__kmpc_syncwarp, false, Void, LanemaskTy)
|
__OMP_RTL(__kmpc_syncwarp, false, Void, LanemaskTy)
|
||||||
|
|
||||||
|
__OMP_RTL(__kmpc_is_generic_main_thread_id, false, Int8, Int32)
|
||||||
|
|
||||||
__OMP_RTL(__last, false, Void, )
|
__OMP_RTL(__last, false, Void, )
|
||||||
|
|
||||||
#undef __OMP_RTL
|
#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) {
|
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);
|
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.
|
/// thread in generic mode outside of a parallel region.
|
||||||
EXTERN int8_t __kmpc_is_generic_main_thread(kmp_int32 Tid);
|
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,
|
EXTERN void __kmpc_get_team_static_memory(int16_t isSPMDExecutionMode,
|
||||||
const void *buf, size_t size,
|
const void *buf, size_t size,
|
||||||
int16_t is_shared, const void **res);
|
int16_t is_shared, const void **res);
|
||||||
|
|
Loading…
Reference in New Issue