Module: Mesa Branch: master Commit: 36a4aeb91f3a940f53e1209b5f1671403142a130 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=36a4aeb91f3a940f53e1209b5f1671403142a130
Author: Ben Niu <be...@microsoft.com> Date: Thu Jan 21 09:56:17 2021 -0800 util: When building 'ARM64EC', don't use x64 intrinsics which need to be emulated ARM64EC is a new build target for Windows ARM64 devices for x64 support. These binaries can be loaded in x64 processes, but don't need to be emulated. For code that's heavily used, avoiding the emulation can be a huge perf win. Acked-by: Ilia Mirkin <imir...@alum.mit.edu> Reviewed-by: Jesse Natalie <jenat...@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8619> --- src/util/rounding.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/util/rounding.h b/src/util/rounding.h index e329d438244..5392ad642bf 100644 --- a/src/util/rounding.h +++ b/src/util/rounding.h @@ -29,7 +29,7 @@ #include <limits.h> #include <stdint.h> -#if defined(__SSE__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 1)) || defined(_M_X64) +#if defined(__SSE__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 1)) || (defined(_M_X64) && !defined(_M_ARM64EC)) #include <xmmintrin.h> #include <emmintrin.h> #endif @@ -95,7 +95,7 @@ _mesa_roundeven(double x) static inline long _mesa_lroundevenf(float x) { -#if defined(__SSE__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 1)) || defined(_M_X64) +#if defined(__SSE__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 1)) || (defined(_M_X64) && !defined(_M_ARM64EC)) #if LONG_MAX == INT64_MAX return _mm_cvtss_si64(_mm_load_ss(&x)); #elif LONG_MAX == INT32_MAX @@ -108,7 +108,6 @@ _mesa_lroundevenf(float x) #endif } - /** * \brief Rounds \c x to the nearest integer, with ties to the even integer, * and returns the value as a long int. @@ -116,7 +115,7 @@ _mesa_lroundevenf(float x) static inline long _mesa_lroundeven(double x) { -#if defined(__SSE2__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || defined(_M_X64) +#if defined(__SSE2__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || (defined(_M_X64) && !defined(_M_ARM64EC)) #if LONG_MAX == INT64_MAX return _mm_cvtsd_si64(_mm_load_sd(&x)); #elif LONG_MAX == INT32_MAX _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit