microsoft / STL

MSVC's implementation of the C++ Standard Library.
Other
10.11k stars 1.5k forks source link

Extend vectorized algorithms to ARM64EC #2635

Open StephanTLavavej opened 2 years ago

StephanTLavavej commented 2 years ago

Related to #813.

Depends on #2310.

In #2434, we found that vectorized find and count don't build for ARM64EC due to missing intrinsics. The existing attempt to enable reverse and reverse_copy for ARM64EC was also questionable, as @cbezault found a broken SSE intrinsic. I'm going to disable the vectorized algorithms for ARM64EC, so this issue is for followup investigation.

StephanTLavavej commented 2 years ago

The missing instructions I saw were:

error LNK2019: unresolved external symbol BROADCAST128 referenced in function #BROADCAST128$exit_thunk (EC Symbol)
error LNK2019: unresolved external symbol PCMPEQ128 referenced in function #PCMPEQ128$exit_thunk (EC Symbol)
error LNK2019: unresolved external symbol PMOVMSKB128 referenced in function #PMOVMSKB128$exit_thunk (EC Symbol)
error LNK2019: unresolved external symbol POPCNT64 referenced in function #POPCNT64$exit_thunk (EC Symbol)
error LNK2019: unresolved external symbol PSHUFB128 referenced in function #PSHUFB128$exit_thunk (EC Symbol)
error LNK2019: unresolved external symbol PSHUFD128 referenced in function #PSHUFD128$exit_thunk (EC Symbol)