Implement byte reversal instructions
authorPaul Mackerras <paulus@ozlabs.org>
Sat, 9 Sep 2023 12:14:03 +0000 (22:14 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Tue, 12 Sep 2023 22:43:25 +0000 (08:43 +1000)
commitb50170cd1d158ed6ae19e98d9b4cca022b6b2c2f
treebe58f5b99ace9cf46825f8b6ce91b3f8aeaec3a6
parentfd8c0000c03c00be91aee83f578ccf18ccbcb5bb
Implement byte reversal instructions

This implements the byte-reverse halfword, word and doubleword
instructions: brh, brw, and brd.  These instructions were added to the
ISA in version 3.1.  They use a new OP_BREV insn_type value.  The
logic for these instructions is implemented in logical.vhdl.

In order to avoid going over 64 insn_type values, OP_AND and OP_OR
were combined into OP_LOGIC, which is like OP_AND except that the RS
input can be inverted as well as the RB input.  The various forms of
OR instruction are then implemented using the identity

    a OR b = NOT (NOT a AND NOT b)

The 'is_signed' field of the instruction decode table is used to
indicate that RS should be inverted.

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