From patchwork Mon Jul 3 07:32:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 106881 Delivered-To: patch@linaro.org Received: by 10.140.101.44 with SMTP id t41csp5464495qge; Mon, 3 Jul 2017 00:33:16 -0700 (PDT) X-Received: by 10.101.70.137 with SMTP id h9mr9028291pgr.50.1499067195940; Mon, 03 Jul 2017 00:33:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1499067195; cv=none; d=google.com; s=arc-20160816; b=indQ6tz/9Ghw/lfo8f+fbx5YLzPz5YbxcRe8/TT/dCiBWRG8xulkUW3ToN7DWYm3cw qII5VthAHv2xk1tqNTkbjB2sao3AipzAvKglbeiM4MHcmqsW2YP5KYSz+qZY+j5sryJW Na5EGxLW7rVHhAHQk6S5k1TOkccTxq+XcHGFuk8ZmlkKvrOMVTxruIQDxDsRsYo49R+d Pt6PV7GmBzEcIY/uPpJM0iLh5zZK4Ly/WufmZneSjqimG6SJJbwHPfOkbtVbZJPTQpK0 FHLz2JuoRAk1jd3nw/R6VQ4+XfETKVcpf60NRXG6utkz0gfaWrwjEWm3cdWLhkxzjBMi opnA== 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=570l1WqV/wx7jhpuZaQHJ3A2c8AMNyEKksu+Y7/zPnc=; b=A9ZyPVBdmvYiB+oT8CT6MHapIosnTnIxMwh9X/k4GnrhDTUuXL18zV5AdrDbA0++Z3 sPRk9MhOYlyrYeHRWVgjuFI6YF0F35WkUzKqjHhczIqRA3BwaZFA+WhsWI3YSMrQQNBt 3lBwjLUgyZapPq/+HMU9QwP8wpgFKmz4wsUZR6U3GCDg9gJcX7LbU4ka4+08ILuG6hhw OwSTuREr6LPuQ02Jk6yWBJ/xzfJd2MjxiCyZFD/oguN6njDI32NHRjWziEVhDUVD5jRu +Ojq3brIJJKr8mMY7W15Hg0sNTiwMU+DXjqy4F08kk/+S3zo+6qHpKWecl0Qr49n400b /3cQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.b=EdsYg71H; spf=pass (google.com: domain of gcc-patches-return-457409-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-457409-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 90si7876408pfr.15.2017.07.03.00.33.15 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 03 Jul 2017 00:33:15 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-return-457409-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.b=EdsYg71H; spf=pass (google.com: domain of gcc-patches-return-457409-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-457409-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=SSO2OmcHVd3GCiurUEVygIp3tkFgc3ra1F05tBrE9SEiGxhwPAdsR eZjtLZRJm5Xlo2BG7KN88U+ODVYdY/Fr674hCZdOPx2MYQmuldDjNZmLI3oqGYGT mzxyv3mahvhGNwDy8Tez5utjlOhoB4symGvj8NtClpWfiuoIZ/77Lk= 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=Q+TgP9tsgvbE/zl/OeDFoUaJe7g=; b=EdsYg71Hs5n8bZoYdDtD /E8LBhhf3w7ExWtA0DhKx1nYBk8zc74Ym1xCn9HwRpzi0tiJSzlSg5qiffsjBson akSovbp+iFCdT1hp4651y3/EntQjmmWZoqZrRjhTsMgq8Hrbz2PmomOQJAQ3WOQr MlMcUgicoUQuY2YRqOPlTbE= Received: (qmail 68986 invoked by alias); 3 Jul 2017 07:32:52 -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 68647 invoked by uid 89); 3 Jul 2017 07:32:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-8.5 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS, RCVD_IN_DNSWL_NONE, SPF_PASS, UNWANTED_LANGUAGE_BODY autolearn=ham version=3.3.2 spammy= X-HELO: mail-wr0-f175.google.com Received: from mail-wr0-f175.google.com (HELO mail-wr0-f175.google.com) (209.85.128.175) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 03 Jul 2017 07:32:46 +0000 Received: by mail-wr0-f175.google.com with SMTP id r103so229670213wrb.0 for ; Mon, 03 Jul 2017 00:32:46 -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=570l1WqV/wx7jhpuZaQHJ3A2c8AMNyEKksu+Y7/zPnc=; b=r+X5g8kdOsVydJjVLsnn2KIZfGO3sQnPfog23SEn/NtCnpfg3p1XJRfWWKJ+crB7WV nTjdXMgRAZ1RcqVJ5I8JXIReMITvDXV38qpW1G6GtivVKkCXxkAH9S6fssbYd0yiEbl1 xE8bSuCCtc+IYQfZS2sQFVw+zPIeqInmDkEh3ATLcmeHKaKbIKrnxc9SgsgRaDtS+h+p LjEkdwt/iIUQkPYaBTC3tjTI825yHxdt6xjwwPQKesfXzAPbIgtj1cbu8kjCRD1sBhKj qrb2d/n2Zz0KXgl3Gy/1xIY+kQoMg1WUslTSnKSEClztQ0ff4ipUzXFsfkGR34S4dx4W LBmw== X-Gm-Message-State: AKS2vOxLaaqptuNnEodE/3uopoco2XgxPRA1NI1BRNNxRuKuxE1a00mN XVWcumRRP4nXeu5iiDIKww== X-Received: by 10.223.170.219 with SMTP id i27mr35411618wrc.49.1499067164318; Mon, 03 Jul 2017 00:32:44 -0700 (PDT) Received: from localhost (92.40.248.165.threembb.co.uk. [92.40.248.165]) by smtp.gmail.com with ESMTPSA id l190sm5852548wmb.18.2017.07.03.00.32.43 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 03 Jul 2017 00:32:43 -0700 (PDT) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@linaro.org Subject: [3/7] Rename DR_ALIGNED_TO to DR_OFFSET_ALIGNMENT Date: Mon, 03 Jul 2017 08:32:41 +0100 Message-ID: <87wp7qx9eu.fsf@linaro.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) MIME-Version: 1.0 This patch renames DR_ALIGNED_TO to DR_OFFSET_ALIGNMENT, to avoid confusion with the upcoming DR_BASE_ALIGNMENT. Nothing needed the value as a tree, and the value is clipped to BIGGEST_ALIGNMENT (maybe it should be MAX_OFILE_ALIGNMENT?) so we might as well use an unsigned int instead. Tested on aarch64-linux-gnu and x86_64-linux-gnu. OK to install? Richard 2017-07-03 Richard Sandiford gcc/ * tree-data-ref.h (innermost_loop_behavior): Replace aligned_to with offset_alignment. (DR_ALIGNED_TO): Delete. (DR_OFFSET_ALIGNMENT): New macro. * tree-vectorizer.h (STMT_VINFO_DR_ALIGNED_TO): Delete. (STMT_VINFO_DR_OFFSET_ALIGNMENT): New macro. * tree-data-ref.c (dr_analyze_innermost): Update after above changes. (create_data_ref): Likewise. * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise. (vect_analyze_data_refs): Likewise. * tree-if-conv.c (if_convertible_loop_p_1): Use memset before creating dummy innermost behavior. Index: gcc/tree-data-ref.h =================================================================== --- gcc/tree-data-ref.h 2017-07-03 08:03:19.181500132 +0100 +++ gcc/tree-data-ref.h 2017-07-03 08:06:19.720107957 +0100 @@ -52,9 +52,10 @@ struct innermost_loop_behavior tree init; tree step; - /* Alignment information. ALIGNED_TO is set to the largest power of two - that divides OFFSET. */ - tree aligned_to; + /* The largest power of two that divides OFFSET, capped to a suitably + high value if the offset is zero. This is a byte rather than a bit + quantity. */ + unsigned int offset_alignment; }; /* Describes the evolutions of indices of the memory reference. The indices @@ -143,7 +144,7 @@ #define DR_OFFSET(DR) (DR)- #define DR_INIT(DR) (DR)->innermost.init #define DR_STEP(DR) (DR)->innermost.step #define DR_PTR_INFO(DR) (DR)->alias.ptr_info -#define DR_ALIGNED_TO(DR) (DR)->innermost.aligned_to +#define DR_OFFSET_ALIGNMENT(DR) (DR)->innermost.offset_alignment #define DR_INNERMOST(DR) (DR)->innermost typedef struct data_reference *data_reference_p; Index: gcc/tree-vectorizer.h =================================================================== --- gcc/tree-vectorizer.h 2017-07-03 07:57:56.883079731 +0100 +++ gcc/tree-vectorizer.h 2017-07-03 08:06:19.721107925 +0100 @@ -707,7 +707,8 @@ #define STMT_VINFO_DR_BASE_ADDRESS(S) #define STMT_VINFO_DR_INIT(S) (S)->dr_wrt_vec_loop.init #define STMT_VINFO_DR_OFFSET(S) (S)->dr_wrt_vec_loop.offset #define STMT_VINFO_DR_STEP(S) (S)->dr_wrt_vec_loop.step -#define STMT_VINFO_DR_ALIGNED_TO(S) (S)->dr_wrt_vec_loop.aligned_to +#define STMT_VINFO_DR_OFFSET_ALIGNMENT(S) \ + (S)->dr_wrt_vec_loop.offset_alignment #define STMT_VINFO_IN_PATTERN_P(S) (S)->in_pattern_p #define STMT_VINFO_RELATED_STMT(S) (S)->related_stmt Index: gcc/tree-data-ref.c =================================================================== --- gcc/tree-data-ref.c 2017-07-03 08:03:19.181500132 +0100 +++ gcc/tree-data-ref.c 2017-07-03 08:06:19.720107957 +0100 @@ -869,7 +869,7 @@ dr_analyze_innermost (struct data_refere drb->offset = fold_convert (ssizetype, offset_iv.base); drb->init = init; drb->step = step; - drb->aligned_to = size_int (highest_pow2_factor (offset_iv.base)); + drb->offset_alignment = highest_pow2_factor (offset_iv.base); if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, "success.\n"); @@ -1083,8 +1083,8 @@ create_data_ref (loop_p nest, loop_p loo print_generic_expr (dump_file, DR_INIT (dr), TDF_SLIM); fprintf (dump_file, "\n\tstep: "); print_generic_expr (dump_file, DR_STEP (dr), TDF_SLIM); - fprintf (dump_file, "\n\taligned to: "); - print_generic_expr (dump_file, DR_ALIGNED_TO (dr), TDF_SLIM); + fprintf (dump_file, "\n\toffset alignment: %d", + DR_OFFSET_ALIGNMENT (dr)); fprintf (dump_file, "\n\tbase_object: "); print_generic_expr (dump_file, DR_BASE_OBJECT (dr), TDF_SLIM); fprintf (dump_file, "\n"); Index: gcc/tree-vect-data-refs.c =================================================================== --- gcc/tree-vect-data-refs.c 2017-07-03 07:57:47.758408141 +0100 +++ gcc/tree-vect-data-refs.c 2017-07-03 08:06:19.721107925 +0100 @@ -772,7 +772,7 @@ vect_compute_data_ref_alignment (struct alignment = TYPE_ALIGN_UNIT (vectype); - if ((compare_tree_int (drb->aligned_to, alignment) < 0) + if (drb->offset_alignment < alignment || !step_preserves_misalignment_p) { if (dump_enabled_p ()) @@ -3412,8 +3412,8 @@ vect_analyze_data_refs (vec_info *vinfo, { DR_OFFSET (newdr) = ssize_int (0); DR_STEP (newdr) = step; - DR_ALIGNED_TO (newdr) - = size_int (BIGGEST_ALIGNMENT); + DR_OFFSET_ALIGNMENT (newdr) + = BIGGEST_ALIGNMENT; dr = newdr; simd_lane_access = true; } @@ -3644,8 +3644,8 @@ vect_analyze_data_refs (vec_info *vinfo, STMT_VINFO_DR_INIT (stmt_info) = outer_init; STMT_VINFO_DR_OFFSET (stmt_info) = fold_convert (ssizetype, offset_iv.base); - STMT_VINFO_DR_ALIGNED_TO (stmt_info) = - size_int (highest_pow2_factor (offset_iv.base)); + STMT_VINFO_DR_OFFSET_ALIGNMENT (stmt_info) + = highest_pow2_factor (offset_iv.base); if (dump_enabled_p ()) { @@ -3663,10 +3663,8 @@ vect_analyze_data_refs (vec_info *vinfo, dump_printf (MSG_NOTE, "\n\touter step: "); dump_generic_expr (MSG_NOTE, TDF_SLIM, STMT_VINFO_DR_STEP (stmt_info)); - dump_printf (MSG_NOTE, "\n\touter aligned to: "); - dump_generic_expr (MSG_NOTE, TDF_SLIM, - STMT_VINFO_DR_ALIGNED_TO (stmt_info)); - dump_printf (MSG_NOTE, "\n"); + dump_printf (MSG_NOTE, "\n\touter offset alignment: %d\n", + STMT_VINFO_DR_OFFSET_ALIGNMENT (stmt_info)); } } Index: gcc/tree-if-conv.c =================================================================== --- gcc/tree-if-conv.c 2017-07-03 07:53:58.064561604 +0100 +++ gcc/tree-if-conv.c 2017-07-03 08:07:23.239704138 +0100 @@ -1441,11 +1441,8 @@ if_convertible_loop_p_1 (struct loop *lo || TREE_CODE (ref) == REALPART_EXPR) ref = TREE_OPERAND (ref, 0); - DR_BASE_ADDRESS (dr) = ref; - DR_OFFSET (dr) = NULL; - DR_INIT (dr) = NULL; - DR_STEP (dr) = NULL; - DR_ALIGNED_TO (dr) = NULL; + memset (&DR_INNERMOST (dr), 0, sizeof (DR_INNERMOST (dr))); + DR_BASE_ADDRESS (dr) = ref; } hash_memrefs_baserefs_and_store_DRs_read_written_info (dr); }