From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24061 invoked by alias); 14 Jun 2017 08:43:03 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 23918 invoked by uid 89); 14 Jun 2017 08:43:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.5 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=ba, Ba, H*RU:sk:VE1EUR0, H*r:sk:VE1EUR0 X-HELO: EUR01-DB5-obe.outbound.protection.outlook.com Received: from mail-db5eur01on0076.outbound.protection.outlook.com (HELO EUR01-DB5-obe.outbound.protection.outlook.com) (104.47.2.76) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 14 Jun 2017 08:42:58 +0000 Received: from HE1PR0802CA0010.eurprd08.prod.outlook.com (2603:10a6:3:bd::20) by AM3PR08MB0088.eurprd08.prod.outlook.com (2a01:111:e400:8847::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1178.14; Wed, 14 Jun 2017 08:43:00 +0000 Received: from VE1EUR03FT060.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::203) by HE1PR0802CA0010.outlook.office365.com (2603:10a6:3:bd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1178.14 via Frontend Transport; Wed, 14 Jun 2017 08:42:59 +0000 Authentication-Results: spf=pass (sender IP is 217.140.96.140) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 217.140.96.140 as permitted sender) receiver=protection.outlook.com; client-ip=217.140.96.140; helo=nebula.arm.com; Received: from nebula.arm.com (217.140.96.140) by VE1EUR03FT060.mail.protection.outlook.com (10.152.19.187) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1157.12 via Frontend Transport; Wed, 14 Jun 2017 08:42:59 +0000 Received: from arm.com (10.1.2.79) by mail.arm.com (10.1.106.66) with Microsoft SMTP Server id 14.3.294.0; Wed, 14 Jun 2017 09:42:34 +0100 Date: Wed, 14 Jun 2017 08:43:00 -0000 From: James Greenhalgh To: Tamar Christina CC: GCC Patches , nd , Marcus Shawcroft , Richard Earnshaw Subject: Re: [PATCH][GCC][AArch64] optimize float immediate moves (2 /4) - HF/DF/SF mode. Message-ID: <20170614084233.GA15599@arm.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:217.140.96.140;IPV:CAL;SCL:-1;CTRY:GB;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(39860400002)(39410400002)(39850400002)(39400400002)(39840400002)(39450400003)(2980300002)(438002)(189002)(24454002)(53754006)(199003)(8936002)(6862004)(47776003)(6286002)(1076002)(77096006)(38730400002)(189998001)(110136004)(46406003)(6246003)(97756001)(4326008)(33656002)(229853002)(8676002)(54906002)(23726003)(50986999)(54356999)(76176999)(50466002)(2950100002)(356003)(6636002)(106466001)(4001350100001)(55016002)(478600001)(5660300001)(83506001)(7696004)(36756003)(104016004)(86362001)(2906002)(72206003)(305945005)(14773001)(18370500001);DIR:OUT;SFP:1101;SCL:1;SRVR:AM3PR08MB0088;H:nebula.arm.com;FPR:;SPF:Pass;MLV:sfv;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;VE1EUR03FT060;1:BNhHP1970Sg5jmuRmCL3iIg3HkV+mTY77Xpbqv738ZCZ4mkMe8J0W364WCb90W/cYRRqDN/kRyX/2dWuVjuldMHu7kaVDuwwxi4drgHtQlXyaWHgjAC78foSY3JrfEgIY6yJyISROOIqJUhjrJzpPl0rva2NGf/VrxsCCmDLzRjfim63GSnBhtDohR7zgWA8vq6XJhotpiIZBx7Mw2SpqNb3a3Lby9gVUzrF4q4iVNyyvXnE3qcaVybaZ4YczM+0lZdKSnd6S512uaFIigcia9AN5l6zcB5gJyeVfVW2Y3A9ALHILbpDRIqVKDKSbitKCLDTrtJiSaozj36IFQlpcE+qf1v8/2/M8EcdSoVVbmTHPEki4iYsEEKBCGsi3lWx3HSAjxXKsiHo42obaBkV4mfqu/SJ1KB09cREKE2z/8kyqj7aaRCoLXa4jK4k+c7wGGCIzTlYLFIVbFnYbPEN8ycVW1PhI/f9lZsaAGD3Tn6L2MGv4U/7vcVSLAzQ1whNMAHma6YU4i7TxXgYA7xc6y3gGLHoeS0HfsiH60MalVcl7iIaqCQ2Nbm/eRXBYPeprAHA6HsHfSbmnQWMyJjX7kMGJQhcCLuC6WWrEF061Lc= X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 88f83db2-5e14-43f6-2565-08d4b3015c6a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002)(2017030254075)(201703131423075)(201703031133081);SRVR:AM3PR08MB0088; X-Microsoft-Exchange-Diagnostics: 1;AM3PR08MB0088;3:h8O4ma7GoxExBCjYUUFAYK+nmXS8lQCLri2fiz/u0DdfntEqz0Off3otZAvWBg3MIyhU6S7XoRlTiHhVLkgSU8Mwn05M0y7gReUrlm1CWFV0whiIEfwdLBqkhsHIPzVG7vhJw1XEYBBe6S1Y1CsN6MtJhOZXZd51/O6ZJ7OXPLaTVothx/MMTXhsvGX5d0JgrtB2WaOFbxANwNI9qc29WQ5QESdcvvJz6m5Z3L3fSyI8K6eNhXOwyEXiB8vAuXphMjHzK4/dEc+IgqldLaoZdrBbB/vF/NgQCUJnD1DeJjm5qOIhARfst+ZkW3nLqr+nrhnfDdPXNgsvZFXnsFRkQWLJx/AE4COOtMM4khibAZXR5lpauXpbtY4ndMcpNPy15hxfgojWyGaQ64OdTy01tIKQYqdQX59i027p1NBClTMhtg1p+UyUUKtd/QK6v4x632pGWyEVjrytZnH53czMQUuIAsBMIieDeYZsHypSCUVuciBHADQXG/FC1BOEBeKd X-MS-TrafficTypeDiagnostic: AM3PR08MB0088: X-Microsoft-Exchange-Diagnostics: 1;AM3PR08MB0088;25:VuimkBo4xCABCc6FcJr/K8u5kJ58uASpDKSijeTtOQ1SMTGBV3TwDsLXGWl+2zKQgymNZL3gh3lia8EKsH9rV83hRJ+TEvz4WPfpjL3ntk8rWqpEg519Cuqvw7wqGLbtDmg19fTLO98EyczySMvZhRGF3XOlrIJ8UbVRVvxjwky0QhWecDAR7fzl3crVdTSARfnbPjc0ez3oJS+COxZmw6+uo1QeTUxKqUqZJI9ZzOUIfVZ9gILqmx5CvVNALqcGOdJIFkMl9ahGIKhXn4Y2DGte/78B5zMs8vXdGHpGSDBVuucVV9GIuAbgWsagHa5J3Cr7eFxXjWwimnMgyCyMqjsLs2JW44WDKCtIlaBrq8hTC25ZBHsXKu2a3yASOJR1sJHxMn52hSeWk3udgSvrVNzpG219VD1phlBT349GRBVvDTChLPc0QO1PVUiOtJ3HDe/SoWTUHqdnoBQPWOTGWfjrW5AUnWXnPN8i7sNfxIk=;31:/hgqcNgNfVu7KU/8FqEHtAUMVRVYdjjtywJqvl5DC8iXH900JIUHlmspZsLJySFHVuyKEjmJLgKl4ynkUbkI1NMLK9LxzR+Jw8aOuRExPN5SFNzP2Exd7Ljv+timG9BJ9J+aWaDzzTej9APcwovjcYEPMdbfFtppzRazpyp4JB28OoSJsTCj6Od1aDelutIfs8glvhJE1/MFwuFfmBt2xEKp/FngmoodbqhUkje5PIg5CWMU9Bu1xRNbvJEauTa0 NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1;AM3PR08MB0088;20:pPPuwTnO3AEKMHwC4RperYLnZxm8gIYB/4gZpng4qai9RBHJ9QOuAhYjGSPj+DuAlc7VSoTebfESAMb0Wny/MKH43YAexfgFfHiNrOlAjal9e6yErYV3YGlxuq6lQSdjmH/MIAxCYqsWJOfOljzpy1JubEg0FJyI+sfm1eSQSF78TfZR8iarN2cNOGDLfecyg3XhuN6wvr7qjygp1wepchtr7XzwSdb9UTE7fFnEIggelyUU+TV1Q/A9LrziSu7z X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(13013025)(13021025)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93004095)(6055026)(6041248)(20161123562025)(20161123560025)(20161123555025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:AM3PR08MB0088;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:AM3PR08MB0088; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM3PR08MB0088;4:fpU82kfAVzFNePngoYhkakPDzCy3iVDYv/Z35ccoVl?= =?us-ascii?Q?5vNAq1WA29sgxP2+T5Y6YVWgcuARPJIooMTuuxqbPEXhM6Oa/OBWigc1e/at?= =?us-ascii?Q?nUPO2IVYmzoQDVVnDFfMxds43yc2cRawjJuLBZ/ZeFxAi2OdMBjRORpqmFLl?= =?us-ascii?Q?JNhEfhhDUQcyCDAZw54BjCAnvZJPNKYnQADXn9JIPMCmo5RqjkYjP89lnD0q?= =?us-ascii?Q?NWX8o5IvWrEyHOONFI5IonaCunrG9/b43c30SYYmUitWHm18dUbckyZkO0Ic?= =?us-ascii?Q?MDE7RB8OBoQsUO9xcaJIIGkK/qsGA3A2B+F4RWTH04hQWhOyz7WmvBvD7lQk?= =?us-ascii?Q?vs/D/X6u30XBoXZITbh1CCOgF3bj6yRPhTTY92M7/4rRgVrYF+YQK9t4EgZz?= =?us-ascii?Q?XSxEfMx0bUz50vxiIsilU1QUkWEmeZOGl9M0s/0VXMKKMJRLnhIzx8DISMul?= =?us-ascii?Q?OqZr/0zYzE9+mvLFDvVV87HxOBKgqAQkbyLr3cpUv5+aiyo3tcfSeuOY6IvG?= =?us-ascii?Q?qNNNl24Ph0+lLB3Nz06j0qTfumzM3oq6DTntGxNKxi6AwiWXMd4ivNgbOUaS?= =?us-ascii?Q?X+ZT/vdtzjtoy3e7YdBvonhhorPLsbMnJVz3tOSrThtmVuRVPZAEEQv83nKK?= =?us-ascii?Q?tAkFQjc0nxoh1zvzTR077XfGOgeRc0IWeBMWa37RB5uHhUAY9mStCa7mWP/Q?= =?us-ascii?Q?WGTqveV6arz4FrQslKEhUkWbFOzM8zXgO6UryjyGlq/ciM1v72KGq1LFlB5z?= =?us-ascii?Q?mdH8znMe+jGpRGLE7rc9ZyCfHRTSU+SeE2FpEWvukVQc5+gtpxl+OakO3/I2?= =?us-ascii?Q?k8I4t/LhTC4h+UYr3r4LYyY6t+ugMpP/CTOzy2b6GcajNTkh/RxPIoFPuok7?= =?us-ascii?Q?58AEzj3NmB/NjGhvBobITm/o90LjusWGpNW3KSmpyMXAJ6inAceFAtD4/FDZ?= =?us-ascii?Q?hGPW14GhSseCU2FZ2xSFQAsjHsbjAlGncTwCm8ExCxTtRWWGuLkduf3qkvhW?= =?us-ascii?Q?Q5Vb1CzVWeYs6Uy6kkiZISsQMosmoRsu0A2j8/Vs+o/YwiqQAeqR8lk7bA6/?= =?us-ascii?Q?wIX+3XxBJe2jlHNmw3nTIZ0ey4o0vm/o1yYI78nAlJnJtiKdkqobUqKwcrIZ?= =?us-ascii?Q?zXVJ7u47r3+mqqjpa/SOaoXcw1CjKEcfo9GQbEvMIUX1rZM87yA/50m4psNg?= =?us-ascii?Q?TDPE0Qf/Odg74Yd5AdbNdbTbzOm1fJ5v/l?= X-Forefront-PRVS: 033857D0BD X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM3PR08MB0088;23:bnYa8e+l7E+bNwyA/7q0K14VB03ttinIIl0ezi6eV?= =?us-ascii?Q?RlA0kZDPdUz5c531RsMctHP+DK2gh+MkKUyb4YY5XMLaWoKowLjnN+PFg9JW?= =?us-ascii?Q?/0pMR3T9oGyZBsJPJDubAcrnS7ou1ZxKbitiP9DS5bBp8sQqVo37cuLrqBwy?= =?us-ascii?Q?G7+KyvhJfw33vQTXnvS0L+4V8mG7qmGebxj0kA+Lyb/EyhPEIX2bnXOTK86n?= =?us-ascii?Q?klLvdZ5IiYYKhfNGWT3c9cBGERp22xQBlVRac9Rx5tFWdCWFKJvnSnilSTkD?= =?us-ascii?Q?0+RM6y+YpV5N/ti90E1ExGGgij42ZKo+o5oc/w1S1fz6ea9eRxb4jjtiMXak?= =?us-ascii?Q?tmS6cjtqcZostVqMwJMfexIq+3vsSHdGhmusC/NP06czUrhWdxFHq/jIigDh?= =?us-ascii?Q?S/T3YTJEYLtWEdYfCKM0hl8HXq7fV8Vketpqh/1wUAcNSga9VmddMoBL/6HE?= =?us-ascii?Q?j+i6HHJVIQpnGhsxIQePwS/zCuHGelBv/ZfJBK7Pt1dAF1s0HqkyVsgRaEpk?= =?us-ascii?Q?ovJzJYlLxlrvkn1VaxIQlEdqmqC1cyrc1l7b9SvbKS4gZiWAObJ6AqdNP4KW?= =?us-ascii?Q?Y0FtQosnKFVjYBgwuPledzznpR2otQCFtx5L6WRowOrkb/INrYjfUoMAghtx?= =?us-ascii?Q?kcS8p/Y2994nBFWPyshs0a8VIK0q96HoKBUl74I+4uCs2JUtwpRZ0r+PI9PT?= =?us-ascii?Q?ogZH8yRLTwNaNV0OP2cbvb7PRtyxanf+Np1IOxyE1pkM2u14T5QWT0DP1xuo?= =?us-ascii?Q?dE7ogEN0G1IpUnd4PNXVJAjUlAhT8Q6GBng5fluTdUvvfR23QMFHF5/Qu3Gn?= =?us-ascii?Q?WWcTDOj+2t5di4KiMpbgOjaxiIsMQYb8PEDWLYNbSCnEJ9ipUV0l4qbvVmsS?= =?us-ascii?Q?BXBDs6RShCCitgDJhFcmeTEG+lr67Z1laJQfIlImS8CEToeTYsv7ZtQCvV4+?= =?us-ascii?Q?dzpZZHSJDr/Vg/Deo4fsA55JAHi37aZhOEnuvDOy3/f4hGCFeDIitxL7px+y?= =?us-ascii?Q?DDwoPPPnO7S+cS6N2ApvmhCKmSsQSLo2auF5kLgcBgYtIehEcWxI8FrJHR+3?= =?us-ascii?Q?1Tj34fAbEy3wSIqhke/oUPiew0NztTJhIgUNMbKVVyFiYLzgt8s5pTDuLSTz?= =?us-ascii?Q?xnATtL83OcrgrY77NR9s1JVmTe+UhEZrPil/jba85wrUiGathXsauGe0LFT3?= =?us-ascii?Q?2iRtUSdl6PTF1uGrd/MTz+kKWACGYK8txdyK6shQ2Z8rLq5ruGHfssLyp04w?= =?us-ascii?Q?K75prOCJrXMliuxjeGpMvxQKn5BWsGgLxdJStPS9/hIgtAfmyAzyypXUcX9e?= =?us-ascii?B?Zz09?= X-Microsoft-Exchange-Diagnostics: 1;AM3PR08MB0088;6:QCnDQW+qkn6zprM6t7m/Nnet1/Hpe/WdyV6DLsEE77TNLxSdGampxGmw/DMoSn0INFGxDUTqt3j0tT6RzHR99B5aBJdAyL9k0m8pBqbYOpJKqLk5BxMfwOUYdBZ4+Wc2PX28x19n5Rwm8omdB/uZZi/uzN8ddLcM+7LNgjwkU08r8RHRXODtPILPfkcrs+QbeW45Yrlg6IBgOLmEf0PgwIocsJrqJ78r0mgDsDLFlmOnn/BjDgFSczQJuCp9j2GfBmsiYYIUoxfDDif1E22N4naG4U3adZBmJRFVHvCLlCGmQuxhXZv/A3U+FxENYrqCZ9aMDLRu5gqMReb6bnSoILvc8p7r/XuhQb/gcSJD/XAsMCKFdS3QqhTrCms9/LW8UijvdTw8jworZTS7Y8QVbG99fJ/kLSYeARYm9E07X2d9NzO2zuyGLVZ04q65tyjQ72PdePTnBhG0bC4EVu0IzvIsTcmqbJHW3TQJJNydP3n+xOSGTJ5v47RkVMDxUI/M0eKQ3LwFrJvL3o8Qhc4n6bkBqqvBAw4/gCbu8He/OEs= X-Microsoft-Exchange-Diagnostics: 1;AM3PR08MB0088;5:q+r7cdAwlyHjn9mREU9dHuetW4MqnbxZSDazO+7nZbFpej1QAtzPUAtXNfLIUOLOBcWhKm/IBrBH3uhKkCRBOoS46loSiGjJ66kv/AEWIGpALZseptPMx97acYKwxzGeXXppYTSlUT0vdnGxxotPN5YTDi1d0kowwiqibtNgUjnHAwy+B4W8Y8Lq1dgD+HqaMfGtEwEoxrldUq2m8y0TVUWJDKdqrXVYR7kDz72JUpqQGifVDjGcLJkDnxNwA6pB76wZUjabtKC70JUbjafM/+gDI6hlg9V5XOOWoajcQzpsvRw6BzrCNvWGtxQevfgzvLk/QC5LX9oTKTC+Isv0xiCFjFa1j8KXB3+oEoSaiHP9BdMcUg/z3KqKjO1WQk0CIiDW0K+vfnV7zvvMbM5GegujGBXTOv9Vv5OCRjFkQkGRqAT7MQQjfrRlzLcgc1hAcApvUTTBVzn960pBFzrRpsj+QVy5fp5L/7HYEJKLWFmSptoEm8VnQyh2pFoFrRPN;24:mIfgg1nbvWBG4ydJDEn4qP1RH/0Z77aBP6detIqor8BfT1yPbnG8n+TN1lJLSCnMWC+7gpiAVFaDF9LZkS0sTUcXiH2HnZPw+kmNOVin3xk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM3PR08MB0088;7:anvA+RBGtarjFI40OV/m4dUqq1saCA+AL3WkEAxI9c87rahgVC91L8urMx0PNce4GHUBE0HuQ26EbwSRrcO+TWweGqeQ/MKTEqsfueKI+4XoBfK3AJTUH74YXjXKoX38+XaIyfW6YY0NchnA6/2xF9WjekNFstGFhe1WYrTnzNQOZ152KkcE5sefnGd9oeAZ9XWYHLYHcBVWec19rWDlu4Lz9SXpgWK2FgSkzY9RGyNCC1y95PZHPWK5q6pc94mW0IR0/WE+PFlNMwKjJetfZ+ibUQeXuEGZmHYaBjfVoal0JqHko07UjNjwWiZUFwfbMOgiwxKBIrCtlq9WzTHHpQ== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jun 2017 08:42:59.0225 (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: AM3PR08MB0088 X-IsSubscribed: yes X-SW-Source: 2017-06/txt/msg01002.txt.bz2 On Wed, Jun 07, 2017 at 12:38:37PM +0100, Tamar Christina wrote: > Hi All, > > > This patch adds support for creating floating point constants > using mov immediate instructions. The movi SIMD instruction can > be used for HFmode and SFmode constants, eg. for -0.0f we generate: > > movi v0.2s, 0x80, lsl 24 > > More complex constants can be generated using an integer MOV or > MOV+MOVK: > > mov w0, 48128 > movk w0, 0x47f0, lsl 16 > fmov s0, w0 > > We allow up to 3 instructions as this allows all HF, SF and most DF > constants to be generated without a literal load, and is overall best > for codesize. > > > Regression tested on aarch64-none-linux-gnu and no regressions. > > OK for trunk? > > diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md > index 5adc5edb8dde9c30450b04932a37c41f84cc5ed1..7f107672882b13809be01355ffafbc2807cc5adb 100644 > --- a/gcc/config/aarch64/aarch64.md > +++ b/gcc/config/aarch64/aarch64.md > @@ -1167,66 +1167,120 @@ > } > ) > > -(define_insn "*movhf_aarch64" > - [(set (match_operand:HF 0 "nonimmediate_operand" "=w,w ,?r,w,w,m,r,m ,r") > - (match_operand:HF 1 "general_operand" "Y ,?rY, w,w,m,w,m,rY,r"))] > +(define_insn_and_split "*movhf_aarch64" > + [(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_zero (operands[1], HFmode))" > + || aarch64_reg_or_fp_float (operands[1], HFmode))" > "@ > movi\\t%0.4h, #0 > - mov\\t%0.h[0], %w1 > + fmov\\t%s0, %w1 Should this not be %h0? > umov\\t%w0, %1.h[0] > mov\\t%0.h[0], %1.h[0] > + fmov\\t%s0, %1 Likewise, and much more important for correctness as it changes the way the bit pattern ends up in the register (see table C2-1 in release B.a of the ARM Architecture Reference Manual for ARMv8-A), here. > + * return aarch64_output_scalar_simd_mov_immediate (operands[1], SImode); > ldr\\t%h0, %1 > str\\t%h1, %0 > ldrh\\t%w0, %1 > strh\\t%w1, %0 > mov\\t%w0, %w1" > - [(set_attr "type" "neon_move,neon_from_gp,neon_to_gp,neon_move,\ > - f_loads,f_stores,load1,store1,mov_reg") > - (set_attr "simd" "yes,yes,yes,yes,*,*,*,*,*")] > + "&& can_create_pseudo_p () > + && !aarch64_can_const_movi_rtx_p (operands[1], HFmode) > + && !aarch64_float_const_representable_p (operands[1]) > + && aarch64_float_const_rtx_p (operands[1])" > + [(const_int 0)] > + "{ > + unsigned HOST_WIDE_INT ival; > + if (!aarch64_reinterpret_float_as_int (operands[1], &ival)) > + FAIL; > + > + rtx tmp = gen_reg_rtx (SImode); > + aarch64_expand_mov_immediate (tmp, GEN_INT (ival)); > + tmp = simplify_gen_subreg (HImode, tmp, SImode, 0); > + emit_move_insn (operands[0], gen_lowpart (HFmode, tmp)); > + DONE; > + }" > + [(set_attr "type" "neon_move,f_mcr,neon_to_gp,neon_move,fconsts, \ > + neon_move,f_loads,f_stores,load1,store1,mov_reg") > + (set_attr "simd" "yes,*,yes,yes,*,yes,*,*,*,*,*")] > ) Thanks, James