From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27498 invoked by alias); 26 Sep 2011 17:35:02 -0000 Received: (qmail 27314 invoked by uid 22791); 26 Sep 2011 17:35:00 -0000 X-SWARE-Spam-Status: No, hits=-7.1 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS,TW_OV X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 26 Sep 2011 17:34:44 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p8QHYRFN003031 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 26 Sep 2011 13:34:39 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p8QGgw8F001804; Mon, 26 Sep 2011 12:42:59 -0400 Received: from [10.3.113.60] (ovpn-113-60.phx2.redhat.com [10.3.113.60]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id p8QGgvE9004631; Mon, 26 Sep 2011 12:42:57 -0400 Message-ID: <4E80AB90.6060201@redhat.com> Date: Tue, 27 Sep 2011 07:30:00 -0000 From: Jeff Law User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0.2) Gecko/20110906 Thunderbird/6.0.2 MIME-Version: 1.0 To: Richard Guenther CC: Jiangning Liu , gcc@gcc.gnu.org Subject: Re: A case that PRE optimization hurts performance References: <4e3762ed.030d440a.1143.2af2SMTPIN_ADDED@mx.google.com> <4e72add8.c9d0e30a.142a.ffffe60eSMTPIN_ADDED@mx.google.com> <4e802c3d.94ebd80a.4b1f.ffff8101SMTPIN_ADDED@mx.google.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2011-09/txt/msg00335.txt.bz2 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 09/26/11 05:00, Richard Guenther wrote: > On Mon, Sep 26, 2011 at 9:39 AM, Jiangning Liu > wrote: >>>> * Without PRE, >>>> >>>> Path1: movl $2, %eax cmpl $1, %eax je .L3 >>>> >>>> Path2: movb $3, %al cmpl $1, %eax je .L3 >>>> >>>> Path3: cmpl $1, %eax jne .L14 >>>> >>>> * With PRE, >>>> >>>> Path1: movl $1, %ebx movl $2, %eax testb %bl, %bl je >>>> .L3 >>>> >>>> Path2: movl $1, %ebx movb $3, %al testb %bl, %bl je >>>> .L3 >>>> >>>> Path3: cmpl $1, %eax setne %bl testb %bl, %bl jne >>>> .L14 >>>> >>>> Do you have any more thoughts? >>> >>> It seems to me that with PRE all the testb %bl, %bl should be >>> evaluated at compile-time considering the preceeding movl $1, >>> %ebx. Am I missing something? >>> >> >> Yes. Can this be done by PRE or any other optimizations in middle >> end? > > Hm, the paths as you quote them are obfuscated by missed > jump-threading. On the tree level we have > > # s_2 = PHI <2(5), 3(4), 2(6), s_25(7)> # prephitmp.6_1 = PHI > <1(5), 1(4), 1(6), prephitmp.6_3(7)> : t_14 = t_24 + 1; > D.2729_6 = MEM[base: t_14, offset: 0B]; D.2732_7 = D.2729_6 != 0; > D.2734_9 = prephitmp.6_1 & D.2732_7; if (D.2734_9 != 0) > > where we could thread the cases with prephitmp.6_1 == 1, > ultimately removing the & and forwarding the D.2729_6 != 0 test. > Which would of course cause some code duplication. > > Jeff, you recently looked at tree jump-threading, can you see if > we can improve things on this particular testcase? There's nothing threading can do here because it doesn't know anything about the value MEM[t14]. Jeff -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJOgKuLAAoJEBRtltQi2kC75aIH/iikuOQXrMrQJFbQw0COXznB OGq8iXdGwTJGH13vxdItTE0upJp7RgUVLzuhdqj1elTLHv/ujYygMsQRNGKcc8tb GMLECmWDhZqQTFXcTJCgJNZiv7MH1PNELXSdIkkSnxY+pwyn9AX5D3+HcTSjGU6B 51AdUNVph/VSaVboAgcrFpu9S0pX9HVTqFy4JI83Lh613zDVSmPo14DDy7vjBvE9 2Srlvlw0srYup97bGmRqN8wT4ZLLlyYSB2rjEFc6jmgXVncxiteQYIUZpy0lcC0M q3j80aXjZ57/iWyAbqDr1jI5tbVKDBkRa9LL1jvn9534adiG4GrnSMPhoog0ibA= =azr5 -----END PGP SIGNATURE-----