core: add support for compiling bitops on 32-bit platforms

This commit is contained in:
2024-12-06 15:10:41 +00:00
parent b07b7a86c4
commit 87b42f299d

View File

@@ -23,7 +23,11 @@ int b_popcountl(long v)
}
if (cpu_supports_popcnt == CPU_FEATURE_YES) {
#if _M_AMD64 == 100
return __popcnt64(v);
#else
return __popcnt(v);
#endif
}
assert(0 && "CPU does not support popcount!");
@@ -34,7 +38,13 @@ int b_ctzl(long v)
{
unsigned long trailing_zero = 0;
if (_BitScanForward64(&trailing_zero, v)) {
#if _M_AMD64 == 100
int x = _BitScanForward64(&trailing_zero, v);
#else
int x = _BitScanForward(&trailing_zero, v);
#endif
if (x) {
return trailing_zero;
} else {
return 64;
@@ -45,7 +55,13 @@ int b_clzl(long v)
{
unsigned long leading_zero = 0;
if (_BitScanReverse64(&leading_zero, v)) {
#if _M_AMD64 == 100
int x = _BitScanReverse64(&leading_zero, v);
#else
int x = _BitScanReverse(&leading_zero, v);
#endif
if (x) {
return 64 - leading_zero;
} else {
// Same remarks as above