summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2014-01-03 17:09:54 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2014-01-03 17:09:54 +0000
commit362f2f36a44fa6ab4fe28264ed572d721adece70 (patch)
tree2f1b23f88fe906ae554e963acbcde09c54b1b5fb /lib
parent089c6c6dc139a0c32f8566d028702d39d0748077 (diff)
Introduce and use the platform-specific Archi module giving:
- endianness - alignment constraints for 8-byte types (which is 4 for x86 ABI and 8 for other ABIs) - NaN handling options (superceding the Nan module, removed). git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2402 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'lib')
-rw-r--r--lib/Floats.v13
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/Floats.v b/lib/Floats.v
index 0a30836..5502927 100644
--- a/lib/Floats.v
+++ b/lib/Floats.v
@@ -26,6 +26,7 @@ Require Import Fcalc_round.
Require Import Fcalc_bracket.
Require Import Fprop_Sterbenz.
Require Import Program.
+Require Archi.
Close Scope R_scope.
@@ -268,18 +269,15 @@ Definition singleoflongu (n:int64): float:= (**r conversion from unsigned 64-bit
- a choice function determining which of the payload arguments to choose,
when an operation is given two NaN arguments. *)
-Parameter default_pl : bool*nan_pl 53.
-Parameter choose_binop_pl : bool -> nan_pl 53 -> bool -> nan_pl 53 -> bool.
-
Definition binop_pl (x y: binary64) : bool*nan_pl 53 :=
match x, y with
| B754_nan s1 pl1, B754_nan s2 pl2 =>
- if choose_binop_pl s1 pl1 s2 pl2
+ if Archi.choose_binop_pl s1 pl1 s2 pl2
then (s2, transform_quiet_pl pl2)
else (s1, transform_quiet_pl pl1)
| B754_nan s1 pl1, _ => (s1, transform_quiet_pl pl1)
| _, B754_nan s2 pl2 => (s2, transform_quiet_pl pl2)
- | _, _ => default_pl
+ | _, _ => Archi.default_pl
end.
Definition add: float -> float -> float := b64_plus binop_pl mode_NE. (**r addition *)
@@ -1235,8 +1233,9 @@ Proof.
etransitivity. apply H.
symmetry. etransitivity. apply H0.
f_equal. destruct Bsign; reflexivity.
- - destruct f as [[]|[]| |]; try discriminate; try reflexivity.
- simpl. destruct (choose_binop_pl b n b n); auto.
+ - destruct f as [[]|[]| |]; try discriminate; simpl.
+ auto. auto. auto. auto.
+ destruct (Archi.choose_binop_pl b n b n); auto.
Qed.
Program Definition pow2_float (b:bool) (e:Z) (H:-1023 < e < 1023) : float :=