cxxrtl: Mask `bmux` result appropriately

This commit is contained in:
Martin Povišer 2023-12-13 18:21:37 +01:00 committed by Catherine
parent 39fdde87a7
commit 449e3dbbd3
2 changed files with 8 additions and 0 deletions

View File

@ -475,6 +475,7 @@ struct value : public expr_base<value<Bits>> {
carry = (shift_bits == 0) ? 0
: data[result.chunks + shift_chunks - 1 - n] << (chunk::bits - shift_bits);
}
result.data[result.chunks - 1] &= result.msb_mask;
return result;
}

View File

@ -42,4 +42,11 @@ int main()
cxxrtl::value<32> a(0x00040000u);
assert(a.ctlz() == 13);
}
{
// bmux clears top bits of result
cxxrtl::value<8> val(0x1fu);
cxxrtl::value<1> sel(0u);
assert(val.template bmux<4>(sel).get<uint64_t>() == 0xfu);
}
}