From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9900 invoked by alias); 2 Mar 2011 03:06:20 -0000 Received: (qmail 9892 invoked by uid 22791); 2 Mar 2011 03:06:19 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-px0-f175.google.com (HELO mail-px0-f175.google.com) (209.85.212.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 02 Mar 2011 03:06:14 +0000 Received: by pxi17 with SMTP id 17so1166118pxi.20 for ; Tue, 01 Mar 2011 19:06:13 -0800 (PST) Received: by 10.142.47.2 with SMTP id u2mr6022396wfu.63.1299035173156; Tue, 01 Mar 2011 19:06:13 -0800 (PST) Received: from bubble.grove.modra.org ([115.187.252.19]) by mx.google.com with ESMTPS id w32sm8367026wfh.19.2011.03.01.19.06.09 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 01 Mar 2011 19:06:12 -0800 (PST) Received: by bubble.grove.modra.org (Postfix, from userid 1000) id 9821C170C1FA; Wed, 2 Mar 2011 13:36:05 +1030 (CST) Date: Wed, 02 Mar 2011 03:06:00 -0000 From: Alan Modra To: Pat Haugen Cc: gcc-patches@gcc.gnu.org, Vladimir Makarov , Jeff Law Subject: Re: [PATCH RFC] PR 47862: Fix caller-save spill of vectors on PowerPC Message-ID: <20110302030605.GE13094@bubble.grove.modra.org> Mail-Followup-To: Pat Haugen , gcc-patches@gcc.gnu.org, Vladimir Makarov , Jeff Law References: <4D6D7FA7.2010306@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4D6D7FA7.2010306@linux.vnet.ibm.com> User-Agent: Mutt/1.5.20 (2009-06-14) 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/msg00041.txt.bz2 On Tue, Mar 01, 2011 at 05:22:15PM -0600, Pat Haugen wrote: > Are there alternative solutions to this such that we'll use scalar > FP store/load insns for SF/DF mode spill and vector store/load insns > for vector spill? I made a similar fix a while ago in rs6000/e500.h (which your patch will clash with, BTW, needs an undef somewhere). Going from memory, I believe you can use something like #define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ (TARGET_VSX \ && ((MODE) == VOIDmode || (MODE) == V2DFmode) \ && FP_REGNO_P (REGNO) \ ? V2DFmode \ : choose_hard_reg_mode ((REGNO), (NREGS), false)) This will allocate enough space for the vector regs, but only save/restore using FP insns if the reg is used in a FP mode. -- Alan Modra Australia Development Lab, IBM