aboutsummaryrefslogtreecommitdiffstats
path: root/aarch64/Asm.v
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@college-de-france.fr>2020-12-06 16:46:42 +0100
committerXavier Leroy <xavier.leroy@college-de-france.fr>2020-12-06 16:46:42 +0100
commit0df99dc46209a9fe5026b83227ef73280f0dab70 (patch)
tree3ca37306ef7cfab93525c2213256cb5b0565d8c9 /aarch64/Asm.v
parentef5477a47b49c405744319fbdef0a689b1bf03d4 (diff)
downloadcompcert-kvx-0df99dc46209a9fe5026b83227ef73280f0dab70.tar.gz
compcert-kvx-0df99dc46209a9fe5026b83227ef73280f0dab70.zip
AArch64 modeling of registers destroyed by pseudo-instructions
Pfmovimms, Pfmovimmd destroy X16 Pbtbl preserves X17 Inlined built-in functions destroy X16 and X30
Diffstat (limited to 'aarch64/Asm.v')
-rw-r--r--aarch64/Asm.v8
1 files changed, 4 insertions, 4 deletions
diff --git a/aarch64/Asm.v b/aarch64/Asm.v
index 5ac577b1..346cb649 100644
--- a/aarch64/Asm.v
+++ b/aarch64/Asm.v
@@ -970,9 +970,9 @@ Definition exec_instr (f: function) (i: instruction) (rs: regset) (m: mem) : out
| Pfmov rd r1 =>
Next (nextinstr (rs#rd <- (rs#r1))) m
| Pfmovimms rd f =>
- Next (nextinstr (rs#rd <- (Vsingle f))) m
+ Next (nextinstr (rs#X16 <- Vundef #rd <- (Vsingle f))) m
| Pfmovimmd rd f =>
- Next (nextinstr (rs#rd <- (Vfloat f))) m
+ Next (nextinstr (rs#X16 <- Vundef #rd <- (Vfloat f))) m
| Pfmovi S rd r1 =>
Next (nextinstr (rs#rd <- (float32_of_bits rs##r1))) m
| Pfmovi D rd r1 =>
@@ -1097,7 +1097,7 @@ Definition exec_instr (f: function) (i: instruction) (rs: regset) (m: mem) : out
| Vint n =>
match list_nth_z tbl (Int.unsigned n) with
| None => Stuck
- | Some lbl => goto_label f lbl (rs#X16 <- Vundef #X17 <- Vundef) m
+ | Some lbl => goto_label f lbl (rs#X16 <- Vundef) m
end
| _ => Stuck
end
@@ -1212,7 +1212,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 X16 :: IR X30 :: 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',