diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-04-29 17:11:47 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-04-29 17:11:47 +0000 |
commit | 5c84fd4adbcd8a63cc29fb0286cb46f18abde55c (patch) | |
tree | 39c5c7057d4a7da0b674d8427a9e8910927859f7 /ia32 | |
parent | 540bc673fd0e924c20521bb011de56f11c91c493 (diff) |
Expand 64-bit integer comparisons into 32-bit integer comparisons.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2218 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'ia32')
-rw-r--r-- | ia32/SelectOp.vp | 4 | ||||
-rw-r--r-- | ia32/SelectOpproof.v | 9 |
2 files changed, 6 insertions, 7 deletions
diff --git a/ia32/SelectOp.vp b/ia32/SelectOp.vp index 7f79a4f..2d1ab48 100644 --- a/ia32/SelectOp.vp +++ b/ia32/SelectOp.vp @@ -423,14 +423,14 @@ Definition floatofint (e: expr) := Eop Ofloatofint (e ::: Enil). Definition intuoffloat (e: expr) := Elet e (Elet (Eop (Ofloatconst (Float.floatofintu Float.ox8000_0000)) Enil) - (Econdition (Ccompf Clt) (Eletvar 1 ::: Eletvar 0 ::: Enil) + (Econdition (CEcond (Ccompf Clt) (Eletvar 1 ::: Eletvar 0 ::: Enil)) (intoffloat (Eletvar 1)) (addimm Float.ox8000_0000 (intoffloat (subf (Eletvar 1) (Eletvar 0))))))%nat. Definition floatofintu (e: expr) := let f := Eop (Ofloatconst (Float.floatofintu Float.ox8000_0000)) Enil in Elet e - (Econdition (Ccompuimm Clt Float.ox8000_0000) (Eletvar O ::: Enil) + (Econdition (CEcond (Ccompuimm Clt Float.ox8000_0000) (Eletvar O ::: Enil)) (floatofint (Eletvar O)) (addf (floatofint (addimm (Int.neg Float.ox8000_0000) (Eletvar O))) f)). diff --git a/ia32/SelectOpproof.v b/ia32/SelectOpproof.v index 1569ad6..8c9c7e6 100644 --- a/ia32/SelectOpproof.v +++ b/ia32/SelectOpproof.v @@ -735,8 +735,8 @@ Proof. constructor. auto. econstructor. eauto. econstructor. instantiate (1 := Vfloat fm). EvalOp. - eapply eval_Econdition with (vb := Float.cmp Clt f fm). - eauto with evalexpr. auto. + eapply eval_Econdition with (va := Float.cmp Clt f fm). + eauto with evalexpr. destruct (Float.cmp Clt f fm) eqn:?. exploit Float.intuoffloat_intoffloat_1; eauto. intro EQ. EvalOp. simpl. rewrite EQ; auto. @@ -768,9 +768,8 @@ Proof. set (fm := Float.floatofintu Float.ox8000_0000). assert (eval_expr ge sp e m (Vint i :: le) (Eletvar O) (Vint i)). constructor. auto. - eapply eval_Econdition with (vb := Int.ltu i Float.ox8000_0000). - constructor. eauto. constructor. - simpl. auto. + eapply eval_Econdition with (va := Int.ltu i Float.ox8000_0000). + eauto with evalexpr. destruct (Int.ltu i Float.ox8000_0000) eqn:?. rewrite Float.floatofintu_floatofint_1; auto. unfold floatofint. EvalOp. |