-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Closed
Labels
ARM64Related to the ARM64 architectureRelated to the ARM64 architecturefixedSomething works now, yay!Something works now, yay!performanceMust go fasterMust go faster
Description
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:
STL/stl/inc/__msvc_bit_utils.hpp
Lines 351 to 356 in 63354c3
| #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 |
frederick-vs-jafrederick-vs-ja
Metadata
Metadata
Assignees
Labels
ARM64Related to the ARM64 architectureRelated to the ARM64 architecturefixedSomething works now, yay!Something works now, yay!performanceMust go fasterMust go faster