From patchwork Thu Sep 14 11:23:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 112543 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp625410qgf; Thu, 14 Sep 2017 04:23:49 -0700 (PDT) X-Received: by 10.84.176.65 with SMTP id u59mr9597268plb.278.1505388228975; Thu, 14 Sep 2017 04:23:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1505388228; cv=none; d=google.com; s=arc-20160816; b=0+uueGxohxr4+/tuA5gSMYfxSJQWPk102MZAa6hq0Jz9fsUVF5lvo3b50yi0u405/i TuPmx0HUaufT72JA4U+OG5q8cuhRFGXXf7dg87IJlyG06BMOFIBZZuYe3L1FUOlrXuKI 6XDduZFhIl/Qm+OkQ2zPl/hIUUePOi3cNDHOeCeoUkvEFkySi/BxsderfwI+hCyUYc19 mDNTj91rx43aIhVNqMjg/3lC0nPkbnPzpXmZKrvDlBhmPz+U9eysXniDpS0ZSR1+ndKL H4AYm/IEltcFc9cViZsuNyh0uUtSuFoMt8t9DiKM7pVnwqFEhvhbzYR8v7SJtPKBu1Bc 6VwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:user-agent:message-id:date:subject:mail-followup-to:to :from:delivered-to:sender:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mailing-list:dkim-signature :domainkey-signature:arc-authentication-results; bh=VKZufgbHJvSVlFqG9JbV72FgS3UxNymY2BaNrR0YrBw=; b=r1ePhhFLGTBrHtttuTRWJ5GFVe3U+L6ADz6x9oaYfCgm+ZEwiKYVkqJ5uPYXgpbn6T nsan9VAOAnPoXPvApaWzPBDqU1ha28yOrERK1kHgoZNArK47jJz8iiK/U+8KgANXmAd4 8V/v+VuCSDGqUVZJcBdenTPVai4codgYq2BElC9xdb5bJPB0Ztl1j1XgL7L/zWGeBRPQ /wS5EzrBHAzr8OMVCvEKnb+3NiGKgdicV8BYLLgtuzHroxn185NvqDbjjR5fBR4GXFFQ JdxIBfveYkCbhastkoafXiRq8TGTc04evmPb2KJY8haTBQU8aIj8b9+AB7+DgnDh0iMj ruPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Muppz6G+; spf=pass (google.com: domain of gcc-patches-return-462123-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-462123-patch=linaro.org@gcc.gnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id a7si3398203pfc.540.2017.09.14.04.23.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Sep 2017 04:23:48 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-return-462123-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Muppz6G+; spf=pass (google.com: domain of gcc-patches-return-462123-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-462123-patch=linaro.org@gcc.gnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id:mime-version:content-type; q=dns; s= default; b=VtTG6sAfpx1AxkYFF7R+j6OQNdUnLt1m8S6p5d1AtIJfe1NwYc83F nEvzfA4NzVK0k+ulp/TQ5196HoDGOT/FSNQTt+zKZlL0gZPmc9sEwHjaUCx6UAK4 N+K1g0Bcy/h7jErtfrOPotqkCVYDnBEYz3wdRAB3jJnNlUcqIZUP5w= 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:from :to:subject:date:message-id:mime-version:content-type; s= default; bh=OY20LPcSgLxJUnmMIJ0eRfvS0vg=; b=Muppz6G+ql0xJ/5/ZQ8/ ODWRQAs5cyw3hjnZ7BGNld52rJXXsAEccucFv4g822GOyhI8rNFWqzrI7dtD5uB2 r27SDyBsEzx6nKwbsgjbjYb8ilAE9EE/kvmPQUQ8F+IFOY5vbqbdZH1ir3kwVGnn IGYVRslNjMfcEzjTNDXok4M= Received: (qmail 92812 invoked by alias); 14 Sep 2017 11:23:35 -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 92596 invoked by uid 89); 14 Sep 2017 11:23:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-11.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-wm0-f52.google.com Received: from mail-wm0-f52.google.com (HELO mail-wm0-f52.google.com) (74.125.82.52) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 14 Sep 2017 11:23:29 +0000 Received: by mail-wm0-f52.google.com with SMTP id e71so46725wmg.4 for ; Thu, 14 Sep 2017 04:23:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:mail-followup-to:subject:date:message-id :user-agent:mime-version; bh=VKZufgbHJvSVlFqG9JbV72FgS3UxNymY2BaNrR0YrBw=; b=grJhrrj0t28CtxdA+2YYc0ylpuBrQRQGtkwbEey6t27fNCs0ouxgPt9nVheCmQBRWt NWF0RRQYrJxch718r3Z9OfUFeojs1YnHz4PpP3AozSHJM6faWxF83Iz/6Gas4+M8z6Il 9ju7siVsbcSl4lnUzM6dfag2qrR2H9Y0ihyeFSTKHtZNw1jM8umCz8AdONWIgss7rYgt VzQe2kkY7cZkP8R/7/uxlkzEzo5mwS1678iXhgMeaVLVTrMlwE9HpI83UoG251eiYwGu 6tEkalQrfNxCyNgCzny80oUYX/B5fopfBg3e2sJVX548PON1l3H93axOuwAqPUamU1uS KD8Q== X-Gm-Message-State: AHPjjUh48vIVGUZOsn5Z8fMjU5oTjQRifYIOtP/R8CLFWyfe5CeEobwX WG1eixJwl3t6mWn21hM/2A== X-Google-Smtp-Source: AOwi7QBv3a9PVnannWfnGEsZ7gy5ZsescJfbz5VZImsgJ8zSubvx/P4s5Dcd0pVutT1os4CjX4w1qg== X-Received: by 10.28.140.73 with SMTP id o70mr1521433wmd.154.1505388206907; Thu, 14 Sep 2017 04:23:26 -0700 (PDT) Received: from localhost (92.40.248.70.threembb.co.uk. [92.40.248.70]) by smtp.gmail.com with ESMTPSA id v98sm14384857wrc.71.2017.09.14.04.23.25 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 14 Sep 2017 04:23:26 -0700 (PDT) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@linaro.org Subject: Add a vect_get_dr_size helper function Date: Thu, 14 Sep 2017 12:23:24 +0100 Message-ID: <87o9qdwmkz.fsf@linaro.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) MIME-Version: 1.0 This patch adds a helper function for getting the number of bytes accessed by a scalar data reference, which helps when general modes have a variable size. Tested on aarch64-linux-gnu, x86_64-linux-gnu and powerpc64le-linux-gnu. OK to install? Richard 2017-09-14 Richard Sandiford Alan Hayward David Sherwood gcc/ * tree-vect-data-refs.c (vect_get_dr_size): New function. (vect_update_misalignment_for_peel): Use it. (vect_enhance_data_refs_alignment): Likewise. Index: gcc/tree-vect-data-refs.c =================================================================== --- gcc/tree-vect-data-refs.c 2017-09-14 11:27:50.350257085 +0100 +++ gcc/tree-vect-data-refs.c 2017-09-14 11:29:19.649870912 +0100 @@ -950,6 +950,13 @@ vect_compute_data_ref_alignment (struct return true; } +/* Return the size of the value accessed by DR, which is always constant. */ + +static unsigned int +vect_get_dr_size (struct data_reference *dr) +{ + return GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (DR_REF (dr)))); +} /* Function vect_update_misalignment_for_peel. Sets DR's misalignment @@ -970,8 +977,8 @@ vect_update_misalignment_for_peel (struc unsigned int i; vec same_aligned_drs; struct data_reference *current_dr; - int dr_size = GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (DR_REF (dr)))); - int dr_peel_size = GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (DR_REF (dr_peel)))); + int dr_size = vect_get_dr_size (dr); + int dr_peel_size = vect_get_dr_size (dr_peel); stmt_vec_info stmt_info = vinfo_for_stmt (DR_STMT (dr)); stmt_vec_info peel_stmt_info = vinfo_for_stmt (DR_STMT (dr_peel)); @@ -1659,8 +1666,7 @@ vect_enhance_data_refs_alignment (loop_v vectype = STMT_VINFO_VECTYPE (stmt_info); nelements = TYPE_VECTOR_SUBPARTS (vectype); - mis = DR_MISALIGNMENT (dr) / GET_MODE_SIZE (TYPE_MODE ( - TREE_TYPE (DR_REF (dr)))); + mis = DR_MISALIGNMENT (dr) / vect_get_dr_size (dr); if (DR_MISALIGNMENT (dr) != 0) npeel_tmp = (negative ? (mis - nelements) : (nelements - mis)) & (nelements - 1); @@ -1932,8 +1938,7 @@ vect_enhance_data_refs_alignment (loop_v updating DR_MISALIGNMENT values. The peeling factor is the vectorization factor minus the misalignment as an element count. */ - mis = DR_MISALIGNMENT (dr0); - mis /= GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (DR_REF (dr0)))); + mis = DR_MISALIGNMENT (dr0) / vect_get_dr_size (dr0); npeel = ((negative ? mis - nelements : nelements - mis) & (nelements - 1)); }