[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>
> 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.
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.
algorithm does not set VL=1 ==> algorithm is flawed.
call setvli 1 and algorithm is now correct.
crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68
More information about the Libre-soc-dev