1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2048fa2dfSCatalin Marinas #ifndef _ASM_GENERIC_BITOPS_BUILTIN___FLS_H_ 3048fa2dfSCatalin Marinas #define _ASM_GENERIC_BITOPS_BUILTIN___FLS_H_ 4048fa2dfSCatalin Marinas 5048fa2dfSCatalin Marinas /** 6048fa2dfSCatalin Marinas * __fls - find last (most-significant) set bit in a long word 7048fa2dfSCatalin Marinas * @word: the word to search 8048fa2dfSCatalin Marinas * 9048fa2dfSCatalin Marinas * Undefined if no set bit exists, so code should check against 0 first. 10048fa2dfSCatalin Marinas */ __fls(unsigned long word)11048fa2dfSCatalin Marinasstatic __always_inline unsigned long __fls(unsigned long word) 12048fa2dfSCatalin Marinas { 13048fa2dfSCatalin Marinas return (sizeof(word) * 8) - 1 - __builtin_clzl(word); 14048fa2dfSCatalin Marinas } 15048fa2dfSCatalin Marinas 16048fa2dfSCatalin Marinas #endif 17