[Libre-soc-isa] [Bug 1047] SVP64 LD/ST Data-Dependent Fail-First providing linked-list walking

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Wed Apr 5 00:32:19 BST 2023


https://bugs.libre-soc.org/show_bug.cgi?id=1047

--- Comment #3 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
from arm-sve-ieee-2017

for (p = &head; p != NULL; ) {
  for (i = 0; p != NULL && i < VL/64; p = p->next)
    p’[i++] = p;// collect up to VL/64 pointers 
  for (j = 0; j < i; j++)
    res ˆ= p’[j]->val; // gather from pointer vector
}

the first loop is literally DD-FFirst with an immediate of
offsetof(p->next) and VLi=false, ff=RC1 (fail on equal to zero)
which will truncate VL to exclude the NULL.

    sv.ld/ff=RC1 *1, 8(*0)

the use of RT=RA+1 creates the dependency-chain.  sv.bc with CTR
mode can be used, terminating if there was truncation. which needs
detecting (the NULL). hmmm...

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Libre-SOC-ISA mailing list