From 9f1f1b924f420f0bbbe605b27346d89177c8129a Mon Sep 17 00:00:00 2001 From: Nawrin Sultana Date: Fri, 30 Sep 2022 16:10:43 -0500 Subject: [PATCH] [OpenMP] Add upper limit to TPAUSE exponential backoff time Differential Revision: https://reviews.llvm.org/D135003 --- openmp/runtime/src/kmp.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openmp/runtime/src/kmp.h b/openmp/runtime/src/kmp.h index 6aeb495..df02f40 100644 --- a/openmp/runtime/src/kmp.h +++ b/openmp/runtime/src/kmp.h @@ -1472,6 +1472,7 @@ static inline void __kmp_x86_pause(void) { _mm_pause(); } // requested. Uses a timed TPAUSE, and exponential backoff. If TPAUSE isn't // available, fall back to the regular CPU pause and yield combination. #if KMP_HAVE_UMWAIT +#define KMP_TPAUSE_MAX_MASK ((kmp_uint64)0xFFFF) #define KMP_YIELD_OVERSUB_ELSE_SPIN(count, time) \ { \ if (__kmp_tpause_enabled) { \ @@ -1480,7 +1481,7 @@ static inline void __kmp_x86_pause(void) { _mm_pause(); } } else { \ __kmp_tpause(__kmp_tpause_hint, (time)); \ } \ - (time) *= 2; \ + (time) = (time << 1 | 1) & KMP_TPAUSE_MAX_MASK; \ } else { \ KMP_CPU_PAUSE(); \ if ((KMP_TRY_YIELD_OVERSUB)) { \ -- 2.7.4