mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
util: New functions for the index of the leftmost or rightmost 1-bit.
These will acquire a user in an upcoming commit. Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
21
lib/util.h
21
lib/util.h
@@ -271,6 +271,27 @@ zero_rightmost_1bit(uintmax_t x)
|
||||
{
|
||||
return x & (x - 1);
|
||||
}
|
||||
|
||||
/* Returns the index of the rightmost 1-bit in 'x' (e.g. 01011000 => 3), or 32
|
||||
* if 'x' is 0.
|
||||
*
|
||||
* Unlike the other functions for rightmost 1-bits, this function only works
|
||||
* with 32-bit integers. */
|
||||
static inline uint32_t
|
||||
rightmost_1bit_idx(uint32_t x)
|
||||
{
|
||||
return x ? ctz(x) : 32;
|
||||
}
|
||||
|
||||
/* Returns the index of the rightmost 1-bit in 'x' (e.g. 01011000 => 6), or 32
|
||||
* if 'x' is 0.
|
||||
*
|
||||
* This function only works with 32-bit integers. */
|
||||
static inline uint32_t
|
||||
leftmost_1bit_idx(uint32_t x)
|
||||
{
|
||||
return x ? log_2_floor(x) : 32;
|
||||
}
|
||||
|
||||
bool is_all_zeros(const uint8_t *, size_t);
|
||||
bool is_all_ones(const uint8_t *, size_t);
|
||||
|
Reference in New Issue
Block a user