decode: Index minor op table with insn bits for opcode 31
authorPaul Mackerras <paulus@ozlabs.org>
Mon, 30 Sep 2019 05:03:06 +0000 (15:03 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Tue, 1 Oct 2019 05:27:06 +0000 (15:27 +1000)
commitbbae2d1eda63cd1e5aeb2ecf130011c7d3daa34f
treecb80f10dd43830feaed9b5c71d7563dd12dcdedc
parent21d3f8a5eddde004174eba43b80a490c3b09e6f7
decode: Index minor op table with insn bits for opcode 31

This changes decode_op_31_array from being indexed by a ppc_insn_t
(which is derived from the instruction word by a whole series of
if/elsif statements) to being indexed directly by bits 10...1 of
the instruction word.  With this we no longer need ppc_insn.

This then means that the decode1 stage doesn't distinguish between
mfcr and mfocrf, or between mtcrf and mtocrf, since those are
distinguished by the value in bit 20 of the instruction.  To
accommodate that, execute1 changes so that the one op value (OP_MFCR)
does either the mfcr or the mfocrf behaviour depending on bit 20
of the instruction word; and similarly for mtcrf/mtocrf.

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