aboutsummaryrefslogtreecommitdiffstats
path: root/aarch64
diff options
context:
space:
mode:
authorSylvain Boulmé <sylvain.boulme@univ-grenoble-alpes.fr>2020-10-10 17:15:17 +0200
committerSylvain Boulmé <sylvain.boulme@univ-grenoble-alpes.fr>2020-10-10 17:15:17 +0200
commitca4cc2e85f659b0163b99c5a15ff1bde50829e78 (patch)
treec5ef4a42b95aa6ed9f8c1b91b752e39fe67c6018 /aarch64
parentbc6834f260009bf37290fe900f9c22e092eb1a35 (diff)
parentee15d4183aa4bbe366a98c4bd09c90932e5adb22 (diff)
downloadcompcert-kvx-ca4cc2e85f659b0163b99c5a15ff1bde50829e78.tar.gz
compcert-kvx-ca4cc2e85f659b0163b99c5a15ff1bde50829e78.zip
Merge branch 'aarch64_block_bodystar' of gricad-gitlab.univ-grenoble-alpes.fr:sixcy/CompCert into aarch64_block_bodystar
Diffstat (limited to 'aarch64')
-rw-r--r--aarch64/Asmgenproof.v14
1 files changed, 14 insertions, 0 deletions
diff --git a/aarch64/Asmgenproof.v b/aarch64/Asmgenproof.v
index d79f73cd..917d0a9a 100644
--- a/aarch64/Asmgenproof.v
+++ b/aarch64/Asmgenproof.v
@@ -977,6 +977,20 @@ Qed.
Ltac next_stuck_cong := try (unfold Next, Stuck in *; congruence).
+Lemma load_preserved n rs1 m1 rs1' m1' rs2 m2 rd chk f a:
+ match_internal n (State rs1 m1) (State rs2 m2) ->
+ exec_load lk chk f a rd rs1 m1 = Next rs1' m1' ->
+ exists (rs2' : regset) (m2' : mem), Asm.exec_load tge chk f a rd rs2 m2 = Next rs2' m2'.
+Proof.
+ intros.
+ unfold exec_load, Asm.exec_load in *.
+ inversion H as [n0 r1 mx1 r2 mx2 EQM EQR EQPC]; subst.
+ rewrite <- (eval_addressing_preserved a rs1 rs2); auto.
+ destruct (Mem.loadv _ _ _).
+ + inversion H; auto. repeat (econstructor; eauto).
+ + next_stuck_cong.
+Qed.
+
Lemma exec_basic_simulation:
forall tf n rs1 m1 rs1' m1' rs2 m2 bi tbi
(BASIC: exec_basic lk ge bi rs1 m1 = Next rs1' m1')