core: add support for compiling bitops on 32-bit platforms
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user