From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753911AbbHFWp7 (ORCPT ); Thu, 6 Aug 2015 18:45:59 -0400 Received: from mail-bl2on0117.outbound.protection.outlook.com ([65.55.169.117]:56562 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751780AbbHFWp5 (ORCPT ); Thu, 6 Aug 2015 18:45:57 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=scottwood@freescale.com; Message-ID: <1438901145.2097.170.camel@freescale.com> Subject: Re: [PATCH v2 2/2] powerpc32: optimise csum_partial() loop From: Scott Wood To: Segher Boessenkool CC: Christophe Leroy , Benjamin Herrenschmidt , Paul Mackerras , "Michael Ellerman" , , Date: Thu, 6 Aug 2015 17:45:45 -0500 In-Reply-To: <20150806043938.GE18479@gate.crashing.org> References: <67cf476f657e87b2ea586951a57ae3ba3c1e3c0c.1435655733.git.christophe.leroy@c-s.fr> <20150806003059.GD18479@gate.crashing.org> <1438828301.2097.126.camel@freescale.com> <20150806043938.GE18479@gate.crashing.org> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.16.0-fta1 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Originating-IP: [2601:448:8100:f9f:12bf:48ff:fe84:c9a0] X-ClientProxiedBy: SN1PR0701CA0037.namprd07.prod.outlook.com (25.162.96.47) To BY1PR03MB1482.namprd03.prod.outlook.com (25.162.210.140) X-Microsoft-Exchange-Diagnostics: 1;BY1PR03MB1482;2:M2V51nMhthi6wWlUFckS5+C5IcTzlN3iiyTh1lPAIyhMbPqMVeA0Mdx3FA9r1A3SnEx0DRyV+MV7GG2wmt28y5JlmGVb9+LtOXV0WSUtdhlpYoZbDca6u3EywZxqcXiEfHgqpCjuXODCwg0k4AYlZtiTYkIqINkhu+Tx4cO4zAU=;3:+sl0/79/shb8kwrDJCLzUdNpQ9Q3c9hbY5PLIYd5aK9WjbOtZB8MVYvxUdI+T2V8EeS1TQ7OzshrVNwhw5jIXtiSL2+zT8w4T4K8/KZwrjpkSelkz6SS1lm4WcdINatGN848HuE6vY13QtnZqohE6w==;25:dnxblHBIA7NYqq+wNNtuagiWudSXeE3wJ2gh79zRVecyqClYSL8MmMriuu1I1JvWmhb3xDxDp8CepMTmbQmz/XrUhnmfPzjeBdsD4JE0NyahcSU+4Qsd3IsrVdDHZ6nM/nE10eQdQ/LXcANZVa030OC8c1QRuLhu44AhaxqpscZ2huEleJZwAEG77v/Lk3UHrDhPRIM02Jj492ozDc5cT5T5MZAQ4sTAOJLPdiRitr5iuf7zuu9loJwWNhh+J1ZQG0WqgFxc+k511heyAFBSbQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR03MB1482; X-Microsoft-Exchange-Diagnostics: 1;BY1PR03MB1482;20:ysv0n9IJPM1WKxdySmscpZeaE9IovnT3m/a1I+VTxKAlHXbKkXOzpuUH+UzDhvb9I4FR/3uB2c/o4loH+rszGleMkZnt8YfLBPNqaeroW7MEQxVBxG3URkbfarVfgSAyKye8k0+xNC+EVE6RlONIuOzAseuThNA5pz9zD7+u4RIPyLjxetLEGfpJ2vg2W0V0HwTHSwXzq5j1+/4ZfgP9QKcNezSQjIWGkTRnXtHw5F/1qDtGvFroQwlQbXHjvygTT4aBUBfTvb5ywj8De5y/WIXqtXVnEzgEXWrNy5K6HfBVvLZk+hpIdSr2LiiNUNhL6iO95CxtYblK9/ibbsreXJCQF1/3bG7avG6AdCpD384DW/tB07PsrxetFrLfHx644aOOkDdcEA4kHrFw6ECrRgvdVmU5vzIvGb8/Fc/3P5c+Bs70nEsikjIKwKF9+9JMvsKvsh2seBsUdMBMrBz6oxEdL8yK83hNTRxwf/P9LwYaJPaq1JG71s/Xk3LXr9tO;4:kHwo7IpzFFilNU2kTMCbt0sAoIvfXi7vm2rnT7ImfsBsS5UCPYHtJGDDSvThhY5EqMpCx6vqYLA8ujko22P9gtUbCiBwWPouzkKW8WyJrA1LAcDHE13MHzoIFZG6rZY2TIHCiteqahDrLdHEVAGRS8szcN4rAuduuqKBj4ogQGcruCLzCE/X3zvQo299oB6y2TO1ysR6L15LM5xgalhR5H/wrTbAdnFxTe1TJVPmj/ACIK6WXYtk1ZuEB54SakifjkhSVoxh12jDi7GirNxevfbMX50RFXHcTCzGlvduFg4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:BY1PR03MB1482;BCL:0;PCL:0;RULEID:;SRVR:BY1PR03MB1482; X-Forefront-PRVS: 06607E485E X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(199003)(189002)(24454002)(377424004)(50986999)(46102003)(76176999)(50226001)(2950100001)(68736005)(92566002)(77096005)(122386002)(40100003)(93886004)(36756003)(103116003)(189998001)(101416001)(106356001)(77156002)(33646002)(81156007)(4001540100001)(62966003)(42186005)(105586002)(50466002)(5001860100001)(23676002)(110136002)(5820100001)(97736004)(47776003)(86362001)(64706001)(5001830100001)(87976001)(5001960100002)(99106002)(3826002)(5001840100002);DIR:OUT;SFP:1102;SCL:1;SRVR:BY1PR03MB1482;H:[IPv6:2601:448:8100:f9f:12bf:48ff:fe84:c9a0];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCWTFQUjAzTUIxNDgyOzIzOmpjamFyYzN6UC9UQUtvL1hDSkJKSTBIYnRw?= =?utf-8?B?dFNRcHZ0THAyallreWlIMHRNcFJQR1J4WnhPRmFDcGZ1VTNZZk1nNDdyUTgw?= =?utf-8?B?SVVPOTNRV1RibCs2bkJWYjBuQXhQVTFXZnNzWnF0cVR2K0hDUWNTVlIyWEFU?= =?utf-8?B?aVorZ2ZEOThHVzhjL1lvK0J0alNPTUw4R2ExZG5XdHl5S0hiaGhWSnAwSGgr?= =?utf-8?B?WE93SHNkQWMzTTd5WU5mZG4vWmhpNFZRYi9vWGtqQ1RiME1JaWNZcVVXYzZH?= =?utf-8?B?ZE1JNUJ0QlN0VFlqOHVvZ3dxZmU1YjNocWJsM2FoTFMyb202ZHE3UFdZeFhD?= =?utf-8?B?MkpiRTdPc0ZpaUk5QnpHclBSV0JXNXc0RzMwL1hHbW9sTkhUdWhjcEh6UCtw?= =?utf-8?B?RHQySEYzbWlqb21SV3pSQ2VWK3NnRDBTdHhXT203SGdhMDRXMnlYWit0aU9Y?= =?utf-8?B?MjR0aFpzMmordktxS1lYTitVbVVoVnZzM0ZVNTM4TjBaSlpzcEszRWhvYmdi?= =?utf-8?B?UVVkSmdweFBsdU05TFU2OTVGRDhmUU1NV3J4MVgxbURpWkh2blBoejIzb2cv?= =?utf-8?B?YXVMTWpvUW0wemZMcHF6ZXlWeTFLdDVZaGp5NVJkL0JObW1MVC80MisrdElz?= =?utf-8?B?YnF2b2krUEFaQnhuYnQvWUhwek5VRE5hRWhVNk9YMjloU1BVZ0IxVCtQbUJP?= =?utf-8?B?aCtkN1RnRmZSS211alYrNExyU01ZZFBaZmttN1ZyY1B5dDU1QUpPblNtV2ZP?= =?utf-8?B?V0puVHBXQTVHVjNJWHByYUpnQy82UjJFRmM5VDdWTGdVbTY1UnpaTTM4enlL?= =?utf-8?B?ajJRdDVPL0J2Mm96ajBlNG5DVWR2QWs2NG51TWI1V3JhTURscFNCcTFOSys4?= =?utf-8?B?c3R4WGduWEtCbXgreCtZVkdWN1VpOFR4WmNlUnFTdlVjbkdHSDZha1kvMXUw?= =?utf-8?B?dVRnUFpoZXBhQ3Z4VEtBWTczenFoVkJTUVdnVCsxMnd4Z1hWTXJqMWZ4elFQ?= =?utf-8?B?US9SM25zQmxneGU2RlJUdTk0TUFnTmFJeU1JblR2TXRVaFE1UFlrVFBEaVZr?= =?utf-8?B?Rm9odkhqS0FnQlBhcFppaEJkaC9RcWVtSmpaZkRtaVY1MURNZlFoR1E0K2s3?= =?utf-8?B?Zy9YOW85QzNiSEVCMzMrRkZyTWsvNW9leDljTVJoVVRyWC8xdk9hbVpyd2ZJ?= =?utf-8?B?eHVDcUtDQWFVUXV5SGYra29hQXBXM2Yrek00dU9KOXFONzdyT1E2VlV0R2Qx?= =?utf-8?B?eG5jQ3h6S0xIY3YrTVc4bVgxeFFvaG81amFLMWJORkRIVnRPaGFKd1FWUTFU?= =?utf-8?B?WEEvcmNxL2JWL2VCam1vRTJSSW1WVmVoSjlUVVIwSU4rMEVaSjQwZ0tLMkJ3?= =?utf-8?B?OVVVUndENmI4TnprQlhPZlVsSGZleXRFV0RtTnVkMEkvY2RHVXI4TWFnNTMw?= =?utf-8?B?cHZEa3BtQ0Rtck8rOTFRdS8xR1NFMGN1aTR2YWpmSkFEMmFsYTBIZDNxampk?= =?utf-8?Q?+ElErAJDCeixaX6XEkn7u2GXVpvWK1i5g4MKngJsp7KkrW?= X-Microsoft-Exchange-Diagnostics: 1;BY1PR03MB1482;5:HMzKPIybY0p7bO/PH/XhXutXqTLFSuhRh2pldrmQ7P52Nl1S65KIdd4JD+VT3ae+GbTGaTTrPhOVOeBqMRN3IHi8RPDdIRN/E3z4cShRIEP0kKoDqTbXRHYvsSpqsWR4/6KlRpxNHnk1RrQ8+yyWzg==;24:a8QQSl5/qI0zpSMS77OPjC6GOT67+ooArucHOxvMln8kU8/4hiiB9ft/IVjZnvYy+B0tp6JQaXEBh4xUT7fMbjDG5dzvtNJqthQkVEOrAl8=;20:0zQaVv8VVTPXAAjI2w+84zFoPZo5XRYfJX1x7eDuWDyA02DXH/FfC86v0zDURPrIALrAoDaf2+K5SfkIs2Tqzg== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Aug 2015 22:45:51.9977 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR03MB1482 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2015-08-05 at 23:39 -0500, Segher Boessenkool wrote: > On Wed, Aug 05, 2015 at 09:31:41PM -0500, Scott Wood wrote: > > On Wed, 2015-08-05 at 19:30 -0500, Segher Boessenkool wrote: > > > On Wed, Aug 05, 2015 at 03:29:35PM +0200, Christophe Leroy wrote: > > > > On the 8xx, load latency is 2 cycles and taking branches also takes > > > > 2 cycles. So let's unroll the loop. > > > > > > This is not true for most other 32-bit PowerPC; this patch makes > > > performance worse on e.g. 6xx/7xx/7xxx. Let's not! > > > > Chips with a load latency greater than 2 cycles should also benefit from > > the > > unrolling. Have you benchmarked this somewhere and seen it reduce > > performance? Do you know of any 32-bit PPC chips with a load latency > > less > > than 2 cycles? > > The original loop was already optimal, as the comment said. The comment says that bdnz has zero overhead. That doesn't mean the adde won't stall waiting for the load result. > The new code adds extra instructions and a mispredicted branch. Outside the main loop. > You also might get less overlap between the loads and adde (I didn't check > if there is any originally): those instructions are no longer > interleaved. > > I think it is a stupid idea to optimise code for all 32-bit PowerPC > CPUs based on solely what is best for a particularly simple, slow > implementation; and that is what this patch is doing. The simple and slow implementation is the one that needs optimizations the most. If this makes performance non-negligibly worse on other 32-bit chips, and is an important improvement on 8xx, then we can use an ifdef since 8xx already requires its own kernel build. I'd prefer to see a benchmark showing that it actually does make things worse on those chips, though. -Scott