From patchwork Thu Jan 16 14:58:42 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Bergner X-Patchwork-Id: 311745 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id A70782C00A0 for ; Fri, 17 Jan 2014 01:59:03 +1100 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:from:to:cc:in-reply-to:references:content-type:date :message-id:mime-version:content-transfer-encoding; q=dns; s= default; b=TJWkbbKigqAe323RKHo7AT3o2tY8CfG/Oax2iDhepQAYh+tHIX2hY Xd3U86+DkO3+rdrTzGl0OqVqH7pUpotOlMRGSaDqWc3jkJgKXQ+KQnqD0e+KxL0z Ch3joBA5SM2JJHYZ8Q8VnJATFSlBz7T6540V+b70H6lj1FQSci3QoA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:from:to:cc:in-reply-to:references:content-type:date :message-id:mime-version:content-transfer-encoding; s=default; bh=Jnr2ps+ucHkyWqH6M3hEwB9eUOU=; b=e6HhwfvTtJHIm2FQPRJgf+mUBgF/ ntX8pICOdby15EILhqMG1CXqf1JrooRkch0v07mqGmcY5VPuno1DTece8lnpoePB kFqeE+KYOWeEceZ3JIliW8V0afeXWX9DVad+yq3m6CdnZiT6PRTP25h8v5GKSK4m pvf88ql1W+Qi/I8= Received: (qmail 538 invoked by alias); 16 Jan 2014 14:58:56 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 529 invoked by uid 89); 16 Jan 2014 14:58:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 X-HELO: e23smtp08.au.ibm.com Received: from e23smtp08.au.ibm.com (HELO e23smtp08.au.ibm.com) (202.81.31.141) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Thu, 16 Jan 2014 14:58:55 +0000 Received: from /spool/local by e23smtp08.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 17 Jan 2014 00:58:50 +1000 Received: from d23dlp01.au.ibm.com (202.81.31.203) by e23smtp08.au.ibm.com (202.81.31.205) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 17 Jan 2014 00:58:48 +1000 Received: from d23relay04.au.ibm.com (d23relay04.au.ibm.com [9.190.234.120]) by d23dlp01.au.ibm.com (Postfix) with ESMTP id DDAA22CE802D for ; Fri, 17 Jan 2014 01:58:47 +1100 (EST) Received: from d23av01.au.ibm.com (d23av01.au.ibm.com [9.190.234.96]) by d23relay04.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s0GEdpYx50593892 for ; Fri, 17 Jan 2014 01:39:51 +1100 Received: from d23av01.au.ibm.com (localhost [127.0.0.1]) by d23av01.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s0GEwlhD001701 for ; Fri, 17 Jan 2014 01:58:47 +1100 Received: from [192.168.1.112] (vorma.rchland.ibm.com [9.10.86.174]) by d23av01.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id s0GEwhFP001630; Fri, 17 Jan 2014 01:58:44 +1100 Subject: Re: : [PATCH, reginfo.c, i386.c] Backport fix for PR58139 to 4.8 From: Peter Bergner To: Uros Bizjak Cc: "gcc-patches@gcc.gnu.org" , Richard Biener , Jakub Jelinek , Vladimir Makarov , Richard Henderson , Jan Hubicka In-Reply-To: References: <1389791978.5729.776.camel@otta> <1389875985.5729.779.camel@otta> Date: Thu, 16 Jan 2014 08:58:42 -0600 Message-ID: <1389884322.5729.794.camel@otta> Mime-Version: 1.0 X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 14011614-5140-0000-0000-0000046CF9D0 X-IsSubscribed: yes On Thu, 2014-01-16 at 13:49 +0100, Uros Bizjak wrote: > On Thu, Jan 16, 2014 at 1:39 PM, Peter Bergner wrote: > > We were already testing for OImode, so do you want me to > > remove the redundant compare and make the code look like > > the following instead? > > Yes, just use [1] from mainline. > > [1] http://gcc.gnu.org/ml/gcc-patches/2014-01/msg00954.html Ok, here is what I ended up committing. Thanks! Peter Backport from mainline 2014-01-15 Uros Bizjak * config/i386/i386.c (ix86_hard_regno_mode_ok): Use VALID_AVX256_REG_OR_OI_MODE. 2013-09-05 Peter Bergner PR target/58139 * reginfo.c (choose_hard_reg_mode): Scan through all mode classes looking for widest mode. Index: config/i386/i386.c =================================================================== --- config/i386/i386.c (revision 206661) +++ config/i386/i386.c (working copy) @@ -33933,10 +33933,10 @@ ix86_hard_regno_mode_ok (int regno, enum { /* We implement the move patterns for all vector modes into and out of SSE registers, even when no operation instructions - are available. OImode move is available only when AVX is - enabled. */ - return ((TARGET_AVX && mode == OImode) - || VALID_AVX256_REG_MODE (mode) + are available. OImode and AVX modes are available only when + AVX is enabled. */ + return ((TARGET_AVX + && VALID_AVX256_REG_OR_OI_MODE (mode)) || VALID_SSE_REG_MODE (mode) || VALID_SSE2_REG_MODE (mode) || VALID_MMX_REG_MODE (mode) Index: reginfo.c =================================================================== --- reginfo.c (revision 206661) +++ reginfo.c (working copy) @@ -620,40 +620,35 @@ choose_hard_reg_mode (unsigned int regno mode = GET_MODE_WIDER_MODE (mode)) if ((unsigned) hard_regno_nregs[regno][mode] == nregs && HARD_REGNO_MODE_OK (regno, mode) - && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))) + && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)) + && GET_MODE_SIZE (mode) > GET_MODE_SIZE (found_mode)) found_mode = mode; - if (found_mode != VOIDmode) - return found_mode; - for (mode = GET_CLASS_NARROWEST_MODE (MODE_FLOAT); mode != VOIDmode; mode = GET_MODE_WIDER_MODE (mode)) if ((unsigned) hard_regno_nregs[regno][mode] == nregs && HARD_REGNO_MODE_OK (regno, mode) - && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))) + && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)) + && GET_MODE_SIZE (mode) > GET_MODE_SIZE (found_mode)) found_mode = mode; - if (found_mode != VOIDmode) - return found_mode; - for (mode = GET_CLASS_NARROWEST_MODE (MODE_VECTOR_FLOAT); mode != VOIDmode; mode = GET_MODE_WIDER_MODE (mode)) if ((unsigned) hard_regno_nregs[regno][mode] == nregs && HARD_REGNO_MODE_OK (regno, mode) - && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))) + && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)) + && GET_MODE_SIZE (mode) > GET_MODE_SIZE (found_mode)) found_mode = mode; - if (found_mode != VOIDmode) - return found_mode; - for (mode = GET_CLASS_NARROWEST_MODE (MODE_VECTOR_INT); mode != VOIDmode; mode = GET_MODE_WIDER_MODE (mode)) if ((unsigned) hard_regno_nregs[regno][mode] == nregs && HARD_REGNO_MODE_OK (regno, mode) - && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))) + && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)) + && GET_MODE_SIZE (mode) > GET_MODE_SIZE (found_mode)) found_mode = mode; if (found_mode != VOIDmode)