def copy.pick
bend-kit-bytes@0.3.3.0 · bytes.bend:99
import bend-kit-bytes@0.3.3.0/bytes.bend as Bytes
import Base
99def copy.pick(aligned: Bool, +m: U32, src: Array<U32>, dst: Array<U32>, +s: U32, +d: U32) -> Array<U32> & Array<U32>:
100 match aligned:
101 case True{}:
102 +w = (m >> 2n : U32)
103 +k = (w * 4 : U32)
104 copy.tail((m - k : U32), (s + k : U32), (d + k : U32), copy.words(U32.to_nat(w), Array.get(U32, src, (s >> 2n : U32)), dst, (s >> 2n : U32), (d >> 2n : U32)))
105 case False{}:
106 +w = (m >> 2n : U32)
107 +k = (w * 4 : U32)
108 copy.tail((m - k : U32), (s + k : U32), (d + k : U32), copy.shift.at(w, ((s .&. 3 : U32) * 8 : U32), (s >> 2n : U32), (d >> 2n : U32), Array.get(U32, src, (s >> 2n : U32)), dst))