Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions stl/inc/xutility
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,18 @@ _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 defined(_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC) && !defined(_M_ARM64EC)
#error _CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC should only be defined on _M_ARM64EC
#endif // defined(_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC) && !defined(_M_ARM64EC)

#if !_USE_STD_VECTOR_ALGORITHMS
#define _VECTORIZED_FOR_X64_X86 0
#define _VECTORIZED_FOR_X64_X86_ARM64_ARM64EC 0
#elif defined(_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC)
#define _VECTORIZED_FOR_X64_X86 1
#define _VECTORIZED_FOR_X64_X86_ARM64_ARM64EC 1
#elif defined(_M_ARM64) || defined(_M_ARM64EC)
#define _VECTORIZED_FOR_X64_X86 0
#define _VECTORIZED_FOR_X64_X86_ARM64_ARM64EC 1
Expand Down
1 change: 1 addition & 0 deletions tests/std/tests/VSO_0000000_vector_algorithms/env.lst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

RUNALL_INCLUDE ..\usual_matrix.lst
RUNALL_INCLUDE ..\arm64ec_vector_fallbacks_suffix.lst
RUNALL_CROSSLIST
* PM_CL=""
* PM_CL="/D_USE_STD_VECTOR_ALGORITHMS=0"
13 changes: 13 additions & 0 deletions tests/std/tests/arm64ec_vector_fallbacks_suffix.lst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest /MTd /D_ITERATOR_DEBUG_LEVEL=0 /D_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC"
ASAN PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest /MTd /D_ITERATOR_DEBUG_LEVEL=0 /D_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC -fsanitize=address /Zi" PM_LINK="/debug"
PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest /MT /D_ITERATOR_DEBUG_LEVEL=0 /D_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC"
ASAN PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest /MT /D_ITERATOR_DEBUG_LEVEL=0 /D_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC -fsanitize=address /Zi" PM_LINK="/debug"
PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest /MDd /D_ITERATOR_DEBUG_LEVEL=0 /D_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC"
ASAN PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest /MDd /D_ITERATOR_DEBUG_LEVEL=0 /D_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC -fsanitize=address /Zi" PM_LINK="/debug"
PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest /MD /D_ITERATOR_DEBUG_LEVEL=0 /D_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC"
ASAN PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest /MD /D_ITERATOR_DEBUG_LEVEL=0 /D_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC -fsanitize=address /Zi" PM_LINK="/debug"
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /D_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC --start-no-unused-arguments"
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /D_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC --start-no-unused-arguments"
2 changes: 2 additions & 0 deletions tests/utils/stl/test/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -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':
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'D' + '_CALL_ALL_X64_VECTOR_ALGORITHMS_ON_ARM64EC' might be a better spelling for search.

self.requires.append('arm64ec')
elif flag[1:] == 'MDd':
self._addCustomFeature('MDd')
self._addCustomFeature('debug_CRT')
Expand Down