[libre-riscv-dev] partitioned compare and mux

Michael Nolan mtnolan2640 at gmail.com
Fri Feb 7 14:07:00 GMT 2020


Luke Kenneth Casson Leighton <lkcl at lkcl.net> writes:

> (sorry, needs to be on list michael, this is major internal design functionality)
>
Oops sorry, didn't notice that you CC'd the mailing list, thought it was
just sent to me.

> basically if one partition bit is set, that's the condition to ripple the intermediary
> output up to when the next partition bit is set.
>
> it's a chain of crossbars again, basically.  partition bit indicates "take from
> previous crossbar or take from intermediate output".

The code I have now to ripple up is slightly simpler, because the
gt_combiner code will only set the MSB of the partition and not any bit
in the partition if the result is true. It sounds though like you want
something like this: (assume this is all in one partition)

0x8 -> 0xf
0x4 -> 0x7
0x2 -> 0x3
0x1 -> 0x1

>
> interestingly we actually need that as a function in the vector predicate mask
> code so if you can create a module for it that would be real handy.

I can implement it as one module that can be shared, but cost slightly
more logic in the case of the partitioned comparison, or as two
diffferent modules, one for the partitioned comparison and one for the
vector predicate mask.

--Michael



More information about the libre-riscv-dev mailing list