From patchwork Fri Aug 11 11:01:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tamar Christina X-Patchwork-Id: 800498 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-460225-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="THhBSwxH"; 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 3xTMX966hwz9sR9 for ; Fri, 11 Aug 2017 21:02:00 +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=muCHvkRL2v4sABoWTNHRs5XEEbLveEiinjTIpzMZ/ww4c4zX7T C2eOWO/k8IJczRINMvzauqYT/92TJxI2bJEH7+wlnM0QH8z1zvFs8leBXK+0gkmG mn31rE/s3JytiD10sCO4mWjmcsh8xiweZsUDZg3TZpA2g7uHUBMUWE4JY= 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=fBZyN8SNyt/sCPltyRZyC6biJac=; b=THhBSwxH6guqzxkrjeWM oykz44Io8dSqK8lfn/KhvgTBW3q7M6gI3wQWIdrxrK1opNbnlEyD0JuhEm6d6Dbz y4pwJ1Z6MeQYyUWqI3sPlJo4avQcC8T2urdu/wmgPDAJ+Xs/tPjHIq8NOXFwjMuA tLyIqwA1/2iNrY7LziOn2NQ= Received: (qmail 54137 invoked by alias); 11 Aug 2017 11:01:51 -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 54069 invoked by uid 89); 11 Aug 2017 11:01:49 -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=H*r:200, ior X-HELO: EUR01-VE1-obe.outbound.protection.outlook.com Received: from mail-ve1eur01on0053.outbound.protection.outlook.com (HELO EUR01-VE1-obe.outbound.protection.outlook.com) (104.47.1.53) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 11 Aug 2017 11:01:47 +0000 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Tamar.Christina@arm.com; Received: from arm.com (217.140.96.140) by AM4PR0802MB2305.eurprd08.prod.outlook.com (2603:10a6:200:5f::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1341.17; Fri, 11 Aug 2017 11:01:44 +0000 Date: Fri, 11 Aug 2017 12:01:40 +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 Subject: [PATCH][GCC][AArch64] Fix pattern guard relaxations that are allowing more constants than they should. Message-ID: <20170811110137.GA13171@arm.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-ClientProxiedBy: DB6PR07CA0190.eurprd07.prod.outlook.com (2603:10a6:6:42::20) To AM4PR0802MB2305.eurprd08.prod.outlook.com (2603:10a6:200:5f::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2f837a35-0b92-4a92-668d-08d4e0a85a90 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:AM4PR0802MB2305; X-Microsoft-Exchange-Diagnostics: 1; AM4PR0802MB2305; 3:fQyPpRcZZHGdA0AfOctthxiglqR3n2a5BExcwPPcmPm1x4IHH4UUT3bCdNLtwiOOGgl+OwCCSxBv+AOewYLgyHm4zjihSaMrypoCOiBlo67KsiEdo1kQ9qBWXW/i+l+KMxD0ywWZ+m0EM1J4bF4wPn9wzGZJuqTPOrivHYjayqlrd2VMsVaC3P1BLV1iCcFuI6VnI2GQTc9O/LKFUTDMh+HqbSC3uakW57ZUiiXfXEkfDGQSlokrjBBn6cAzwAhQ; 25:lHx0a+TlXqTigNMX0EXuthPwac8ZrAPe5GOWbJtGv+b8xu23as8ZPMXDXGAlBx3esb8tMj5zfw19F9nLgnnWo1196JySiDD0BIs7fR1mJ3GPNSoP2KAq74lDpVwsGNK48+XEqlXx+wHp7dX1kFPbscTrJskMKkg7C6FNjexp6g+Bn3J95WGjDk/z4qdoTjePkfHjhYzL9e8X7852AuKzJWl06ydTbZXUXp+MdL8P0133NbjfmIR8InTRhyyYYVk0CHhRf9Tlk1C5mNoHUvxhYwPN4rVvWtI3dmdf7Vpdlyl72h+KNJKRGhnDJWC2GbyXjArRNX/RYZKpGczfHzhXJw==; 31:D+Vx3QseBk0NqN3wu9jJ3jHKZx9QOYPcra/jzNi5ZBDMeJcsPhy92+/FGyCDt4ExrmKobG/5OtlQgkE+UpmeTMwi8jHDwssoR6BDnL1Cf1S+4AY0yq/Ik5Hko/FkrW41ABSKk4DD/F6l+2ywvKid3W+CMoFpjqcKro1arWyCt92vGC1jdzSa7K6p5jdH6QMd3FuItNhIq5MAw9uRkhrSWglcUMPIBoicdJUUMLw+W+I= X-MS-TrafficTypeDiagnostic: AM4PR0802MB2305: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; AM4PR0802MB2305; 20:48UAn3LCUJbAC6TtZpVQGHiPEtTqBcRW1U6q9XQVdWHD7BGIBOHs5Y9XybpgO1J+1NzBdiyDjnoNRAmC1pMbzg58r+GQfv/V1KRm0lGIxRgYPyUNRoybiJfssu48RD6yuoRwiJsZ1K/1jhFyDgcWs9xelx63Rw5/39Md4ExEePs=; 4:+U0W9RWeZkcZ5uB0TXZ5Uh+BXRwCJ7z3mrfi90i30RegBFecHGIiv0AmlScyClR4pVDwcoRXHi+oESWjUKUrgo4daKXvwr2f/5YGK5sQ5BAvpJs8EyhwkTlHRESY4rDriCfxZxiMchYqP67xAM/9lKH6Ota8DzP75X+y+8gLzZjn1QqIVqI9+39WNHlmkYz2BM9RYcmNdaUIIKxlQaQut6juXdoYQZBgmcYJXVAk6rEXSf8fV0DITb7s31RBpg/sTtCVPlrJZknnbJ6R5HYXQ8NvPT57jMaVQUZsZhmfOsY= 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)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(3002001)(6055026)(6041248)(20161123560025)(20161123562025)(20161123558100)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM4PR0802MB2305; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM4PR0802MB2305; X-Forefront-PRVS: 03965EFC76 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(7370300001)(4630300001)(6009001)(39860400002)(53754006)(377424004)(189002)(199003)(21086003)(81166006)(101416001)(5000100001)(81156014)(86362001)(8676002)(50986999)(54356999)(4610100001)(53936002)(105586002)(42186005)(55016002)(478600001)(106356001)(2351001)(2361001)(189998001)(66066001)(4326008)(5660300001)(25786009)(72206003)(305945005)(6916009)(33656002)(68736007)(3846002)(568964002)(83506001)(7736002)(2476003)(6116002)(4001350100001)(97736004)(1076002)(6666003)(84326002)(5890100001)(36756003)(2906002)(110136004)(7350300001)(18370500001)(2700100001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR0802MB2305; 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: =?us-ascii?Q?1; AM4PR0802MB2305; 23:1QoSAnCuTjJkBEAqVfItWR401uzPUwFx7S1LM07?= =?us-ascii?Q?YTGNBgAohAD1sKf64uaqY/9w+B+HJNIFWuhRnedcTwOwgTEfV/wh9x3rDhFZ?= =?us-ascii?Q?y5Flu1V85IWNgI6IozpnDd8PA4BBygtS60lve0c3gGuqFirwEcTTP5E66kP6?= =?us-ascii?Q?6sjhpDmGR5azriXcSzI6bOF1JE+2+7lfLJ7ebvZIA3vKlsM/3M3dMwAb0Z2/?= =?us-ascii?Q?XX7v0GhbW7f8qnT5PtPG61fLvSQ+8KyQ2kVy6Efxaw3AD/vG/faD9TbBUBgv?= =?us-ascii?Q?iAggNjNS9e719ksoF31Il2HrIwVxUgr2oyr1CPtInQIePUkC5UjDItJDeAe1?= =?us-ascii?Q?fEUl/+X/AxwWkLTktiPeVV/UFp8x1Dc5fhocTvC3GpgSuyAK6ImrGFopR58k?= =?us-ascii?Q?C3Zolkdo4nCAswFAJVpjgG5187s4NWYd2vVqoiVnoTUkPNZQQGB6Oy14ySsI?= =?us-ascii?Q?gVR6F+n69qs8yPb6TeP7SVvU6qm0AGovP9XDRdISZSNzMXYUo8aWL/xhjt2T?= =?us-ascii?Q?OOs80QaTB3WTlhfaq3Nd74nrSA6f3VTzau1NNFAggKT9f7DxyjWTBF1GWSbe?= =?us-ascii?Q?Fq0R2gaOiZpNzFKJ/UKbt7FyfL55bxA44ZHuoxu4GZrlPmlAwvKh8243Dra8?= =?us-ascii?Q?J4+7U77eVwazfzhbakGmzkcQJ32tWQyfi9wAw3Yd/jFJNRzu2lwGEljffXWw?= =?us-ascii?Q?5AhXhsv0NVkkKDwp02OYuZ91eV7LxcfyXZWj/FVr9rEjJyzOZRbl77ncHZZx?= =?us-ascii?Q?ILVUY2ji733g0svHtpIdv50HdmIqD6H1jVoTvMsVyh9qiaC+RZBsPNiB/BC5?= =?us-ascii?Q?TE6AdS9zH3zOf7j44YovHaK0EbE9Ko4ZpMm1CsByVW8DIOnZmFKyq/1+4t41?= =?us-ascii?Q?jEj6qkGwi7vtTOgY1GiCNMhQRZDPbxT/1txvsBsBAGCzhWzBgq9myi6uieyF?= =?us-ascii?Q?Ky9Ri3f5uXPUEP4qZWna9lVIdw+DaoGWo0RM5aCEKxTQB+4HNCliloUthRek?= =?us-ascii?Q?9Rg+EmNj/+SWJ4aXzs5vmhc7YQ/LGA5PLTMKh9oT04/yJYcLXupqgHaUs1MZ?= =?us-ascii?Q?+Mr/pS+r6EMsaCROn+HWLHwIu1tE+1EZM/Otu4U249EmzaOAyXsFlGatAHLD?= =?us-ascii?Q?8p3Hq6mADJp8mvbqZzLhXu+/M2oLfCP+wWavs5YJX5v9L6CohylP0my/9Xyq?= =?us-ascii?Q?4/5tXIhPyF937XrN+EjTFkaQ2x7Dp3UU2RbHgS4tJdoIoRRbXOb3lQwV6nMH?= =?us-ascii?Q?UVz4EWduh2TvXY8hiDpoBsoIE2Fi3Xov/YU07rfjaiB1OhVKWj0EZQ3TKckM?= =?us-ascii?Q?xeEyd1qe/+X7vi1cJjqswpgD1jFAp1tBWhA3lVJ7R4XV7?= X-Microsoft-Exchange-Diagnostics: 1; AM4PR0802MB2305; 6:jSiXnhGalJEi1MP3Mp/pwZosqn3EjV9xFa5BPT6PhQw/4JlU5dzEha0cImURQH2mzABYzWlp4tWkXGnwYlAc2wOzZMef5OTXQUiurBGCWeSfx6+RSY1psl/yTqFYMmsIet1M00J8OqSOFtNmf0JmVXL21DZkVeHij3kZD/RtNMuQ6ERslVIBdhqQl34khCN4neGH3Y93spgU1Iq5WlRJye6bmxf5jPrDXnL7qaw7ZsmVPeGgAaoVYumAB/Pj8jQ58l/9CcJdg9XgRFWF6+UKNtmovNTsg/ktILsNM/ORbeNDqqpuKxuK9W7kK7WfDTSYIsXrVdMKR7+0e/xikMBEAw==; 5:Zpgdqe5udvJG7f8iAKyhjVJk6IDJ906PMT1j3YcaQjN0i7cn/XWzjd5M+2U/cyzjQM94WUwJp8Q+Aznu8UauMaE5CuwWV8ct12MOXtvxPefH09cSyhvPDz2HVtNsBCuuZ4VoOzS7Ak6t1YnVgoYRUA==; 24:mrGBcMVUauxBC2Td0QAdSPysBsxkwwe9WEkFWcrHoYFZJB68pF9zA/pA3agYZ5DnJ4HS4q/AC5aQmEPxhfVJvgF/XXCmsHeErt18VHjQZ8Y=; 7:/I4cG2uMVrY6kPh35cw9VOVnOAl8bnNeXsMMB4E1VNEGQe6vk4436HmmC2v49e7u+Dm1zXFVs1RqnaQDG0JvL9EVvQ2MglhDi5OOyqQ3RaxinRaX34Du28O4MQh9j6FhD8igIbXQcgbf3E6/ygucwy+K3dHrVPIzcmEnqRStnbi7ltg8yHh4EB38btIVM+igq3OIakd+URB+UlWGy7qtOne1+mLp8RDv28rhjtVh1lI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2017 11:01:44.1210 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0802MB2305 X-IsSubscribed: yes Hi All, Hi previous float immediate patches changed aarch64_reg_or_fp_zero into aarch64_reg_or_fp_float for each of the movdf/sf/hf causing the RTL to contain stores to memory it would never be able to find a matching pattern for. Reload would then decide to store them to a register instead. This didn't cause any incorrect code or failing tests but did change scheduling does producing more inefficient code. The predicate is not reverted. Regression tested on aarch64-none-linux-gnu and no regressions. OK for trunk? Thanks, Tamar gcc/ 2017-08-11 Tamar Christina * config/aarch64/aarch64.md (mov): Change. (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64): aarch64_reg_or_fp_float into aarch64_reg_or_fp_zero. * config/aarch64/predicates.md (aarch64_reg_or_fp_float): Removed. diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 7609fdba22627f15ed7630c371587b14b72e02ec..ba9c4479605fc6e001822a0f0e1df7d61ab58e0f 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -1076,7 +1076,7 @@ [(set (match_operand:HF 0 "nonimmediate_operand" "=w,w ,?r,w,w ,w ,w,m,r,m ,r") (match_operand:HF 1 "general_operand" "Y ,?rY, w,w,Ufc,Uvi,m,w,m,rY,r"))] "TARGET_FLOAT && (register_operand (operands[0], HFmode) - || aarch64_reg_or_fp_float (operands[1], HFmode))" + || aarch64_reg_or_fp_zero (operands[1], HFmode))" "@ movi\\t%0.4h, #0 fmov\\t%h0, %w1 @@ -1099,7 +1099,7 @@ [(set (match_operand:SF 0 "nonimmediate_operand" "=w,w ,?r,w,w ,w ,w,m,r,m ,r,r") (match_operand:SF 1 "general_operand" "Y ,?rY, w,w,Ufc,Uvi,m,w,m,rY,r,M"))] "TARGET_FLOAT && (register_operand (operands[0], SFmode) - || aarch64_reg_or_fp_float (operands[1], SFmode))" + || aarch64_reg_or_fp_zero (operands[1], SFmode))" "@ movi\\t%0.2s, #0 fmov\\t%s0, %w1 @@ -1123,7 +1123,7 @@ [(set (match_operand:DF 0 "nonimmediate_operand" "=w, w ,?r,w,w ,w ,w,m,r,m ,r,r") (match_operand:DF 1 "general_operand" "Y , ?rY, w,w,Ufc,Uvi,m,w,m,rY,r,N"))] "TARGET_FLOAT && (register_operand (operands[0], DFmode) - || aarch64_reg_or_fp_float (operands[1], DFmode))" + || aarch64_reg_or_fp_zero (operands[1], DFmode))" "@ movi\\t%d0, #0 fmov\\t%d0, %x1 diff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md index 95d28cfa33c6e06c47b6c666af6d8c2d6cef20f4..11243c4ce00aa7d16a886bb24b01180801c68f4e 100644 --- a/gcc/config/aarch64/predicates.md +++ b/gcc/config/aarch64/predicates.md @@ -57,11 +57,6 @@ (ior (match_operand 0 "register_operand") (match_test "op == const0_rtx")))) -(define_predicate "aarch64_reg_or_fp_float" - (ior (match_operand 0 "register_operand") - (and (match_code "const_double") - (match_test "aarch64_float_const_rtx_p (op)")))) - (define_predicate "aarch64_reg_or_fp_zero" (ior (match_operand 0 "register_operand") (and (match_code "const_double")