(** Smart constructor for [shrx] *)

(* Specifications: *)
Lemma mk_shrximm_correct:
forall n k c (rs1: regset) v m,
mk_shrximm n k = OK c ->
Val.shrx (rs1#RAX) (Vint n) = Some v ->
exists rs2,
exec_straight ge fn c rs1 m k rs2 m
/\ rs2#RAX = v
/\ forall r, data_preg r = true -> r <> RAX -> r <> RCX -> rs2#r = rs1#r.