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