(** Processor conditions and comparisons *)

Lemma compare_longs_spec:
forall rs v1 v2 m,
let rs' := nextinstr (compare_longs v1 v2 rs m) in
rs'#ZF = Val.maketotal (Val.cmplu (Mem.valid_pointer m) Ceq v1 v2)
/\ rs'#CF = Val.maketotal (Val.cmplu (Mem.valid_pointer m) Clt v1 v2)
/\ rs'#SF = Val.negativel (Val.subl v1 v2)
/\ rs'#OF = Val.subl_overflow v1 v2
/\ (forall r, data_preg r = true -> rs'#r = rs#r).