[libre-riscv-dev] [Bug 186] Create decoder for SOC

bugzilla-daemon at libre-riscv.org bugzilla-daemon at libre-riscv.org
Mon Feb 24 19:42:06 GMT 2020


http://bugs.libre-riscv.org/show_bug.cgi?id=186

--- Comment #8 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Michael Nolan from comment #7)
> Oh no. RLWINM & friends is going to be fun to do with the partitioned
> shifter. Maybe it warrants its own module?

deefinitely.  there is actually a way to "construct" it from *two*
PartitionedShifters:

* create an "inversion" (bitwise inversion) of both the mask *and* A-input
* run through the SAME (existing) DynamicPartitionedShifter

this is how you do "right shift"

then, you basically do a hybrid combination of left-shift ORed with
right-shift, where the right-shift part is done (32-B) and the left-shift
part is (B)

however... because of the dynamic partitioning, obviously that's (16-B)
for 16-bit-wide partitions etc. etc.

now, we *could* hypothetically do that as micro-ops, exactly as we discussed
a few days ago:

* put the data first through the left-shifter and store it as a partial result
* put the data next through the left-shifter (after inversion)
* do the OR (and ANDing) operation as a third phase

i am tempted to suggest trying that, first, rather than writing a
"special dedicated RLWINM" operation.

do you want to give that a shot?  see if it's first possible to create a
Dynamic Right-Shifter out of a Dynamic Left-Shifter?

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-riscv-dev mailing list