SDL: atomic: Fix memory barriers on MSVC ARM64 (396cd)

From 396cd2d7f7cf7afb434547524a3c6ea70848946b Mon Sep 17 00:00:00 2001
From: Cameron Gutman <[EMAIL REDACTED]>
Date: Thu, 23 Apr 2026 21:27:49 -0500
Subject: [PATCH] atomic: Fix memory barriers on MSVC ARM64

(cherry picked from commit 2c4c8172d77c774dff17af2ece5f4032b579636d)
---
 include/SDL3/SDL_atomic.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/SDL3/SDL_atomic.h b/include/SDL3/SDL_atomic.h
index 91de8128288eb..e14a02a8ceb9b 100644
--- a/include/SDL3/SDL_atomic.h
+++ b/include/SDL3/SDL_atomic.h
@@ -284,6 +284,10 @@ extern SDL_DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void);
 #elif defined(__GNUC__) && defined(__aarch64__)
 #define SDL_MemoryBarrierRelease()   __asm__ __volatile__ ("dmb ish" : : : "memory")
 #define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ ("dmb ishld" : : : "memory")
+#elif defined(_MSC_VER) && (defined(_M_ARM64) || defined(_M_ARM64EC))
+#include <arm64intr.h>
+#define SDL_MemoryBarrierRelease() __dmb(_ARM64_BARRIER_ISH)
+#define SDL_MemoryBarrierAcquire() __dmb(_ARM64_BARRIER_ISHLD)
 #elif defined(__GNUC__) && defined(__arm__)
 #if 0 /* defined(SDL_PLATFORM_LINUX) || defined(SDL_PLATFORM_ANDROID) */
 /* Information from: