[Libre-soc-bugs] [Bug 755] add grev instruction (OP_GREV)

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Mon Mar 7 22:44:12 GMT 2022


https://bugs.libre-soc.org/show_bug.cgi?id=755

--- Comment #41 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Jacob Lifshay from comment #40)
> (In reply to Luke Kenneth Casson Leighton from comment #39)
> > https://libre-soc.org/openpower/sv/grevlut2x2.jpg
> > 
> > a separate left-right LUT2 table gives a lot more options
> > both for creating constants (RA=0) as well as in more general
> > circumstsances.
> 
> in order to actually have a grev, that lut2 version would need a different
> lookup table for each row of the butterfly network...

look again at the pseudocode. the option to disable the lut2 on a
per-row basis is still there:

https://git.libre-soc.org/?p=libreriscv.git;a=blob;f=openpower/sv/bitmanip.mdwn;hb=HEAD#l332


> that's a prohibitive
> number of immediates (2*4*6 = 24 bits) for a lut2butterfly instruction.
> also, we'd still want grev as a separate instruction.

it becomes grevlut(immediate=0b10101010) or something like that.

and gorc becomes grevlut(immediate=0b11101110) or something like that

gxorc would be grevlut(immediate=0b01100110) or something


> The other issue is the same as in the shift/rotate circuit: a lut2 has more
> delay than a mux, making grev slower than 1 clock cycle (assuming the
> shift/rotate barely fits in 1 cycle)

i deliberately didn't use LUT3 for exactly this reason, that would
almost certainly be over budget

yes it's worth checking the longest-path in yosys after doing "synth"
and/or "synth_ecp5".

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


More information about the libre-soc-bugs mailing list