def scattered

stelliferous@0.0.2.0 · proofs/traversal_lanes_witness.bend:87

import stelliferous@0.0.2.0/proofs/traversal_lanes_witness.bend as TraversalLanesWitness
import Base
import stelliferous@0.0.2.0/traversal_lanes.bend as Lanes
import stelliferous@0.0.2.0/traversal_cells.bend as Cells
import stelliferous@0.0.2.0/kernel_tile.bend as Tile
import stelliferous@0.0.2.0/proofs/storage_witness.bend as Witness

87def scattered(~Context: Data,+depth: Nat,-values: Array<F32>,-scratch: Array<Tile.Tile8>,+position: U32,+slot: U32,+context: Context,
88  values_witness: Witness.Witness(F32,depth,values),scratch_witness: Witness.Witness(Tile.Tile8,6n,scratch),
89  read: Witness.Read<Tile.Tile8,scratch,Array.get(Tile.Tile8,scratch,slot)>) ->
90  Evidence<Context,depth,Cells.scattered(~Array<F32>,~Tile.Tile8,~Context,~Lanes.scatter,~8,position,slot,context,values,Array.get(Tile.Tile8,scratch,slot))>:
91  match read:
92    case Witness.Read{tile,equation}:
93      %Equal.sym(Array<Tile.Tile8> & Tile.Tile8,Array.get(Tile.Tile8,scratch,slot),(scratch,tile),equation) :
94        Evidence<Context,depth,Cells.scattered(~Array<F32>,~Tile.Tile8,~Context,~Lanes.scatter,~8,position,slot,context,values,_)>
95      Evidence{Lanes.scatter(values,position,tile),scratch,(position + 8 : U32),U32.and((slot + 1 : U32),63),context,{==},
96        scatter(depth,values,position,tile,values_witness),scratch_witness}

Uses (17)

Used by (1)