diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-02 09:04:03 +0200 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-02 09:04:03 +0200 |
commit | fd2c2a0bdf723dce559567324711a3127ce0582e (patch) | |
tree | f03b21a14cba984854142016733802c3ca8866b1 /mppa_k1c/SelectLongproof.v | |
parent | 8fb2d1a49443767ce353520ea045383430a2655e (diff) | |
parent | 5cdc3d29983c65d1ac1d3393103037fdd87d7829 (diff) | |
download | compcert-kvx-fd2c2a0bdf723dce559567324711a3127ce0582e.tar.gz compcert-kvx-fd2c2a0bdf723dce559567324711a3127ce0582e.zip |
Merge remote-tracking branch 'origin/mppa-work' into mppa-ternary
Diffstat (limited to 'mppa_k1c/SelectLongproof.v')
-rw-r--r-- | mppa_k1c/SelectLongproof.v | 16 |
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. |