def run.bases

bend-parallel@0.1.0.0 · sort.bend:349

import bend-parallel@0.1.0.0/sort.bend as Sort
import Base
import bend-parallel@0.1.0.0/scan.bend as Scan

349# Pass 2c: by fwds when lo (a small table), else by bases.
350def run.bases(lo: Bool, +d: Nat, +e: Nat, +kb: Nat, +k: U32, ks: Array<U32>, pm: Array<U32>, cs: Array<U32>, t: Array<U32>, r: Array<U32> & U32) -> Array<U32> & Bufs:
351  match lo:
352    case True{}:
353      (os, +n) = r
354      +g = Nat.min(d, kb)
355      run.puts(d, e, kb, k, ks, pm, cs, fwds(g, 0, Nat.sub(kb, g), k, kb,
356        U32.to_nat((U32.shln(1, d) - 1 : U32)), Array.fork(U32, t), Array.fork(U32, os)))
357    case False{}:
358      (os, +n) = r
359      +g = Nat.min(d, kb)
360      +h = Scan.half(d)
361      run.puts(d, e, kb, k, ks, pm, cs, bases(Nat.add(h, g), 0, g, Nat.sub(kb, g), Nat.sub(d, h), kb, k,
362        Array.fork(U32, t), Array.fork(U32, os)))

Uses (18)

Used by (1)