def copy_bands

stelliferous@0.0.2.0 · tensor_layout.bend:63

import stelliferous@0.0.2.0/tensor_layout.bend as TensorLayout
import Base
import stelliferous@0.0.2.0/storage_buffer.bend as Storage
import stelliferous@0.0.2.0/tensor.bend as Tensors
import stelliferous@0.0.2.0/tensor_band.bend as Bands

63# The only layout operation that keeps its argument: (original, copy).
64def copy_bands(~Element: Data,status: Tensors.Status,bands: Bands.Bands(~Element),+geometry: Bands.Geometry,+shape: List<&2,U32>,+fill: Element,+workers: U32) ->
65  Tensors.Tensor<Element> & Tensors.Tensor<Element>:
66  match status:
67    case Tensors.Usable{}:
68      Storage.bind_pair(~Bands.Bands(~Element),~Bands.Bands(~Element),~(Tensors.Tensor<Element> & Tensors.Tensor<Element>),
69        Bands.copy(~Element,bands),left => right =>
70          (Tensors.Banded{left,geometry,shape,fill,Tensors.Usable{},workers},Tensors.Banded{right,geometry,shape,fill,Tensors.Usable{},workers}))
71    case Tensors.Failed{+problem}:
72      (Tensors.Banded{bands,geometry,shape,fill,Tensors.Failed{problem},workers},
73        Tensors.Tensor{Tensors.buffer(~Element,fill,0),shape,fill,Tensors.Failed{problem},workers})

Uses (11)

Used by (1)