[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
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