From patchwork Thu Jun 2 16:53:56 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Greenhalgh X-Patchwork-Id: 69195 Delivered-To: patch@linaro.org Received: by 10.140.106.246 with SMTP id e109csp216958qgf; Thu, 2 Jun 2016 09:55:08 -0700 (PDT) X-Received: by 10.66.51.135 with SMTP id k7mr6542396pao.155.1464886507972; Thu, 02 Jun 2016 09:55:07 -0700 (PDT) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id vy4si19606011pab.231.2016.06.02.09.55.07 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 02 Jun 2016 09:55:07 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-return-428925-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-428925-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-428925-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=g4WtC46dccBJt49g +Dh53w06bUu1Y7aBdzuK+y5hv6RQ4ulyAvJx2ukv7GvqhNZ/OrQGFcckL695YoBT Lm3h2yLbCrlurOxLAOsffEBXvnk/5WhKqRozx0r6+mBZ74BL8FIZhhMbZHosYRsm NxhnJQ11JpkKLVbxqXNV5SX0U3s= 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=GZfxDsk2+w9wXIUO4gMZjX oLt9s=; b=cSQ/Okqyxn9zVt81GEUjS1KZ6NlHcuFInB+DxdbW745Tgex8JEzwCD ne4fUkwSzSfJ6wnYunkGxe2Oq1wur/JeMJn+VOgqh+2nPY7frst+sW9tUaz65++r qeiZ79X2d3ZMjBjCxRtKF6PrkJ9MX2q4JqgSotgKeRhQJ7l41HXNs= Received: (qmail 21461 invoked by alias); 2 Jun 2016 16:54:44 -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 21211 invoked by uid 89); 2 Jun 2016 16:54:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL, BAYES_00, SPF_PASS autolearn=ham version=3.3.2 spammy=realistic, screw, estimating, ltu X-HELO: eu-smtp-delivery-143.mimecast.com Received: from eu-smtp-delivery-143.mimecast.com (HELO eu-smtp-delivery-143.mimecast.com) (146.101.78.143) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 02 Jun 2016 16:54:33 +0000 Received: from emea01-am1-obe.outbound.protection.outlook.com (mail-am1lrp0015.outbound.protection.outlook.com [213.199.154.15]) (Using TLS) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-29-DWT0yooHQJGvDJflwi6w9w-1; Thu, 02 Jun 2016 17:54:28 +0100 Received: from AM3PR08CA0061.eurprd08.prod.outlook.com (10.163.23.157) by AM2PR08MB0385.eurprd08.prod.outlook.com (10.161.235.23) with Microsoft SMTP Server (TLS) id 15.1.506.9; Thu, 2 Jun 2016 16:54:27 +0000 Received: from AM1FFO11FD047.protection.gbl (2a01:111:f400:7e00::159) by AM3PR08CA0061.outlook.office365.com (2a01:111:e400:8854::29) with Microsoft SMTP Server (TLS) id 15.1.506.9 via Frontend Transport; Thu, 2 Jun 2016 16:54:27 +0000 Received: from nebula.arm.com (217.140.96.140) by AM1FFO11FD047.mail.protection.outlook.com (10.174.65.210) with Microsoft SMTP Server (TLS) id 15.1.497.8 via Frontend Transport; Thu, 2 Jun 2016 16:54:26 +0000 Received: from e107456-lin.cambridge.arm.com (10.1.2.79) by mail.arm.com (10.1.106.66) with Microsoft SMTP Server id 14.3.294.0; Thu, 2 Jun 2016 17:54:24 +0100 From: James Greenhalgh To: CC: , , , , , Subject: [RFC: Patch 4/6] Modify cost model for noce_cmove_arith Date: Thu, 2 Jun 2016 17:53:56 +0100 Message-ID: <1464886438-17892-5-git-send-email-james.greenhalgh@arm.com> In-Reply-To: <1464886438-17892-1-git-send-email-james.greenhalgh@arm.com> References: <5617A4DE.6020004@redhat.com> <1464886438-17892-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)(2980300002)(438002)(189002)(199003)(51444003)(377424004)(5003600100002)(92566002)(586003)(104016004)(6806005)(110136002)(86362001)(5008740100001)(5890100001)(2351001)(11100500001)(33646002)(189998001)(50986999)(76176999)(229853001)(4610100001)(19580395003)(512874002)(4326007)(87936001)(106466001)(77096005)(8936002)(19580405001)(2476003)(2950100001)(568964002)(36756003)(84326002)(8676002)(2906002)(50226002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM2PR08MB0385; H:nebula.arm.com; FPR:; SPF:Pass; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; AM1FFO11FD047; 1:X54AG+KOVJiJyNKQS/p/gVqG9vJ/8jy3O1VrcOx6KWkxcOs+NydgkYMU7SKHrvzk5PVS0UHNTS44N4njQsyL4APPJp3O78291JLIMDpnGYMR/lT4P8t/m+bLMDcK+OL118yOI2aWxZZM33motiNEHNqUw0uTvs0OZIXKmAmj7J4b+Ytz5T2qBpkxqyKfKdlpJAK/UhYLztn2ScZVzLjeRCm5mMDUhReurGaQNc9fTCUxNIo7a7fm8+WQuh9WZ8zJGFrrIZPcwMhEjGwahiAI7jZvag56cIw0gAj8oFUH1rb9jnAP0kZGT4g7AYfhODJvrNKPgBjGIaMcr0wlMfipKngHQJenB7qHB2N8wwIbvBpcXel1lCqk0lYUMTXRCj/4T+m4G1hPQKZw/7IiD0NPofp5VVA6cYPb2mqSpXNgbDXVfHqMfICbeUp4XCKD0auy19EbJPE2MdCHrfZdLcEWdG8OPqzS65T649XNJp47JxV3fHYBuZE0XKyxaw5CFOlwo/r3iNU7+p3qgvieF6myLFZZoJdUDglbjX5IelVL9mvp81YzYlLSfSXWaHpEd56F X-MS-Office365-Filtering-Correlation-Id: cebcabb9-6848-4494-29a1-08d38b068ece X-Microsoft-Exchange-Diagnostics: 1; AM2PR08MB0385; 2:R1hDHOPUI739fu+Tlvng+AVoN/uQlqCUud/S3vWGWu5pSSV825DHVQ0CKlRnKyOc2nNBeQDMuzqDHXPzr/0t4Y/jKC9RK+3Wirxix9A/DCqNix6cNBxOWiQ09pqlGEVkD/uViIjU+7mNM8hPLiVadqHQDCY8j3tV51f8A5NON66FAzmeMIh6LF5TPq6KLcVL; 3:+++PaDx6HsdL/XzWNh7wGVZhyG+YcCBxhh6v13E+illYkNsfi01MCAVYhO8hndQHx6mKfTrYZaaYWpzsEOANXmSFi6IDJNxFQbH2Js5UvkulYR4EBw5gGWQCet4ncEGqi7efjGQROiB5yYfTOLbAPtnyRkifYNYcEXCZSI52jAroGxkKZixftyaFFFSeh5HLxXK7oAtPEzl8jf6BeuEVRwOhWCLBQB6i8XdPSqxTUWzEUvnYQeaB+TRvdJab5UEAA+cjlSykKG7njcWNwGWH7Q== X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(8251501002); SRVR:AM2PR08MB0385; X-Microsoft-Exchange-Diagnostics: 1; AM2PR08MB0385; 25:ZWcQti9GMUKBsoVlK6QOsOh7c3VaSRSpaSuClq8cF6BezxyUFUoiZ97BHRX02U63pt46yGLlKjrUHBYK9Vw9D9o4JCvX/r+vVcH5exwNdV+kEp54jJI3RlL9H6RPL+vBgb71jVIuY4PlaX2ZPgBJTuk3CVO60pC+vzY+SZlUjnSb0MTLwTY25wQFTrzpN03keftWc35/GMt0R5Nf5m4Ocw0Z182XtwRTVLGMDnQtztup0E2qzv/x2xsTtL/YAdnHuByWqu91fzp638XZJN/TJl4dyuvGFPRGs8maD1oUOlrNa3HQVuV3cEQ7TUfRtRiKXVRHydhFx5Fdmap/Z8iIul5VtAt4YsmdJfdUTSHEevHE63EIeN63Kl3CZRtoEGOLGnasxH0gwRd6CmwANTGCK29gpgmo0qZO0wvedJqOix9/8n02e9k5uoJGLNve96JEfWbDLPpNc3SqYoAFRdbgw3SS9iKtelcszZBeIQy4Sf+MbdfdFwTrH6mxJgijgSo0; 20:6rJ8cst1/7W5mpnA8WlQYdFpQs81Iu7g5xg/LYwaZuTUxzR4CjX4l1kbkkpUZ2OkVrBxxgBQHRV834VzPTE4TQl+pEPUMyJXb40K9TQg6et0sw6CrH3egrmQpPmWxfO+nwZx7oL95l0EA1CHnh4JZLNBo17jvI4Kq0xnFokaRMK1Y2/mDRceK5JugOU6poLhz7/rWfoxcwh30iqQYADYNi57hxraTraMmXJdMQsoFWcypuF/nHhZgTPn9UBCuDjH 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)(8121501046)(13013025)(5005006)(13020025)(13024025)(13023025)(3002001)(10201501046)(6055026); SRVR:AM2PR08MB0385; BCL:0; PCL:0; RULEID:; SRVR:AM2PR08MB0385; X-Microsoft-Exchange-Diagnostics: 1; AM2PR08MB0385; 4:4JbKeiJK2Chil/twCbTHh3wi4cA2UQliIjCs5dHvdeVPLU2kvSpvhE3dG6tlzxuXVxOn8PPGic+Blu4R8pSB5nSVnEOrAaYKXGh7ULpA7ayDgXc4AAu8VsIcrHovc5mUYnjpKVPe0LSl6ocGxX1JmsmtMIds2QwvrcNicuBjPM7gHqx0O1NEaVDkz6g0/npD3UEqThFwVZeDjc8JPhRmWm5i6sZuMd4O3ZDabt6APClPeJHTYhKjlDjXeXyzdP4L7Cbk5AFP244ckThmWhTBtugHEyCYZbbAA2ALp6bBU6YtF/rJDhBzUq6pvUSdqJ5DpmYCriZSjP2phPtdG+AnMpeKtAFz/MYBJGowpfNTPZIKj1jJyPS1UrkYUCNpZIA1Kqy1mH/8V5slVpv2+m7JQQH5+x1F2BE0sR4E2HsqJw+Y0PUlakjQ12z/iyPvU45qWpD30wMth6BegqnyBco6NIlBYhyHfin19NB+RQw1oBtIlM0xJ6hFuWraTUeqxfDn3kwmAWt3XWlzLNJbdHD/jA== X-Forefront-PRVS: 0961DF5286 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM2PR08MB0385; 23:Gb08S0DaLZb7OI7oBo0/IG4ikAFLOHeMfhYmz7dfe?= =?us-ascii?Q?Ulyc7FbyGgz6nvjULthVR0ULSb5zmOaOmOtDFSKjhUHy5drhROU8iNG6nQ0e?= =?us-ascii?Q?3q0rVsd30Op0bJz9xg+gTQ77LB9R4t3v7UDt24HlT1GYxuO+9OXw54OaDy+r?= =?us-ascii?Q?wTtNGnsq/iuc+1wXm04NXGXNROrQzttKXFuJ4IhCxABt5weHUYZEFCGqdAUq?= =?us-ascii?Q?eyxW401FIAmuRhu0QZ77vYmzN3UCmuD0Nc+xCpKwwUeuociOESRVZGUq4zqd?= =?us-ascii?Q?MiehesojC7+uZpGmJN/F2E000R8Rox2SevCRWT43E3bypY5h0bXpPaPsNcR7?= =?us-ascii?Q?m0GkDBv/91rwiJ7l8LlobyFAX1OdJuCnDDFHx5IuqnCrMveAoHSW4a7KVasy?= =?us-ascii?Q?SMy/sUYrly+6pWJi6oexZhY8PepvDhFCEYaWtJNKvkFt3QL5NpYUriarINA7?= =?us-ascii?Q?mFpGd5efrpa4o6UrOOe8QC1ArZ6a6VVRJ0GkfKfjXOsvVMIX8aTGfMVdV81i?= =?us-ascii?Q?8kKQzt+ADxhM2Xw+2B2UCxy+BV9OUEXuD14B7s9TjLD+hBuXEPOjlnkNKmpo?= =?us-ascii?Q?bwWrPymqynlzW+le0/RuEd6Zyt9d1rVLqHrtT5JuKzCTrFVZfsdx7Xn7T3bl?= =?us-ascii?Q?yfn/2r6NGgqZovtZT3lkWlV8GIrDnkTHypgidk7NFaZoutBNGrYf8aXnC45U?= =?us-ascii?Q?8fo4cNZYSSEiBnh7eZIGFWegBRPY0ZdtdHlIEkDROgl5C/cW++AXWQLgQ2/9?= =?us-ascii?Q?3nHRsK4n1eL7F7aLaWePwngXmctiEWWeUeqk9Kc9WdLqgLMCFeu9Wd3lOYGu?= =?us-ascii?Q?+cBWACthJBc3h/U6tmDB50x4ImaUNPcGAhV9/ndQq/ggAUnLKTqnj92XF/bP?= =?us-ascii?Q?vLU915cGlUitegNGr08pYat0N+zkeSyHJUPeprpT9IV9k3NlLz5CCuCktpCA?= =?us-ascii?Q?6K232VYO+NUaxSN5e27T5rnY3aRHRhlUxASCGRjdYFwdSzDMpCxprtVmE7sy?= =?us-ascii?Q?IMWvTfoVEccWx4yXr9/HxKlIUOZ8XywxGbJqGjGTzGBtVTU4kfIMhFWLrrkD?= =?us-ascii?Q?J2ZMz4=3D?= X-Microsoft-Exchange-Diagnostics: 1; AM2PR08MB0385; 5:ES/U47bF2huiOtbrROtUiaQNxJwXhsPqudfdJyryuESPVeAIN8ldxW/fP8ffFvVWdUjHFOvCakFpv/JL0yYNYEG8HOGw5I2iY/PIx3LLgkH2o+7UpRdwX60ohaVhIvUjUsTolD0o32wwwy5wLhJNIA==; 24:MpRsHrRNmzLGNJ3viQL9sq4Ojl2QkOCBb1P2J0TBL+k8cHi1uTcAbyEFkcMkTaZf/I6hnOSRVVM3bCaaLNknv1a32J4F6iVasHpr7+iIBzo=; 7:qcDWzQ/9yaDi30KqrhUN+HQyTX5T77QAod/dcvn+tLZQU05tb7e6A1uqZa6iOY1PDVC9oIIFLtvvbfJitO2hDxSjthOiqqh++kesFFwNWcnxygZrQA7L75Ri4GhvarFVUQi5VMOuuhDLUTVXIqEFXSIedih5sYFiGqnumI5G6oQ5IHtk//cPreOW1bRDye0W; 20:lq/eFO5XCTF0cP2lwC2wurbfb6YeIvk4vWG7SFORZvi3vIbSSFzGfS03gvnAeNTRkejQYNm3hihC0rQqljzYRGFrcyBEGfkpfQqN5MYitrXLmKn0Dd0sti21jOIUi+x9wBXsgReDmWP6toWkn8PWHZfppK99ZmuhE0Zi6L9pVeY= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jun 2016 16:54:26.8816 (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: AM2PR08MB0385 X-MC-Unique: DWT0yooHQJGvDJflwi6w9w-1 X-IsSubscribed: yes Hi, This patch clears up the cost model for noce_try_cmove_arith. We lose the "??? FIXME: Magic number 5" comment, and gain a more realistic cost model for if-converting memory accesses. This is the patch that will cause the largest behavioural change for most targets - the current heuristic does not take in to consideration the cost of a conditional move - once we add that the cost of the converted sequence often looks much higher than (BRANCH_COST * COSTS_N_INSNS (1)). I think that missing the cost of the conditional move from these sequences is not a good idea, and that the cost model should rely on the target giving back good information. A target that finds tests failing after this patch should consider either reducing the cost of a conditional move sequence, or increasing TARGET_RTX_BRANCH_COST. OK? Thanks, James --- gcc/ 2016-06-02 James Greenhalgh * ifcvt.c (noce_code_is_comparison_p): New. (noce_cmove_cost): Likewise. (noce_try_cmove_arith): Use it. diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index b192c85..bd3f55d 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -830,6 +830,78 @@ static int noce_try_minmax (struct noce_if_info *); static int noce_try_abs (struct noce_if_info *); static int noce_try_sign_mask (struct noce_if_info *); +/* Return TRUE if CODE is an RTX comparison operator. */ + +static bool +noce_code_is_comparison_p (rtx_code code) +{ + switch (code) + { + case NE: + case EQ: + case GE: + case GT: + case LE: + case LT: + case GEU: + case GTU: + case LEU: + case LTU: + case UNORDERED: + case ORDERED: + case UNEQ: + case UNGE: + case UNGT: + case UNLE: + case UNLT: + case LTGT: + return true; + default: + return false; + } +} + +/* Return the estimated cost of a single conditional move, where the + condition is calculated using the COMPARISON operator in mode CMODE, + and the store is in mode SMODE, depending on whether we are compiling + for SPEED_P. */ + +static unsigned int +noce_cmove_estimate_cost (machine_mode cmode, machine_mode smode, + rtx_code comparison, bool speed_p) +{ + unsigned int cost = 0; + + gcc_checking_assert (noce_code_is_comparison_p (comparison)); + + start_sequence (); + + /* We're only estimating, so we don't need to be too cautious about + getting the operands correct, but we would like an estimate. We + do need at least two registers, to avoid the comparison being + folded. */ + rtx creg = gen_reg_rtx (cmode); + rtx creg2 = gen_reg_rtx (cmode); + rtx sreg = gen_reg_rtx (smode); + rtx sreg2 = gen_reg_rtx (smode); + rtx dest = emit_conditional_move (sreg, comparison, creg, creg2, + cmode, sreg, sreg2, smode, false); + if (!dest) + { + /* Set something suitably high in here, as our best guess + is that the if-conversion will fail. */ + cost = COSTS_N_INSNS (32); + } + else + { + rtx_insn *seq = get_insns (); + cost = seq_cost (seq, speed_p); + } + end_sequence (); + + return cost; +} + /* This function is always called when we would expand a number of "cheap" instructions. Multiply NINSNS by COSTS_N_INSNS (1) to approximate the RTX cost of those cheap instructions. */ @@ -2040,7 +2112,8 @@ noce_try_cmove_arith (struct noce_if_info *if_info) rtx a = if_info->a; rtx b = if_info->b; rtx x = if_info->x; - rtx orig_a, orig_b; + rtx orig_a = a; + rtx orig_b = b; rtx_insn *insn_a, *insn_b; bool a_simple = if_info->then_simple; bool b_simple = if_info->else_simple; @@ -2050,16 +2123,15 @@ noce_try_cmove_arith (struct noce_if_info *if_info) int is_mem = 0; enum rtx_code code; rtx_insn *ifcvt_seq; + bool speed_p = optimize_bb_for_speed_p (if_info->test_bb); /* A conditional move from two memory sources is equivalent to a conditional on their addresses followed by a load. Don't do this early because it'll screw alias analysis. Note that we've already checked for no side effects. */ - /* ??? FIXME: Magic number 5. */ if (cse_not_expected && MEM_P (a) && MEM_P (b) - && MEM_ADDR_SPACE (a) == MEM_ADDR_SPACE (b) - && noce_estimate_conversion_profitable_p (if_info, 5)) + && MEM_ADDR_SPACE (a) == MEM_ADDR_SPACE (b)) { machine_mode address_mode = get_address_mode (a); @@ -2087,6 +2159,7 @@ noce_try_cmove_arith (struct noce_if_info *if_info) insn_b = if_info->insn_b; machine_mode x_mode = GET_MODE (x); + machine_mode cmode = GET_MODE (XEXP (if_info->cond, 0)); if (!can_conditionally_move_p (x_mode)) return FALSE; @@ -2103,12 +2176,32 @@ noce_try_cmove_arith (struct noce_if_info *if_info) else else_cost = 0; - /* 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 (!is_mem) + { + /* If convert in the case that: + + then_cost + else_cost + noce_cmove_estimate_cost (x_mode) + <= MIN (then_cost, else_cost) + if_info->rtx_edge_cost - /* TODO: Revisit cost model. */ - if (MAX (then_cost, else_cost) > if_info->rtx_edge_cost) - return FALSE; + Which we rearrange using the rule + (a + b - MIN (a, b) == MAX (a, b)) + to get... */ + if ((MAX (then_cost, else_cost) + + noce_cmove_estimate_cost (cmode, x_mode, code, speed_p)) + > if_info->rtx_edge_cost) + { + return FALSE; + } + } + else + { + /* We're trying to convert a branch and a conditional load in to an + unconditional load and a conditional move. Cost those directly. */ + if ((then_cost + + noce_cmove_estimate_cost (cmode, x_mode, code, speed_p)) + > if_info->rtx_edge_cost + MIN (then_cost, else_cost)) + return FALSE; + } /* Possibly rearrange operands to make things come out more natural. */ if (reversed_comparison_code (if_info->cond, if_info->jump) != UNKNOWN)