aboutsummaryrefslogtreecommitdiffstats
path: root/x86
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-03-03 11:30:23 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-03-03 11:30:23 +0100
commit577d3dbeb54aaf23db19dddf149c48764e20c58d (patch)
tree0d8d9d973790340dfb46553f2a48e87e02ca8604 /x86
parent3fc937ddc8f82525081bca67818ca87f448f618e (diff)
downloadcompcert-kvx-577d3dbeb54aaf23db19dddf149c48764e20c58d.tar.gz
compcert-kvx-577d3dbeb54aaf23db19dddf149c48764e20c58d.zip
moved away x86-dependent parts
Diffstat (limited to 'x86')
-rw-r--r--x86/CSE2depsproof.v46
1 files changed, 46 insertions, 0 deletions
diff --git a/x86/CSE2depsproof.v b/x86/CSE2depsproof.v
index f4eace6f..84b22c69 100644
--- a/x86/CSE2depsproof.v
+++ b/x86/CSE2depsproof.v
@@ -213,3 +213,49 @@ Section MEMORY_WRITE.
End SAME_GLOBALS.
End MEMORY_WRITE.
End SOUNDNESS.
+
+
+Section SOUNDNESS.
+ Variable F V : Type.
+ Variable genv: Genv.t F V.
+ Variable sp : val.
+
+Lemma may_overlap_sound:
+ forall m m' : mem,
+ forall chunk addr args chunk' addr' args' v a a' vl rs,
+ (eval_addressing genv sp addr (rs ## args)) = Some a ->
+ (eval_addressing genv sp addr' (rs ## args')) = Some a' ->
+ (may_overlap chunk addr args chunk' addr' args') = false ->
+ (Mem.storev chunk m a v) = Some m' ->
+ (Mem.loadv chunk' m a') = Some vl ->
+ (Mem.loadv chunk' m' a') = Some vl.
+Proof.
+ intros until rs.
+ intros ADDR ADDR' OVERLAP STORE LOAD.
+ destruct addr; destruct addr'; try discriminate.
+ { (* Aindexed / Aindexed *)
+ destruct args as [ | base [ | ]]. 1,3: discriminate.
+ destruct args' as [ | base' [ | ]]. 1,3: discriminate.
+ simpl in OVERLAP.
+ destruct (peq base base'). 2: discriminate.
+ subst base'.
+ destruct (can_swap_accesses_ofs z0 chunk' z chunk) eqn:SWAP.
+ 2: discriminate.
+ simpl in *.
+ eapply load_store_away; eassumption.
+ }
+ { (* Aglobal / Aglobal *)
+ destruct args. 2: discriminate.
+ destruct args'. 2: discriminate.
+ simpl in *.
+ destruct (peq i i1).
+ {
+ subst i1.
+ rewrite negb_false_iff in OVERLAP.
+ eapply load_store_glob_away; eassumption.
+ }
+ eapply load_store_diff_globals; eassumption.
+ }
+Qed.
+
+End SOUNDNESS.