From 0214ec25eca84866ff8684f801df8a2114b60d94 Mon Sep 17 00:00:00 2001 From: David Korth Date: Sat, 19 Apr 2025 17:52:16 -0400 Subject: [PATCH] [rapidjson] biginteger.h, diyfp.h: Use softintrin.lib for _umul128 on arm64ec. Ported from upstream. extlib\rapidjson\include\rapidjson\internal\biginteger.h(22,9): error C2220: the following warning is treated as an error (compiling source file src\librpbase\TextOut_json.cpp) extlib\rapidjson\include\rapidjson\internal\biginteger.h(22,9): warning C4163: 'UnsignedMultiply128': not available as an intrinsic function (compiling source file src\librpbase\TextOut_json.cpp) extlib\rapidjson\include\rapidjson\internal\diyfp.h(27,9): warning C4163: 'UnsignedMultiply128': not available as an intrinsic function (compiling source file src\librpbase\TextOut_json.cpp) --- extlib/rapidjson/include/rapidjson/internal/biginteger.h | 7 ++++++- extlib/rapidjson/include/rapidjson/internal/diyfp.h | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/extlib/rapidjson/include/rapidjson/internal/biginteger.h b/extlib/rapidjson/include/rapidjson/internal/biginteger.h index 9d3e88c99..a114198c5 100644 --- a/extlib/rapidjson/include/rapidjson/internal/biginteger.h +++ b/extlib/rapidjson/include/rapidjson/internal/biginteger.h @@ -17,9 +17,14 @@ #include "../rapidjson.h" -#if defined(_MSC_VER) && defined(_M_AMD64) +// rom-properties: Use softintrin.lib on ARM64EC. (ported from upstream) +#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && defined(_M_AMD64) #include // for _umul128 +#if !defined(_M_ARM64EC) #pragma intrinsic(_umul128) +#else +#pragma comment(lib,"softintrin") +#endif #endif RAPIDJSON_NAMESPACE_BEGIN diff --git a/extlib/rapidjson/include/rapidjson/internal/diyfp.h b/extlib/rapidjson/include/rapidjson/internal/diyfp.h index c9fefdc61..30647ffdb 100644 --- a/extlib/rapidjson/include/rapidjson/internal/diyfp.h +++ b/extlib/rapidjson/include/rapidjson/internal/diyfp.h @@ -21,10 +21,15 @@ #include "../rapidjson.h" -#if defined(_MSC_VER) && defined(_M_AMD64) +// rom-properties: Use softintrin.lib on ARM64EC. (ported from upstream) +#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && defined(_M_AMD64) #include #pragma intrinsic(_BitScanReverse64) +#if !defined(_M_ARM64EC) #pragma intrinsic(_umul128) +#else +#pragma comment(lib,"softintrin") +#endif #endif RAPIDJSON_NAMESPACE_BEGIN