-unsigned int popcount_old(pb x)\r
-{\r
- pb r;\r
-#if 0\r
- r = x;\r
- r = r - ((r>>1) & 0x77777777) - ((r>>2) & 0x33333333) - ((r>>3) & 0x11111111);\r
- r = ((r + (r>>4)) & 0x0f0f0f0f) % 0xff;\r
-#elif 1\r
- r = x;\r
- r = ((r & 0xaaaaaaaa)>>1) + (r & 0x55555555);\r
- r = ((r & 0xcccccccc)>>2) + (r & 0x33333333);\r
- //r = ((r & 0xf0f0f0f0)>>4) + (r & 0x0f0f0f0f);\r
- r = ((r>>4) + r) & 0x0f0f0f0f;\r
- //r = ((r & 0xff00ff00)>>8) + (r & 0x00ff00ff);\r
- r = (r>>8) + r;\r
- //r = ((r & 0xffff0000)>>16) + (r & 0x0000ffff);\r
- r = ((r>>16) + r) & 63;\r
-#else\r
- r = popCount[x & 0xff];\r
- x >>= 8;\r
- r += popCount[x & 0xff];\r
- x >>= 8;\r
- r += popCount[x & 0xff];\r
- x >>= 8;\r
- r += popCount[x & 0xff];\r
-#endif\r
- return r;\r
-}\r
-\r
-inline unsigned int\r
-popcount(pb x) \r
-{\r
- uint m1 = 0x55555555;\r
- uint m2 = 0xc30c30c3;\r
- x -= (x >> 1) & m1;\r
- x = (x & m2) + ((x >> 2) & m2) + ((x >> 4) & m2);\r
- x += x >> 6;\r
- return (x + (x >> 12) + (x >> 24)) & 0x3f;\r
-}\r
-\r
-\r
-unsigned int popcount8(pb x)\r
-{\r
- dword r;\r
-#if 1\r
- r = x;\r
- r = ((r & 0xaa)>>1) + (r & 0x55);\r
- r = ((r & 0xcc)>>2) + (r & 0x33);\r
- r = ((r>>4) + r) & 0x0f;\r
-#else\r
- r = popCount[x & 0xff];\r
-#endif\r
- return r;\r
-}\r
-\r