diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-29 14:02:17 +0200 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-29 14:02:17 +0200 |
commit | 76a75a7fa3d4f8a81868a00af99c449f1ce519b9 (patch) | |
tree | 5b3ceb0d52c29d2067370ca024e2f83266568d56 | |
parent | 9d8fcdd62607141814089bfa407d3dae63afa0b6 (diff) | |
download | compcert-kvx-76a75a7fa3d4f8a81868a00af99c449f1ce519b9.tar.gz compcert-kvx-76a75a7fa3d4f8a81868a00af99c449f1ce519b9.zip |
float of intu = float of longu o longu of intu
-rw-r--r-- | mppa_k1c/SelectOp.vp | 2 | ||||
-rw-r--r-- | mppa_k1c/SelectOpproof.v | 20 |
2 files changed, 18 insertions, 4 deletions
diff --git a/mppa_k1c/SelectOp.vp b/mppa_k1c/SelectOp.vp index e1aaf588..1af0cd38 100644 --- a/mppa_k1c/SelectOp.vp +++ b/mppa_k1c/SelectOp.vp @@ -558,7 +558,7 @@ Definition intuoffloat (e: expr) := Eop Ointuoffloat (e ::: Enil). Nondetfunction floatofintu (e: expr) := match e with | Eop (Ointconst n) Enil => Eop (Ofloatconst (Float.of_intu n)) Enil - | _ => Eop Ofloatofintu (e ::: Enil) + | _ => Eop Ofloatoflongu ((Eop Ocast32unsigned (e ::: Enil)) ::: Enil) end. Nondetfunction floatofint (e: expr) := diff --git a/mppa_k1c/SelectOpproof.v b/mppa_k1c/SelectOpproof.v index c94f9c0c..e07bc51c 100644 --- a/mppa_k1c/SelectOpproof.v +++ b/mppa_k1c/SelectOpproof.v @@ -1155,9 +1155,23 @@ Theorem eval_floatofintu: Val.floatofintu x = Some y -> exists v, eval_expr ge sp e m le (floatofintu a) v /\ Val.lessdef y v. Proof. - intros until y; unfold floatofintu. case (floatofintu_match a); intros. - InvEval. simpl in H0. TrivialExists. - TrivialExists. + intros. + unfold Val.floatofintu in *. + unfold floatofintu. + destruct (floatofintu_match a). + - InvEval. + TrivialExists. + - InvEval. + TrivialExists. + constructor. econstructor. constructor. eassumption. constructor. + simpl. f_equal. constructor. + simpl. + destruct x; simpl; trivial. + f_equal. + inv H0. + f_equal. + rewrite Float.of_intu_of_longu. + reflexivity. Qed. Theorem eval_floatofint: |