authorgravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2024-07-25 18:43:10-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-07-26 10:42:10-04:00
log2a0238e5e3095a9e5a99c3ead64ffd7f98773c64
tree79326219dfaea4bd3b59173c610cee9a70c83884
parent1240134c8b8b6c4ce9f885f695671363ac4fe10a

zig.h: fixup pointer atomic load definitions


2 files changed, 48 insertions(+), 8 deletions(-)

lib/zig.h+24-4
...@@ -3828,8 +3828,18 @@ static inline void zig_msvc_atomic_store_p32(void volatile* obj, void* arg) {...@@ -3828,8 +3828,18 @@ static inline void zig_msvc_atomic_store_p32(void volatile* obj, void* arg) {
3828 (void)_InterlockedExchangePointer(obj, arg);3828 (void)_InterlockedExchangePointer(obj, arg);
3829}3829}
38303830
3831static inline void* zig_msvc_atomic_load_p32(void volatile* obj) {3831static inline void* zig_msvc_atomic_load_zig_memory_order_relaxed_p32(void volatile* obj) {
3832 return (void*)_InterlockedExchangeAdd(obj, 0);3832 return (void*)__iso_volatile_load32(obj);
3833}
3834
3835static inline void* zig_msvc_atomic_load_zig_memory_order_acquire_p32(void volatile* obj) {
3836 void* val = (void*)__iso_volatile_load32(obj);
3837 _ReadWriteBarrier();
3838 return val;
3839}
3840
3841static inline void* zig_msvc_atomic_load_zig_memory_order_seq_cst_p32(void volatile* obj) {
3842 return zig_msvc_atomic_load_zig_memory_order_acquire_p32(obj);
3833}3843}
38343844
3835static inline bool zig_msvc_cmpxchg_p32(void volatile* obj, void* expected, void* desired) {3845static 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) {...@@ -3848,8 +3858,18 @@ static inline void zig_msvc_atomic_store_p64(void volatile* obj, void* arg) {
3848 (void)_InterlockedExchangePointer(obj, arg);3858 (void)_InterlockedExchangePointer(obj, arg);
3849}3859}
38503860
3851static inline void* zig_msvc_atomic_load_p64(void volatile* obj) {3861static inline void* zig_msvc_atomic_load_zig_memory_order_relaxed_p64(void volatile* obj) {
3852 return (void*)_InterlockedExchangeAdd64(obj, 0);3862 return (void*)__iso_volatile_load64(obj);
3863}
3864
3865static inline void* zig_msvc_atomic_load_zig_memory_order_acquire_p64(void volatile* obj) {
3866 void* val = (void*)__iso_volatile_load64(obj);
3867 _ReadWriteBarrier();
3868 return val;
3869}
3870
3871static inline void* zig_msvc_atomic_load_zig_memory_order_seq_cst_p64(void volatile* obj) {
3872 return zig_msvc_atomic_load_zig_memory_order_acquire_p64(obj);
3853}3873}
38543874
3855static inline bool zig_msvc_cmpxchg_p64(void volatile* obj, void* expected, void* desired) {3875static inline bool zig_msvc_cmpxchg_p64(void volatile* obj, void* expected, void* desired) {
stage1/zig.h+24-4
...@@ -3828,8 +3828,18 @@ static inline void zig_msvc_atomic_store_p32(void volatile* obj, void* arg) {...@@ -3828,8 +3828,18 @@ static inline void zig_msvc_atomic_store_p32(void volatile* obj, void* arg) {
3828 (void)_InterlockedExchangePointer(obj, arg);3828 (void)_InterlockedExchangePointer(obj, arg);
3829}3829}
38303830
3831static inline void* zig_msvc_atomic_load_p32(void volatile* obj) {3831static inline void* zig_msvc_atomic_load_zig_memory_order_relaxed_p32(void volatile* obj) {
3832 return (void*)_InterlockedExchangeAdd(obj, 0);3832 return (void*)__iso_volatile_load32(obj);
3833}
3834
3835static inline void* zig_msvc_atomic_load_zig_memory_order_acquire_p32(void volatile* obj) {
3836 void* val = (void*)__iso_volatile_load32(obj);
3837 _ReadWriteBarrier();
3838 return val;
3839}
3840
3841static inline void* zig_msvc_atomic_load_zig_memory_order_seq_cst_p32(void volatile* obj) {
3842 return zig_msvc_atomic_load_zig_memory_order_acquire_p32(obj);
3833}3843}
38343844
3835static inline bool zig_msvc_cmpxchg_p32(void volatile* obj, void* expected, void* desired) {3845static 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) {...@@ -3848,8 +3858,18 @@ static inline void zig_msvc_atomic_store_p64(void volatile* obj, void* arg) {
3848 (void)_InterlockedExchangePointer(obj, arg);3858 (void)_InterlockedExchangePointer(obj, arg);
3849}3859}
38503860
3851static inline void* zig_msvc_atomic_load_p64(void volatile* obj) {3861static inline void* zig_msvc_atomic_load_zig_memory_order_relaxed_p64(void volatile* obj) {
3852 return (void*)_InterlockedExchangeAdd64(obj, 0);3862 return (void*)__iso_volatile_load64(obj);
3863}
3864
3865static inline void* zig_msvc_atomic_load_zig_memory_order_acquire_p64(void volatile* obj) {
3866 void* val = (void*)__iso_volatile_load64(obj);
3867 _ReadWriteBarrier();
3868 return val;
3869}
3870
3871static inline void* zig_msvc_atomic_load_zig_memory_order_seq_cst_p64(void volatile* obj) {
3872 return zig_msvc_atomic_load_zig_memory_order_acquire_p64(obj);
3853}3873}
38543874
3855static inline bool zig_msvc_cmpxchg_p64(void volatile* obj, void* expected, void* desired) {3875static inline bool zig_msvc_cmpxchg_p64(void volatile* obj, void* expected, void* desired) {