shithub: dav1d

ref: 298977f391e79902b3bd3d3b9f1f6d9c8a3d3347
dir: /src/plan9_builtins.c/

View raw version
/* FIXME bring back amd64 assembly for this */

int
__builtin_ctz(unsigned int x)
{
	unsigned int r;
	if(x == 0)
		return 32;
	for(r = 0; (x & 1) == 0; x >>= 1, r++);
	return r;
}

int
__builtin_clz(unsigned int x)
{
	unsigned int r;
	if(x == 0)
		return 32;
	for(r = 0; (x & (1UL<<31)) == 0; x <<= 1, r++);
	return r;
}

int
__builtin_clzll(unsigned long long x)
{
	unsigned long long r;
	if(x == 0)
		return 64;
	for(r = 0; (x & (1ULL<<63)) == 0; x <<= 1, r++);
	return r;
}