Remark decompose_cmpl_eq_zero:
forall h l,
Int64.eq (Int64.ofwords h l) Int64.zero = Int.eq (Int.or h l) Int.zero.

(* Specifications: *)
Lemma eval_cmpl_eq_zero:
forall le a x,
eval_expr ge sp e m le a (Vlong x) ->
eval_expr ge sp e m le (cmpl_eq_zero a) (Val.of_bool (Int64.eq x Int64.zero)).
Lemma eval_cmpl_ne_zero:
forall le a x,
eval_expr ge sp e m le a (Vlong x) ->
eval_expr ge sp e m le (cmpl_ne_zero a) (Val.of_bool (negb (Int64.eq x Int64.zero))).
Lemma eval_cmplu_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 (cmplu_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.cmpu ch (Int64.hiword x) (Int64.hiword y))).