def assign.put
bend-kit-bits@0.1.0.1 · bits.bend:240
import bend-kit-bits@0.1.0.1/bits.bend as Bits
import Base
240
241def assign.put(+msb: Bool, +max: U32, +sym: U32, +len: U32, r: Array<U32> & U32, t: Array<U32>) -> Array<U32> & Array<U32>:
242 (n, +code) = r
243 +lo = (max - len : U32)
244 +start = Bool.pick(U32, msb, U32.shln(code, U32.to_nat(lo)), rev(U32.to_nat(len), code, 0))
245 +step = Bool.pick(U32, msb, 1, U32.shln(1, U32.to_nat(len)))
246 (Array.set(U32, n, len, (code + 1 : U32)), fill(U32.to_nat(U32.shln(1, U32.to_nat(lo))), t, start, step, ((sym << 5n) .|. len : U32)))