Remark int64_eq_xor:
forall p q, Int64.eq p q = Int64.eq (Int64.xor p q) Int64.zero.

(* Specifications: *)
Theorem eval_cmplu:
forall c le a x b y v,
eval_expr ge sp e m le a x ->
eval_expr ge sp e m le b y ->
Val.cmplu (Mem.valid_pointer m) c x y = Some v ->
Archi.ptr64 = false ->
eval_expr ge sp e m le (cmplu c a b) v.
Lemma eval_cmpl_gen:
forall ch cl a b le x y,
eval_expr ge sp e m le a (Vlong x) ->
eval_expr ge sp e m le b (Vlong y) ->
eval_expr ge sp e m le (cmpl_gen ch cl a b)
(Val.of_bool (if Int.eq (Int64.hiword x) (Int64.hiword y)
then Int.cmpu cl (Int64.loword x) (Int64.loword y)
else Int.cmp ch (Int64.hiword x) (Int64.hiword y))).