[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [f-cpu] Re: generic adder

Hi #4,

gaetan@xeberon.net wrote:
In fact, in effective addition, rounding to + infinity mode and positive number (or rounding to -infinity mode and negative number), overflow from the compound adder, and (LSB+g+r+s)='1', we need to select A+B+2 ("round up at position [L-1]"). and if we only change the Carry bit (not overflow), we just have round up at position L (so we take the A+B+1 result)...
Wait a minute... you want to handle adding, carry-out and rounding at the same time? Like this:

My := Ma + Mb;
Mz := Ma + Mb + 1; -- incremented adder output
if (carry_out = '1') then
round_up := My(LSB) or g or r or s;
if (round_up = '1') then
My := Mz + 1; -- double increment
end if;
My := rshift(My, 1, '1');
Ey := Ey + 1;
round_up := g or r or s;
if (round_up = '1') then
My := Mz;
end if;
end if;

Right? I'm afraid you'll have to increment Mz one more time in that case.


To unsubscribe, send an e-mail to majordomo@seul.org with
unsubscribe f-cpu in the body. http://f-cpu.seul.org/