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

Reply via email to