Proof with (try discriminate).
intros. unfold is_longconst in *. destruct Archi.splitlong.
eapply SplitLongproof.is_longconst_sound; eauto.
assert (a = Eop (Olongconst n) Enil).
{ destruct a... destruct o... destruct e0... congruence. }
subst a. InvEval. auto.
Qed.

Lemma eval_modl_aux:
forall divop semdivop,
(forall sp x y m, eval_operation ge sp divop (x :: y :: nil) m = semdivop x y) ->
forall le a b x y z,
eval_expr ge sp e m le a x ->
eval_expr ge sp e m le b y ->
semdivop x y = Some z ->
eval_expr ge sp e m le (modl_aux divop a b) (Val.subl x (Val.mull z y)).