From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 83347 invoked by alias); 26 May 2016 10:17:27 -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 83329 invoked by uid 89); 26 May 2016 10:17:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 spammy=AES, HX-Microsoft-Exchange-Diagnostics:hrb 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, 26 May 2016 10:17:16 +0000 Received: from emea01-db3-obe.outbound.protection.outlook.com (mail-db3lrp0075.outbound.protection.outlook.com [213.199.154.75]) (Using TLS) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-17-XWheR6ohQCWmZTo3HnnYzw-1; Thu, 26 May 2016 11:17:09 +0100 Received: from AM4PR08CA0029.eurprd08.prod.outlook.com (10.166.127.39) by AM4PR08MB1060.eurprd08.prod.outlook.com (10.166.134.27) with Microsoft SMTP Server (TLS) id 15.1.497.12; Thu, 26 May 2016 10:17:08 +0000 Received: from DB3FFO11FD009.protection.gbl (2a01:111:f400:7e04::142) by AM4PR08CA0029.outlook.office365.com (2603:10a6:200:1a::39) with Microsoft SMTP Server (TLS) id 15.1.506.9 via Frontend Transport; Thu, 26 May 2016 10:17:08 +0000 Received: from nebula.arm.com (217.140.96.140) by DB3FFO11FD009.mail.protection.outlook.com (10.47.216.165) with Microsoft SMTP Server (TLS) id 15.1.497.8 via Frontend Transport; Thu, 26 May 2016 10:17:08 +0000 Received: from arm.com (10.1.2.79) by mail.arm.com (10.1.105.66) with Microsoft SMTP Server id 14.3.279.2; Thu, 26 May 2016 11:17:06 +0100 Date: Thu, 26 May 2016 14:06:00 -0000 From: James Greenhalgh To: Kyrill Tkachov CC: GCC Patches , Marcus Shawcroft , Richard Earnshaw , Subject: Re: [PATCH][AArch64] Tie operand 1 to operand 0 in AESMC pattern when AES/AESMC fusion is enabled Message-ID: <20160526101706.GE18183@arm.com> References: <573EE130.9050009@foss.arm.com> MIME-Version: 1.0 In-Reply-To: <573EE130.9050009@foss.arm.com> User-Agent: Mutt/1.5.21 (2010-09-15) 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)(24454002)(377424004)(53754006)(189002)(199003)(87936001)(8676002)(4326007)(11100500001)(23726003)(4001350100001)(92566002)(46406003)(8936002)(36756003)(110136002)(47776003)(2906002)(77096005)(586003)(189998001)(97756001)(76176999)(54356999)(50466002)(1076002)(50986999)(83506001)(6806005)(5003600100002)(19580395003)(2950100001)(5008740100001)(575784001)(450100001)(106466001)(33656002)(104016004)(86362001)(19580405001)(1220700001);DIR:OUT;SFP:1101;SCL:1;SRVR:AM4PR08MB1060;H:nebula.arm.com;FPR:;SPF:Pass;MLV:sfv;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD009;1:Eq+SmDItQQaZjBAVM6zyk63OTpMHoF7MCy6lOd/vcYljjH2WMowWWfi84QTbCS1bNI3kCCO78GxA+bElnCFGLWE0lYOgdIt5NE5m63Lbjpz48ihtwIRkL+lKXI9OwuCi7M8NhqGsHkJTSl6yXtgpxpxamBDNIUBkymIRr9PHaEdcNAW9wbIiygoC/Z/fdzMZvp81w0SCavH95bBTS17HORYObPkIOL6+CBkMdP+OC5K3H7Jib9dCdxCxe+ugtpVG/BkqMzCdgxYVSegnoA28nYoQDMXsAX2fPEHLij8I/FutzmeUFeIMNNzkwSvGS/SKvnRJNC+g7hnqCbQ/WQS4F6T66f0djYfbid9w0cNyrTvJOQGeBBN8Gz150E5A7OR7r40IpDlKNA83vnFfTiTAee7Q8gD5pbSLLU+o2RiF2QuwqIKmp4HHvOYt2gxe8R2iR7yMoTlCmwtRQfA2GKqO+hrb/IZp/3UeWTD44k7MmniOz1HqioA/3O17n3MbTR6CXENJ/cuLVuevSSbBONrcS3wFWhxfRI45UUD8oK+ozYc= X-MS-Office365-Filtering-Correlation-Id: 076f3590-8988-4785-4af7-08d3854ee4f3 X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB1060;2:7hzBj21+lPhg4sbRG7w+bWXWXkc1VPT35bXXNFWaZsBdz/IL6ZWqWzYvR0qHnPSAa92I970cWM+CuUQzKO5doOnlk9YdHWscBMi55dkNI6AVVmTEdkw8MCzfi580mDl/MHgodHY1plFdJ+g1RSgW872FEv8vIZ4deFRw9BaHFoetd/6TosPl9uRVyPOFv1aU;3:4NNFASbvE3uuuBkR96Ui5trLYs6AXAvHyWwkzq4DawhMswP7WAZp3PIb/cNxF4O3XB+EfYQwCTpCrLcUhisr5filJ+QwqQIqnUI4UwvmbcvBGy9q5QNbDZmofSQQ2vIJdMKHwyjh36VEOCLgAXx663l/1mvhD2RK1CqoohfKyqDJutCTFha+c6r6VuCZ3Vtr5fhyPA/5q8xE90+zIYmb+nDkGwGSKQPO/gk5CfD/hvYxQgNpSenzp34TrCqPIBf7B3nx9tqXDoqSV1CZpKNiwA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501002);SRVR:AM4PR08MB1060; X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB1060;25:3EWAy4EYxkSwQR/0xO/ed6ORANqbM5W6vJ1UvhhzVnhkVKSrNiEWj/D4KCsjY60RxjzhAyRqGf83jU2oO6MpuDE2CB9vjIFx0XBaq4l31HE+tOcUhCeNo5JwS0L67wPQdQ0p87tgbj59UGdUvC1dJzPFx1xKM9njTWGm1bdkGDPRSHmIPlfswCSTJcW2bs+B3LAPnYiqabnU6hr8GCqVk6BPlhyqDqFZlO0zwU4fazv3NtJ8VuPDVTxJG1/2GhS9K8ZzKa7y1k52J9vOxpRQX/Yf6/vkrbstMqg3r/oVqgd3sVW6OHtxM9qUOZwfpBsMz3434RTuHxF/BD9cyLKFchsXUKIZAwOpVa1IEVCBK4g7A9WGkpc0Px17q5ERu4IPqt6TZWie3l2SCLZ+CP064lMOki/CnrFeJddxPYnV5D0HuAgPBXOkumZfXpK6iZXFF1optoZ+EDxXVKucXRNNGKlaEAJfKlRb4PGLBhqNCRmO0oB5IOyV43siQ2fIfB5L/jer14CgPWvzzloKRXjLrgcgaxdJ5kvMJ/wsogU6zxTK+iSPdcJIJtH0bMt4ImVOz9nvUSMB/oPgePUeEz99P7ro9/brBfytxgImGLDL+tzbJNJWj0pYnMFAaWN+XiOkRTtqNDFZgjTsJlmlvfgNMquKGS0Gu0TQRmYl4mJehGKY9QDMET+XaDU8Y9kr5PiHqFfvnBqxNyH2VdS8XNfwV6KUwxM0xAROX5QFg6HjKO5/8lZrGWhOiyVkbh0Bw7ORW+ZA2E+CBTKqo19+M29fIxrpVjWcccadUGG1FCIWlwIMbDNaDrK8xh/OU6m6IJgo NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB1060;20:2aO2VTUy/KiZeqhAt00m9GW8jIGaskyCydlqLnRTUeCwPZciKsEG6NGqSDAwYKHXSMTAOnbe1kGTx1ADZEa3SEgwoZ/tUyJrXMpZ803Rt/R6n+nfMHtxfw+d1XhNjy41lSAMk/xu/7ucGaZ5iqo3aTwAWHIxnPRdNA9XhXV0FuLajaEonBxCEtTNrG+ZFHmHeLdXESFvdHwIDSBfeMtFMmActflDGBrEZHl8peU10vKTkCUP/eOXOEHdTMGro6hJ;4:LPlhpSY4SlKX8KtVZ98/F8j3N3zXwxCCRl5BUhqwVC/REx23eo9BtxoTmQYtdUhrtGRELTOBX9hospzNSfAx/nRgn6r3oZlfHwfOtYL4LjoFOIPUVbRWwKY1Jcwo8z1s12KG8zwLpqTp9qM/SEVv1FnkiPI/RyfGX0ThRkdD6oPzxW5BpAQVJD7bttQfCgVlQZMohwvgGLPBuNgLs0Z6cv2kv1kO/sZrGTlaaT97Vc3FoAPHBWx7vQ2+dYOamlfMcPZ/Nif/Umfaoddk3x0KWVgKzmQYjCMvbNAPqUY8sSee673ALFmf+/njp44rHanQiZg+Q81na5XSY8XgFW0rsvM/INjrWc2VtfjPgbupy6I1yIVBvDxfHSr2Mfaqo8+mE+wDaYlepEcwTExQoiMrylFmuCMsr9xOR91LQITp8R02ogHYEepZ22+Vf12kG+p1XZ6ZNDbFRlOQnoi8M1uuKkjxMn9l9uZtwnJ0L8FAS55XtAhYsIDLbjxW4CJnLx9y X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(13023025)(13020025)(8121501046)(5005006)(13024025)(13013025)(10201501046)(3002001)(6055026);SRVR:AM4PR08MB1060;BCL:0;PCL:0;RULEID:;SRVR:AM4PR08MB1060; X-Forefront-PRVS: 0954EE4910 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM4PR08MB1060;23:IPA+sA3gPHpYZuuCCBIxlu08kwV+2S9ecewQ/5D1c?= =?us-ascii?Q?THnB0BaAc76enY1PvhidmdaknPKruRyzruGfrUHLnMGGyhlwTix0ohTJk+jV?= =?us-ascii?Q?2JU8v6/fH0PlesYSAGfJCqDiFV0cjuPubaR5/t1aA4VlQGhyH9HKbTWw5VMq?= =?us-ascii?Q?vux37bKH6uFiSP5/mV0TVGxemVbh7R6ezghLZnCUUcf929KOFyURoZsUFQzp?= =?us-ascii?Q?UpifX6z8wC7bMCTYSuc3Ndm11mSw41hMUbDADzAAMV7+YsT4ogOlk2ul2ZNb?= =?us-ascii?Q?1C0IdInfSsvL/bhWOr4cg5FFaoL4HanaAlwkewSosOWVsMAgN2c8UULH4tio?= =?us-ascii?Q?ZStRo9/+hGf0tP3TQ8QqtOrQ9ibvroNDpCI0pKEV60rqcnYxII0l5+mHDGfB?= =?us-ascii?Q?NwIQmRubl1BxKpFv3lS2mM1zH/i+If6cFhJiFn9WReYUo2ktO0GH7JmTl+JK?= =?us-ascii?Q?URUUMbW2UsL8NFzcNsaX+NkxbyZ57tVFXp4Kl4KML2I9Yh9+ECtPyRMocRCJ?= =?us-ascii?Q?5W4I6dPkIpor3tgi7lp6ktMHmhAUaCQhPS79BGgbEdoZdCRsn3hnHzd3Habz?= =?us-ascii?Q?rD/Ppn7GavgOFRN8WI0AjJ01HhrCRi+MCETPq/BAvQTKjx5CQh6yHkYYKJ2x?= =?us-ascii?Q?5cKxWAcezY3qlDPhrCA3sTckXsbkeKd/18Uu+oOtkplBYaM4VsO3/7vkCxhn?= =?us-ascii?Q?L0yMc2XIpx7Jgi1mzIuuJWonQ/nncWUnCHUKGJqTNeUzmCO1Fe0/G29BhPJN?= =?us-ascii?Q?9monzFNXHje1NenWWIBtouYcgMAvrs+LrR+Xw297vEC74z4wy+4I6VRFcTwD?= =?us-ascii?Q?TwhXi2NXMWatWcgnPDOvJkuC8LYXtqocX/EUYKmjME1rbbnfrxv13Iafcvbv?= =?us-ascii?Q?jKqB7sls7rR/xcrhTjCxzI86rd6d3qX3ggTMkGFnBru2czBtsdxvRVs3bAQB?= =?us-ascii?Q?m7x9ApKQCnN4CrvsTlltSo8rUXyYyNSwhYvv5bcWxTFae2xYTDrIhYzbU4cs?= =?us-ascii?Q?xKhqe3TWI3MqHQCFAdBQClmHl+ctQuGwtlKLpvtamnR+plq2oRVI+SiD1bbX?= =?us-ascii?Q?zFR89aS5+7LtkDGjwC9Z1JV3uJYtiFD7iX1pX+M0Uf1hzJfMM5YMWPnL3SRO?= =?us-ascii?Q?PaY/cTeEmKKHyIgSsE/M+wWOqrKvnAi?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB1060;5:3jQCnCTSFRo4cEoDM/XKevmZWcGDoPFqaHh3Dee5GIBKryX6HcuYB2k1EbcwVdKTDWVmJ7vHWTyKhBMIXyZxlRcl93r9eqEExdEMEYc8odUYiFYhq8rVO9RUWlI1IEaPqwUBYyCdRMC1gRPoIa01Lw==;24:HKr+jdoZ2M01hznx4ijey7wnpugd7+mBrfXAt6RXB/fqnacMJyv7FYeBajgG43IBaIN3nOKQEcWWldqII89NslYWCbBdHGj5nnLsoHZTQNI=;7:I5Yrd8bP7Qwdq8RNkYL200rgXPsVDltcWaFSMtZme2tTNL6rQ6XbEAVyMhCp3RiweWik8NXH5lB+LzVpaV8gnsprEIzcIYe3g/3NbtPPJFcK3F01SKp6peonTcns70OWM5NB6GJlR6rL2DNj3QnWU0fWTDnewvquGOjfR+KAfy9jW0Znyaeysye7xlKMLoTJ;20:Wf4bQweTUtLqFKK3NsvktDvRMjoPYFajLf7VwjZiaQN9dZeAvjsMTMliPFpEpKdnNoiqjW/OTk42FYO7XuHnBji04rtkc6bJgkZK3Ax93X14JuEbWnb2gu8prPu9/UltjLHderpco43HDFb4A2UOvmZ7P19d0xaOHrq5jvlS4fo= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2016 10:17:08.1968 (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: AM4PR08MB1060 X-MC-Unique: XWheR6ohQCWmZTo3HnnYzw-1 Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline X-IsSubscribed: yes X-SW-Source: 2016-05/txt/msg02093.txt.bz2 On Fri, May 20, 2016 at 11:04:32AM +0100, Kyrill Tkachov wrote: > Hi all, >=20 > The recent -frename-registers change exposed a deficiency in the way we f= use > AESE/AESMC instruction pairs in aarch64. >=20 > Basically we want to enforce: > AESE Vn, _ > AESMC Vn, Vn >=20 > to enable the fusion, but regrename comes along and renames the output Vn > register in AESMC to something else, killing the fusion in the hardware. >=20 > The solution in this patch is to add an alternative that ties the input a= nd > output registers in the AESMC pattern and enable that alternative when the > fusion is enabled. >=20 > With this patch I've confirmed that the above preferred register sequence= is > kept even with -frename-registers when tuning for a cpu that enables the > fusion and that the chain is broken by regrename otherwise and have seen = the > appropriate improvement in a proprietary benchmark (that I cannot name) t= hat > exercises this sequence. >=20 > Bootstrapped and tested on aarch64-none-linux-gnu. >=20 > Ok for trunk? >=20 > Thanks, > Kyrill >=20 > 2016-05-20 Kyrylo Tkachov >=20 > * config/aarch64/aarch64.c (aarch64_fusion_enabled_p): New function. > * config/aarch64/aarch64-protos.h (aarch64_fusion_enabled_p): Declare > prototype. > * config/aarch64/aarch64-simd.md (aarch64_crypto_aesv16qi): > Add "=3Dw,0" alternative. Enable it when AES/AESMC fusion is enabled. > diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aar= ch64-protos.h > index 21cf55b60f86024429ea36ead0d2d8ae4c94b579..f6da854fbaeeab34239a1f874= edaedf8a01bf9c2 100644 > --- a/gcc/config/aarch64/aarch64-protos.h > +++ b/gcc/config/aarch64/aarch64-protos.h > @@ -290,6 +290,7 @@ bool aarch64_constant_address_p (rtx); > bool aarch64_expand_movmem (rtx *); > bool aarch64_float_const_zero_rtx_p (rtx); > bool aarch64_function_arg_regno_p (unsigned); > +bool aarch64_fusion_enabled_p (unsigned int); This argument type should be "enum aarch64_fusion_pairs". > bool aarch64_gen_movmemqi (rtx *); > bool aarch64_gimple_fold_builtin (gimple_stmt_iterator *); > bool aarch64_is_extend_from_extract (machine_mode, rtx, rtx); > diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c > index b93f961fc4ebd9eb3f50b0580741c80ab6eca427..815973ca6e764121f2669ad16= 0918561450e6c50 100644 > --- a/gcc/config/aarch64/aarch64.c > +++ b/gcc/config/aarch64/aarch64.c > @@ -13359,6 +13359,14 @@ aarch_macro_fusion_pair_p (rtx_insn *prev, rtx_i= nsn *curr) > return false; > } >=20=20 > +/* Return true iff the instruction fusion described by OP is enabled. */ > + > +bool > +aarch64_fusion_enabled_p (unsigned int op) > +{ > + return (aarch64_tune_params.fusible_ops & op) !=3D 0; > +} > + A follow-up patch fixing the uses in aarch_macro_fusion_pair_p to use your new function would be nice. OK with the change to argument type. Thanks, James