Helper functions for bit arithmetic. More...
Helper functions for bit arithmetic.
Definition in file bitarithm.h.
#include <stdint.h>
#include "cpu_conf.h"
Go to the source code of this file.
Macros | |
#define | ARCH_32_BIT (__INT_MAX__ == 2147483647) |
1 for 32 bit architectures, 0 otherwise | |
Functions | |
static unsigned | bitarithm_msb (unsigned v) |
Returns the number of the highest '1' bit in a value. | |
static unsigned | bitarithm_lsb (unsigned v) |
Returns the number of the lowest '1' bit in a value. | |
unsigned | bitarithm_bits_set (unsigned v) |
Returns the number of bits set in a value. | |
uint8_t | bitarithm_bits_set_u32 (uint32_t v) |
Returns the (uint32_t version) number of bits set in a value. | |
unsigned | bitarith_msb_32bit_no_native_clz (unsigned v) |
Returns the number of the highest '1' bit in a value. | |
static uint8_t | bitarithm_clzb (uint8_t x) |
Returns the number of leading 0-bits in x , starting at the most significant bit position. | |
static unsigned | bitarithm_test_and_clear (unsigned state, uint8_t *index) |
Used for iterating over the bits in state . | |
#define | SETBIT(val, bit) val |= (bit) |
Sets a bitmask for a bitfield. | |
#define | CLRBIT(val, bit) val &= (~(bit)) |
Clears bitmask for a bitfield. | |
Single Bit Defines | |
#define | BIT0 0x00000001 |
Bit 0 set define. | |
#define | BIT1 0x00000002 |
Bit 1 set define. | |
#define | BIT2 0x00000004 |
Bit 2 set define. | |
#define | BIT3 0x00000008 |
Bit 3 set define. | |
#define | BIT4 0x00000010 |
Bit 4 set define. | |
#define | BIT5 0x00000020 |
Bit 5 set define. | |
#define | BIT6 0x00000040 |
Bit 6 set define. | |
#define | BIT7 0x00000080 |
Bit 7 set define. | |
#define | BIT8 0x00000100 |
Bit 8 set define. | |
#define | BIT9 0x00000200 |
Bit 9 set define. | |
#define | BIT10 0x00000400 |
Bit 10 set define. | |
#define | BIT11 0x00000800 |
Bit 11 set define. | |
#define | BIT12 0x00001000 |
Bit 12 set define. | |
#define | BIT13 0x00002000 |
Bit 13 set define. | |
#define | BIT14 0x00004000 |
Bit 14 set define. | |
#define | BIT15 0x00008000 |
Bit 15 set define. | |
#define | BIT16 0x00010000 |
Bit 16 set define. | |
#define | BIT17 0x00020000 |
Bit 17 set define. | |
#define | BIT18 0x00040000 |
Bit 18 set define. | |
#define | BIT19 0x00080000 |
Bit 19 set define. | |
#define | BIT20 0x00100000 |
Bit 20 set define. | |
#define | BIT21 0x00200000 |
Bit 21 set define. | |
#define | BIT22 0x00400000 |
Bit 22 set define. | |
#define | BIT23 0x00800000 |
Bit 23 set define. | |
#define | BIT24 0x01000000 |
Bit 24 set define. | |
#define | BIT25 0x02000000 |
Bit 25 set define. | |
#define | BIT26 0x04000000 |
Bit 26 set define. | |
#define | BIT27 0x08000000 |
Bit 27 set define. | |
#define | BIT28 0x10000000 |
Bit 28 set define. | |
#define | BIT29 0x20000000 |
Bit 29 set define. | |
#define | BIT30 0x40000000 |
Bit 30 set define. | |
#define | BIT31 0x80000000 |
Bit 31 set define. | |
#define ARCH_32_BIT (__INT_MAX__ == 2147483647) |
1 for 32 bit architectures, 0 otherwise
Definition at line 98 of file bitarithm.h.
#define BIT0 0x00000001 |
Bit 0 set define.
Definition at line 59 of file bitarithm.h.
#define BIT1 0x00000002 |
Bit 1 set define.
Definition at line 60 of file bitarithm.h.
#define BIT10 0x00000400 |
Bit 10 set define.
Definition at line 71 of file bitarithm.h.
#define BIT11 0x00000800 |
Bit 11 set define.
Definition at line 72 of file bitarithm.h.
#define BIT12 0x00001000 |
Bit 12 set define.
Definition at line 73 of file bitarithm.h.
#define BIT13 0x00002000 |
Bit 13 set define.
Definition at line 74 of file bitarithm.h.
#define BIT14 0x00004000 |
Bit 14 set define.
Definition at line 75 of file bitarithm.h.
#define BIT15 0x00008000 |
Bit 15 set define.
Definition at line 76 of file bitarithm.h.
#define BIT16 0x00010000 |
Bit 16 set define.
Definition at line 79 of file bitarithm.h.
#define BIT17 0x00020000 |
Bit 17 set define.
Definition at line 80 of file bitarithm.h.
#define BIT18 0x00040000 |
Bit 18 set define.
Definition at line 81 of file bitarithm.h.
#define BIT19 0x00080000 |
Bit 19 set define.
Definition at line 82 of file bitarithm.h.
#define BIT2 0x00000004 |
Bit 2 set define.
Definition at line 61 of file bitarithm.h.
#define BIT20 0x00100000 |
Bit 20 set define.
Definition at line 83 of file bitarithm.h.
#define BIT21 0x00200000 |
Bit 21 set define.
Definition at line 84 of file bitarithm.h.
#define BIT22 0x00400000 |
Bit 22 set define.
Definition at line 85 of file bitarithm.h.
#define BIT23 0x00800000 |
Bit 23 set define.
Definition at line 86 of file bitarithm.h.
#define BIT24 0x01000000 |
Bit 24 set define.
Definition at line 87 of file bitarithm.h.
#define BIT25 0x02000000 |
Bit 25 set define.
Definition at line 88 of file bitarithm.h.
#define BIT26 0x04000000 |
Bit 26 set define.
Definition at line 89 of file bitarithm.h.
#define BIT27 0x08000000 |
Bit 27 set define.
Definition at line 90 of file bitarithm.h.
#define BIT28 0x10000000 |
Bit 28 set define.
Definition at line 91 of file bitarithm.h.
#define BIT29 0x20000000 |
Bit 29 set define.
Definition at line 92 of file bitarithm.h.
#define BIT3 0x00000008 |
Bit 3 set define.
Definition at line 62 of file bitarithm.h.
#define BIT30 0x40000000 |
Bit 30 set define.
Definition at line 93 of file bitarithm.h.
#define BIT31 0x80000000 |
Bit 31 set define.
Definition at line 94 of file bitarithm.h.
#define BIT4 0x00000010 |
Bit 4 set define.
Definition at line 63 of file bitarithm.h.
#define BIT5 0x00000020 |
Bit 5 set define.
Definition at line 64 of file bitarithm.h.
#define BIT6 0x00000040 |
Bit 6 set define.
Definition at line 65 of file bitarithm.h.
#define BIT7 0x00000080 |
Bit 7 set define.
Definition at line 66 of file bitarithm.h.
#define BIT8 0x00000100 |
Bit 8 set define.
Definition at line 67 of file bitarithm.h.
#define BIT9 0x00000200 |
Bit 9 set define.
Definition at line 68 of file bitarithm.h.
#define CLRBIT | ( | val, | |
bit | |||
) | val &= (~(bit)) |
Clears bitmask for a bitfield.
[in] | val | The bitfield |
[in] | bit | Specifies the bits to be cleared |
Definition at line 52 of file bitarithm.h.
#define SETBIT | ( | val, | |
bit | |||
) | val |= (bit) |
Sets a bitmask for a bitfield.
[in] | val | The bitfield |
[in] | bit | Specifies the bits to be set |
Definition at line 41 of file bitarithm.h.
unsigned bitarith_msb_32bit_no_native_clz | ( | unsigned | v | ) |
Returns the number of the highest '1' bit in a value.
Internal software implementation for 32 bit platforms, use @see bitarithm_msb in application code.
[in] | v | Input value |
unsigned bitarithm_bits_set | ( | unsigned | v | ) |
Returns the number of bits set in a value.
[in] | v | Input value with platform-dependent word size |
uint8_t bitarithm_bits_set_u32 | ( | uint32_t | v | ) |
Returns the (uint32_t version) number of bits set in a value.
[in] | v | Input value with 32 bit size |
|
inlinestatic |
Returns the number of leading 0-bits in x
, starting at the most significant bit position.
If x is 0, the result is undefined.
[in] | x | Input value |
Definition at line 176 of file bitarithm.h.
|
inlinestatic |
Returns the number of the lowest '1' bit in a value.
[in] | v | Input value - must be unequal to '0', otherwise the function will produce an infinite loop |
Definition at line 206 of file bitarithm.h.
|
inlinestatic |
Returns the number of the highest '1' bit in a value.
[in] | v | Input value |
Source: http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogObvious
Definition at line 153 of file bitarithm.h.
|
inlinestatic |
Used for iterating over the bits in state
.
Returns the index of a set bit in state
, returns state
with that bit cleared.
state
must not be zero.[in] | state | Bit Map with at least one bit set |
[out] | index | Index of the first set bit. Must be initialized with 0 before the first call to this function, must not be modified between subsequent calls. |
Definition at line 254 of file bitarithm.h.