aboutsummaryrefslogtreecommitdiffstats
path: root/powerpc
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@college-de-france.fr>2020-12-06 16:47:19 +0100
committerXavier Leroy <xavier.leroy@college-de-france.fr>2020-12-06 16:47:19 +0100
commit5e3898945c063801d4a93f44182d160ccfe4badc (patch)
treeba0b2d7ebba9e98e067e24ad8708dccb3441b20b /powerpc
parenta4cfb9c2ffdef07fa0d478e66f279687c9823d42 (diff)
downloadcompcert-kvx-5e3898945c063801d4a93f44182d160ccfe4badc.tar.gz
compcert-kvx-5e3898945c063801d4a93f44182d160ccfe4badc.zip
PowerPC modeling of registers destroyed by pseudo-instructions
Inlined built-in functions destroy GPR0
Diffstat (limited to 'powerpc')
-rw-r--r--powerpc/Asm.v2
-rw-r--r--powerpc/Asmgenproof.v8
2 files changed, 6 insertions, 4 deletions
diff --git a/powerpc/Asm.v b/powerpc/Asm.v
index 6ec20d62..d9901960 100644
--- a/powerpc/Asm.v
+++ b/powerpc/Asm.v
@@ -1195,7 +1195,7 @@ Inductive step: state -> trace -> state -> Prop :=
external_call ef ge vargs m t vres m' ->
rs' = nextinstr
(set_res res vres
- (undef_regs (map preg_of (destroyed_by_builtin ef)) rs)) ->
+ (undef_regs (IR GPR0 :: map preg_of (destroyed_by_builtin ef)) rs)) ->
step (State rs m) t (State rs' m')
| exec_step_external:
forall b ef args res rs m t rs' m',
diff --git a/powerpc/Asmgenproof.v b/powerpc/Asmgenproof.v
index d653633c..a1ae5855 100644
--- a/powerpc/Asmgenproof.v
+++ b/powerpc/Asmgenproof.v
@@ -781,16 +781,18 @@ Opaque loadind.
econstructor; eauto.
instantiate (2 := tf); instantiate (1 := x).
unfold nextinstr. rewrite Pregmap.gss.
- rewrite set_res_other. rewrite undef_regs_other_2.
+ rewrite set_res_other. simpl. rewrite undef_regs_other_2.
+ rewrite Pregmap.gso by auto with asmgen.
rewrite <- H1. simpl. econstructor; eauto.
eapply code_tail_next_int; eauto.
rewrite preg_notin_charact. intros. auto with asmgen.
auto with asmgen.
apply agree_nextinstr. eapply agree_set_res; auto.
- eapply agree_undef_regs; eauto. intros; apply undef_regs_other_2; auto.
+ eapply agree_undef_regs; eauto.
+ intros. simpl. rewrite undef_regs_other_2; auto. apply Pregmap.gso. auto with asmgen.
congruence.
intros. Simpl. rewrite set_res_other by auto.
- rewrite undef_regs_other_2; auto with asmgen.
+ simpl. rewrite undef_regs_other_2; auto with asmgen.
- (* Mgoto *)
assert (f0 = f) by congruence. subst f0.