///
/// all input arrays have length `vl`
def reduce(vl, vec, pred):
+ pred = copy(pred) # must not damage preficate
step = 1;
while step < vl
step *= 2;
and does not require additional state to be saved on context-switching.
```
-def reduce( vl, vec, pred, pred,):
+def reduce( vl, vec, pred ):
+ pred = copy(pred) # must not damage predicate
j = 0
vi = [] # array of lookup indices to skip nonpredicated
for i, pbit in enumerate(pred):