From patchwork Fri Nov 28 11:33:13 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Evgeny Stupachenko X-Patchwork-Id: 415847 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 E573F14019D for ; Fri, 28 Nov 2014 22:33:51 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; q=dns; s=default; b=RHwgGENGuORgrBEKlx c84SXEBtB+vGlKrBPQ/gQc/np6opic74lGn4ftXumq56tXdRqkU+mS0dOT28Z350 GVvXpHAtqaG0UI8bRgfmr3F5DsC5/+bbIfINLztPG0YIskvlL9CrFDu2fpj7SLx8 NlZWY2H5vk9ozLqi2DtQ4ZaxE= 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 :mime-version:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; s=default; bh=jRw5WKYAoHF0U4vbqFBXB9Dv NnQ=; b=gUnpFrPbgHkTc6CToiFuyjngPLBIq54RhfFS7+1S5YK+8V0ZKbl+UGVI FLwpgScEPQ22tOKWhPIbj5X5B7fr5PUVAF1ce6Gc00R2lpscGN8k9wFHU+PzQgrM 07hqVEfJSt079NA68usmKA0vSECdGbzv+4bEnKCEzQx1QToNG5k= Received: (qmail 10924 invoked by alias); 28 Nov 2014 11:33:20 -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 10838 invoked by uid 89); 28 Nov 2014 11:33:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-ie0-f169.google.com Received: from mail-ie0-f169.google.com (HELO mail-ie0-f169.google.com) (209.85.223.169) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Fri, 28 Nov 2014 11:33:15 +0000 Received: by mail-ie0-f169.google.com with SMTP id y20so5899976ier.14 for ; Fri, 28 Nov 2014 03:33:13 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.42.50.72 with SMTP id z8mr22369734icf.3.1417174393280; Fri, 28 Nov 2014 03:33:13 -0800 (PST) Received: by 10.107.135.82 with HTTP; Fri, 28 Nov 2014 03:33:13 -0800 (PST) In-Reply-To: References: Date: Fri, 28 Nov 2014 14:33:13 +0300 Message-ID: Subject: Re: [PATCH] Extend shift permutations on power of 2 cases From: Evgeny Stupachenko To: Uros Bizjak Cc: GCC Patches X-IsSubscribed: yes Hi, After fixing PR60451 (pack scheme instead of pshufb) general power of 2 permutations become more profitable. So I'd like to revert the changes keeping algorithm live or implement new hook to use best algorithm/size for particular -mtune. Below is reverting patch. Bootstrap and make check passed. Is it ok? 2014-11-28 Evgeny Stupachenko gcc/testsuite * gcc.target/i386/pr52252-atom-1.c: Delete. gcc/ * tree-vect-data-refs.c (vect_transform_grouped_load): Limit shift permutations to loads group of size 3. vect_permute_load_chain (dr_chain, size, stmt, gsi, &result_chain); On Wed, Nov 12, 2014 at 4:16 PM, Uros Bizjak wrote: > On Wed, Nov 12, 2014 at 2:15 PM, Evgeny Stupachenko wrote: >> To avoid misunderstanding. >> I haven't yet committed this obvious fix. >> Is it ok? > > If it is obvious, then it doesn't need an approval. > > So, OK. > > Thanks, > Uros. diff --git a/gcc/testsuite/gcc.target/i386/pr52252-atom-1.c b/gcc/testsuite/gcc.target/i386/pr52252-atom-1.c deleted file mode 100644 index 020e983..0000000 --- a/gcc/testsuite/gcc.target/i386/pr52252-atom-1.c +++ /dev/null @@ -1,22 +0,0 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target ssse3 } */ -/* { dg-options "-O2 -ftree-vectorize -mssse3 -mtune=slm" } */ -#define byte unsigned char - -void -pair_mul_sum(byte *in, byte *out, int size) -{ - int j; - for(j = 0; j < size; j++) - { - byte a = in[0]; - byte b = in[1]; - byte c = in[2]; - byte d = in[3]; - out[0] = (byte)(a * b) + (byte)(b * c) + (byte)(c * d) + (byte)(d * a); - in += 4; - out += 1; - } -} - -/* { dg-final { scan-assembler "perm2i128|palignr" } } */ diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 35d0e0f..8451bda 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -5617,6 +5617,7 @@ vect_transform_grouped_load (gimple stmt, vec dr_chain, int size, get chain for loads group using vect_shift_permute_load_chain. */ mode = TYPE_MODE (STMT_VINFO_VECTYPE (vinfo_for_stmt (stmt))); if (targetm.sched.reassociation_width (VEC_PERM_EXPR, mode) > 1 + || exact_log2 (size) != -1 || !vect_shift_permute_load_chain (dr_chain, size, stmt, gsi, &result_chain))