builtin-__fls.h 436 B

12345678910111213141516
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef _ASM_GENERIC_BITOPS_BUILTIN___FLS_H_
  3. #define _ASM_GENERIC_BITOPS_BUILTIN___FLS_H_
  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. #endif