aboutsummaryrefslogtreecommitdiffstats
path: root/x86/Asmgen.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-09-07 09:49:58 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-09-07 09:49:58 +0200
commitf2831013b46d0486e5e134f26fde9ece7b78ff93 (patch)
tree9baa6452b44cb21e471e589a011c324d816bae44 /x86/Asmgen.v
parent75109076ec027675e297ff1273660fc6b5a5f239 (diff)
downloadcompcert-kvx-f2831013b46d0486e5e134f26fde9ece7b78ff93.tar.gz
compcert-kvx-f2831013b46d0486e5e134f26fde9ece7b78ff93.zip
more for passing notrap through x86
Diffstat (limited to 'x86/Asmgen.v')
-rw-r--r--x86/Asmgen.v12
1 files changed, 9 insertions, 3 deletions
diff --git a/x86/Asmgen.v b/x86/Asmgen.v
index 73e3263e..99e9fc2b 100644
--- a/x86/Asmgen.v
+++ b/x86/Asmgen.v
@@ -636,9 +636,14 @@ Definition transl_op
(** Translation of memory loads and stores *)
-Definition transl_load (chunk: memory_chunk)
+Definition transl_load
+ (trap : trapping_mode)
+ (chunk: memory_chunk)
(addr: addressing) (args: list mreg) (dest: mreg)
(k: code) : res code :=
+ match trap with
+ | NOTRAP => Error (msg "Asmgen.transl_load x86 does not support non trapping loads")
+ | TRAP =>
do am <- transl_addressing addr args;
match chunk with
| Mint8unsigned =>
@@ -659,6 +664,7 @@ Definition transl_load (chunk: memory_chunk)
do r <- freg_of dest; OK(Pmovsd_fm r am :: k)
| _ =>
Error (msg "Asmgen.transl_load")
+ end
end.
Definition transl_store (chunk: memory_chunk)
@@ -699,8 +705,8 @@ Definition transl_instr (f: Mach.function) (i: Mach.instruction)
loadind RSP f.(fn_link_ofs) Tptr AX k1)
| Mop op args res =>
transl_op op args res k
- | Mload chunk addr args dst =>
- transl_load chunk addr args dst k
+ | Mload trap chunk addr args dst =>
+ transl_load trap chunk addr args dst k
| Mstore chunk addr args src =>
transl_store chunk addr args src k
| Mcall sig (inl reg) =>