mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 20:10:17 +01:00
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 <imirkin@alum.mit.edu> Reviewed-by: Jesse Natalie <jenatali@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8619>
This commit is contained in:
parent
86b4f6ad43
commit
36a4aeb91f
1 changed files with 3 additions and 4 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue