Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f264be6 authored by Paul Mackerras's avatar Paul Mackerras
Browse files

[POWERPC] Optimize fls64() on 64-bit processors



64-bit powerpc processors can find the leftmost 1 bit in a 64-bit
doubleword in one instruction, so use that rather than using the
generic fls64(), which does two 32-bit fls() calls.

Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 945feb17
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -312,7 +312,24 @@ static __inline__ int fls(unsigned int x)
	asm ("cntlzw %0,%1" : "=r" (lz) : "r" (x));
	return 32 - lz;
}

/*
 * 64-bit can do this using one cntlzd (count leading zeroes doubleword)
 * instruction; for 32-bit we use the generic version, which does two
 * 32-bit fls calls.
 */
#ifdef __powerpc64__
static __inline__ int fls64(__u64 x)
{
	int lz;

	asm ("cntlzd %0,%1" : "=r" (lz) : "r" (x));
	return 64 - lz;
}
#else
#include <asm-generic/bitops/fls64.h>
#endif /* __powerpc64__ */

#include <asm-generic/bitops/hweight.h>
#include <asm-generic/bitops/find.h>