xref: /linux/include/asm-generic/bitops/builtin-__fls.h (revision 3d3337de8900a199a7ab304f742a6ad2a973b9f4)
1 #ifndef _ASM_GENERIC_BITOPS_BUILTIN___FLS_H_
2 #define _ASM_GENERIC_BITOPS_BUILTIN___FLS_H_
3 
4 /**
5  * __fls - find last (most-significant) set bit in a long word
6  * @word: the word to search
7  *
8  * Undefined if no set bit exists, so code should check against 0 first.
9  */
10 static __always_inline unsigned long __fls(unsigned long word)
11 {
12 	return (sizeof(word) * 8) - 1 - __builtin_clzl(word);
13 }
14 
15 #endif
16