(** And integer immediate. *)

(* Specifications: *)
Lemma andimm_base_correct:
forall r1 r2 n k (rs : regset) m,
r2 <> GPR0 ->
let v := Val.and rs#r2 (Vint n) in
exists rs',
exec_straight ge fn (andimm_base r1 r2 n k) rs m  k rs' m
/\ rs'#r1 = v
/\ rs'#CR0_2 = Val.cmp Ceq v Vzero
/\ forall r', important_preg r' = true -> r' <> r1 -> rs'#r' = rs#r'.
Lemma andimm_correct:
forall r1 r2 n k (rs : regset) m,
r2 <> GPR0 ->
exists rs',
exec_straight ge fn (andimm r1 r2 n k) rs m  k rs' m
/\ rs'#r1 = Val.and rs#r2 (Vint n)
/\ forall r', important_preg r' = true -> r' <> r1 -> rs'#r' = rs#r'.