def movement
stelliferous@0.0.2.0 · kernel_planning.bend:158
import stelliferous@0.0.2.0/kernel_planning.bend as KernelPlanning
import Base
import stelliferous@0.0.2.0/kernel_cost.bend as Cost
158def movement(depth: Nat,+offset: U32,+span: U32,+window: InputRows,+work: Work,+config: Cost.Configuration) -> Movement:
159 match depth:
160 case 0n:
161 Work{+positions,inner,rows,owners,geometry,activation} = work
162 leaf_cost(span,U32.min(span,(positions - offset : U32)),work,config)
163 case 1n+ +rest:
164 Cost.Configuration{mac,byte_ns,operation_ns,grain,wake} = config
165 +half = (span / 16 * 8 : U32)
166 +fork = fork_input(offset,half,window,work)
167 merge(fork_bytes(work,forked_bytes(fork)),fork_bytes(work,forked_transfer(fork)),byte_ns,movement(rest,offset,half,forked_left(fork),work,config),
168 movement(rest,(offset + half : U32),(span - half : U32),window,work,config))