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()

Uses (8)

Used by (4)