diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2020-11-24 22:08:39 +0100 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2020-11-24 22:08:39 +0100 |
commit | 43a7cc2a7305395b20d92b240362ddfdb43963ff (patch) | |
tree | a5296fde42c96974bd2d152f730ee8534bf112f0 /riscV | |
parent | c10f3ec4dbcd8be682e01937762dc70d478ca2df (diff) | |
parent | a9677e1706d2a93be3cb8e3148abec924d0c3dbb (diff) | |
download | compcert-kvx-43a7cc2a7305395b20d92b240362ddfdb43963ff.tar.gz compcert-kvx-43a7cc2a7305395b20d92b240362ddfdb43963ff.zip |
Merge remote-tracking branch 'origin/kvx-work' into kvx-test-prepass
Diffstat (limited to 'riscV')
-rw-r--r-- | riscV/CSE2deps.v | 5 | ||||
-rw-r--r-- | riscV/CSE2depsproof.v | 12 |
2 files changed, 14 insertions, 3 deletions
diff --git a/riscV/CSE2deps.v b/riscV/CSE2deps.v index b4b80e2f..c0deacf0 100644 --- a/riscV/CSE2deps.v +++ b/riscV/CSE2deps.v @@ -28,5 +28,8 @@ Definition may_overlap chunk addr args chunk' addr' args' := (base :: nil), (base' :: nil) => if peq base base' then negb (can_swap_accesses_ofs (Ptrofs.unsigned ofs') chunk' (Ptrofs.unsigned ofs) chunk) - else true | _, _, _, _ => true + else true + | (Ainstack ofs), (Ainstack ofs'), _, _ => + negb (can_swap_accesses_ofs (Ptrofs.unsigned ofs') chunk' (Ptrofs.unsigned ofs) chunk) + | _, _, _, _ => true end. diff --git a/riscV/CSE2depsproof.v b/riscV/CSE2depsproof.v index f283c8ac..cf9e62b1 100644 --- a/riscV/CSE2depsproof.v +++ b/riscV/CSE2depsproof.v @@ -123,7 +123,7 @@ Proof. intros until rs. intros ADDR ADDR' OVERLAP STORE. destruct addr; destruct addr'; try discriminate. - { (* Aindexed / Aindexed *) +- (* Aindexed / Aindexed *) destruct args as [ | base [ | ]]. 1,3: discriminate. destruct args' as [ | base' [ | ]]. 1,3: discriminate. simpl in OVERLAP. @@ -133,7 +133,15 @@ Proof. 2: discriminate. simpl in *. eapply load_store_away with (F:=F) (V:=V) (genv:=genv) (sp:=sp); eassumption. - } + +- (* Ainstack / Ainstack *) + destruct args. 2: discriminate. + destruct args'. 2: discriminate. + cbn in OVERLAP. + destruct (can_swap_accesses_ofs (Ptrofs.unsigned i0) chunk' (Ptrofs.unsigned i) chunk) eqn:SWAP. + 2: discriminate. + cbn in *. + eapply load_store_away with (F:=F) (V:=V) (genv:=genv) (sp:=sp); eassumption. Qed. End SOUNDNESS. |