def word64.shl

bendonnect-rpc@0.1.0.0 · src/pb.bend:80

import bendonnect-rpc@0.1.0.0/src/pb.bend as Pb
import Base
import bend-kit-protobuf@0.1.0.0/protobuf.bend as Pb

80# Logical shifts, n in 0..63.
81def word64.shl(w: Pb.Word64, +n: U32) -> Pb.Word64:
82  Pb.Word64{+h, +l} = w
83  +a = (n .&. 31 : U32)
84  +big = U32.is_ge(n, 32)
85  Pb.Word64{
86    Bool.pick(U32, big, (l << U32.to_nat(a) : U32), ((h << U32.to_nat(a)) .|. (l >> U32.to_nat((32 - a : U32))) : U32)),
87    Bool.pick(U32, big, 0, (l << U32.to_nat(a) : U32))}

Uses (10)

Used by (2)