From c963dbc48d1b4fe87f64782d6325b98334d4ab27 Mon Sep 17 00:00:00 2001 From: Ari Vuollet Date: Sat, 11 May 2024 19:02:09 +0300 Subject: [PATCH] Patch rapidjson for Windows on ARM --- Source/ThirdParty/rapidjson/internal/biginteger.h | 6 +++++- Source/ThirdParty/rapidjson/internal/diyfp.h | 6 +++++- Source/ThirdParty/rapidjson/rapidjson.h | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Source/ThirdParty/rapidjson/internal/biginteger.h b/Source/ThirdParty/rapidjson/internal/biginteger.h index acc26fa27..a9d3586c3 100644 --- a/Source/ThirdParty/rapidjson/internal/biginteger.h +++ b/Source/ThirdParty/rapidjson/internal/biginteger.h @@ -17,14 +17,18 @@ #include "../rapidjson.h" -#if defined(_MSC_VER) && defined(_M_AMD64) +#if defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_ARM64)) #if _MSC_VER <= 1900 #include #else #include #endif +#if defined(_M_ARM64) +#pragma intrinsic(__umulh) +#else #pragma intrinsic(_umul128) #endif +#endif RAPIDJSON_NAMESPACE_BEGIN namespace internal { diff --git a/Source/ThirdParty/rapidjson/internal/diyfp.h b/Source/ThirdParty/rapidjson/internal/diyfp.h index 1530c22e0..eec14b4ac 100644 --- a/Source/ThirdParty/rapidjson/internal/diyfp.h +++ b/Source/ThirdParty/rapidjson/internal/diyfp.h @@ -21,15 +21,19 @@ #include "../rapidjson.h" -#if defined(_MSC_VER) && defined(_M_AMD64) +#if defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_ARM64)) #if _MSC_VER <= 1900 #include #else #include #endif #pragma intrinsic(_BitScanReverse64) +#if defined(_M_ARM64) +#pragma intrinsic(__umulh) +#else #pragma intrinsic(_umul128) #endif +#endif RAPIDJSON_NAMESPACE_BEGIN namespace internal { diff --git a/Source/ThirdParty/rapidjson/rapidjson.h b/Source/ThirdParty/rapidjson/rapidjson.h index ddc22d7ac..8a49e6067 100644 --- a/Source/ThirdParty/rapidjson/rapidjson.h +++ b/Source/ThirdParty/rapidjson/rapidjson.h @@ -236,7 +236,7 @@ # define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN # elif defined(__i386__) || defined(__alpha__) || defined(__ia64) || defined(__ia64__) || defined(_M_IX86) || defined(_M_IA64) || defined(_M_ALPHA) || defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || defined(__bfin__) # define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN -# elif defined(_MSC_VER) && defined(_M_ARM) +# elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64)) # define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN # elif defined(RAPIDJSON_DOXYGEN_RUNNING) # define RAPIDJSON_ENDIAN