Changeset View
Changeset View
Standalone View
Standalone View
openmp/runtime/src/kmp_atomic.cpp
Show First 20 Lines • Show All 3,688 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
void __kmpc_atomic_end(void) { | void __kmpc_atomic_end(void) { | ||||
int gtid = __kmp_get_gtid(); | int gtid = __kmp_get_gtid(); | ||||
KA_TRACE(20, ("__kmpc_atomic_end: T#%d\n", gtid)); | KA_TRACE(20, ("__kmpc_atomic_end: T#%d\n", gtid)); | ||||
__kmp_release_atomic_lock(&__kmp_atomic_lock, gtid); | __kmp_release_atomic_lock(&__kmp_atomic_lock, gtid); | ||||
} | } | ||||
#if KMP_ARCH_X86 || KMP_ARCH_X86_64 | |||||
// OpenMP 5.1 compare and swap | // OpenMP 5.1 compare and swap | ||||
/*! | /*! | ||||
@param loc Source code location | @param loc Source code location | ||||
@param gtid Global thread id | @param gtid Global thread id | ||||
@param x Memory location to operate on | @param x Memory location to operate on | ||||
@param e Expected value | @param e Expected value | ||||
@param d Desired value | @param d Desired value | ||||
▲ Show 20 Lines • Show All 145 Lines • ▼ Show 20 Lines | kmp_int64 __kmpc_atomic_val_8_cas_cpt(ident_t *loc, int gtid, kmp_int64 *x, | ||||
kmp_int64 e, kmp_int64 d, kmp_int64 *pv) { | kmp_int64 e, kmp_int64 d, kmp_int64 *pv) { | ||||
kmp_int64 old = KMP_COMPARE_AND_STORE_RET64(x, e, d); | kmp_int64 old = KMP_COMPARE_AND_STORE_RET64(x, e, d); | ||||
KMP_ASSERT(pv != NULL); | KMP_ASSERT(pv != NULL); | ||||
*pv = old == e ? d : old; | *pv = old == e ? d : old; | ||||
return old; | return old; | ||||
} | } | ||||
// End OpenMP 5.1 compare + capture | // End OpenMP 5.1 compare + capture | ||||
#endif // KMP_ARCH_X86 || KMP_ARCH_X86_64 | |||||
/*! | /*! | ||||
@} | @} | ||||
*/ | */ | ||||
// end of file | // end of file |