diff --git a/src/xenia/base/math.h b/src/xenia/base/math.h index 889cf03ed..c6132f5b4 100644 --- a/src/xenia/base/math.h +++ b/src/xenia/base/math.h @@ -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(__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(_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));