From 5aea6849eed83009e300b04ef17786643ead9cbc Mon Sep 17 00:00:00 2001 From: xleroy Date: Sun, 14 Aug 2011 15:41:26 +0000 Subject: Locations.v: add Loc.diff_dec. ia32: lift restriction that 1st arg of ops cannot be ECX (could be useful for a future, better reloading strategy) git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1711 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e --- ia32/Asmgenproof.v | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'ia32/Asmgenproof.v') diff --git a/ia32/Asmgenproof.v b/ia32/Asmgenproof.v index 6c68b37..5b98d27 100644 --- a/ia32/Asmgenproof.v +++ b/ia32/Asmgenproof.v @@ -332,7 +332,19 @@ Remark mk_shift_label: find_label lbl c = find_label lbl k. Proof. unfold mk_shift; intros. - destruct (ireg_eq r2 ECX); monadInv H; simpl; rewrite H0; auto. + destruct (ireg_eq r2 ECX). monadInv H; simpl; rewrite H0; auto. + destruct (ireg_eq r1 ECX); monadInv H; simpl; rewrite H0; auto. +Qed. + +Remark mk_mov2_label: + forall r1 r2 r3 r4 k, + find_label lbl (mk_mov2 r1 r2 r3 r4 k) = find_label lbl k. +Proof. + intros; unfold mk_mov2. + destruct (ireg_eq r1 r2); auto. + destruct (ireg_eq r3 r4); auto. + destruct (ireg_eq r3 r2); auto. + destruct (ireg_eq r1 r4); auto. Qed. Remark mk_div_label: @@ -343,7 +355,7 @@ Proof. unfold mk_div; intros. destruct (ireg_eq r1 EAX). destruct (ireg_eq r2 EDX); monadInv H; simpl; rewrite H0; auto. - destruct (ireg_eq r2 EAX); monadInv H; simpl; rewrite H0; auto. + monadInv H; simpl. rewrite mk_mov2_label. simpl; rewrite H0; auto. Qed. Remark mk_mod_label: @@ -354,7 +366,7 @@ Proof. unfold mk_mod; intros. destruct (ireg_eq r1 EAX). destruct (ireg_eq r2 EDX); monadInv H; simpl; rewrite H0; auto. - destruct (ireg_eq r2 EDX); monadInv H; simpl; rewrite H0; auto. + monadInv H; simpl. rewrite mk_mov2_label. simpl; rewrite H0; auto. Qed. Remark mk_shrximm_label: -- cgit v1.2.3