shithub: sl

ref: 46c141b0f50299a61fd672a6a5800497b4da3b13
dir: /popcount.c/

View raw version
#include "platform.h"

uint32_t
__builtin_popcount(uint32_t b)
{
	b = b - ((b>>1)&0x55555555);
	b = ((b>>2)&0x33333333) + (b&0x33333333);
	b = ((b>>4)+b)&0x0f0f0f0f;
	b += (b>>8);
	b += (b>>16);
	return b & 0x3f;
}