31 extern const char _my_bits_nbits[256];
32 extern const unsigned char _my_bits_reverse_table[256];
39 static inline uint32_t my_bit_log2(uint32_t value)
42 for (bit=0 ; value > 1 ; value>>=1, bit++) ;
46 static inline uint32_t my_count_bits(uint64_t v)
50 uint32_t v2=(uint32_t) (v >> 32);
51 return (uint32_t) (
unsigned char) (_my_bits_nbits[(
unsigned char) v] +
52 _my_bits_nbits[(
unsigned char) (v >> 8)] +
53 _my_bits_nbits[(
unsigned char) (v >> 16)] +
54 _my_bits_nbits[(
unsigned char) (v >> 24)] +
55 _my_bits_nbits[(
unsigned char) (v2)] +
56 _my_bits_nbits[(
unsigned char) (v2 >> 8)] +
57 _my_bits_nbits[(
unsigned char) (v2 >> 16)] +
58 _my_bits_nbits[(
unsigned char) (v2 >> 24)]);
61 static inline uint32_t my_count_bits_uint16(uint16_t v)
63 return _my_bits_nbits[v];
67 static inline uint32_t my_clear_highest_bit(uint32_t v)
78 static inline uint32_t my_reverse_bits(uint32_t key)
81 (_my_bits_reverse_table[ key & 255] << 24) |
82 (_my_bits_reverse_table[(key>> 8) & 255] << 16) |
83 (_my_bits_reverse_table[(key>>16) & 255] << 8) |
84 _my_bits_reverse_table[(key>>24) ];
TODO: Rename this file - func.h is stupid.