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.

Theorem eval_shrxlimm:
forall le a n x z,
eval_expr ge sp e m le a x ->
Val.shrxl x (Vint n) = Some z ->
exists v, eval_expr ge sp e m le (shrxlimm a n) v /\ Val.lessdef z v.