Helper functions for bit arithmetic.
More...
#include <stdint.h>
#include "cpu_conf.h"
Go to the source code of this file.
|
#define | ARCH_32_BIT (__INT_MAX__ == 2147483647) |
| 1 for 32 bit architectures, 0 otherwise
|
|
|
#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.
|
|
◆ CLRBIT
#define CLRBIT |
( |
|
val, |
|
|
|
bit |
|
) |
| val &= (~(bit)) |
Clears bitmask for a bitfield.
- Parameters
-
[in] | val | The bitfield |
[in] | bit | Specifies the bits to be cleared |
- Returns
- The modified bitfield
Definition at line 52 of file bitarithm.h.
◆ SETBIT
#define SETBIT |
( |
|
val, |
|
|
|
bit |
|
) |
| val |= (bit) |
Sets a bitmask for a bitfield.
- Parameters
-
[in] | val | The bitfield |
[in] | bit | Specifies the bits to be set |
- Returns
- The modified bitfield
Definition at line 41 of file bitarithm.h.
◆ bitarith_msb_32bit_no_native_clz()
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.
- Parameters
-
- Returns
- Bit Number
◆ bitarithm_bits_set()
unsigned bitarithm_bits_set |
( |
unsigned |
v | ) |
|
Returns the number of bits set in a value.
- Parameters
-
[in] | v | Input value with platform-dependent word size |
- Returns
- Number of set bits
◆ bitarithm_bits_set_u32()
uint8_t bitarithm_bits_set_u32 |
( |
uint32_t |
v | ) |
|
Returns the (uint32_t version) number of bits set in a value.
- Parameters
-
[in] | v | Input value with 32 bit size |
- Returns
- Number of set bits
◆ bitarithm_clzb()
static uint8_t bitarithm_clzb |
( |
uint8_t |
x | ) |
|
|
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.
- Parameters
-
- Returns
- Number of leading zero bits
Definition at line 176 of file bitarithm.h.
◆ bitarithm_lsb()
static unsigned bitarithm_lsb |
( |
unsigned |
v | ) |
|
|
inlinestatic |
Returns the number of the lowest '1' bit in a value.
- Parameters
-
[in] | v | Input value - must be unequal to '0', otherwise the function will produce an infinite loop |
- Returns
- Bit Number
Definition at line 206 of file bitarithm.h.
◆ bitarithm_msb()
static unsigned bitarithm_msb |
( |
unsigned |
v | ) |
|
|
inlinestatic |
◆ bitarithm_test_and_clear()
static unsigned bitarithm_test_and_clear |
( |
unsigned |
state, |
|
|
uint8_t * |
index |
|
) |
| |
|
inlinestatic |
Used for iterating over the bits in state
.
Returns the index of a set bit in state
, returns state
with that bit cleared.
- Warning
- This is a low-level helper function, arguments are not checked. It is intended to iterate over a bit map until all bits are cleared. Whether it starts with the highest or lowest bit will depend on what is fastest on the given hardware.
-
state
must not be zero.
- Parameters
-
[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. |
- Returns
- new state value - must be treated as opaque value
Definition at line 254 of file bitarithm.h.