[Base] Add Windows-ARM64 `bit_count` implementation
Uses intrinsics from https://learn.microsoft.com/en-us/cpp/intrinsics/arm64-intrinsics?view=msvc-170
This commit is contained in:
parent
fe9c98efac
commit
045441a305
|
@ -133,10 +133,17 @@ constexpr inline uint32_t bit_count(T v) {
|
|||
}
|
||||
#else
|
||||
#if XE_COMPILER_MSVC || XE_COMPILER_INTEL
|
||||
#if XE_ARCH_AMD64
|
||||
inline uint32_t bit_count(uint32_t v) { return __popcnt(v); }
|
||||
inline uint32_t bit_count(uint64_t v) {
|
||||
return static_cast<uint32_t>(__popcnt64(v));
|
||||
}
|
||||
#elif XE_ARCH_ARM64
|
||||
inline uint32_t bit_count(uint32_t v) { return _CountOneBits(v); }
|
||||
inline uint32_t bit_count(uint64_t v) {
|
||||
return static_cast<uint32_t>(_CountOneBits64(v));
|
||||
}
|
||||
#endif
|
||||
#elif XE_COMPILER_GCC || XE_COMPILER_CLANG
|
||||
static_assert(sizeof(unsigned int) == sizeof(uint32_t));
|
||||
static_assert(sizeof(unsigned long long) == sizeof(uint64_t));
|
||||
|
|
Loading…
Reference in New Issue