From 219a2d178dcd5cc625f6b6261759f392cfca367b Mon Sep 17 00:00:00 2001 From: xleroy Date: Fri, 18 May 2012 16:25:17 +0000 Subject: Hack with nxor git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1898 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e --- powerpc/SelectOp.vp | 2 ++ powerpc/SelectOpproof.v | 3 +++ 2 files changed, 5 insertions(+) (limited to 'powerpc') diff --git a/powerpc/SelectOp.vp b/powerpc/SelectOp.vp index d7944b6b..c54beed3 100644 --- a/powerpc/SelectOp.vp +++ b/powerpc/SelectOp.vp @@ -304,6 +304,8 @@ Nondetfunction xor (e1: expr) (e2: expr) := match e1, e2 with | Eop (Ointconst n1) Enil, t2 => xorimm n1 t2 | t1, Eop (Ointconst n2) Enil => xorimm n2 t1 + | Eop Onot (t1:::Enil), t2 => Eop Onxor (t1:::t2:::Enil) + | t1, Eop Onot (t2:::Enil) => Eop Onxor (t1:::t2:::Enil) | _, _ => Eop Oxor (e1:::e2:::Enil) end. diff --git a/powerpc/SelectOpproof.v b/powerpc/SelectOpproof.v index 27a0fd01..b42503f8 100644 --- a/powerpc/SelectOpproof.v +++ b/powerpc/SelectOpproof.v @@ -490,6 +490,9 @@ Proof. red; intros until y; unfold xor; case (xor_match a b); intros; InvEval. rewrite Val.xor_commut. apply eval_xorimm; auto. apply eval_xorimm; auto. + subst x. rewrite Val.xor_commut. rewrite Val.not_xor. rewrite <- Val.xor_assoc. + rewrite <- Val.not_xor. rewrite Val.xor_commut. TrivialExists. + subst y. rewrite Val.not_xor. rewrite <- Val.xor_assoc. rewrite <- Val.not_xor. TrivialExists. TrivialExists. Qed. -- cgit