aboutsummaryrefslogtreecommitdiffstats
path: root/backend/Selectionproof.v
diff options
context:
space:
mode:
authorxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2008-12-29 12:47:56 +0000
committerxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2008-12-29 12:47:56 +0000
commit12421d717405aa7964e437fc1167a23699b61ecc (patch)
tree99b975380440ad4e91074f918ee781ec6383f0ce /backend/Selectionproof.v
parentdc4bed2cf06f46687225275131f411c86c773598 (diff)
downloadcompcert-kvx-12421d717405aa7964e437fc1167a23699b61ecc.tar.gz
compcert-kvx-12421d717405aa7964e437fc1167a23699b61ecc.zip
Replace cast{8,16}{signed,unsigned} with zero_ext and sign_ext.
lib/Integers.v: added more properties for ARM port. lib/Coqlib.v: added more properties for division and powers of 2. git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@928 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'backend/Selectionproof.v')
-rw-r--r--backend/Selectionproof.v20
1 files changed, 12 insertions, 8 deletions
diff --git a/backend/Selectionproof.v b/backend/Selectionproof.v
index b7794883..6d629794 100644
--- a/backend/Selectionproof.v
+++ b/backend/Selectionproof.v
@@ -748,40 +748,44 @@ Qed.
Theorem eval_cast8signed:
forall le a v,
eval_expr ge sp e m le a v ->
- eval_expr ge sp e m le (cast8signed a) (Val.cast8signed v).
+ eval_expr ge sp e m le (cast8signed a) (Val.sign_ext 8 v).
Proof.
intros until v; unfold cast8signed; case (cast8signed_match a); intros; InvEval.
- EvalOp. simpl. subst v. destruct v1; simpl; auto. rewrite Int.cast8_signed_idem. reflexivity.
+ EvalOp. simpl. subst v. destruct v1; simpl; auto.
+ rewrite Int.sign_ext_idem. reflexivity. compute; auto.
EvalOp.
Qed.
Theorem eval_cast8unsigned:
forall le a v,
eval_expr ge sp e m le a v ->
- eval_expr ge sp e m le (cast8unsigned a) (Val.cast8unsigned v).
+ eval_expr ge sp e m le (cast8unsigned a) (Val.zero_ext 8 v).
Proof.
intros until v; unfold cast8unsigned; case (cast8unsigned_match a); intros; InvEval.
- EvalOp. simpl. subst v. destruct v1; simpl; auto. rewrite Int.cast8_unsigned_idem. reflexivity.
+ EvalOp. simpl. subst v. destruct v1; simpl; auto.
+ rewrite Int.zero_ext_idem. reflexivity. compute; auto.
EvalOp.
Qed.
Theorem eval_cast16signed:
forall le a v,
eval_expr ge sp e m le a v ->
- eval_expr ge sp e m le (cast16signed a) (Val.cast16signed v).
+ eval_expr ge sp e m le (cast16signed a) (Val.sign_ext 16 v).
Proof.
intros until v; unfold cast16signed; case (cast16signed_match a); intros; InvEval.
- EvalOp. simpl. subst v. destruct v1; simpl; auto. rewrite Int.cast16_signed_idem. reflexivity.
+ EvalOp. simpl. subst v. destruct v1; simpl; auto.
+ rewrite Int.sign_ext_idem. reflexivity. compute; auto.
EvalOp.
Qed.
Theorem eval_cast16unsigned:
forall le a v,
eval_expr ge sp e m le a v ->
- eval_expr ge sp e m le (cast16unsigned a) (Val.cast16unsigned v).
+ eval_expr ge sp e m le (cast16unsigned a) (Val.zero_ext 16 v).
Proof.
intros until v; unfold cast16unsigned; case (cast16unsigned_match a); intros; InvEval.
- EvalOp. simpl. subst v. destruct v1; simpl; auto. rewrite Int.cast16_unsigned_idem. reflexivity.
+ EvalOp. simpl. subst v. destruct v1; simpl; auto.
+ rewrite Int.zero_ext_idem. reflexivity. compute; auto.
EvalOp.
Qed.