summaryrefslogtreecommitdiff
path: root/ia32
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-04-29 17:11:47 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-04-29 17:11:47 +0000
commit5c84fd4adbcd8a63cc29fb0286cb46f18abde55c (patch)
tree39c5c7057d4a7da0b674d8427a9e8910927859f7 /ia32
parent540bc673fd0e924c20521bb011de56f11c91c493 (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.vp4
-rw-r--r--ia32/SelectOpproof.v9
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.