diff --git a/openmp/runtime/src/kmp.h b/openmp/runtime/src/kmp.h --- a/openmp/runtime/src/kmp.h +++ b/openmp/runtime/src/kmp.h @@ -1472,6 +1472,7 @@ // 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 @@ } 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)) { \