xref: /linux/include/asm-generic/bitops/builtin-__fls.h (revision efdbd7345f8836f7495f3ac6ee237d86cb3bb6b0)
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