root/include/asm-generic/bitops/fls.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. fls

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _ASM_GENERIC_BITOPS_FLS_H_
   3 #define _ASM_GENERIC_BITOPS_FLS_H_
   4 
   5 /**
   6  * 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 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 #endif /* _ASM_GENERIC_BITOPS_FLS_H_ */

/* [<][>][^][v][top][bottom][index][help] */