Section CONSTRUCTORS.
Variable ge: genv.
Variable fn: function.
(** Properties of comparisons. *)
(** Loading a constant. *)
(** Add integer immediate. *)
(** And integer immediate. *)
(** Or integer immediate. *)
(** Xor integer immediate. *)
(** Rotate and mask. *)
(** Load int64 constant. *)
(** Alternate load int64 immediate *)
(** Add int64 immediate. *)
(** Or int64 immediate. *)
(** Xor int64 immediate. *)
(** And int64 immediate. *)
(** Rotate-and-mask for int64 *)
(** Indexed memory loads. *)
(** Indexed memory stores. *)
(** Float comparisons. *)

Lemma floatcomp_correct:
forall cmp (r1 r2: freg) k rs m,
exists rs',
exec_straight ge fn (floatcomp cmp r1 r2 k) rs m k rs' m
/\ rs'#(reg_of_crbit (fst (crbit_for_fcmp cmp))) =
(if snd (crbit_for_fcmp cmp)
then Val.cmpf cmp rs#r1 rs#r2
else Val.notbool (Val.cmpf cmp rs#r1 rs#r2))
/\ forall r',
r' <> PC -> r' <> CR0_0 -> r' <> CR0_1 ->
r' <> CR0_2 -> r' <> CR0_3 -> rs'#r' = rs#r'.