mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-29 06:40:59 +01:00
MINOR: standard: Add my_ffsl function to get the position of the bit set to one
This commit is contained in:
parent
f1f0c5f591
commit
ff8131861f
@ -793,6 +793,46 @@ static inline unsigned int my_popcountl(unsigned long a)
|
|||||||
return cnt;
|
return cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Simple ffs implementation. It returns the position of the lowest bit set to
|
||||||
|
* one. */
|
||||||
|
static inline unsigned int my_ffsl(unsigned long a)
|
||||||
|
{
|
||||||
|
unsigned int cnt;
|
||||||
|
|
||||||
|
if (!a)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
cnt = 1;
|
||||||
|
#if LONG_MAX > 0x7FFFFFFFL /* 64bits */
|
||||||
|
if (!(a & 0xFFFFFFFFUL)) {
|
||||||
|
a >>= 32;
|
||||||
|
cnt += 32;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (!(a & 0XFFFFU)) {
|
||||||
|
a >>= 16;
|
||||||
|
cnt += 16;
|
||||||
|
}
|
||||||
|
if (!(a & 0XFF)) {
|
||||||
|
a >>= 8;
|
||||||
|
cnt += 8;
|
||||||
|
}
|
||||||
|
if (!(a & 0xf)) {
|
||||||
|
a >>= 4;
|
||||||
|
cnt += 4;
|
||||||
|
}
|
||||||
|
if (!(a & 0x3)) {
|
||||||
|
a >>= 2;
|
||||||
|
cnt += 2;
|
||||||
|
}
|
||||||
|
if (!(a & 0x1)) {
|
||||||
|
a >>= 1;
|
||||||
|
cnt += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return cnt;
|
||||||
|
}
|
||||||
|
|
||||||
/* Build a word with the <bits> lower bits set (reverse of my_popcountl) */
|
/* Build a word with the <bits> lower bits set (reverse of my_popcountl) */
|
||||||
static inline unsigned long nbits(int bits)
|
static inline unsigned long nbits(int bits)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user