Thanks to visit codestin.com
Credit goes to github.com

Skip to content

ARM64 __popcnt intrinsics #4683

@StephanTLavavej

Description

@StephanTLavavej

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    ARM64Related to the ARM64 architecturefixedSomething works now, yay!performanceMust go faster

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions