Bug 978397 - Fix the implementation of CountPopulation_32 on Windows. r=nbp

This commit is contained in:
Dan Gohman 2014-03-11 08:09:55 -04:00
Родитель 40459f6b3f
Коммит 1bb01da898
2 изменённых файлов: 4 добавлений и 5 удалений

Просмотреть файл

@ -189,11 +189,9 @@ namespace detail {
inline uint_fast8_t
CountPopulation32(uint32_t u)
{
uint32_t sum2 = (u & 0x55555555) + ((u & 0xaaaaaaaa) >> 1);
uint32_t sum4 = (sum2 & 0x33333333) + ((sum2 & 0xcccccccc) >> 2);
uint32_t sum8 = (sum4 & 0x0f0f0f0f) + ((sum4 & 0xf0f0f0f0) >> 4);
uint32_t sum16 = (sum8 & 0x00ff00ff) + ((sum8 & 0xff00ff00) >> 8);
return sum16;
uint32_t x = u - ((u >> 1) & 0x55555555);
x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
return (((x + (x >> 4)) & 0xf0f0f0f) * 0x1010101) >> 24;
}
inline uint_fast8_t

Просмотреть файл

@ -10,6 +10,7 @@ CPP_UNIT_TESTS += [
'TestCasting.cpp',
'TestCeilingFloor.cpp',
'TestCheckedInt.cpp',
'TestCountPopulation.cpp',
'TestCountZeroes.cpp',
'TestEndian.cpp',
'TestEnumSet.cpp',