Definition rol (x y: aval) :=
  match y, x with
  | I j, I i => I(Int.rol i j)
  | I j, Uns p n => uns p (n + Int.unsigned j)
  | I j, Sgn p n => if zlt n Int.zwordsize then sgn p (n + Int.unsigned j) else ntop1 x
  | _, _ => ntop1 x
  end.

(* Specifications: *)
Lemma rol_sound: forall v w x y, vmatch v x -> vmatch w y -> vmatch (Val.rol v w) (rol x y).