From patchwork Tue Jun 21 15:50:28 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Greenhalgh X-Patchwork-Id: 70570 Delivered-To: patch@linaro.org Received: by 10.140.28.4 with SMTP id 4csp2086556qgy; Tue, 21 Jun 2016 08:51:47 -0700 (PDT) X-Received: by 10.36.67.145 with SMTP id s139mr6674843itb.78.1466524307662; Tue, 21 Jun 2016 08:51:47 -0700 (PDT) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id m2si39328797pfj.60.2016.06.21.08.51.47 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Jun 2016 08:51:47 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-return-430237-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; spf=pass (google.com: domain of gcc-patches-return-430237-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-430237-patch=linaro.org@gcc.gnu.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:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; q=dns; s=default; b=V76wWxOCemRGchtq oX12hFkxtG0vZw/U4L9y7FJ5SMEJxSscIVDWyCErNdUy/3UKzah/8ziQel0Fi84x u5KFDXuMRNS4Eh4RVEn7lDVCCsac0y+23jwGSPiD91KcLvFpBziHRpGZM3iy5Vgx E8EHid1L1RNwEBIldENb7S26t8o= 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:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=default; bh=p2Qnx1PUUA4j44Kc1CqQ8w ChvbM=; b=NlfOSxzJ6m6Z9Kw6H0tsp3ghXwvM+n/jN5tTGurU4Qs0G5jg/8cXeN uHCj6TNUOoi+3rgtQJ9zEWqVSicpQC/cHk3PazvDd/vJtGZxhUJlILceK5GAHGHF RutNuKjVmMjJRTgnD8IOAsbXhXErrSuoLYPhsTOX6BNbR7UXSDO8M= Received: (qmail 130662 invoked by alias); 21 Jun 2016 15:51:27 -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 130505 invoked by uid 89); 21 Jun 2016 15:51:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL, BAYES_00, SPF_PASS autolearn=ham version=3.3.2 spammy=sk:targetm, H*Ad:D*t-online.de, seq, guides X-HELO: eu-smtp-delivery-143.mimecast.com Received: from eu-smtp-delivery-143.mimecast.com (HELO eu-smtp-delivery-143.mimecast.com) (207.82.80.143) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 21 Jun 2016 15:51:16 +0000 Received: from emea01-am1-obe.outbound.protection.outlook.com (mail-am1lrp0017.outbound.protection.outlook.com [213.199.154.17]) (Using TLS) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-44-rxMZLpzkNPCWV9agN9c7cQ-1; Tue, 21 Jun 2016 16:51:11 +0100 Received: from AM4PR08CA0040.eurprd08.prod.outlook.com (10.166.127.50) by VI1PR08MB0927.eurprd08.prod.outlook.com (10.166.143.137) with Microsoft SMTP Server (TLS) id 15.1.523.12; Tue, 21 Jun 2016 15:51:09 +0000 Received: from AM1FFO11OLC011.protection.gbl (2a01:111:f400:7e00::135) by AM4PR08CA0040.outlook.office365.com (2603:10a6:200:1a::50) with Microsoft SMTP Server (TLS) id 15.1.523.12 via Frontend Transport; Tue, 21 Jun 2016 15:51:09 +0000 Received: from nebula.arm.com (217.140.96.140) by AM1FFO11OLC011.mail.protection.outlook.com (10.174.65.102) with Microsoft SMTP Server (TLS) id 15.1.517.7 via Frontend Transport; Tue, 21 Jun 2016 15:51:09 +0000 Received: from e107456-lin.cambridge.arm.com (10.1.2.79) by mail.arm.com (10.1.105.66) with Microsoft SMTP Server id 14.3.294.0; Tue, 21 Jun 2016 16:50:54 +0100 From: James Greenhalgh To: CC: , , , , , , Subject: [RFC: Patch 3/6 v2] Remove if_info->branch_cost Date: Tue, 21 Jun 2016 16:50:28 +0100 Message-ID: <1466524231-17412-3-git-send-email-james.greenhalgh@arm.com> In-Reply-To: <1466524231-17412-1-git-send-email-james.greenhalgh@arm.com> References: <1466524231-17412-1-git-send-email-james.greenhalgh@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:217.140.96.140; IPV:CAL; SCL:-1; CTRY:GB; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(199003)(377424004)(189002)(189998001)(7846002)(11100500001)(2906002)(76176999)(2476003)(50986999)(4610100001)(2950100001)(356003)(104016004)(7696003)(8676002)(6806005)(5890100001)(106466001)(110136002)(92566002)(512874002)(84326002)(87936001)(50226002)(246002)(86362001)(568964002)(5000100001)(8936002)(19580395003)(229853001)(2351001)(586003)(19580405001)(4326007)(26826002)(33646002)(36756003)(77096005)(5003600100003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR08MB0927; H:nebula.arm.com; FPR:; SPF:Pass; PTR:fw-tnat.cambridge.arm.com; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; AM1FFO11OLC011; 1:DTNZsetoTYL2ztXfdifnv6Z+ssjhulLPFzqMK7Cg/B5XzVD6zvC9D3CjtCS9xyXaPckW7B6Lgq3Jg1YWU0VtNHL64GH8YUEVngxr3BPsX3m8a7M8eVr4e7jdi/eSN8+K5stZ2i2b37XnpBTNOe4eMkrJKpY4D6jZX27J3rfGbQ18G4EAGCOoA11lmMeqaZo0rher0xkbGM0iLHyhm3R+fIH54Gcdr+tFQcow41nVKZ/gK4tC+CzxsuD8PomFbWlpo1vWoU/KJDAzNeTQjGuEdurgPt7G+vy2IJ9b+LY+HTDGDcAvUSNeOAwn7wjXu3lOIZ1EzIYh9jXZOMeeG+Z1RRFxaYtoQXDXvNAShxGlE8bJJm0b7cbr08oKT2IRQm+X4cn4qti2tCrS+PCjbXIL8/3OrIqnRrzzprRw5QS0tM8HMkCNDYpdKjbEAAgKon4mGrKuGLmn9BgPfUs/HDNB5cu3s2mr9BtS6oD2icefVsyv8eJb9MQn1aN1NefJnC6WzKfImJlHPtT+Nd3Dz1Vx+ft0cZo9nTS8Kxjq6IGfpi+nsqJ9M/Atth8gmJndOznv X-MS-Office365-Filtering-Correlation-Id: 5b5faf78-0242-45de-d916-08d399ebdd06 X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0927; 2:odBWc4CkrFPy58e5HqhBbp+6waPqoDfVDUs4jMwtOU0bB8fhFVBDvfnkKMXKdlvmb9rk65/GmfiXZZik2oWr1ghk3aPYGNlXoJrkYnpvRalmZERuAguh8Rkz8SIk3dF4CG9p/VwwEK9Q5775tfVOX26Pc19iYMRDdEExaPrCwBnuKkk5jDKMDRZeu+8h6xWA; 3:aFbEnQNp6xL2nFP8A/idFPzHb2AhrmxAlFtxLo85hJM4Hz+JwpGp9o0g+ex1cl8AUuHAAhgi0Vuh7OWJAikEjh7b4DpUwf4gFASgnfZqFZ9s6igRn2slOg1dpppOsCp2NqNrVaPo7H8KA0rhNSh/QtHv3X8NhbvssoLAZzAakrv1l63BbbM2GCmroIaS3lh5+F0guoOt8wFqL+WFqmY0wUu/HxCzv1UmCt+20hyUwS39siszk3w3E/1rYxvyHz47blYc7Bt7RdqYTOO5undJzA== X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(8251501002); SRVR:VI1PR08MB0927; X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0927; 25:kdBsbVJrJVs3VPVM8i6UTM8j2PxrocpEv/+TaL8ZKNaeqQZVUshli0Zu3G0zjlmRCPhVhG5RjEcSOAE6VBZ+uurLyg6hjUpXddeIpKAbDQD9DZpkX0y9zKwMCKS+Tirq/GKJfT1OAaFeMw+KU0qME9L9TtLFhN4w5wMrBTt38eq/0SgbuT6tiOABb8TeOyE3EfGASgMojVgAtp7eFxRMHmCjDT+z32H2zndY9yMjHDkwn6VwbNcRMMEAxL3VOJqQ98azpQ/oGISaeo8ex/zyeSJAGgszD9d59SapFLZyF8dvYUDnX3iCzVFtat3KadRTUQSGreE1fi8EHDSxqEENyVs3+CRzpwTEMYpP+P7jhTjrxR5ynJChkdVIMJpTLMEX2WctsovzqlfuOJo1xCiqiL+b3fAPhaLcvRzt611HaKUpUxnrv4zxry+X887EIY01Bu1JaV4ZgEbzPzQe2j1z0hVX5xOB0otXDZYctfcSxb2eVxafnLWX+tx7UwTC3HQx; 20:0eRwOlhzIsF3n3DvID6vrj9zdebsdo6mhMA5bBBSlyYYpjRRIVRah/spD/uVt4f+LUhHHbT0XEDf/9AxZg5eBCRNpzSNV8JyRjtx6RwiCKLQQoAtDwTJFW874pqeviCbCjGeyLPnX1UIQSYSXylXGabdlgEVW9zCG7N0kwkOtBP3IMm2RR7R4fMdpT0G56qwSrRW4kTgL/NF8nU+1ATEPZL6WwiWBLVFLRee6Uk2Og+cIrKyDddTII23PrBu8REr NoDisclaimer: True X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(102415321)(601004)(2401047)(5005006)(8121501046)(13020025)(13023025)(13013025)(13024025)(3002001)(10201501046)(6055026); SRVR:VI1PR08MB0927; BCL:0; PCL:0; RULEID:; SRVR:VI1PR08MB0927; X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0927; 4:rsUHHTsgL+MkZXeJJVeoDtzLDDnfA7+lY5gEC0LQ8bCWsY3xWoQeL2tMnnEWF7lygZtNchh2XuilFrlQukCyHiFHejvXTP9/1x3mqTZVJ/7SFyPZqUc1fA08CeHLHVXsMPBNJQ0GVU9223BzRLZdTHg2YL5YbRI9tJGhFOrDrEbOwegqqZJzaA0nEMwN94GSqvunbx32YctrEpaIn0MNvcfdVAukUjpWI6xBNAN0SsOAzUWiLtl789IB0lwbgwoBI3zerETH7xLyWcUKjgnLLygwewPX8Qf5jyyh5mDDlmQ3qQt6Qy+YGQ03fNjUKq4qGY9/ZMN5+MGcIRUThh3hNtckr4QGeYgDq5WEnMIVKTfqZ82oZohxYW8asb8npKN4BZYnTBdzBsXTo/LJVOfzFPzd+nzzS4rh9IXv3BBdAvyLuOMO1Wubqjte47SoX6wDuDZs22iU5g4eBrrJZtQUvEVGe8zYO0qWiY5otHVg8sDmf9opIIifnPhL6qEhzzvRH2EQl5KlAsI293a498i4iQ== X-Forefront-PRVS: 098076C36C X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR08MB0927; 23:8X5t7PTcQbfOZxpTs4QXNVAt7zO8lYBwQFeTWhTjT?= =?us-ascii?Q?mknaVw7kl1o9K4M+ph1Vpo30nBDKnfy1frn/6Ah/OnKzp6mEtUpWz3hefZol?= =?us-ascii?Q?8BXaT4BiUTa8CJq92y6+wECg8sjKWwlfKDkmpPX7ywfRfH/nwp9xOBLCVmkM?= =?us-ascii?Q?rihUzg2oa7SGFrbEoOalenA8wOVt77dOhxQZ4vOZpqcLkv2+vxYsz7bHRQRW?= =?us-ascii?Q?ET5h/UhptyO+EgJLMPj5uczvvaLBuXT6SNQHi3Bp9ePY6t2bUeww3dgfVXSD?= =?us-ascii?Q?wGG94oq0SnstrT5k34imcKdUuO8BeBUMCruanaMb3m5AlMDwS+p/KW5jatWe?= =?us-ascii?Q?YJ8Tfresh9Feh0WN//jbg1lXMnBDvoUdMkGxJ87Fir2hvR74m6J8CpeSXrZJ?= =?us-ascii?Q?TwCCmZd0SDAeHTTnrYqZQHdOHPY1gkLumCy3RPPYY5UcR4usy1UclC8E+cuq?= =?us-ascii?Q?8XvqGC1JKDDRq4TN/hBHJQAW0YWQCfAWYn+WZtUKYGvRwz79y3zJaK7Pae8t?= =?us-ascii?Q?X42e0S1j1a/h8Qe+OkWCmIlQ6ZJ3DlDMDIeYNqEDyi8P0QWFJLkJ3G+oNdAz?= =?us-ascii?Q?k5pGQV+8oKAv+h2hYQHetcqaZ5WYXMmM5bFOZLL5uaSdCvqLTOtuWM5SGV/f?= =?us-ascii?Q?H6mN37w27QmqQBL7bHSF8CxpeTFUKOw+gH3wPa9K/ctV+6vvjaorwN/9xFY+?= =?us-ascii?Q?fOKdhsnU+HA6/YuxItgS/dJyoql0KT3Jiu572yWEV0dHsNGXnkIBq2Fay95h?= =?us-ascii?Q?6FmeUfud4wmVoVSr9cyYs/EZolKVHFvUph7K5KsofZ+Ci+TYitsuaxhl/1+R?= =?us-ascii?Q?CnUfA498RK8y+eyOfESu8ke+M+bKrOn6Vmkah01jK7vMHOJFcs/gHqV/V/cM?= =?us-ascii?Q?mCIY94Xeg2X7mFIjHADlS85WCNUFDK4vTuFL3EAXox2QnDgjW6qnz4mY5kOv?= =?us-ascii?Q?+2WQKByFx4CZE2OI9bq2vnofHir+tFLmrlm7xzzHBjMyazNWIEc7yekYPQaP?= =?us-ascii?Q?jefa6bQUk4aipsKqLA5bWzOkOsgCsMqQcGnDFdyH9l7SXw1udkxyg8jz/rin?= =?us-ascii?Q?ga5LIQ6HoKqTt1aktOMFffB9Sh0EZoBjsKziQKve/dvOSUrMPED/MtpvXAhP?= =?us-ascii?Q?Iz8nju2COhl33snCEbN1cjQ3zzHXZB9?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0927; 6:3XNMTq6qpp0Fw6fRWdD28N6IDRCqMAku9CmulF90XwVXsaZttIGb9pM507I9se/A6aArcVy5ql9/U9Evb4I0UpIXgMj3gSIDr37k42rYxAIQMsYD8rcQTFdwRH63ighcnMqd77f0FvF9JsBTDaJWDrKGHEqndpHoyQlzM/xmXRVcdRUdRNeq3Lz8MhlosXY/DrIVx9CIZ7TTPwORH0ykI4pXHIF07fspL+sFYOjnHPnzCVrQ74uR43UiQW/IfjPpP+ZI74/IvHnkzJWvn3ib4OdSRwo23C7Ba30CFJs639+KC/gwJlrQzq+fYX2NbAZF8vMKAytbVyjiRQZRBjwGRw==; 5:IGFJ6SEaH0d5Iupy3vijghIwyq+k1Iay0fud1aPhU1dQV8qZ68EBEsbQPGD5QZXW2AY9bH4BO/Nx/npmpTauJde9ygklnXwxUdJ8iF+KgmnoAKN42sPH0iZ3yc8xXqu5HJujcyiPq9334m/BlPx/3w==; 24:b3tdGObnVcugLO/H4v5puFj/yOzc1oxNvB6U7mRnehPIjhwP6xSBzc9MaMNxRHvI/G/C1hUGSPpbupdDVk4m//NBtd5OVdPYx93G7bnLct8=; 7:Tf5ZP8SZkIqhxqkKvUjt2lCympZuNTG+kzdHzLksjL5lIJjl3KTWS8onL59PDSGP9FECp3AbacJfeJ1esmZ8nKm0psa3VRnl+qsjm8d8OLlFKoGc54+MZ2GZRms/GOClfk5JG8hJjEddUCO209jBw1GoFHitB4Xdss1fIg66IMo6ENhvdCzL1qrOOU9h5ByBbQBu+cfmczKvbVTG7OCyXh6MPVKKqh5OIAGqVWzh5I9WKWt49GoGKFmYMCV6QP1s SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0927; 20:UCBx5HwRrbG4tC5lAX1p0sRP6JeYGEvWEBA9IdNcZYWv8pKhiwJT3oagC0rRwPfxBJs0UwPGXUwJRmAGY4+algXmiDqprbc3VEHwDAOyyDAplEN6xYBkeKH30+u5OELvwEif1S2b1dBIpprhWPp5THsKDMy8Lzz+BVRlZddJYds= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2016 15:51:09.1609 (UTC) X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[217.140.96.140]; Helo=[nebula.arm.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB0927 X-MC-Unique: rxMZLpzkNPCWV9agN9c7cQ-1 X-IsSubscribed: yes Hi, This patch removes what is left of branch_cost uses, moving them to use the new hook and tagging each left over spot with a TODO to revisit them. All these uses are in rtx costs units, so we don't have more work to do at this point. Bootstrapped as part of the patch series on aarch64 and x86-64. OK? Thanks, James --- 2016-06-21 James Greenhalgh * ifcvt.c (noce_if_info): Remove branch_cost. (noce_try_store_flag_mask): Use max_seq_cost rather than branch_cost, tag as a TODO.. (noce_try_cmove_arith): Likewise. (noce_convert_multiple_sets): Likewise. (bb_ok_for_noce_convert_multiple_sets): Likewise. (noce_find_if_block): Remove set of branch_cost. diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index 0b97114..f4ad037 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -811,9 +811,6 @@ struct noce_if_info unsigned int then_cost; unsigned int else_cost; - /* Estimated cost of the particular branch instruction. */ - unsigned int branch_cost; - /* Maximum permissible cost for the unconditional sequence we should generate to replace this branch. */ unsigned int max_seq_cost; @@ -1683,7 +1680,8 @@ noce_try_store_flag_mask (struct noce_if_info *if_info) speed_p = optimize_bb_for_speed_p (BLOCK_FOR_INSN (if_info->insn_a)); insn_cost = insn_rtx_cost (PATTERN (if_info->insn_a), speed_p); - old_cost = COSTS_N_INSNS (if_info->branch_cost) + insn_cost; + /* TODO: Revisit this cost model. */ + old_cost = if_info->max_seq_cost + insn_cost; new_cost = seq_cost (seq, speed_p); if (new_cost > old_cost) @@ -2159,7 +2157,9 @@ noce_try_cmove_arith (struct noce_if_info *if_info) /* We're going to execute one of the basic blocks anyway, so bail out if the most expensive of the two blocks is unacceptable. */ - if (MAX (then_cost, else_cost) > COSTS_N_INSNS (if_info->branch_cost)) + + /* TODO: Revisit cost model. */ + if (MAX (then_cost, else_cost) > if_info->max_seq_cost) return FALSE; /* Possibly rearrange operands to make things come out more natural. */ @@ -3341,8 +3341,8 @@ noce_convert_multiple_sets (struct noce_if_info *if_info) of conditional moves. FORNOW: Use II to find the expected cost of the branch into/over TEST_BB. - TODO: This creates an implicit "magic number" for branch_cost. - II->branch_cost now guides the maximum number of set instructions in + TODO: This creates an implicit "magic number" for if conversion. + II->max_seq_cost now guides the maximum number of set instructions in a basic block which is considered profitable to completely if-convert. */ @@ -3353,7 +3353,8 @@ bb_ok_for_noce_convert_multiple_sets (basic_block test_bb, rtx_insn *insn; unsigned count = 0; unsigned param = PARAM_VALUE (PARAM_MAX_RTL_IF_CONVERSION_INSNS); - unsigned limit = MIN (ii->branch_cost, param); + /* TODO: Revisit this cost model. */ + unsigned limit = MIN (ii->max_seq_cost / COSTS_N_INSNS (1), param); FOR_BB_INSNS (test_bb, insn) { @@ -4070,8 +4071,6 @@ noce_find_if_block (basic_block test_bb, edge then_edge, edge else_edge, if_info.cond_earliest = cond_earliest; if_info.jump = jump; if_info.then_else_reversed = then_else_reversed; - if_info.branch_cost = BRANCH_COST (optimize_bb_for_speed_p (test_bb), - predictable_edge_p (then_edge)); if_info.max_seq_cost = targetm.max_noce_ifcvt_seq_cost (optimize_bb_for_speed_p (test_bb), then_edge);