From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8146 invoked by alias); 11 Mar 2011 20:43:29 -0000 Received: (qmail 8137 invoked by uid 22791); 11 Mar 2011 20:43:27 -0000 X-SWARE-Spam-Status: No, hits=-2.7 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,TW_LW,TW_SL,TW_WZ X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 11 Mar 2011 20:43:23 +0000 From: "meissner at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/48077] [Code Improvement] Poor expansion of multiply on powerpc64-linux X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: meissner at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Fri, 11 Mar 2011 20:43:00 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2011-03/txt/msg01179.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48077 --- Comment #4 from Michael Meissner 2011-03-11 20:43:20 UTC --- It depends on what the default cpu is for the system. If you say -mcpu=power4, -mcpu=power5, or -mcpu=power7, it generates code similar to what XLC generates with mulhw to get the recrip. and a mulli: demonstrate: lis 9,values@ha slwi 3,3,2 lwz 11,values@l(9) lis 0,0x1062 ori 0,0,19923 lwzx 9,11,3 lis 11,hash_table@ha lwz 8,hash_table@l(11) mulhw 0,9,0 srawi 10,9,31 srawi 0,0,6 subf 0,10,0 mulli 0,0,1000 subf 9,0,9 slwi 9,9,2 lwzx 3,8,9 blr If you say -mcpu=power6 the mulli is replaced by shifts and adds, similar to what XLC generates. demonstrate: lis 11,values@ha slwi 3,3,2 lwz 9,values@l(11) lis 11,hash_table@ha add 9,9,3 lwz 8,hash_table@l(11) lwz 10,0(9) lis 9,0x1062 ori 9,9,19923 mulhw 9,10,9 srawi 0,10,31 srawi 9,9,6 subf 9,0,9 slwi 11,9,2 slwi 0,9,7 subf 0,11,0 add 0,0,9 slwi 0,0,3 subf 10,0,10 slwi 10,10,2 add 8,8,10 lwz 3,0(8) blr