FPU: Make set_r independent of multiply_to_f.valid

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
pull/442/head
Paul Mackerras 1 year ago
parent fcfdbc449c
commit b1bd2aa865

@ -1924,13 +1924,13 @@ begin

when FMADD_4 =>
msel_add <= MULADD_RS;
set_r := '1';
f_to_multiply.valid <= r.first;
msel_inv <= r.is_subtract;
opsel_r <= RES_MULT;
opsel_s <= S_MULT;
set_s := '1';
if multiply_to_f.valid = '1' then
set_r := '1';
v.state := FMADD_5;
end if;

@ -2012,8 +2012,8 @@ begin
pshift := '1';
mult_mask := '1';
opsel_r <= RES_MULT;
set_r := '1';
if multiply_to_f.valid = '1' then
set_r := '1';
v.first := '1';
v.state := DIV_5;
end if;
@ -2118,9 +2118,8 @@ begin
pshift := '1';
mult_mask := '1';
opsel_r <= RES_MULT;
set_r := '1';
if multiply_to_f.valid = '1' then
-- put result into R
set_r := '1';
v.first := '1';
v.state := SQRT_4;
end if;
@ -2166,8 +2165,6 @@ begin
opsel_r <= RES_MULT;
set_r := '1';
if multiply_to_f.valid = '1' then
-- put result into R
set_r := '1';
v.first := '1';
v.count := r.count + 1;
if r.count < 2 then
@ -2741,11 +2738,11 @@ begin
f_to_multiply.valid <= r.first;
pshift := '1';
opsel_r <= RES_MULT;
set_r := '1';
-- set shift to - b.exp
rs_sel1 <= RSH1_B;
rs_neg1 <= '1';
if multiply_to_f.valid = '1' then
set_r := '1';
v.state := IDIV_DIV2;
end if;
when IDIV_DIV2 =>
@ -2765,10 +2762,10 @@ begin
-- store the current quotient estimate in B
set_b_mant := r.first;
opsel_r <= RES_MULT;
set_r := '1';
opsel_s <= S_MULT;
set_s := '1';
if multiply_to_f.valid = '1' then
set_r := '1';
v.state := IDIV_DIV4;
end if;
when IDIV_DIV4 =>
@ -2800,11 +2797,11 @@ begin
when IDIV_DIV5 =>
pshift := '1';
opsel_r <= RES_MULT;
set_r := '1';
-- set shift to - b.exp
rs_sel1 <= RSH1_B;
rs_neg1 <= '1';
if multiply_to_f.valid = '1' then
set_r := '1';
v.state := IDIV_DIV6;
end if;
when IDIV_DIV6 =>
@ -2831,10 +2828,10 @@ begin
-- store the current quotient estimate in B
set_b_mant := r.first;
opsel_r <= RES_MULT;
set_r := '1';
opsel_s <= S_MULT;
set_s := '1';
if multiply_to_f.valid = '1' then
set_r := '1';
v.state := IDIV_DIV9;
end if;
when IDIV_DIV9 =>
@ -2933,8 +2930,8 @@ begin
f_to_multiply.valid <= r.first;
pshift := '1';
opsel_r <= RES_MULT;
set_r := '1';
if multiply_to_f.valid = '1' then
set_r := '1';
v.first := '1';
v.state := IDIV_EXTDIV3;
end if;
@ -2954,6 +2951,7 @@ begin
msel_inv <= '1';
f_to_multiply.valid <= r.first;
opsel_r <= RES_MULT;
set_r := '1';
opsel_s <= S_MULT;
set_s := '1';
-- set shift to UNIT_BIT - b.exp
@ -2961,7 +2959,6 @@ begin
rs_neg1 <= '1';
rs_con2 <= RSCON2_UNIT;
if multiply_to_f.valid = '1' then
set_r := '1';
v.state := IDIV_EXTDIV5;
end if;
when IDIV_EXTDIV5 =>

Loading…
Cancel
Save