Make divider hang off the side of execute1
authorPaul Mackerras <paulus@ozlabs.org>
Wed, 11 Dec 2019 21:47:42 +0000 (08:47 +1100)
committerPaul Mackerras <paulus@ozlabs.org>
Tue, 14 Jan 2020 06:20:52 +0000 (17:20 +1100)
commit39d18d27388ee97ef598e8ee5ce73d30db257b0a
treedcc06ae357d4eea05936b1a79cdb1ee8d7cdc7b2
parent2167186b5fae691b2a165cc5bfaaa79fe4713733
Make divider hang off the side of execute1

With this, the divider is a unit that execute1 sends operands to and
which sends its results back to execute1, which then send them to
writeback.  Execute1 now sends a stall signal when it gets a divide
or modulus instruction until it gets a valid signal back from the
divider.  Divide and modulus instructions are no longer marked as
single-issue.

The data formatting step that used to be done in decode2 for div
and mod instructions is now done in execute1.  We also do the
absolute value operation in that same cycle instead of taking an
extra cycle inside the divider for signed operations with a
negative operand.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Makefile
common.vhdl
core.vhdl
decode1.vhdl
decode2.vhdl
decode_types.vhdl
divider.vhdl
divider_tb.vhdl
execute1.vhdl
writeback.vhdl