From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 90799 invoked by alias); 3 Apr 2018 14:52:44 -0000 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 Received: (qmail 90787 invoked by uid 89); 3 Apr 2018 14:52:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS,URIBL_RED autolearn=ham version=3.3.2 spammy= X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 03 Apr 2018 14:52:41 +0000 Received: from nat-ies.mentorg.com ([192.94.31.2] helo=SVR-IES-MBX-04.mgc.mentorg.com) by relay1.mentorg.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) id 1f3NId-0001yE-PU from Tom_deVries@mentor.com for gcc-patches@gcc.gnu.org; Tue, 03 Apr 2018 07:52:39 -0700 Received: from [172.30.73.173] (137.202.0.87) by SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) with Microsoft SMTP Server (TLS) id 15.0.1320.4; Tue, 3 Apr 2018 15:52:35 +0100 Subject: [nvptx] Use MAX, MIN, ROUND_UP macros To: "gcc-patches@gcc.gnu.org" References: <823cc381-8752-14df-d6e2-0203de5da2fb@codesourcery.com> From: Tom de Vries CC: Cesar Philippidis Message-ID: <2b024e38-f8d5-d618-6c7b-7f96b832abd7@mentor.com> Date: Tue, 03 Apr 2018 14:52:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <823cc381-8752-14df-d6e2-0203de5da2fb@codesourcery.com> Content-Type: multipart/mixed; boundary="------------CB42935FBBDA79BB1226D38A" X-ClientProxiedBy: svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) To SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) X-SW-Source: 2018-04/txt/msg00075.txt.bz2 --------------CB42935FBBDA79BB1226D38A Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Content-length: 783 [ was: [og7] vector_length extension part 2: Generalize state propagation and synchronization ] On 03/02/2018 05:55 PM, Cesar Philippidis wrote: > - if (oacc_bcast_size < data.offset) > - oacc_bcast_size = data.offset; The current state of nvptx.c uses this construct a lot, which is harder to read than: ... oacc_bcast_size = MAX (oacc_bcast_size, data.offset); ... This patch replaces all such occurrences with MIN or MAX. > + psize = (psize + oacc_bcast_align - 1) & ~(oacc_bcast_align - 1); Likewise, this pattern occurs a lot, which is equivalent to: ... psize = ROUND_UP (psize, oacc_bcast_align); ... This patch also replaces all such occurrences with ROUND_UP. Build on x86_64 with nvptx accelerator and reg-tested libgomp. Committed. Thanks, - Tom --------------CB42935FBBDA79BB1226D38A Content-Type: text/x-patch; name="0001-nvptx-Use-MAX-MIN-ROUND_UP-macros.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="0001-nvptx-Use-MAX-MIN-ROUND_UP-macros.patch" Content-length: 4181 [nvptx] Use MAX, MIN, ROUND_UP macros 2018-04-03 Tom de Vries * config/nvptx/nvptx.c (nvptx_gen_shared_bcast, shared_prop_gen) (nvptx_goacc_expand_accel_var): Use MAX and ROUND_UP. (nvptx_assemble_value, nvptx_output_skip): Use MIN. (nvptx_shared_propagate, nvptx_single, nvptx_expand_shared_addr): Use MAX. --- gcc/config/nvptx/nvptx.c | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c index 38f25ad..d4ff730 100644 --- a/gcc/config/nvptx/nvptx.c +++ b/gcc/config/nvptx/nvptx.c @@ -1808,9 +1808,8 @@ nvptx_gen_shared_bcast (rtx reg, propagate_mask pm, unsigned rep, { unsigned align = GET_MODE_ALIGNMENT (mode) / BITS_PER_UNIT; - if (align > oacc_bcast_align) - oacc_bcast_align = align; - data->offset = (data->offset + align - 1) & ~(align - 1); + oacc_bcast_align = MAX (oacc_bcast_align, align); + data->offset = ROUND_UP (data->offset, align); addr = data->base; gcc_assert (data->base != NULL); if (data->offset) @@ -1932,8 +1931,7 @@ nvptx_assemble_value (unsigned HOST_WIDE_INT val, unsigned size) { val >>= part * BITS_PER_UNIT; part = init_frag.size - init_frag.offset; - if (part > size) - part = size; + part = MIN (part, size); unsigned HOST_WIDE_INT partial = val << (init_frag.offset * BITS_PER_UNIT); @@ -1996,8 +1994,7 @@ nvptx_output_skip (FILE *, unsigned HOST_WIDE_INT size) if (init_frag.offset) { unsigned part = init_frag.size - init_frag.offset; - if (part > size) - part = (unsigned) size; + part = MIN (part, (unsigned)size); size -= part; nvptx_assemble_value (0, part); } @@ -3912,9 +3909,8 @@ shared_prop_gen (rtx reg, propagate_mask pm, unsigned rep, void *data_, /* Starting a loop, initialize pointer. */ unsigned align = GET_MODE_ALIGNMENT (GET_MODE (reg)) / BITS_PER_UNIT; - if (align > oacc_bcast_align) - oacc_bcast_align = align; - data->offset = (data->offset + align - 1) & ~(align - 1); + oacc_bcast_align = MAX (oacc_bcast_align, align); + data->offset = ROUND_UP (data->offset, align); data->ptr = gen_reg_rtx (Pmode); @@ -3955,8 +3951,7 @@ nvptx_shared_propagate (bool pre_p, bool is_call, basic_block block, rtx init = gen_rtx_SET (data.base, oacc_bcast_sym); emit_insn_after (init, insn); - if (oacc_bcast_size < data.offset) - oacc_bcast_size = data.offset; + oacc_bcast_size = MAX (oacc_bcast_size, data.offset); } return empty; } @@ -4224,8 +4219,7 @@ nvptx_single (unsigned mask, basic_block from, basic_block to) data.base = oacc_bcast_sym; data.ptr = 0; - if (oacc_bcast_size < GET_MODE_SIZE (SImode)) - oacc_bcast_size = GET_MODE_SIZE (SImode); + oacc_bcast_size = MAX (oacc_bcast_size, GET_MODE_SIZE (SImode)); data.offset = 0; emit_insn_before (nvptx_gen_shared_bcast (pvar, PM_read, 0, &data, @@ -4833,13 +4827,11 @@ nvptx_expand_shared_addr (tree exp, rtx target, return target; unsigned align = TREE_INT_CST_LOW (CALL_EXPR_ARG (exp, 2)); - if (align > worker_red_align) - worker_red_align = align; + worker_red_align = MAX (worker_red_align, align); unsigned offset = TREE_INT_CST_LOW (CALL_EXPR_ARG (exp, 0)); unsigned size = TREE_INT_CST_LOW (CALL_EXPR_ARG (exp, 1)); - if (size + offset > worker_red_size) - worker_red_size = size + offset; + worker_red_size = MAX (worker_red_size, size + offset); rtx addr = worker_red_sym; if (offset) @@ -5832,10 +5824,9 @@ nvptx_goacc_expand_accel_var (tree var) else { unsigned HOST_WIDE_INT align = DECL_ALIGN (var); - gangprivate_shared_size = - (gangprivate_shared_size + align - 1) & ~(align - 1); - if (gangprivate_shared_align < align) - gangprivate_shared_align = align; + gangprivate_shared_size + = ROUND_UP (gangprivate_shared_size, align); + gangprivate_shared_align = MAX (gangprivate_shared_align, align); offset = gangprivate_shared_size; bool existed = gangprivate_shared_hmap.put (var, offset); --------------CB42935FBBDA79BB1226D38A--