def scatter

stelliferous@0.0.2.0 · proofs/traversal_lanes_witness.bend:57

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/kernel_tile.bend as Tile
import stelliferous@0.0.2.0/proofs/storage_witness.bend as Witness

57def scatter(+depth: Nat,-values: Array<F32>,+position: U32,-tile: Tile.Tile8,witness: Witness.Witness(F32,depth,values)) ->
58  Witness.Witness(F32,depth,Lanes.scatter(values,position,tile)):
59  +p1 = (position + 1 : U32)
60  +p2 = (p1 + 1 : U32)
61  +p3 = (p2 + 1 : U32)
62  +p4 = (p3 + 1 : U32)
63  +p5 = (p4 + 1 : U32)
64  +p6 = (p5 + 1 : U32)
65  +p7 = (p6 + 1 : U32)
66  -o1 = Array.set(F32,values,position,Tile.lane0(tile))
67  -o2 = Array.set(F32,o1,p1,Tile.lane1(tile))
68  -o3 = Array.set(F32,o2,p2,Tile.lane2(tile))
69  -o4 = Array.set(F32,o3,p3,Tile.lane3(tile))
70  -o5 = Array.set(F32,o4,p4,Tile.lane4(tile))
71  -o6 = Array.set(F32,o5,p5,Tile.lane5(tile))
72  -o7 = Array.set(F32,o6,p6,Tile.lane6(tile))
73  witness = Witness.write(F32,depth,values,position,Tile.lane0(tile),witness)
74  witness = Witness.write(F32,depth,o1,p1,Tile.lane1(tile),witness)
75  witness = Witness.write(F32,depth,o2,p2,Tile.lane2(tile),witness)
76  witness = Witness.write(F32,depth,o3,p3,Tile.lane3(tile),witness)
77  witness = Witness.write(F32,depth,o4,p4,Tile.lane4(tile),witness)
78  witness = Witness.write(F32,depth,o5,p5,Tile.lane5(tile),witness)
79  witness = Witness.write(F32,depth,o6,p6,Tile.lane6(tile),witness)
80  Witness.write(F32,depth,o7,p7,Tile.lane7(tile),witness)

Uses (18)

Used by (2)