[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