aboutsummaryrefslogtreecommitdiff
path: root/openmp/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'openmp/runtime')
-rw-r--r--openmp/runtime/src/kmp.h3
1 files changed, 2 insertions, 1 deletions
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)) { \