Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
fls.h
Go to the documentation of this file.
1 #ifndef _ASM_GENERIC_BITOPS_FLS_H_
2 #define _ASM_GENERIC_BITOPS_FLS_H_
3 
12 static __always_inline int fls(int x)
13 {
14  int r = 32;
15 
16  if (!x)
17  return 0;
18  if (!(x & 0xffff0000u)) {
19  x <<= 16;
20  r -= 16;
21  }
22  if (!(x & 0xff000000u)) {
23  x <<= 8;
24  r -= 8;
25  }
26  if (!(x & 0xf0000000u)) {
27  x <<= 4;
28  r -= 4;
29  }
30  if (!(x & 0xc0000000u)) {
31  x <<= 2;
32  r -= 2;
33  }
34  if (!(x & 0x80000000u)) {
35  x <<= 1;
36  r -= 1;
37  }
38  return r;
39 }
40 
41 #endif /* _ASM_GENERIC_BITOPS_FLS_H_ */