def gathered

stelliferous@0.0.2.0 · proofs/traversal_lanes_witness.bend:15

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

15def gathered(~Context: Data,~map: Context -> F32 -> F32,-values: Array<F32>,+position: U32,+context: Context,
16  r0: Witness.Read<F32,values,Array.get(F32,values,position)>,
17  r1: Witness.Read<F32,values,Array.get(F32,values,(position + 1 : U32))>,
18  r2: Witness.Read<F32,values,Array.get(F32,values,((position + 1 : U32) + 1 : U32))>,
19  r3: Witness.Read<F32,values,Array.get(F32,values,(((position + 1 : U32) + 1 : U32) + 1 : U32))>,
20  r4: Witness.Read<F32,values,Array.get(F32,values,((((position + 1 : U32) + 1 : U32) + 1 : U32) + 1 : U32))>,
21  r5: Witness.Read<F32,values,Array.get(F32,values,(((((position + 1 : U32) + 1 : U32) + 1 : U32) + 1 : U32) + 1 : U32))>,
22  r6: Witness.Read<F32,values,Array.get(F32,values,((((((position + 1 : U32) + 1 : U32) + 1 : U32) + 1 : U32) + 1 : U32) + 1 : U32))>,
23  r7: Witness.Read<F32,values,Array.get(F32,values,(((((((position + 1 : U32) + 1 : U32) + 1 : U32) + 1 : U32) + 1 : U32) + 1 : U32) + 1 : U32))>) ->
24  Gathered<values,Lanes.gather(~Context,~map,values,position,context)>:
25  match r0 r1 r2 r3 r4 r5 r6 r7:
26    case Witness.Read{a,ea} Witness.Read{b,eb} Witness.Read{c,ec} Witness.Read{d,ed} Witness.Read{e,ee} Witness.Read{f,ef} Witness.Read{g,eg} Witness.Read{h,eh}:
27      +p1 = (position + 1 : U32)
28      +p2 = (p1 + 1 : U32)
29      +p3 = (p2 + 1 : U32)
30      +p4 = (p3 + 1 : U32)
31      +p5 = (p4 + 1 : U32)
32      +p6 = (p5 + 1 : U32)
33      +p7 = (p6 + 1 : U32)
34      %Equal.sym(Array<F32> & F32,Array.get(F32,values,position),(values,a),ea) : Gathered<values,Lanes.gather1(~Context,~map,position,context,_)>
35      %Equal.sym(Array<F32> & F32,Array.get(F32,values,p1),(values,b),eb) : Gathered<values,Lanes.gather2(~Context,~map,p1,context,a,_)>
36      %Equal.sym(Array<F32> & F32,Array.get(F32,values,p2),(values,c),ec) : Gathered<values,Lanes.gather3(~Context,~map,p2,context,a,b,_)>
37      %Equal.sym(Array<F32> & F32,Array.get(F32,values,p3),(values,d),ed) : Gathered<values,Lanes.gather4(~Context,~map,p3,context,a,b,c,_)>
38      %Equal.sym(Array<F32> & F32,Array.get(F32,values,p4),(values,e),ee) : Gathered<values,Lanes.gather5(~Context,~map,p4,context,a,b,c,d,_)>
39      %Equal.sym(Array<F32> & F32,Array.get(F32,values,p5),(values,f),ef) : Gathered<values,Lanes.gather6(~Context,~map,p5,context,a,b,c,d,e,_)>
40      %Equal.sym(Array<F32> & F32,Array.get(F32,values,p6),(values,g),eg) : Gathered<values,Lanes.gather7(~Context,~map,p6,context,a,b,c,d,e,f,_)>
41      %Equal.sym(Array<F32> & F32,Array.get(F32,values,p7),(values,h),eh) : Gathered<values,Lanes.gathered(~Context,~map,context,a,b,c,d,e,f,g,_)>
42      Gathered{Tile.Tile{map(context,a),map(context,b),map(context,c),map(context,d),map(context,e),map(context,f),map(context,g),map(context,h)},{==}}

Uses (20)

Used by (1)