[Libre-soc-dev] scalar instructions and SVP64

Luke Kenneth Casson Leighton lkcl at lkcl.net
Wed Mar 10 01:03:44 GMT 2021


On Wednesday, March 10, 2021, Jacob Lifshay <programmerjake at gmail.com>
wrote:

> return a;
> }
>
> say the compiler decides `a` should be stored in register 127 since the
> other registers are in-use or something...now, since VL is left set to 0 at
> the end of the loop,


this will be unacceptable to do that (leave VL setvto zero)

it will be required to set VL=1.

sounds tough, but it is.. well... tough.

in the old version this is precisely why in the 64 bit variant i added the
ability to set VL *in* the 64 bit prefix.

as we could not do combined 48 and 64 we cannot do that and had to
sacrifice the capability.

it is a frickin nuisance because embedding VL setting into the prefix
allowed things like LDST Multi to be one single 64 bit instruction.

but... tough.

and no, i made it clear multiple times: compromising SV by adding in
exceptions to the rules are not ok.

future versions we may work out a way to set VL in the old way.

if VL=0 means "scalar is expected" then we just destroyed any hope of that.

so no.

not happening.

algorithm does not set VL=1 ==> algorithm is flawed.

call setvli 1 and algorithm is now correct.

l.




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


More information about the Libre-soc-dev mailing list