5 #ifndef OPENTITAN_SW_DEVICE_LIB_BASE_BITFIELD_H_ 6 #define OPENTITAN_SW_DEVICE_LIB_BASE_BITFIELD_H_ 56 return (bitfield >> field.
index) & field.
mask;
76 bitfield |= (value & field.
mask) << field.
index;
104 bitfield_bit32_index_t bit_index) {
120 bitfield_bit32_index_t bit_index) {
135 bitfield_bit32_index_t bit_index,
138 value ? 0x1u : 0x0u);
152 bitfield_bit32_index_t dest_bit,
154 bitfield_bit32_index_t src_bit) {
178 return __builtin_ffs(bitfield);
202 return (bitfield != 0) ? __builtin_clz(bitfield) : 32;
226 return (bitfield != 0) ? __builtin_ctz(bitfield) : 32;
248 return __builtin_popcount(bitfield);
270 return __builtin_parity(bitfield);
293 return __builtin_bswap32(bitfield);
305 return bitfield != 0 && (bitfield & (bitfield - 1)) == 0;
310 #endif // __cplusplus 312 #endif // OPENTITAN_SW_DEVICE_LIB_BASE_BITFIELD_H_