|
|
@ -434,6 +434,9 @@ begin
|
|
|
|
v.input_ov := '1'; -- need SO state if setting OV to 0
|
|
|
|
v.input_ov := '1'; -- need SO state if setting OV to 0
|
|
|
|
end if;
|
|
|
|
end if;
|
|
|
|
when OP_MFSPR =>
|
|
|
|
when OP_MFSPR =>
|
|
|
|
|
|
|
|
if is_X(d_in.insn) then
|
|
|
|
|
|
|
|
v.input_ov := 'X';
|
|
|
|
|
|
|
|
else
|
|
|
|
case decode_spr_num(d_in.insn) is
|
|
|
|
case decode_spr_num(d_in.insn) is
|
|
|
|
when SPR_XER =>
|
|
|
|
when SPR_XER =>
|
|
|
|
v.input_ov := '1';
|
|
|
|
v.input_ov := '1';
|
|
|
@ -441,7 +444,13 @@ begin
|
|
|
|
unit := LDST;
|
|
|
|
unit := LDST;
|
|
|
|
when others =>
|
|
|
|
when others =>
|
|
|
|
end case;
|
|
|
|
end case;
|
|
|
|
|
|
|
|
end if;
|
|
|
|
when OP_MTSPR =>
|
|
|
|
when OP_MTSPR =>
|
|
|
|
|
|
|
|
if is_X(d_in.insn) then
|
|
|
|
|
|
|
|
v.e.output_xer := 'X';
|
|
|
|
|
|
|
|
v.output_ov := 'X';
|
|
|
|
|
|
|
|
v.sgl_pipe := 'X';
|
|
|
|
|
|
|
|
else
|
|
|
|
case decode_spr_num(d_in.insn) is
|
|
|
|
case decode_spr_num(d_in.insn) is
|
|
|
|
when SPR_XER =>
|
|
|
|
when SPR_XER =>
|
|
|
|
v.e.output_xer := '1';
|
|
|
|
v.e.output_xer := '1';
|
|
|
@ -456,6 +465,7 @@ begin
|
|
|
|
if d_in.spr_info.valid = '1' and d_in.valid = '1' then
|
|
|
|
if d_in.spr_info.valid = '1' and d_in.valid = '1' then
|
|
|
|
v.sgl_pipe := '1';
|
|
|
|
v.sgl_pipe := '1';
|
|
|
|
end if;
|
|
|
|
end if;
|
|
|
|
|
|
|
|
end if;
|
|
|
|
when OP_CMP | OP_MCRXRX =>
|
|
|
|
when OP_CMP | OP_MCRXRX =>
|
|
|
|
v.input_ov := '1';
|
|
|
|
v.input_ov := '1';
|
|
|
|
when others =>
|
|
|
|
when others =>
|
|
|
|