aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mppa_k1c/SelectOp.vp10
-rw-r--r--mppa_k1c/SelectOpproof.v14
2 files changed, 11 insertions, 13 deletions
diff --git a/mppa_k1c/SelectOp.vp b/mppa_k1c/SelectOp.vp
index 8f188f7e..2ad264c9 100644
--- a/mppa_k1c/SelectOp.vp
+++ b/mppa_k1c/SelectOp.vp
@@ -300,13 +300,13 @@ Nondetfunction or (e1: expr) (e2: expr) :=
else Eop Oor (e1:::e2:::Enil)
| (Eop Onot (t1:::Enil)), t2 => Eop Oorn (t1:::t2:::Enil)
| t1, (Eop Onot (t2:::Enil)) => Eop Oorn (t2:::t1:::Enil)
- | (Eop Oand ((Eop Oneg ((Eop (Ocmp (Ccomp Ceq))
- (y0:::(Eop (Ointconst zero0) Enil):::Enil)):::Enil)):::v0:::Enil)),
- (Eop Oand ((Eop Oneg ((Eop (Ocmp (Ccomp Cne))
- (y1:::(Eop (Ointconst zero1) Enil):::Enil)):::Enil)):::v1:::Enil)) =>
+ | (Eop Oand ((Eop Oneg ((Eop (Ocmp (Ccompimm Ceq zero0))
+ (y0:::Enil)):::Enil)):::v0:::Enil)),
+ (Eop Oand ((Eop Oneg ((Eop (Ocmp (Ccompimm Cne zero1))
+ (y1:::Enil)):::Enil)):::v1:::Enil)) =>
if same_expr_pure y0 y1
&& Int.eq zero0 Int.zero
- && Int.eq zero1 Int.zero
+ && Int.eq zero1 Int.zero
then Eop Oselect (v0:::v1:::y0:::Enil)
else Eop Oor (e1:::e2:::Enil)
| _, _ => Eop Oor (e1:::e2:::Enil)
diff --git a/mppa_k1c/SelectOpproof.v b/mppa_k1c/SelectOpproof.v
index 23a883ec..243dc531 100644
--- a/mppa_k1c/SelectOpproof.v
+++ b/mppa_k1c/SelectOpproof.v
@@ -696,7 +696,7 @@ Proof.
exists (Val.ror v1 (Vint n2)); split. EvalOp. rewrite Val.or_commut. apply ROR; auto.
- (*orn*) TrivialExists; simpl; congruence.
- (*orn reversed*) rewrite Val.or_commut. TrivialExists; simpl; congruence.
- - (* select *) Show.
+ - (* select *)
destruct (same_expr_pure y0 y1) eqn:PURE; simpl; try exact DEFAULT.
predSpec Int.eq Int.eq_spec zero0 Int.zero; simpl; try exact DEFAULT.
predSpec Int.eq Int.eq_spec zero1 Int.zero; simpl; try exact DEFAULT.
@@ -708,22 +708,20 @@ Proof.
inv H7.
inv H9.
inv H11.
- inv H12.
- inv H15.
unfold same_expr_pure in PURE.
destruct y0; try congruence.
destruct y1; try congruence.
destruct (ident_eq i i0); try congruence.
rewrite <- e0 in *. clear e0. clear PURE.
inv H2. inv H5.
- replace v9 with v4 in * by congruence.
+ replace v8 with v4 in * by congruence.
rename v4 into vselect.
destruct vselect; simpl; trivial.
- rewrite (Val.and_commut _ v6).
- destruct v6; simpl; trivial.
- rewrite (Val.and_commut _ v11).
+ rewrite (Val.and_commut _ v5).
+ destruct v5; simpl; trivial.
+ rewrite (Val.and_commut _ v9).
rewrite Val.or_commut.
- destruct v11; simpl; trivial.
+ destruct v9; simpl; trivial.
rewrite int_eq_commut.
destruct (Int.eq i1 Int.zero); simpl.
+ rewrite Int.and_zero.