From patchwork Tue Jan 26 16:04:47 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Greenhalgh X-Patchwork-Id: 573351 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org 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 333E81402BF for ; Wed, 27 Jan 2016 03:05:18 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=P7Y2ItEs; dkim-atps=neutral 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:mime-version:content-type; q=dns; s=default; b=yZkOSCaf8LdPOYjQUfkh2Rw/MbvkaLrnVJMEQtGaNCvo6OvooO 02exAIBWh1FGuK7cPgrSDl2fnBJHCCqHZTKTk8gN7k94cOfp6ueUyayeYR4geQ04 ek1xLyeUngpimVR1wgtNbQrfeEhGmyjxTn2xkpeulbZPVDtlIwN8+YB5A= 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:mime-version:content-type; s= default; bh=pKbyKjzaAYYAAIgSVVA4pTvvHoo=; b=P7Y2ItEshCT+3tDNEZuS 0jLYNiQu/9IfgHAyAh3ennuAtt0qcbmz4pINaMOh9QwtXX/EIsdFtzSkQsOjhLZI s722oRqLK+8bxRF5Qy3kt3KswJXlGHbCgLx+42/wLy1DT34bzMvXVkQKEytKauXS b2EGpyZO2SqW7GyoBw2aHQY= Received: (qmail 100510 invoked by alias); 26 Jan 2016 16:05:08 -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 100357 invoked by uid 89); 26 Jan 2016 16:05:06 -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=sk:immedia, HX-Exchange-Antispam-Report-CFA-Test:13016025, Neon, vec_select 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; Tue, 26 Jan 2016 16:05:02 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01lp0177.outbound.protection.outlook.com [213.199.154.177]) (Using TLS) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-35-4vkLY7MgRtar5tQtPLvIXA-1; Tue, 26 Jan 2016 16:04:56 +0000 Received: from DB3PR08CA0020.eurprd08.prod.outlook.com (10.161.51.158) by DB3PR08MB0106.eurprd08.prod.outlook.com (10.161.56.20) with Microsoft SMTP Server (TLS) id 15.1.390.13; Tue, 26 Jan 2016 16:04:53 +0000 Received: from DB3FFO11FD020.protection.gbl (2a01:111:f400:7e04::115) by DB3PR08CA0020.outlook.office365.com (2a01:111:e400:503c::30) with Microsoft SMTP Server (TLS) id 15.1.390.13 via Frontend Transport; Tue, 26 Jan 2016 16:04:53 +0000 Received: from nebula.arm.com (217.140.96.140) by DB3FFO11FD020.mail.protection.outlook.com (10.47.217.51) with Microsoft SMTP Server (TLS) id 15.1.355.15 via Frontend Transport; Tue, 26 Jan 2016 16:04:53 +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.266.1; Tue, 26 Jan 2016 16:04:51 +0000 From: James Greenhalgh To: CC: , , Subject: [Patch AArch64] Restrict 16-bit sqrdml{sa}h instructions to FP_LO_REGS Date: Tue, 26 Jan 2016 16:04:47 +0000 Message-ID: <1453824287-37678-1-git-send-email-james.greenhalgh@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; DB3FFO11FD020; 1:38b6xYmXgZEmfmc8QoyDmjsibbK9PK2XbN2KmclSlUqIA9JkXofQNMxJadlJPKdtwpqgwidHppLtTA1vm9g8Og+ljBwBZTDVq5RePFc9K0FySpVC042Q4qPgALUR6Pqciosq/EO7ej6nL9oxYpwtFqNMi/pKeoW2KYb35kk8G7rECEXeyH9iuZyBMRVfXIEVPAsOAsNXSnWSpsUDcyfX2rQHedO69gwtEtJg6cpe0y7dZCUT/tFMpAtkHdu7XCazsvkXj46U0ok7wx73736sckGt1c+oaGenfLXRHfl0TqjNYjvjIq8gBwiX0ApVkYdnlAjhisNRtckzVT3J4hIZ6GLoZnyyFx/XkASLxnGEMbEZ/iFtsHno1Inc3wwGLcnPewDEj28PBeo5arCe75DThprza5+mG1J/AoPERj2n5Fo= X-Forefront-Antispam-Report: CIP:217.140.96.140; CTRY:GB; IPV:CAL; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(438002)(199003)(189002)(164054003)(377424004)(11100500001)(4610100001)(229853001)(5000100001)(50986999)(86362001)(87936001)(36756003)(26826002)(50226001)(92566002)(2906002)(4326007)(6806005)(104016004)(2351001)(19580395003)(5890100001)(5008740100001)(77096005)(106466001)(450100001)(84326002)(5003600100002)(1096002)(512874002)(110136002)(2476003)(189998001)(1220700001)(586003)(568964002)(33646002)(19580405001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB3PR08MB0106; H:nebula.arm.com; FPR:; SPF:Pass; PTR:fw-tnat.cambridge.arm.com; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; DB3PR08MB0106; 2:JNjYYs2qlWFLWCo6PgBOi/HyF0oH/jONCrfg6ydAXYd5lO0bTdf2XMOfTQzDxX4cMG4a1NVoS4EAqhCHrnlI43H7utBr70DI4aYGHBCUAuperkOdISaZdrfAVxcfqDjzpzitHKEz7dpw/gSCVc66dw==; 3:EsZ42ySD0LmbeyjuRykuve5e+wexZoqzMDLemxgkx5w9CAGPZEUB4dQi/U8WvQ1WkApgbMhZhX+0lJ8B1na98nRoXh6G1ipdhYzi3a/lJo/vlUpK/5YMWWRT5V+Bh+BGlqsmSv6j7+CItLJVFZYb6CxYeytlKSJI2FOUYDU/X0XxdlzsVZz0u6qnPNgvyE6+0xRADjCtHsY02Aa1Ic+9087Hbyl/zOIBfsJSIWFbRclF6MXo6+dR8quTxt91DKmI3XleRWs12Ngo50zhnuVPbQ==; 25:szpkCy/9/PsCsHN6WmXY565fQkhqu07l7LTXhgj/4Bwc8m9bPwJ0Ec9Ud+YMaLFqNKo4csca8PiOAy5PbqCMUKzJQMo/RaLqUY5PoI+q0LdZSwkoV4B+j4Mw2lj3TuJP9BRYBD2CMa+2+LhzZpQdDT6VwG23tXF/6fjUJ3AJljMdePLwsRgKL8+mmbLOyAxp6/Z3nXkrttxEBLn0Q/JBJZaH6JylUD9KdKQ/qU1ppzSeELwEEb2YChJc5xEmWYXj; 20:tIboh9ZAV3P78UInDpiHxMhLhtkKhJsa7IGjzuQv+8pGBDEoGDiJSrxNYNVFqW+c3n3P4Lth0EIUM1KxagotXJVwIv/mezsUJVQ6hRoOHv6FuxoJiByRiuQbdUMLnRUbX8wOHYIGPKYmFL1L1B1ZwOKeF/W6m359h40roiJwNWo= X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(8251501001); SRVR:DB3PR08MB0106; X-MS-Office365-Filtering-Correlation-Id: 62270171-0226-4682-1abb-08d3266a6d64 NoDisclaimer: True X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(123027)(102615245)(601004)(2401047)(5005006)(13024025)(13020025)(13018025)(520078)(13023025)(13016025)(8121501046)(13013025)(10201501046)(3002001); SRVR:DB3PR08MB0106; BCL:0; PCL:0; RULEID:; SRVR:DB3PR08MB0106; X-Microsoft-Exchange-Diagnostics: 1; DB3PR08MB0106; 4:HlLG0V73n7oDDIBGbROHGchUj4WMBonq8GLDcVV7xXlHw2eR2l3kBaGpeQfOvGVc8Snxcfvw8COR4ROFbsLr84eZClDEp1o8a81KFlylckwRBjXDM0gTaY/dI56oth9GiSu8zjZq2dbfjbgi4xnHvGxM9o7M95UG0TD0pBdqVLrC46b8ChDEWpXROazbYkWi8TraauGGjobgXff4ht0RuNLibkYRTxTthiGqjG8nQLOE9N9A35HJ5EgPlVMaqzXMAmvPu4D43HcUutc1XO7vkmdHQAt0ZMtpPbft4i1Tao4xHSRIQN4ezBg4/MS4KItbT+lkSnbBX9yA1J0KkPYsiH5i/A9264AAbfPH2e3HqocA6ZTxZQXTiUM8EzclA81t/JH3vC4JEItoBv0YoxMABJDAQk66RKfZgaxh6HJ8nlI1EOLPxxrnGBA2kpzNN1quAsklvNHUNkYLuDTXcZM8fhjTfPlrt0L2gIqyAgFQewPjNS8zTKq3uTxGpw6HLfwwez9a313+k8lQvyKrggrrJNzxMeC6B6+S/t6VS7x6yrBdAuRpVn6NVrAvTvjKwpq7ICMbiqgQSNkcGiDmVmTFRg== X-Forefront-PRVS: 08331F819E X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB3PR08MB0106; 23:GeI27pCn2t/h4VTfAxiIg4TXBrQw/7sadnQZOZ8WI?= =?us-ascii?Q?2jEIlQqxSfttDNHUfb3K82sicq+SzNocVr7h1S8MSnOpl1eUTxueS0QPDn4C?= =?us-ascii?Q?qDsooivFXAqiAtTuoL2ql0pFqFr4XRSEjNt5wC31DxcWjpXs94LnpQ8WLhEV?= =?us-ascii?Q?3Gj2SyRjoLa4Ms4X/7lLXHGR9Lo994RUtFesA1hgnIFoujFLtWHxxJbK3MDd?= =?us-ascii?Q?BeeOw4jxE1YSgRPGmd4M9WJak38vKFKs3zYWE5RcCUWenM+9E32nyOhD275a?= =?us-ascii?Q?LmrEoBTFjd5bAPMlqDyDCU8VMTMpZ099SPS/RZJlDrjLEquRMZF7tTRZnlFE?= =?us-ascii?Q?nMNBmtb+wu439BGBZJDRbxj1eFEX74cA3DDgbPuAtCEuoiu/sI3Em81OeIxM?= =?us-ascii?Q?nyWZ7t1VZj6Oxp368ryOLQUWgrt2+E+rgiL/go2hkUEcskyH9/kwCg0kJ8no?= =?us-ascii?Q?EsxCC5rVj/LDsOvS8aVCtvcUWl1MD0WYLg5/oGA/sZQ7+qDKhKB8sv6LIFlc?= =?us-ascii?Q?lepmKNtMsBasobYisRPsnB3wg7dmOF3JVCWIa20kpn4QcLmqUfNi3WPRA1Yz?= =?us-ascii?Q?r+Xux2VmC/HjqEu31NvfXQ4jpzkKV5duxJVPGsybrxjnH2p3lq2r7VyoQGux?= =?us-ascii?Q?Iwx90MJD3tCG+NaCmGjC0TbDxCTHV3Pj/zDOUqH/BCH/7z8X7ezZaKX/o36r?= =?us-ascii?Q?ATBwIggVqefQMm2dyK29JBc3hSu0nh1D0rvb8L40Ftt1mXofqoINB9B/8GWu?= =?us-ascii?Q?tyr3K76BTt3zgfQ4B2M9HuGDnnzQq8y+kZ6npy+OQpxEf0MxYlta+O3OG4QJ?= =?us-ascii?Q?tMx8bTlLyfVA/mcB+moZ67qIuMW7/44V6rtNfHAmMYTM2DOe0c/6WJ8fqjkM?= =?us-ascii?Q?18HqBVnB4t+qyKlFZZEN8Tkm247LVtmMwY7y481qjniVCFLR9870vWuMvDCC?= =?us-ascii?Q?OliQY2Q0m0fITMu8jS0HDGL1Ek4FWo6Xx933bFTxnXY19tVz9ivNVagPrfFx?= =?us-ascii?Q?A2KRwn/pCB7MBGBElcgfbHYjA8v2LEXH1DYOu2Z55TqIIMIbAgca7HzG2w7h?= =?us-ascii?Q?VNh+mNt7IMML5/EcFFIrmEvotBPgcxqCfBuuugTUS+9k3Az4Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB3PR08MB0106; 5:fr18TN3FhocRcWjY6poWOMwOvcQzUqaakXGMn6w9SypF2amwhxEI2rxWVFOzh/34UTtXZoiinh65qgE57ve9vynzyI67pox1ws/TINTPmgVWbQBRRZC9vB7yeSbBXC5+DG8797zZIYg5+a7LHd0Wuw==; 24:OPD8Zeuj6ODtEthKXAb76xpZL/W/ZvwOkr+fm/5GSHvC6k5QGsW3V6nu82Jfrw8rcLoMOMyCB4ddhkeLpFREFBcyyNJ/z7bOxv0ayrEih7k=; 20:P72krtjeN15y/Cltr3kGk/IeQkhdfJmQWo7V7HA5xzrgpo30QMYERam4DYfNepCi9ZfQto3rximDsCLavRh24QJuMkIpzEDSR3uuY7ezGWfi1DlR9Kzk/LAPJ4X2uz3qlhBb6PbufsxtYwywMbfpYf64LIXe4KPcSCMpI6QAorI= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2016 16:04:53.0697 (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: DB3PR08MB0106 X-MC-Unique: 4vkLY7MgRtar5tQtPLvIXA-1 X-IsSubscribed: yes Hi, In their forms using 16-bit lanes, the sqrdmlah and sqrdmlsh instruction available when compiling with -march=armv8.1-a are only usable with a register number in the range 0 to 15 for operand 3, as gas will point out: Error: register number out of range 0 to 15 at operand 3 -- `sqrdmlsh v2.4h,v4.4h,v23.h[5]' This patch teaches GCC to avoid registers outside of this range when appropriate, in the same fashion as we do for other instructions with this limitation. Tested on an internal testsuite targeting Neon intrinsics. OK? Thanks, James --- 2016-01-25 James Greenhalgh * config/aarch64/aarch64.md (arch64_sqrdmlh_lane): Fix register constraints for operand 3. (aarch64_sqrdmlh_laneq): Likewise. diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index e1f5682..0b46e78 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -3240,7 +3240,7 @@ [(match_operand:VDQHS 1 "register_operand" "0") (match_operand:VDQHS 2 "register_operand" "w") (vec_select: - (match_operand: 3 "register_operand" "w") + (match_operand: 3 "register_operand" "") (parallel [(match_operand:SI 4 "immediate_operand" "i")]))] SQRDMLH_AS))] "TARGET_SIMD_RDMA" @@ -3258,7 +3258,7 @@ [(match_operand:SD_HSI 1 "register_operand" "0") (match_operand:SD_HSI 2 "register_operand" "w") (vec_select: - (match_operand: 3 "register_operand" "w") + (match_operand: 3 "register_operand" "") (parallel [(match_operand:SI 4 "immediate_operand" "i")]))] SQRDMLH_AS))] "TARGET_SIMD_RDMA" @@ -3278,7 +3278,7 @@ [(match_operand:VDQHS 1 "register_operand" "0") (match_operand:VDQHS 2 "register_operand" "w") (vec_select: - (match_operand: 3 "register_operand" "w") + (match_operand: 3 "register_operand" "") (parallel [(match_operand:SI 4 "immediate_operand" "i")]))] SQRDMLH_AS))] "TARGET_SIMD_RDMA" @@ -3296,7 +3296,7 @@ [(match_operand:SD_HSI 1 "register_operand" "0") (match_operand:SD_HSI 2 "register_operand" "w") (vec_select: - (match_operand: 3 "register_operand" "w") + (match_operand: 3 "register_operand" "") (parallel [(match_operand:SI 4 "immediate_operand" "i")]))] SQRDMLH_AS))] "TARGET_SIMD_RDMA"