aboutsummaryrefslogtreecommitdiffstats
path: root/x86_64
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@college-de-france.fr>2019-07-12 11:42:25 +0200
committerXavier Leroy <xavierleroy@users.noreply.github.com>2019-07-17 09:16:00 +0200
commit8b0de52ffa302298abe8d0d6e3b6ed339a2354ba (patch)
treefcfdb40451908865ba706e184ff434a847b7711b /x86_64
parentdc5dc1da4cfa10647d13f393b6685f962b9b9faa (diff)
downloadcompcert-kvx-8b0de52ffa302298abe8d0d6e3b6ed339a2354ba.tar.gz
compcert-kvx-8b0de52ffa302298abe8d0d6e3b6ed339a2354ba.zip
Add floating-point square root and fused multiply-add
We just lift the corresponding functions from Flocq and add the computation of NaN payloads. NaN payloads for FMA are described in the ARM and RISC-V specifications, and were determined experimentally for x86 and for Power.
Diffstat (limited to 'x86_64')
-rw-r--r--x86_64/Archi.v5
1 files changed, 5 insertions, 0 deletions
diff --git a/x86_64/Archi.v b/x86_64/Archi.v
index 8523fdce..959d8dc1 100644
--- a/x86_64/Archi.v
+++ b/x86_64/Archi.v
@@ -53,9 +53,14 @@ Lemma choose_nan_32_idem: forall n,
choose_nan_32 (n :: n :: nil) = choose_nan_32 (n :: nil).
Proof. auto. Qed.
+Definition fma_order {A: Type} (x y z: A) := (x, y, z).
+
+Definition fma_invalid_mul_is_nan := false.
+
Definition float_of_single_preserves_sNaN := false.
Global Opaque ptr64 big_endian splitlong
default_nan_64 choose_nan_64
default_nan_32 choose_nan_32
+ fma_order fma_invalid_mul_is_nan
float_of_single_preserves_sNaN.