diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2019-08-20 20:52:04 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2019-08-20 20:52:04 +0000 |
commit | 1756886afc900127720de68088f9adff3108ef61 (patch) | |
tree | d4c46dc43cbf2f632d3c575a6d01716370a7b45b /runtime/src/kmp_lock.h | |
parent | 4254a3821b2072ba01f8f7e3347ac862d324babc (diff) |
vendor/llvm-openmp/openmp-trunk-r366426vendor/llvm-openmp/openmp-release_900-r372316vendor/llvm-openmp/openmp-release_90-r371301vendor/llvm-openmp/openmp-release_90-r370514vendor/llvm-openmp/openmp-release_90-r369369vendor/llvm-openmp-90
Diffstat (limited to 'runtime/src/kmp_lock.h')
-rw-r--r-- | runtime/src/kmp_lock.h | 46 |
1 files changed, 12 insertions, 34 deletions
diff --git a/runtime/src/kmp_lock.h b/runtime/src/kmp_lock.h index 6a88d7bc52afb..ccd84eb821d97 100644 --- a/runtime/src/kmp_lock.h +++ b/runtime/src/kmp_lock.h @@ -4,10 +4,9 @@ //===----------------------------------------------------------------------===// // -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.txt for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// @@ -653,21 +652,11 @@ extern int (*__kmp_acquire_user_lock_with_checks_)(kmp_user_lock_p lck, kmp_uint32 spins; \ KMP_FSYNC_PREPARE(lck); \ KMP_INIT_YIELD(spins); \ - if (TCR_4(__kmp_nth) > \ - (__kmp_avail_proc ? __kmp_avail_proc : __kmp_xproc)) { \ - KMP_YIELD(TRUE); \ - } else { \ - KMP_YIELD_SPIN(spins); \ - } \ - while (lck->tas.lk.poll != 0 || !__kmp_atomic_compare_store_acq( \ - &lck->tas.lk.poll, 0, gtid + 1)) { \ - if (TCR_4(__kmp_nth) > \ - (__kmp_avail_proc ? __kmp_avail_proc : __kmp_xproc)) { \ - KMP_YIELD(TRUE); \ - } else { \ - KMP_YIELD_SPIN(spins); \ - } \ - } \ + do { \ + KMP_YIELD_OVERSUB_ELSE_SPIN(spins); \ + } while ( \ + lck->tas.lk.poll != 0 || \ + !__kmp_atomic_compare_store_acq(&lck->tas.lk.poll, 0, gtid + 1)); \ } \ KMP_FSYNC_ACQUIRED(lck); \ } else { \ @@ -771,22 +760,11 @@ extern int (*__kmp_acquire_nested_user_lock_with_checks_)(kmp_user_lock_p lck, kmp_uint32 spins; \ KMP_FSYNC_PREPARE(lck); \ KMP_INIT_YIELD(spins); \ - if (TCR_4(__kmp_nth) > \ - (__kmp_avail_proc ? __kmp_avail_proc : __kmp_xproc)) { \ - KMP_YIELD(TRUE); \ - } else { \ - KMP_YIELD_SPIN(spins); \ - } \ - while ( \ + do { \ + KMP_YIELD_OVERSUB_ELSE_SPIN(spins); \ + } while ( \ (lck->tas.lk.poll != 0) || \ - !__kmp_atomic_compare_store_acq(&lck->tas.lk.poll, 0, gtid + 1)) { \ - if (TCR_4(__kmp_nth) > \ - (__kmp_avail_proc ? __kmp_avail_proc : __kmp_xproc)) { \ - KMP_YIELD(TRUE); \ - } else { \ - KMP_YIELD_SPIN(spins); \ - } \ - } \ + !__kmp_atomic_compare_store_acq(&lck->tas.lk.poll, 0, gtid + 1)); \ } \ lck->tas.lk.depth_locked = 1; \ *depth = KMP_LOCK_ACQUIRED_FIRST; \ |