зеркало из https://github.com/mozilla/gecko-dev.git
Bug 978397 - Fix the implementation of CountPopulation_32 on Windows. r=nbp
This commit is contained in:
Родитель
40459f6b3f
Коммит
1bb01da898
|
@ -189,11 +189,9 @@ namespace detail {
|
||||||
inline uint_fast8_t
|
inline uint_fast8_t
|
||||||
CountPopulation32(uint32_t u)
|
CountPopulation32(uint32_t u)
|
||||||
{
|
{
|
||||||
uint32_t sum2 = (u & 0x55555555) + ((u & 0xaaaaaaaa) >> 1);
|
uint32_t x = u - ((u >> 1) & 0x55555555);
|
||||||
uint32_t sum4 = (sum2 & 0x33333333) + ((sum2 & 0xcccccccc) >> 2);
|
x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
|
||||||
uint32_t sum8 = (sum4 & 0x0f0f0f0f) + ((sum4 & 0xf0f0f0f0) >> 4);
|
return (((x + (x >> 4)) & 0xf0f0f0f) * 0x1010101) >> 24;
|
||||||
uint32_t sum16 = (sum8 & 0x00ff00ff) + ((sum8 & 0xff00ff00) >> 8);
|
|
||||||
return sum16;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline uint_fast8_t
|
inline uint_fast8_t
|
||||||
|
|
|
@ -10,6 +10,7 @@ CPP_UNIT_TESTS += [
|
||||||
'TestCasting.cpp',
|
'TestCasting.cpp',
|
||||||
'TestCeilingFloor.cpp',
|
'TestCeilingFloor.cpp',
|
||||||
'TestCheckedInt.cpp',
|
'TestCheckedInt.cpp',
|
||||||
|
'TestCountPopulation.cpp',
|
||||||
'TestCountZeroes.cpp',
|
'TestCountZeroes.cpp',
|
||||||
'TestEndian.cpp',
|
'TestEndian.cpp',
|
||||||
'TestEnumSet.cpp',
|
'TestEnumSet.cpp',
|
||||||
|
|
Загрузка…
Ссылка в новой задаче