diff options
author | Sylvain Boulmé <sylvain.boulme@univ-grenoble-alpes.fr> | 2020-10-10 17:15:17 +0200 |
---|---|---|
committer | Sylvain Boulmé <sylvain.boulme@univ-grenoble-alpes.fr> | 2020-10-10 17:15:17 +0200 |
commit | ca4cc2e85f659b0163b99c5a15ff1bde50829e78 (patch) | |
tree | c5ef4a42b95aa6ed9f8c1b91b752e39fe67c6018 /aarch64 | |
parent | bc6834f260009bf37290fe900f9c22e092eb1a35 (diff) | |
parent | ee15d4183aa4bbe366a98c4bd09c90932e5adb22 (diff) | |
download | compcert-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.v | 14 |
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') |