muxAbsoluteAll method
Mux the range of values into the row starting at absolute position
(row, col) using condition to select the new value.
Implementation
void muxAbsoluteAll(int row, int col, Logic condition, List<Logic> list) {
var i = col - rowShift[row];
final product = partialProducts[row];
for (final val in list) {
if (product.length > i) {
if (val is SignBit || product[i] is SignBit) {
var inv = false;
if (val is SignBit) {
inv = val.inverted;
}
if (product[i] is SignBit) {
inv = (product[i] as SignBit).inverted;
}
product[i] = SignBit(mux(condition, val, product[i]), inverted: inv);
} else {
product[i] = mux(condition, val, product[i]);
}
i++;
} else {
while (product.length < i) {
product.add(Const(0));
}
if (val is SignBit) {
product.add(
SignBit(mux(condition, val, Const(0)), inverted: val.inverted));
} else {
product.add(mux(condition, val, Const(0)));
}
i++;
}
}
}