iofbird / bird2.0.1 / lib / bitops.h @ 6b3f1a54
History  View  Annotate  Download (714 Bytes)
1 
/*


2 
* BIRD Library  Generic Bit Operations

3 
*

4 
* (c) 1998 Martin Mares <mj@ucw.cz>

5 
*

6 
* Can be freely distributed and used under the terms of the GNU GPL.

7 
*/

8  
9 
#ifndef _BIRD_BITOPTS_H_

10 
#define _BIRD_BITOPTS_H_

11  
12 
#include "sysdep/config.h" 
13  
14 
/*

15 
* Bit mask operations:

16 
*

17 
* u32_mkmask Make bit mask consisting of <n> consecutive ones

18 
* from the left and the rest filled with zeroes.

19 
* E.g., u32_mkmask(5) = 0xf8000000.

20 
* u32_masklen Inverse operation to u32_mkmask, 1 if not a bitmask.

21 
*/

22  
23 
u32 u32_mkmask(uint n); 
24 
uint u32_masklen(u32 x); 
25  
26 
u32 u32_log2(u32 v); 
27  
28 
static inline u32 u32_hash(u32 v) { return v * 2902958171u; } 
29  
30 
static inline u8 u32_popcount(u32 v) { return __builtin_popcount(v); } 
31  
32 
#endif
