summaryrefslogtreecommitdiff
path: root/ia32/Asmgenproof.v
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2011-08-14 15:41:26 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2011-08-14 15:41:26 +0000
commit5aea6849eed83009e300b04ef17786643ead9cbc (patch)
treeeb9a329ce46a7ddc568a2fba7692b8eaea1e618f /ia32/Asmgenproof.v
parentfd0f28867db2f183216b27d7030265ae9e887586 (diff)
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
Diffstat (limited to 'ia32/Asmgenproof.v')
-rw-r--r--ia32/Asmgenproof.v18
1 files changed, 15 insertions, 3 deletions
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: