2121#include " utils_windows_intrin.h"
2222
2323#pragma intrinsic(_BitScanForward64)
24- #else
24+ #else /* !_WIN32 */
2525#include < pthread.h>
2626
2727#ifndef __cplusplus
3030#include < atomic>
3131#define _Atomic (X ) std::atomic<X>
3232
33- using std::memory_order_acq_rel;
34- using std::memory_order_acquire;
35- using std::memory_order_relaxed;
36- using std::memory_order_release;
37-
3833#endif /* __cplusplus */
3934
40- #endif /* _WIN32 */
35+ #endif /* ! _WIN32 */
4136
4237#include " utils_common.h"
4338#include " utils_sanitizers.h"
@@ -118,14 +113,6 @@ static __inline void utils_atomic_load_acquire_ptr(void **ptr, void **out) {
118113 *(uintptr_t *)out = ret;
119114}
120115
121- static __inline void utils_atomic_store_release_u64 (uint64_t *ptr,
122- uint64_t *val) {
123- ASSERT_IS_ALIGNED ((uintptr_t )ptr, 8 );
124- ASSERT_IS_ALIGNED ((uintptr_t )val, 8 );
125- utils_annotate_release (ptr);
126- InterlockedExchange64 ((LONG64 volatile *)ptr, *(LONG64 *)val);
127- }
128-
129116static __inline void utils_atomic_store_release_ptr (void **ptr, void *val) {
130117 ASSERT_IS_ALIGNED ((uintptr_t )ptr, 8 );
131118 utils_annotate_release (ptr);
@@ -146,14 +133,12 @@ static __inline uint64_t utils_atomic_decrement_u64(uint64_t *ptr) {
146133
147134static __inline uint64_t utils_fetch_and_add_u64 (uint64_t *ptr, uint64_t val) {
148135 ASSERT_IS_ALIGNED ((uintptr_t )ptr, 8 );
149- ASSERT_IS_ALIGNED ((uintptr_t )&val, 8 );
150136 // return the value that had previously been in *ptr
151137 return InterlockedExchangeAdd64 ((LONG64 volatile *)(ptr), val);
152138}
153139
154140static __inline uint64_t utils_fetch_and_sub_u64 (uint64_t *ptr, uint64_t val) {
155141 ASSERT_IS_ALIGNED ((uintptr_t )ptr, 8 );
156- ASSERT_IS_ALIGNED ((uintptr_t )&val, 8 );
157142 // return the value that had previously been in *ptr
158143 // NOTE: on Windows there is no *Sub* version of InterlockedExchange
159144 return InterlockedExchangeAdd64 ((LONG64 volatile *)(ptr), -(LONG64)val);
@@ -203,14 +188,6 @@ static inline void utils_atomic_load_acquire_ptr(void **ptr, void **out) {
203188 utils_annotate_acquire ((void *)ptr);
204189}
205190
206- static inline void utils_atomic_store_release_u64 (uint64_t *ptr,
207- uint64_t *val) {
208- ASSERT_IS_ALIGNED ((uintptr_t )ptr, 8 );
209- ASSERT_IS_ALIGNED ((uintptr_t )val, 8 );
210- utils_annotate_release (ptr);
211- __atomic_store (ptr, val, memory_order_release);
212- }
213-
214191static inline void utils_atomic_store_release_ptr (void **ptr, void *val) {
215192 ASSERT_IS_ALIGNED ((uintptr_t )ptr, 8 );
216193 utils_annotate_release (ptr);
0 commit comments