From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29499 invoked by alias); 17 Mar 2011 01:55:50 -0000 Received: (qmail 29437 invoked by uid 22791); 17 Mar 2011 01:55:49 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 17 Mar 2011 01:55:44 +0000 Received: (qmail 1719 invoked from network); 17 Mar 2011 01:55:42 -0000 Received: from unknown (HELO ?192.168.1.100?) (cltang@127.0.0.2) by mail.codesourcery.com with ESMTPA; 17 Mar 2011 01:55:42 -0000 Message-ID: <4D816A07.1000000@codesourcery.com> Date: Thu, 17 Mar 2011 01:55:00 -0000 From: Chung-Lin Tang User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15) Gecko/20110303 Thunderbird/3.1.9 MIME-Version: 1.0 To: Richard Henderson CC: gcc-patches Subject: Re: [patch][4.7] Enhance XOR handling in simplify-rtx.c References: <4D7A2E4A.5070306@codesourcery.com> <4D80FFB3.5010806@redhat.com> In-Reply-To: <4D80FFB3.5010806@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-03/txt/msg00975.txt.bz2 On 2011/3/17 03:21 AM, Richard Henderson wrote: > On 03/11/2011 06:14 AM, Chung-Lin Tang wrote: >> + /* Given (xor (and A B) C), using P^Q == ~PQ | ~QP (concat as AND), >> + we can transform (AB)^C into: >> + A(~CB) | ~AC | ~BC >> + Attempt a few simplifications when B and C are both constants. */ > > I don't quite follow the step that gets you to that final form. > > P^Q == ~PQ | ~QP > > AB ^ C > == ~(AB)C | (~C)AB > == (~A)(~B)C | (~C)AB > == ? You have to use DeMorgan's Law to distribute the ~ operator: ~(AB)C | (~C)AB == (~A | ~B)C | A(~CB) // DeMorgan's Law == ~AC | ~BC | A(~CB) // Distribute C over the |