diff --git a/stl/inc/xutility b/stl/inc/xutility index 14273a50119..49a64d2576c 100644 --- a/stl/inc/xutility +++ b/stl/inc/xutility @@ -58,10 +58,12 @@ _STL_DISABLE_CLANG_WARNINGS // In the STL's implementation, we inspect the following detection macros, // because various algorithms are vectorized for various architectures. +// _CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC is a macro to test ARM64EC fallbacks for x64 algorithms. + #if !_USE_STD_VECTOR_ALGORITHMS #define _VECTORIZED_FOR_X64_X86 0 #define _VECTORIZED_FOR_X64_X86_ARM64_ARM64EC 0 -#elif defined(_M_ARM64) || defined(_M_ARM64EC) +#elif defined(_M_ARM64) || (defined(_M_ARM64EC) && !defined(_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC)) #define _VECTORIZED_FOR_X64_X86 0 #define _VECTORIZED_FOR_X64_X86_ARM64_ARM64EC 1 #elif defined(_M_X64) || defined(_M_IX86) diff --git a/tests/std/tests/VSO_0000000_vector_algorithms/env.lst b/tests/std/tests/VSO_0000000_vector_algorithms/env.lst index 78fbe6b49a4..7a36bdceb04 100644 --- a/tests/std/tests/VSO_0000000_vector_algorithms/env.lst +++ b/tests/std/tests/VSO_0000000_vector_algorithms/env.lst @@ -5,3 +5,4 @@ RUNALL_INCLUDE ..\usual_matrix.lst RUNALL_CROSSLIST * PM_CL="" * PM_CL="/D_USE_STD_VECTOR_ALGORITHMS=0" +* PM_CL="/D_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC" diff --git a/tests/utils/stl/test/tests.py b/tests/utils/stl/test/tests.py index 44d89d5ed97..af2e09d0bfa 100644 --- a/tests/utils/stl/test/tests.py +++ b/tests/utils/stl/test/tests.py @@ -316,6 +316,8 @@ def _parseFlags(self, litConfig): self.requires.append('edg') # available for x64, see features.py elif flag[1:] == 'arch:AVX2': self.requires.append('arch_avx2') # available for x86 and x64, see features.py + elif flag[1:] == 'D_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC': + self.requires.append('arm64ec') elif flag[1:] == 'MDd': self._addCustomFeature('MDd') self._addCustomFeature('debug_CRT')