Commit 0cfa6adc authored by Richard Henderson's avatar Richard Henderson Committed by Blue Swirl
Browse files

bitops: Write bitops_flsl in terms of clzl

parent 5bbf90be
Loading
Loading
Loading
Loading
+1 −28
Original line number Diff line number Diff line
@@ -57,34 +57,7 @@ static unsigned long bitops_ctzl(unsigned long word)
 */
static inline unsigned long bitops_flsl(unsigned long word)
{
	int num = BITS_PER_LONG - 1;

#if LONG_MAX > 0x7FFFFFFF
	if (!(word & (~0ul << 32))) {
		num -= 32;
		word <<= 32;
	}
#endif
	if (!(word & (~0ul << (BITS_PER_LONG-16)))) {
		num -= 16;
		word <<= 16;
	}
	if (!(word & (~0ul << (BITS_PER_LONG-8)))) {
		num -= 8;
		word <<= 8;
	}
	if (!(word & (~0ul << (BITS_PER_LONG-4)))) {
		num -= 4;
		word <<= 4;
	}
	if (!(word & (~0ul << (BITS_PER_LONG-2)))) {
		num -= 2;

		word <<= 2;
	}
	if (!(word & (~0ul << (BITS_PER_LONG-1))))
		num -= 1;
	return num;
    return BITS_PER_LONG - 1 - clzl(word);
}

/**