[Libre-soc-dev] mfocr and mtocrf v3.0B spec ambiguity

Luke Kenneth Casson Leighton lkcl at lkcl.net
Fri Aug 28 09:43:17 BST 2020


On Friday, August 28, 2020, Paul Mackerras <paulus at ozlabs.org> wrote:

>
> > otherwise, applications are guaranteed to break.
>
> Well, only if compilers or assembly language programmers use mfocrf
> with more than one bit set in FXM, which would be a perverse thing to
> do...


:)

they aren't likely to, i would agree, if they don't know it's possible.
still, clarifying the spec here to take into account bit 20 is.. sensible.
it would mean back at section 1.6 to add a field in XFX-Form (please not
"L"!  or if it is, only "L" if there are no other fields named "L" in
XFX-Form)

then referencing that in the text for mfocr and mtocrf.


fascinatingly the design of the CR regfile in libresoc is unary encoded
with an 8 bit mask that could, in fact, use FXM directly, both as read or
write.

as in the FXM field literally wired bit-for-bit gets the CR value needed,
making the CR pipeline for mfocr etc trivial.  no read modify write needed,
no mask needed.

having to do the one-hot picking is ironically a "nuisance" (not really),
it is quite trivial to put FXM through a one-hot (or not) depending on
whether bit 20 is set.

i can see how this instruction evolved, it is quite fascinating.

l.




-- 
---
crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68


More information about the Libre-soc-dev mailing list