From patchwork Wed Sep 13 15:00:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tamar Christina X-Patchwork-Id: 813480 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-462042-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="ZVSDsXyn"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xslH66RJxz9s76 for ; Thu, 14 Sep 2017 01:01:22 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:mime-version:content-type; q=dns; s=default; b=azKFLojVk3HUbSnnA8zwxm1spaUhxAXeacwC1tnO11LnyAuVHo BtROjMpE6UKAGSsHCYKaJMEREtvv3eAZIv5yx/09f0DrpCsFDjzXdFEsf3Re88lF 7CLg4J3Q3Y9FxmxliAFY26EJ4pN9wTyMpZBbRlV5hrbwwNYh25rc7I11Q= 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:date :from:to:cc:subject:message-id:mime-version:content-type; s= default; bh=oVp6nryk2yfQpmz+XSy3n8MLCMM=; b=ZVSDsXyn7ovZAlkLTEez DXYvNwobUiMgv3m1pXEZ4T92+/rzLODKLxjipEr7mB0WRBZkjCvhcgYIVlxUM8pM pGHjCXj5smDWq6oRLdA9k/9tCdP8Bsf1W6lViUszncwgNW9a5y2NhwGHwpQkZTBV o89j0wRyCB9WCKBEvSG93nw= Received: (qmail 112431 invoked by alias); 13 Sep 2017 15:00:37 -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 112252 invoked by uid 89); 13 Sep 2017 15:00:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.7 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: EUR01-HE1-obe.outbound.protection.outlook.com Received: from mail-he1eur01on0077.outbound.protection.outlook.com (HELO EUR01-HE1-obe.outbound.protection.outlook.com) (104.47.0.77) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 13 Sep 2017 15:00:16 +0000 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Tamar.Christina@arm.com; Received: from arm.com (217.140.96.140) by DB6PR0802MB2311.eurprd08.prod.outlook.com (2603:10a6:4:86::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.35.12; Wed, 13 Sep 2017 15:00:12 +0000 Date: Wed, 13 Sep 2017 16:00:24 +0100 From: Tamar Christina To: gcc-patches@gcc.gnu.org Cc: nd@arm.com, james.greenhalgh@arm.com, Richard.Earnshaw@arm.com, Marcus.Shawcroft@arm.com, pinskia@gmail.com Subject: [PATCH][GCC][AArch64] Restrict lrint inlining on ILP32. Message-ID: <20170913150021.GA23582@arm.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.24 (2015-08-30) X-ClientProxiedBy: DB6PR0201CA0037.eurprd02.prod.outlook.com (2603:10a6:4:3f::47) To DB6PR0802MB2311.eurprd08.prod.outlook.com (2603:10a6:4:86::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 42ec6302-3a01-4cfa-7d97-08d4fab8228e X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(49563074)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DB6PR0802MB2311; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2311; 3:8uIB1Pmwmrbn7230Ziv7pc7K8ZVA/sOlSNMLIZVoiaJKKnbKqTpI8NElMcwPiS86MkkmWm7C0JNhXnrFdd2vMcc0RRRho5g7Xeet8dRfnwMrs6+Xi3FurLJ1ssEo+fHkg3frFdbuzl7t70vx6FPR4f211EgnfIknjvG9+KVrRC0B6sdgJUIw0rniEfw5s3/TXPuP/Box+QFb7qZncrx/30Jc9SvGEBM4EfzFM+f4sCWgyudE0BYPStMSilF7edac; 25:k0pKKz+L0mm1Ec/PDDkSViFvgktC/OdgKXLgsRcLDrEITcGOVn9S9iZWsHX3lPlH947iI7DSR6rGfeH6qUklzpk0HVioMzbchc5zsan7UzaAFsctcursvEAeuFOmXfoXd/1LjsPHOBmVzqf9YbnIthCHmgLEeD3nd1uhsaJJTCMxYTPvQQmDv/KnHwYHhfYOKleUIRNW6VbgDcyeTnpIyJmDDXpMvSCUb2rPXFPLgsEA3VI7g2+E8p0aSaEv6l3Eo6iZmDZaTA9xbOPNvGT51HMH3oPDPp5ToVCBa2TVoMzX9QGpCHVSCfqM/0PZDM2xAS9YWsGIUOuhYlfIe87sLw==; 31:sk30Vn64RPKMthVxHfdnTDq5MmMQmTsJ73d+LqyaL/MCIKEbuSra+iRxMjBz5iYA/GjUVxI0sLG5cB45pEj8NYpmOxUkRW5KWG9Nvm4dpCwiNktQMs0sdAmteydYlWdSCvEcGqRe+ToRvzB6WX9rb+VdvSXKUvZiCjECdM0KFJBLUp0U7jwECugoZEMEeHyZeYHLPhI3D0rYOvLt6xAfmRPbR4hFwHjg1UdaS7+79W4= X-MS-TrafficTypeDiagnostic: DB6PR0802MB2311: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2311; 20:71qy6VDzHgm8S70lXJiwjQI1mOkA72CpyPcAJUs2HHUc4ksYnxh0QLHebExXtyvqR1bzRLJUhfKa5BkY/ATLvWjrqOsPHgnfH37FqIrb/02dXMJ2lWKa1k/ytSzm4331iHJ6GtLadd1voHvRN66KPrOmywf7ymM5hyuCVBLT/3E=; 4:qxKQTcQ/UIxl7I8o+RBiVcgfu6osllXNj0ln8QTQXw1Q10Wse2ZBey4zjOc3zunOLDo/Jra8ddhT+n0OP9LA7Es7ZucsQEpHzzdJzxHawuDNn1ccVnfAJ84gIYPQ3is6vAYgXSUJz+7B1ngQRb79s6Wq580u0VNUsrXqAT2qKBRFWNBE3Wmr3EMgd99nzmwgVaPH4WNBGmEqCEoJm7XM6tOZCnhGyJFOMYgG4euFDTd1F65ZOR2hO+Yqpm7WeSvY1PaLRFps75HUzHGxs/qgHS35mPCZaDYbDQXVtiaRBSw= X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(100000703101)(100105400095)(6055026)(6041248)(20161123560025)(20161123555025)(20161123564025)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB6PR0802MB2311; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB6PR0802MB2311; X-Forefront-PRVS: 042957ACD7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(7370300001)(6009001)(346002)(366002)(376002)(39860400002)(377424004)(189002)(199003)(53754006)(189998001)(72206003)(568964002)(25786009)(55016002)(4001350100001)(86362001)(6916009)(97736004)(16526017)(53936002)(110136004)(3846002)(6666003)(478600001)(316002)(2476003)(66066001)(1076002)(6116002)(5660300001)(81166006)(54356999)(8676002)(50986999)(83506001)(84326002)(4326008)(5890100001)(68736007)(81156014)(33656002)(2351001)(21086003)(2361001)(2906002)(106356001)(7736002)(101416001)(105586002)(4610100001)(305945005)(36756003)(7350300001)(18370500001)(2700100001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0802MB2311; H:arm.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2311; 23:m7jwWPZ7XgKVa1UkgFkOc/Kdt4u+SmqoV1hXv3T5RzJ3bjGmoRsqCKVuI/smrIx6ErLrt4yLjPnm0EEpRM8f60HoWjLp+HbIGEGs0NJ9XPQ+fOCP3gQdF5E3udN055I4B9atdOO04AZxpwdgU/oS4Jnsuabl1JL3d9aHJryWJf1p0QmYHdiTYfV0riyaFMDcgZYS1Xlh1TLTL1TcMyAEvb6SdRZ9gC/SngAYThnFQ9iFrJeBzT8yj7I/L8S3Elpv/891AXKhvyVjlAlsFqzwbBIN94aMTr2sljEz1EdEHYXj2tjIbLdeq/G5x0tindUKH9CkC0yEjb4eRJPoPNlTGrux2xx7wlwmg7Q2VT+XxT5N4e5/DW+pfM5EfQjkuS/0pd3v7o/iFmZjuI80SkPC/D27TmrEcXXofFiaThvV5zxPuUm7QImPv2tJJc0iLjhbSuqy7kY4LuCkFmsHd92bKzL6rp/ywcDTWvcN/ryJyNABSeAdotrPbsWdnm0E4qIuIuvMqWUsCGbJUCNSMLlVFY4cizFvGDOMIht9xykW5FDWal+O9LPNYMuqM1WKdgJGkXUz11u+WkrmqTlZ7rQFYzcUZEeOgwg0cwlYFQy8wtl9aOi99dgQ/Dicss3/pJH+d3JDcYmKd62ileFhiVGebxu5/Zb/PksA0DivA0Np1M3neUIUzo8Wkn2NKWt28VrvRw/bE9YZhEjVnQvCtwcnvzJQ/SyyIlOoXo6S4zM9wyR8COmn8/486RfECUYW//iDtUcyghqwT9Qc0f1TOVfiK6uEOyAt46/ceJou0IzYnCSQWT1hAvaG2qObdvNzTLqJz8ROE4Jq2BGfRFikvu6py/kSTvmt2agpT/rPR6j9if9DnUjAW/6mI7BcV+qiVf4+78PR6rLr7prbZwk33pEw2lSk7WUBrk+zl4tq/Mf13JdLtEArux7z/dYtZxxZYVUEAv0oxMQGF+Y7r5zyn/8b6Zm/bJaWH0nWbd+KhpyBYYECOvAPgkYnV5eHcsMAAOzChVttmWNz+hVPnnjSYTQuvR080/1v78Nz/4MHrB3vRa09oEZHh2Dt3craYp32Q3D+7M7ziECsvq2lnR+hDlm60pbVMt4aNdWpX1xA40PJzSV3uVFwbGWd9c30GzKOFTp4u38W8ynzS6ZZ4sCGm6xEMDc0+GtR6Jy9j8OYbcSXt/CKqENN1Of81SmMVIuJCV22Ft69PRtoz6L+e6tDygLzgvaw04eyCP/YlYLIksnSevDOI08l/dUUvp4D7v9Pge1P8EXoJJvqEe/JEdPRBUj5lN5wJp96AGiJV/86JzRQe/2on579OX3lTgEfKwsGCfYqrRKU3JpdjKitNT5w/9SeVw== X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2311; 6:FWLla8eSZlvi5hdZY7wkzzKLWJAW4BOYrULMj5N1mOjerT2fS5ZHOBxZX7CXQrJwQt8DsdtRk9C/5GIXyxbsaJyUtaMz04PyZRQ8PbRTiffyIvwDFz+2dWjjQtpHnflRvm0kI2E5vgyLdhWkacAJKUPuzHCboWc/Fw6WasMzUwrUQw8FzhU/Oa7MYh5LmvnowfW3m+tREu5Y+n8GhOaZr8fYVwV0JFt9g/b4B9nXptjo+RwHB5BshdHAbAAP4MKevv3NqfLSmGO9Ce+RE/v6dWrGadjzHASw6d451c05iw141EJCeoXeWdY5TPJ5H2I1ZNuiMgPA82R3urHxZh+bfA==; 5:QYdufRyWW5HtBxMnbjb3qYRGiT3LSn8gVW7i5O1Dn47mz8jP8LWbYXSxHig3MiXXI8nixWhkIlLXfT597Kop8Cq+AzZ6isQajmrTYg5kHI1/fSJVEWRAydIpuxmqGnQ84VBv6K+yFUF+GHHOE0OP8g==; 24:LpQYoj+a8I/9J3nyfWIfVnByIi1P2QOTtSGLWY+jjQa5WFRxJ//mZbIwytXuaVdknkfVitkNcRpMSdae4ExFf/kbv4M5BzoTewWFWVy6SSY=; 7:9uozQwlrXNbQwK3hF4y3Kv4YlrLjkvMw3xN0dWvoAAB07NqgtWcHxiHNgaz9jHJ90PDzDfo0YXhr9iHtYz6q882436hyexXukEc0Uq4Xo5e7BxPovpyTPG20i+VMsfztqUWt3KAlilh2uZV4ea/WCUaXcFSy1+QiMq384m4BTwnM3MpclwFQfOMf0m2UJhKaoM2XeWISBLdP/DkiHNe9ryXfsw+ocHdwOqw/7GNhcn8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2017 15:00:12.5522 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2311 X-IsSubscribed: yes Hi All, The inlining of lrint isn't valid in all cases on ILP32 when -fno-math-errno is used because an inexact exception is raised in certain circumstances. Instead the restriction is placed such that the integer mode has to be larger or equal to the float mode in addition to either inexacts being allowed or not caring about trapping math. This prevents the overflow, and the inexact errors that may arise. Unfortunately I can't create a test for this as there is a bug where the pattern is always passed DI as the smallest mode, and later takes a sub-reg of it to SI. This would prevent an overflow where one was expected. This fixed PR/81800. Regtested on aarch64-none-linux-gnu and no regressions. Ok for trunk? Thanks, Tamar gcc/ 2017-09-13 Tamar Christina PR target/81800 * config/aarch64/aarch64.md (lrint2): Add flag_trapping_math and flag_fp_int_builtin_inexact. gcc/testsuite/ 2017-09-13 Tamar Christina * gcc.target/aarch64/inline-lrint_2.c (dg-options): Add -fno-trapping-math. diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 64b60a903ed7c0090298989333894442a277ccd4..1efc56dd40de8ab1f6ee1b743b804f0c3ed887b2 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -5122,7 +5122,9 @@ (define_expand "lrint2" [(match_operand:GPI 0 "register_operand") (match_operand:GPF 1 "register_operand")] - "TARGET_FLOAT" + "TARGET_FLOAT + && ((GET_MODE_SIZE (mode) <= GET_MODE_SIZE (mode)) + || !flag_trapping_math || flag_fp_int_builtin_inexact)" { rtx cvt = gen_reg_rtx (mode); emit_insn (gen_rint2 (cvt, operands[1])); diff --git a/gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c b/gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c index 6080e186d8f0c6f5ede81c6438e059e8b976378f..bd0c73c8d34a2cb52d0a453a175bedd59bba5457 100644 --- a/gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c +++ b/gcc/testsuite/gcc.target/aarch64/inline-lrint_2.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-require-effective-target ilp32 } */ -/* { dg-options "-O3 -fno-math-errno" } */ +/* { dg-options "-O3 -fno-math-errno -fno-trapping-math" } */ #include "lrint-matherr.h"