Warning: That file was not part of the compilation database. It may have many parsing errors.
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | #ifndef _ASM_GENERIC_BITOPS_FLS_H_ |
3 | #define _ASM_GENERIC_BITOPS_FLS_H_ |
4 | |
5 | /** |
6 | * generic_fls - find last (most-significant) bit set |
7 | * @x: the word to search |
8 | * |
9 | * This is defined the same way as ffs. |
10 | * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. |
11 | */ |
12 | |
13 | static __always_inline int generic_fls(unsigned int x) |
14 | { |
15 | int r = 32; |
16 | |
17 | if (!x) |
18 | return 0; |
19 | if (!(x & 0xffff0000u)) { |
20 | x <<= 16; |
21 | r -= 16; |
22 | } |
23 | if (!(x & 0xff000000u)) { |
24 | x <<= 8; |
25 | r -= 8; |
26 | } |
27 | if (!(x & 0xf0000000u)) { |
28 | x <<= 4; |
29 | r -= 4; |
30 | } |
31 | if (!(x & 0xc0000000u)) { |
32 | x <<= 2; |
33 | r -= 2; |
34 | } |
35 | if (!(x & 0x80000000u)) { |
36 | x <<= 1; |
37 | r -= 1; |
38 | } |
39 | return r; |
40 | } |
41 | |
42 | #ifndef __HAVE_ARCH_FLS |
43 | #define fls(x) generic_fls(x) |
44 | #endif |
45 | |
46 | #endif /* _ASM_GENERIC_BITOPS_FLS_H_ */ |
47 |
Warning: That file was not part of the compilation database. It may have many parsing errors.