aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c/SelectLongproof.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-03 18:23:11 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-03 18:23:11 +0200
commit616f939e3ac7ff052f0eb7bce8c16873730ddf0e (patch)
treef6b304eaa992b8f9f2d12ee44337dc0e0028efb9 /mppa_k1c/SelectLongproof.v
parent629252b160fd4b909231bcad6edcf6f254aca0d6 (diff)
parentf4b802ecd426fe594009817fde6df2dde8e08df2 (diff)
downloadcompcert-kvx-616f939e3ac7ff052f0eb7bce8c16873730ddf0e.tar.gz
compcert-kvx-616f939e3ac7ff052f0eb7bce8c16873730ddf0e.zip
Merge remote-tracking branch 'origin/mppa-work' into mppa-ternary
Diffstat (limited to 'mppa_k1c/SelectLongproof.v')
-rw-r--r--mppa_k1c/SelectLongproof.v16
1 files changed, 11 insertions, 5 deletions
diff --git a/mppa_k1c/SelectLongproof.v b/mppa_k1c/SelectLongproof.v
index dd4cfa69..11804d2e 100644
--- a/mppa_k1c/SelectLongproof.v
+++ b/mppa_k1c/SelectLongproof.v
@@ -703,16 +703,22 @@ Qed.
Theorem eval_longofsingle: partial_unary_constructor_sound longofsingle Val.longofsingle.
Proof.
- unfold longofsingle; red; intros. (* destruct Archi.splitlong eqn:SL. *)
- eapply SplitLongproof.eval_longofsingle; eauto.
-(* TrivialExists. *)
+ unfold longofsingle; red; intros.
+ destruct x; simpl in H0; inv H0. destruct (Float32.to_long f) as [n|] eqn:EQ; simpl in H2; inv H2.
+ exploit eval_floatofsingle; eauto. intros (v & A & B). simpl in B. inv B.
+ apply Float32.to_long_double in EQ.
+ eapply eval_longoffloat; eauto. simpl.
+ change (Float.of_single f) with (Float32.to_double f); rewrite EQ; auto.
Qed.
Theorem eval_longuofsingle: partial_unary_constructor_sound longuofsingle Val.longuofsingle.
Proof.
unfold longuofsingle; red; intros. (* destruct Archi.splitlong eqn:SL. *)
- eapply SplitLongproof.eval_longuofsingle; eauto.
-(* TrivialExists. *)
+ destruct x; simpl in H0; inv H0. destruct (Float32.to_longu f) as [n|] eqn:EQ; simpl in H2; inv H2.
+ exploit eval_floatofsingle; eauto. intros (v & A & B). simpl in B. inv B.
+ apply Float32.to_longu_double in EQ.
+ eapply eval_longuoffloat; eauto. simpl.
+ change (Float.of_single f) with (Float32.to_double f); rewrite EQ; auto.
Qed.
Theorem eval_singleoflong: partial_unary_constructor_sound singleoflong Val.singleoflong.