decode: Work out ispr1/ispr2 in parallel with decode ROM lookup
authorPaul Mackerras <paulus@ozlabs.org>
Tue, 12 May 2020 06:28:42 +0000 (16:28 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Sat, 13 Jun 2020 10:10:37 +0000 (20:10 +1000)
commit65a36cc0fc65d4a7dbe83b2422b6b819c26d4162
treecf2175a32b26d31eea21d84e743e8be6a355709c
parent209aa9ce3f1be930226ae1fabf2eed8b6d7ba302
decode: Work out ispr1/ispr2 in parallel with decode ROM lookup

This makes the logic that calculates which SPRs are being accessed
work in parallel with the instruction decode ROM lookup instead of
being dependent on the opcode found in the decode ROM.  The reason
for doing that is that the path from icache through the decode ROM
to the ispr1/ispr2 fields has become a critical path.

Thus we are now using only a very partial decode of the instruction
word in the logic for isp1/isp2, and we therefore can no longer rely
on them being zero in all cases where no SPR is being accessed.
Instead, decode2 now ignores ispr1/ispr2 in all cases except when the
relevant decode.input_reg_a/b or decode.output_reg_a is set to SPR.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
decode1.vhdl
decode2.vhdl