2 * kmp_wait_release.cpp -- Wait/Release implementation
5 //===----------------------------------------------------------------------===//
7 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
8 // See https://llvm.org/LICENSE.txt for license information.
9 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
11 //===----------------------------------------------------------------------===//
13 #include "kmp_wait_release.h"
15 void __kmp_wait_64(kmp_info_t
*this_thr
, kmp_flag_64
<> *flag
,
16 int final_spin
USE_ITT_BUILD_ARG(void *itt_sync_obj
)) {
18 __kmp_wait_template
<kmp_flag_64
<>, TRUE
>(
19 this_thr
, flag
USE_ITT_BUILD_ARG(itt_sync_obj
));
21 __kmp_wait_template
<kmp_flag_64
<>, FALSE
>(
22 this_thr
, flag
USE_ITT_BUILD_ARG(itt_sync_obj
));
25 void __kmp_release_64(kmp_flag_64
<> *flag
) { __kmp_release_template(flag
); }
27 #if KMP_HAVE_MWAIT || KMP_HAVE_UMWAIT
28 template <bool C
, bool S
>
29 void __kmp_mwait_32(int th_gtid
, kmp_flag_32
<C
, S
> *flag
) {
30 __kmp_mwait_template(th_gtid
, flag
);
32 template <bool C
, bool S
>
33 void __kmp_mwait_64(int th_gtid
, kmp_flag_64
<C
, S
> *flag
) {
34 __kmp_mwait_template(th_gtid
, flag
);
36 template <bool C
, bool S
>
37 void __kmp_atomic_mwait_64(int th_gtid
, kmp_atomic_flag_64
<C
, S
> *flag
) {
38 __kmp_mwait_template(th_gtid
, flag
);
40 void __kmp_mwait_oncore(int th_gtid
, kmp_flag_oncore
*flag
) {
41 __kmp_mwait_template(th_gtid
, flag
);
44 template void __kmp_mwait_32
<false, false>(int, kmp_flag_32
<false, false> *);
45 template void __kmp_mwait_64
<false, true>(int, kmp_flag_64
<false, true> *);
46 template void __kmp_mwait_64
<true, false>(int, kmp_flag_64
<true, false> *);
48 __kmp_atomic_mwait_64
<false, true>(int, kmp_atomic_flag_64
<false, true> *);
50 __kmp_atomic_mwait_64
<true, false>(int, kmp_atomic_flag_64
<true, false> *);