def W64.shl.pick
bend-osdev-word64@0.1.1.0 · word64.bend:175
import bend-osdev-word64@0.1.1.0/word64.bend as Word64
import Base
175
176def W64.shl.pick(z: Bool, lt32: Bool, lt64: Bool, +k: Nat, a: W64) -> W64:
177 match z lt32 lt64:
178 case True{} _ _:
179 a
180 case False{} True{} _:
181 match a:
182 case W64{h, +l}:
183 W64{U32.or(U32.shln(h, k), U32.shrn(l, Nat.sub(32n, k))), U32.shln(l, k)}
184 case False{} False{} True{}:
185 match a:
186 case W64{h, l}:
187 W64{U32.shln(l, Nat.sub(k, 32n)), 0}
188 case False{} False{} False{}:
189 W64.zero()