Provide ilog2() function.
More...
Go to the source code of this file.
Provide ilog2() function.
◆ ilog2
Value: ( \
__builtin_constant_p(n) ? \
ilog2_compile_time_const_u32(n) : \
)
static ALWAYS_INLINE unsigned int find_msb_set(uint32_t op)
find most significant bit set in a 32-bit word
Definition ffs.h:31
Calculate integer log2.
This calculates the floor of log2 (integer of log2).
- Warning
- Will return 0 if input value is 0, which is invalid for log2.
- Parameters
-
- Returns
- Integer log2 of
n
◆ ilog2_compile_time_const_u32
#define ilog2_compile_time_const_u32 |
( |
|
n | ) |
|
Value: ( \
((n) < 2) ? 0 : \
(((n) &
BIT(31)) ==
BIT(31)) ? 31 : \
(((n) &
BIT(30)) ==
BIT(30)) ? 30 : \
(((n) &
BIT(29)) ==
BIT(29)) ? 29 : \
(((n) &
BIT(28)) ==
BIT(28)) ? 28 : \
(((n) &
BIT(27)) ==
BIT(27)) ? 27 : \
(((n) &
BIT(26)) ==
BIT(26)) ? 26 : \
(((n) &
BIT(25)) ==
BIT(25)) ? 25 : \
(((n) &
BIT(24)) ==
BIT(24)) ? 24 : \
(((n) &
BIT(23)) ==
BIT(23)) ? 23 : \
(((n) &
BIT(22)) ==
BIT(22)) ? 22 : \
(((n) &
BIT(21)) ==
BIT(21)) ? 21 : \
(((n) &
BIT(20)) ==
BIT(20)) ? 20 : \
(((n) &
BIT(19)) ==
BIT(19)) ? 19 : \
(((n) &
BIT(18)) ==
BIT(18)) ? 18 : \
(((n) &
BIT(17)) ==
BIT(17)) ? 17 : \
(((n) &
BIT(16)) ==
BIT(16)) ? 16 : \
(((n) &
BIT(15)) ==
BIT(15)) ? 15 : \
(((n) &
BIT(14)) ==
BIT(14)) ? 14 : \
(((n) &
BIT(13)) ==
BIT(13)) ? 13 : \
(((n) &
BIT(12)) ==
BIT(12)) ? 12 : \
(((n) &
BIT(11)) ==
BIT(11)) ? 11 : \
(((n) &
BIT(10)) ==
BIT(10)) ? 10 : \
(((n) &
BIT(9)) ==
BIT(9)) ? 9 : \
(((n) &
BIT(8)) ==
BIT(8)) ? 8 : \
(((n) &
BIT(7)) ==
BIT(7)) ? 7 : \
(((n) &
BIT(6)) ==
BIT(6)) ? 6 : \
(((n) &
BIT(5)) ==
BIT(5)) ? 5 : \
(((n) &
BIT(4)) ==
BIT(4)) ? 4 : \
(((n) &
BIT(3)) ==
BIT(3)) ? 3 : \
(((n) &
BIT(2)) ==
BIT(2)) ? 2 : \
1 \
)
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition util_macro.h:44
Calculate the floor of log2 for compile time constant.
This calculates the floor of log2 (integer log2) for 32-bit unsigned integer.
- Note
- This should only be used for compile time constant when value is known during preprocessing stage. DO NOT USE for runtime code due to the big tree of nested if-else blocks.
- Warning
- Will return 0 if input value is 0, which is invalid for log2.
- Parameters
-
- Returns
- Integer log2 of