[Libre-soc-dev] [RFC] SVP64 on branch instructions

Luke Kenneth Casson Leighton lkcl at lkcl.net
Sun Aug 15 17:24:31 BST 2021

ok so there are now two first unit tests, "sv.bc" and "sv.bc/all".

sv.bc/all makes a bit of a mess of the pseudocode, it's a Finite State Machine
where ISACaller is calling the sv.bc operation once per element.

in the case of sv.bc/all it is necessary to branch *ONLY* when *ALL*
tests are successful... but the tests actually need to be done.

normal bc pseudocode:

      if cond_ok then branch

sv.bc pseudocode:

     if cond_ok and last element in VL loop:

it's more complex than that, though.

     if NOT last element and cond NOT ok
         terminate entire VL loop with early-out

non-ALL mode (ANY mode) is more straightforward, but again,
on branch, you must not continue to do further tests!  so branch
definitely terminates the VL loop...

... but in Vertical-First Mode it's a completely different story,
much more like a standard scalar branch.

there's an awful lot going on, quite fascinating.


More information about the Libre-soc-dev mailing list