def copy_when

stelliferous@0.0.2.0 · tensor_operations.bend:30

import stelliferous@0.0.2.0/tensor_operations.bend as TensorOperations
import Base
import stelliferous@0.0.2.0/storage_buffer.bend as Storage
import stelliferous@0.0.2.0/tensor_view.bend as Views
import stelliferous@0.0.2.0/tensor_access.bend as Access
import stelliferous@0.0.2.0/proofs/tensor_access_certificate.bend as AccessCertificate

30def copy_when(~Element: Data,valid: Bool,count: Maybe<&2,U32>,+source: Views.View,target: Views.View,
31  input: Storage.Buffer<Element>,output: Storage.Buffer<Element>) -> Outcome<(Storage.Buffer<Element> & Storage.Buffer<Element>)>:
32  match valid count:
33    case True{} Some{+count}:
34      Views.View{axes,+offset} = target
35      Storage.Buffer{input,input_length,input_certificate} = input
36      Storage.Buffer{output,output_length,output_certificate} = output
37      +contiguous = Views.is_contiguous(source)
38      Accepted{pair_buffers(~Element,input_length,output_length,
39        Access.copy_run(~Element,contiguous,U32.to_nat(count),source,offset,input,output),
40        AccessCertificate.copy(~Element,contiguous,U32.to_nat(count),source,offset,input,output,input_certificate,output_certificate))}
41    case valid count: Rejected{(input,output)}

Uses (13)

Used by (1)