[Libre-soc-dev] SVP64 auto-generated table for microwatt decoding
Richard Wilbur
richard.wilbur at gmail.com
Sun Feb 28 19:05:11 GMT 2021
> On Feb 27, 2021, at 11:38, Luke Kenneth Casson Leighton <lkcl at lkcl.net> wrote:
>
> done. that's better. example:
>
> constant sv_minor_31_decode_rom_array :
> sv_minor_31_rom_array_t := (
> ....
> 2#0000011010# => (P2, EXTRA3, RS, NONE, NONE, RA, NONE, CR0, Idx1,
> NONE, NONE, Idx0, NONE, Idx0), -- cntlzw
> ....
>
> the columns are:
> * Twin/Single Predication
> * EXTRA2/3
> * in1/2/3/out
> * CRIn/Out
> * SVP64 reg-EXTRA-augment in1/2/3/out
> * SVP64 reg-EXTRA-augment CRIn and CRout
I find this more confusing than necessary. The first two specifications use ‘/‘ to specify ‘or’ alternatives while ‘*’ denotes next item—which in a column description tends to denote next column. After the first two entries: ‘/‘ denotes next column, and ‘*’ denotes next topic group.
Given your explanation that followed this column specification, I find the following less confusing.
the columns are:
* Twin/Single Predication
* EXTRA2/3
—Base (Scalar) registers
* in1
* in2
* in3
* out
* CRIn
* CROut
—SVP64 reg-EXTRA-augment
* in1
* in2
* in3
* out
* CRIn
* CROut
> the example says that:
>
> * cntlzw can beTwin-Predicated (P2) (one predicate for source, one for dest)
> * that bits 10-18 must be decoded as 3-bits per register-augmentation
> (EXTRA3)
> * that in1=RS (we know) and out=RA (we know) and also CR0 is an output
> * that to Vector-augment 'in1' (RS) we must look up Index *1* of the bits
> 10-18 (bits 13-15)
> * that to Vector-augment 'out' (RA) we must look up Index *0* of the bits
> 10-18 (bits 10-12)
> * that to Vector-augment CRout (CR0) we must again also look up Index 0 to
> see if it is "Vectorised".
More information about the Libre-soc-dev
mailing list