[Libre-soc-dev] cray-style vector of 40 years setting VL=0 at runtime

Jacob Lifshay programmerjake at gmail.com
Sun Oct 2 16:49:24 BST 2022


On Sun, Oct 2, 2022, 04:54 Luke Kenneth Casson Leighton via Libre-soc-dev <
libre-soc-dev at lists.libre-soc.org> wrote:

> jacob can you please read in full and absorb the commit comment here?
>
> https://git.libre-soc.org/?p=openpower-isa.git;a=commitdiff;h=b7e64d86c80eaec5ed30a54b1cb354af4183a6a2


> complaints about how 40-year Cray-style Vectors work is very
> inappropriate to put into the source code that we are using as a
> show-case for the capabilities of Simple-V.


I completely understand the need for VL=0 for *vector* operations (defined
as those operations where at least one operand potentially accesses
multiple elements/subvectors), I'm complaining about the need to set VL!=0
for completely *scalar* operations (defined as those operations that won't
ever access multiple subvectors because all operands are
scalars/subvectors) -- these were never part of Cray's *vector*
instructions and therefore complaining about how they don't match Cray is
pointless because Cray didn't set any precedent for how they should behave.

This was committed before SVP64 Scalar prefixes existed, so at that point
in time scalar operations that access high registers *were* poorly thought
out, as I have pointed out multiple times in the past (SVP64 Scalar prefix
mostly fixed that -- imho we still need something for subvectors, having
all arguments be scalar (even if subvl!=1) for the standard SVP64 prefix
should ignore VL and only execute 1 subvector).

Jacob


More information about the Libre-soc-dev mailing list