41 lines · 635 B · C
RawDownload
#ifndef _ASM_GENERIC_BITOPS_FLS_H_#define _ASM_GENERIC_BITOPS_FLS_H_ /** * fls - find last (most-significant) bit set * @x: the word to search * * This is defined the same way as ffs. * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. */ static __always_inline int fls(int x){	int r = 32; 	if (!x)		return 0;	if (!(x & 0xffff0000u)) {		x <<= 16;		r -= 16;	}	if (!(x & 0xff000000u)) {		x <<= 8;		r -= 8;	}	if (!(x & 0xf0000000u)) {		x <<= 4;		r -= 4;	}	if (!(x & 0xc0000000u)) {		x <<= 2;		r -= 2;	}	if (!(x & 0x80000000u)) {		x <<= 1;		r -= 1;	}	return r;} #endif /* _ASM_GENERIC_BITOPS_FLS_H_ */