Mesa (main): u_atomic: Fix MSVC p_atomic_add_return

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 14 13:23:17 UTC 2022


Module: Mesa
Branch: main
Commit: 81bbfab5dfa33bf251ed519dde30128f39e7a3f9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=81bbfab5dfa33bf251ed519dde30128f39e7a3f9

Author: Jesse Natalie <jenatali at microsoft.com>
Date:   Fri Jul  8 12:29:41 2022 -0700

u_atomic: Fix MSVC p_atomic_add_return

InterlockedExchangeAdd returns the *old* value, not the new one

Cc: mesa-stable
Reviewed-by: Yonggang Luo <luoyonggang at gmail.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17529>

---

 src/util/u_atomic.h | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/util/u_atomic.h b/src/util/u_atomic.h
index f9570e89236..16dccd234d1 100644
--- a/src/util/u_atomic.h
+++ b/src/util/u_atomic.h
@@ -153,10 +153,8 @@
    ((void) p_atomic_add_return((_v), (_i)))
 
 #define p_atomic_add_return(_v, _i) (\
-   sizeof *(_v) == sizeof(char)    ? _InterlockedExchangeAdd8 ((char *)   (_v), (_i)) : \
-   sizeof *(_v) == sizeof(short)   ? _InterlockedExchangeAdd16((short *)  (_v), (_i)) : \
-   sizeof *(_v) == sizeof(long)    ? _InterlockedExchangeAdd  ((long *)   (_v), (_i)) : \
-   sizeof *(_v) == sizeof(__int64) ? InterlockedExchangeAdd64((__int64 *)(_v), (_i)) : \
+   sizeof *(_v) == sizeof(long)    ? InterlockedAdd  ((long *)   (_v), (_i)) : \
+   sizeof *(_v) == sizeof(__int64) ? InterlockedAdd64((__int64 *)(_v), (_i)) : \
                                      (assert(!"should not get here"), 0))
 
 #define p_atomic_cmpxchg(_v, _old, _new) (\



More information about the mesa-commit mailing list