[libre-riscv-dev] [Bug 333] investigate why CR pipeline code took 100% CPU and locked up generating ILANG
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Wed May 20 20:42:50 BST 2020
https://bugs.libre-soc.org/show_bug.cgi?id=333
--- Comment #7 from Michael Nolan <mtnolan2640 at gmail.com> ---
(In reply to Luke Kenneth Casson Leighton from comment #6)
> this is dreadful:
>
> for i in range(4):
> comb += cr_out_arr[bf*4 + i].eq(cr_arr[bfa*4 + i])
>
> the computation of the index is done almost a hundred times or more.
> 32x4 times.
>
> for now it can be done again with a mask (shifted). two masks - one
> to shift-extract cr[bfa*4..+4], shift by the *difference* between
> bf and bfa then bit-mask in.
>
> dreadful.
>
> we really need to split CR out into its 8 separate CRs. XER's fields
> are going to have to be done this way anyway.
So for this module, how would that work? I'm assuming we wouldn't be passing in
all 8 CRs, because that would be just as bad as what we have now. But we need
the full CR for mfcr and mtcrf. Would we have 2 small cr inputs as well as the
full cr, and depending on whether which opcode it is we select which one to
use?
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-riscv-dev
mailing list