aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Fasse <justus.fasse@etu.univ-grenoble-alpes.fr>2020-07-09 09:32:01 +0200
committerJustus Fasse <justus.fasse@etu.univ-grenoble-alpes.fr>2020-07-09 09:32:01 +0200
commit7f1b9f2a76d13e08f7a00e7ef17f929a6602a32c (patch)
tree1c86aed732f38481793fa5ab75b51c2b76295266
parent932a3eda6a597d534131068d87052967398f0229 (diff)
downloadcompcert-kvx-7f1b9f2a76d13e08f7a00e7ef17f929a6602a32c.tar.gz
compcert-kvx-7f1b9f2a76d13e08f7a00e7ef17f929a6602a32c.zip
Finish proof of Lemma symbol_high_low
-rw-r--r--aarch64/Asmgen.v6
-rw-r--r--aarch64/Asmgenproof.v11
2 files changed, 11 insertions, 6 deletions
diff --git a/aarch64/Asmgen.v b/aarch64/Asmgen.v
index 7b30ba40..dae9004d 100644
--- a/aarch64/Asmgen.v
+++ b/aarch64/Asmgen.v
@@ -61,10 +61,10 @@ Definition basic_to_instruction (b: basic) : res Asm.instruction :=
OK (Asm.Pfmovimmd rd' f)
| PArith (PArithPP (Pmovk sz n pos) rd rs) =>
- do rd' <- ireg_of_preg rd; do rs' <- ireg_of_preg rs;
- if (Asmblock.preg_eq rd rs) then
+ if (Asmblock.preg_eq rd rs) then (
+ do rd' <- ireg_of_preg rd;
OK (Asm.Pmovk sz rd' n pos)
- else
+ ) else
Error (msg "Asmgen.basic_to_instruction: Pmovk uses a single register as both source and target")
| PArith (PArithPP Pmov rd rs) => do rd' <- iregsp_of_preg rd;
do rs' <- iregsp_of_preg rs;
diff --git a/aarch64/Asmgenproof.v b/aarch64/Asmgenproof.v
index 276e95d1..93899c72 100644
--- a/aarch64/Asmgenproof.v
+++ b/aarch64/Asmgenproof.v
@@ -45,12 +45,17 @@ Let tge := Genv.globalenv tprog.
Definition lk :aarch64_linker := {| Asmblock.symbol_low:=Asm.symbol_low tge; Asmblock.symbol_high:=Asm.symbol_high tge|}.
+
+Lemma symbols_preserved:
+ forall (s: ident), Genv.find_symbol tge s = Genv.find_symbol ge s.
+Proof (Genv.find_symbol_match TRANSF).
+
Lemma symbol_high_low: forall (id: ident) (ofs: ptrofs),
Val.addl (Asmblock.symbol_high lk id ofs) (Asmblock.symbol_low lk id ofs) = Genv.symbol_address ge id ofs.
Proof.
- unfold lk; simpl. intros; rewrite Asm.symbol_high_low.
-Admitted.
-
+ unfold lk; simpl. intros; rewrite Asm.symbol_high_low; unfold Genv.symbol_address;
+ rewrite symbols_preserved; reflexivity.
+Qed.
Lemma transf_program_correct:
forward_simulation (Asmblock.semantics lk prog) (Asm.semantics tprog).