diff options
author | Xavier Leroy <xavier.leroy@college-de-france.fr> | 2021-05-13 17:26:05 +0200 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@college-de-france.fr> | 2021-05-13 17:26:05 +0200 |
commit | 39710f78062a4a999c079b58181a58e62b78c30b (patch) | |
tree | 681bd58bbec1bdfb5b3b2074f4ad55193b8b7eb0 /riscV | |
parent | 7b3bc19117e48d601e392f2db2c135c7df1d8376 (diff) | |
download | compcert-kvx-39710f78062a4a999c079b58181a58e62b78c30b.tar.gz compcert-kvx-39710f78062a4a999c079b58181a58e62b78c30b.zip |
Register X1 is destroyed by some built-in functions
E.g. __builtin_bswap. Update Asm modeling of builtins accordingly.
Diffstat (limited to 'riscV')
-rw-r--r-- | riscV/Asm.v | 2 | ||||
-rw-r--r-- | riscV/Asmgenproof.v | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/riscV/Asm.v b/riscV/Asm.v index 7e1b1fc8..a47573a2 100644 --- a/riscV/Asm.v +++ b/riscV/Asm.v @@ -1080,7 +1080,7 @@ Inductive step: state -> trace -> state -> Prop := rs' = nextinstr (set_res res vres (undef_regs (map preg_of (destroyed_by_builtin ef)) - (rs#X31 <- Vundef))) -> + (rs #X1 <- Vundef #X31 <- Vundef))) -> step (State rs m) t (State rs' m') | exec_step_external: forall b ef args res rs m t rs' m', diff --git a/riscV/Asmgenproof.v b/riscV/Asmgenproof.v index ab07d071..798dad9f 100644 --- a/riscV/Asmgenproof.v +++ b/riscV/Asmgenproof.v @@ -835,13 +835,15 @@ Local Transparent destroyed_by_op. econstructor; eauto. instantiate (2 := tf); instantiate (1 := x). unfold nextinstr. rewrite Pregmap.gss. - rewrite set_res_other. rewrite undef_regs_other_2. rewrite Pregmap.gso by congruence. + rewrite set_res_other. rewrite undef_regs_other_2. + rewrite ! Pregmap.gso by congruence. 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. rewrite undef_regs_other_2; auto. apply Pregmap.gso; auto with asmgen. + eapply agree_undef_regs; eauto. intros. rewrite undef_regs_other_2; auto. + rewrite ! Pregmap.gso; auto with asmgen. congruence. - (* Mgoto *) |