mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
zig.h: fixup pointer atomic load definitions
This commit is contained in:
parent
1240134c8b
commit
2a0238e5e3
2 changed files with 48 additions and 8 deletions
28
lib/zig.h
28
lib/zig.h
|
|
@ -3828,8 +3828,18 @@ static inline void zig_msvc_atomic_store_p32(void volatile* obj, void* arg) {
|
|||
(void)_InterlockedExchangePointer(obj, arg);
|
||||
}
|
||||
|
||||
static inline void* zig_msvc_atomic_load_p32(void volatile* obj) {
|
||||
return (void*)_InterlockedExchangeAdd(obj, 0);
|
||||
static inline void* zig_msvc_atomic_load_zig_memory_order_relaxed_p32(void volatile* obj) {
|
||||
return (void*)__iso_volatile_load32(obj);
|
||||
}
|
||||
|
||||
static inline void* zig_msvc_atomic_load_zig_memory_order_acquire_p32(void volatile* obj) {
|
||||
void* val = (void*)__iso_volatile_load32(obj);
|
||||
_ReadWriteBarrier();
|
||||
return val;
|
||||
}
|
||||
|
||||
static inline void* zig_msvc_atomic_load_zig_memory_order_seq_cst_p32(void volatile* obj) {
|
||||
return zig_msvc_atomic_load_zig_memory_order_acquire_p32(obj);
|
||||
}
|
||||
|
||||
static inline bool zig_msvc_cmpxchg_p32(void volatile* obj, void* expected, void* desired) {
|
||||
|
|
@ -3848,8 +3858,18 @@ static inline void zig_msvc_atomic_store_p64(void volatile* obj, void* arg) {
|
|||
(void)_InterlockedExchangePointer(obj, arg);
|
||||
}
|
||||
|
||||
static inline void* zig_msvc_atomic_load_p64(void volatile* obj) {
|
||||
return (void*)_InterlockedExchangeAdd64(obj, 0);
|
||||
static inline void* zig_msvc_atomic_load_zig_memory_order_relaxed_p64(void volatile* obj) {
|
||||
return (void*)__iso_volatile_load64(obj);
|
||||
}
|
||||
|
||||
static inline void* zig_msvc_atomic_load_zig_memory_order_acquire_p64(void volatile* obj) {
|
||||
void* val = (void*)__iso_volatile_load64(obj);
|
||||
_ReadWriteBarrier();
|
||||
return val;
|
||||
}
|
||||
|
||||
static inline void* zig_msvc_atomic_load_zig_memory_order_seq_cst_p64(void volatile* obj) {
|
||||
return zig_msvc_atomic_load_zig_memory_order_acquire_p64(obj);
|
||||
}
|
||||
|
||||
static inline bool zig_msvc_cmpxchg_p64(void volatile* obj, void* expected, void* desired) {
|
||||
|
|
|
|||
28
stage1/zig.h
28
stage1/zig.h
|
|
@ -3828,8 +3828,18 @@ static inline void zig_msvc_atomic_store_p32(void volatile* obj, void* arg) {
|
|||
(void)_InterlockedExchangePointer(obj, arg);
|
||||
}
|
||||
|
||||
static inline void* zig_msvc_atomic_load_p32(void volatile* obj) {
|
||||
return (void*)_InterlockedExchangeAdd(obj, 0);
|
||||
static inline void* zig_msvc_atomic_load_zig_memory_order_relaxed_p32(void volatile* obj) {
|
||||
return (void*)__iso_volatile_load32(obj);
|
||||
}
|
||||
|
||||
static inline void* zig_msvc_atomic_load_zig_memory_order_acquire_p32(void volatile* obj) {
|
||||
void* val = (void*)__iso_volatile_load32(obj);
|
||||
_ReadWriteBarrier();
|
||||
return val;
|
||||
}
|
||||
|
||||
static inline void* zig_msvc_atomic_load_zig_memory_order_seq_cst_p32(void volatile* obj) {
|
||||
return zig_msvc_atomic_load_zig_memory_order_acquire_p32(obj);
|
||||
}
|
||||
|
||||
static inline bool zig_msvc_cmpxchg_p32(void volatile* obj, void* expected, void* desired) {
|
||||
|
|
@ -3848,8 +3858,18 @@ static inline void zig_msvc_atomic_store_p64(void volatile* obj, void* arg) {
|
|||
(void)_InterlockedExchangePointer(obj, arg);
|
||||
}
|
||||
|
||||
static inline void* zig_msvc_atomic_load_p64(void volatile* obj) {
|
||||
return (void*)_InterlockedExchangeAdd64(obj, 0);
|
||||
static inline void* zig_msvc_atomic_load_zig_memory_order_relaxed_p64(void volatile* obj) {
|
||||
return (void*)__iso_volatile_load64(obj);
|
||||
}
|
||||
|
||||
static inline void* zig_msvc_atomic_load_zig_memory_order_acquire_p64(void volatile* obj) {
|
||||
void* val = (void*)__iso_volatile_load64(obj);
|
||||
_ReadWriteBarrier();
|
||||
return val;
|
||||
}
|
||||
|
||||
static inline void* zig_msvc_atomic_load_zig_memory_order_seq_cst_p64(void volatile* obj) {
|
||||
return zig_msvc_atomic_load_zig_memory_order_acquire_p64(obj);
|
||||
}
|
||||
|
||||
static inline bool zig_msvc_cmpxchg_p64(void volatile* obj, void* expected, void* desired) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue