uedge_bits
unsigned int start_elem = (elem_bits * index) / uedge_bits;
if (elem_bits == uedge_bits) {
} else if (elem_bits > uedge_bits) {
for (; bits_to_write > uedge_bits;
bits_to_write -= uedge_bits, i++, start_bit += uedge_bits) {
#define move_upper_bits(target, target_bit, src, src_bit) move_subword(target, target_bit, src, src_bit, uedge_bits)
#define move_word(target, target_bit, src) move_subword(target, target_bit, src, 0, uedge_bits)
unsigned int start_elem = target_bit / uedge_bits;
unsigned int start_bit = target_bit % uedge_bits;
if (subword_width + start_bit > uedge_bits) { /* overlap */
hive_uedge old_val0 = inv_subword(target[start_elem], start_bit, uedge_bits);
subword_width + start_bit - uedge_bits);
target[start_elem + 1] = old_val1 | (src_subword >> (uedge_bits - start_bit));
unsigned int start_elem = (elem_bits * index) / uedge_bits;
unsigned int start_bit = (elem_bits * index) % uedge_bits;
unsigned int end_elem = (elem_bits * (index + 1) - 1) / uedge_bits;
unsigned int end_bit = ((elem_bits * (index + 1) - 1) % uedge_bits) + 1;
if (elem_bits == uedge_bits) {
bits_written += uedge_bits;