In VS 2022 17.11 Preview 1, MSVC-PR-530436 updated intrin0.inl.h to extend the previously x86/x64 __popcnt intrinsic family to ARM64:
__MACHINEX86_X64_ARM64(unsigned int __popcnt(unsigned int))
__MACHINEX86_X64_ARM64(unsigned short __popcnt16(unsigned short))
__MACHINEARM64_X64(unsigned __int64 __popcnt64(unsigned __int64))
It's unclear to me whether it would be simpler and/or faster to replace our existing ARM64 codepath:
|
#if _HAS_NEON_INTRINSICS |
|
_NODISCARD inline int _Arm64_popcount(const unsigned long long _Val) noexcept { |
|
const __n64 _Temp = neon_cnt(__uint64ToN64_v(_Val)); |
|
return neon_addv8(_Temp).n8_i8[0]; |
|
} |
|
#endif // _HAS_NEON_INTRINSICS |
In VS 2022 17.11 Preview 1, MSVC-PR-530436 updated
intrin0.inl.hto extend the previously x86/x64__popcntintrinsic family to ARM64:It's unclear to me whether it would be simpler and/or faster to replace our existing ARM64 codepath:
STL/stl/inc/__msvc_bit_utils.hpp
Lines 351 to 356 in 63354c3