def W64.shr.pick
bend-osdev-word64@0.1.1.0 · word64.bend:194
import bend-osdev-word64@0.1.1.0/word64.bend as Word64
import Base
194def W64.shr.pick(z: Bool, lt32: Bool, lt64: Bool, +k: Nat, a: W64) -> W64:
195 match z lt32 lt64:
196 case True{} _ _:
197 a
198 case False{} True{} _:
199 match a:
200 case W64{+h, l}:
201 W64{U32.shrn(h, k), U32.or(U32.shrn(l, k), U32.shln(h, Nat.sub(32n, k)))}
202 case False{} False{} True{}:
203 match a:
204 case W64{h, l}:
205 W64{0, U32.shrn(h, Nat.sub(k, 32n))}
206 case False{} False{} False{}:
207 W64.zero()