From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 12C55EB64DD for ; Tue, 11 Jul 2023 17:34:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=dVzHJVFVV34P5na9CkEKqPSEUYDQf9ds2grXnWcv+yY=; b=qpA1vFFtx2teQ0 Ovc8Qq2Ua0Z+3tix8Qvi49uhGcGlrj4pAjhhBA3X8ie0nSPyzprJmBGiXbN6OUJGTnu/CD76CKsOu 05pcpMkiQFh+cYF5wWmjWPfsn4EXLJRNi4s0B6RyefkW1XC2mu78YYeSPnzVMhU/QBch2Ab7CIFgP NPZIuHYrtHZPUS3coit/8uR6Kzu8cmabNsb3pgsXgBlLwpB2F6joKAecvY1KthIu0eZf9s7idwKZm JoUNokjKmUNPVy8W4QTLFMYGrAiYLk+IsTeFRftT8rAcovXHRleCg1qLI9p+7xK/gVrHnoxI3s1j3 wFHeJS5f/dVgURNnRzPg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qJHFP-00FYjy-1l; Tue, 11 Jul 2023 17:33:59 +0000 Received: from 17.mo584.mail-out.ovh.net ([46.105.41.16]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qJHFM-00FYjS-0a for linux-riscv@lists.infradead.org; Tue, 11 Jul 2023 17:33:58 +0000 Received: from director3.ghost.mail-out.ovh.net (unknown [10.108.4.132]) by mo584.mail-out.ovh.net (Postfix) with ESMTP id D5724270F0 for ; Tue, 11 Jul 2023 17:33:51 +0000 (UTC) Received: from ghost-submission-6684bf9d7b-l5klt (unknown [10.110.171.34]) by director3.ghost.mail-out.ovh.net (Postfix) with ESMTPS id 602A01FD37; Tue, 11 Jul 2023 17:33:51 +0000 (UTC) Received: from courmont.net ([37.59.142.107]) by ghost-submission-6684bf9d7b-l5klt with ESMTPSA id WdOxEn+SrWTPKC4Auh2lqg (envelope-from ); Tue, 11 Jul 2023 17:33:51 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-107S001ecf9f6e3-4f29-4dc6-a688-e1e232be3982, BD5993DD31A8D185A8BDB9FDB50A3FED214DC06B) smtp.auth=postmaster@courmont.net X-OVh-ClientIp: 87.92.194.88 From: =?ISO-8859-1?Q?R=E9mi?= Denis-Courmont To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4 02/12] riscv: Add vector extension XOR implementation Date: Tue, 11 Jul 2023 20:33:50 +0300 Message-ID: <2289969.yH7iMFiWxO@basile.remlab.net> Organization: Remlab In-Reply-To: <20230711153743.1970625-3-heiko@sntech.de> References: <20230711153743.1970625-1-heiko@sntech.de> <20230711153743.1970625-3-heiko@sntech.de> MIME-Version: 1.0 X-Ovh-Tracer-Id: 10556156052126767579 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedviedrfedtgdduudehucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvffufffkohgjfhgggfgtsehtqhertddttdejnecuhfhrohhmpeftrohmihcuffgvnhhishdqvehouhhrmhhonhhtuceorhgvmhhisehrvghmlhgrsgdrnhgvtheqnecuggftrfgrthhtvghrnheptdetleevudfgtdevleeuhfffgeehvdevieetvdektdegtdekvedvhfegkeehhfdunecuffhomhgrihhnpeigohhrrdhssgdprhgvmhhlrggsrdhnvghtnecukfhppeduvdejrddtrddtrddupdekjedrledvrdduleegrdekkedpfeejrdehledrudegvddruddtjeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeduvdejrddtrddtrddupdhmrghilhhfrhhomhepoehrvghmihesrhgvmhhlrggsrdhnvghtqedpnhgspghrtghpthhtohepuddprhgtphhtthhopehlihhnuhigqdhrihhstghvsehlihhsthhsrdhinhhfrhgruggvrggurdhorhhgpdfovfetjfhoshhtpehmohehkeegpdhmohguvgepshhmthhpohhuth X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230711_103356_515658_14FE7311 X-CRM114-Status: GOOD ( 10.32 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org TGUgdGlpc3RhaW5hIDExLiBoZWluw6RrdXV0YSAyMDIzLCAxOC4zNy4zMyBFRVNUIEhlaWtvIFN0 dWVibmVyIGEgw6ljcml0IDoKPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9saWIveG9yLlMgYi9h cmNoL3Jpc2N2L2xpYi94b3IuUwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MDAwMDAwLi4zYmMwNTllMTgxNzEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9yaXNjdi9s aWIveG9yLlMKPiBAQCAtMCwwICsxLDgxIEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9yLWxhdGVyICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAyMSBTaUZp dmUKPiArICovCj4gKyNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+Cj4gKyNpbmNsdWRlIDxhc20t Z2VuZXJpYy9leHBvcnQuaD4KPiArI2luY2x1ZGUgPGFzbS9hc20uaD4KPiArCj4gK0VOVFJZKHhv cl9yZWdzXzJfKQo+ICsJdnNldHZsaSBhMywgYTAsIGU4LCBtOCwgdGEsIG1hCgpBRkFJQ1QsIHNv IGZhciwgTGludXggb25seSB1c2VzIGB2c2V0dmxpYCB0byBzYXZlL3Jlc3RvcmUvZmx1c2ggdmVj dG9ycywgYW5kIAp0aGF0J3MsIG9mIGNvdXJzZSwgd2l0aCBMTVVMPTgsIHNvIHRoYXQncyBub3Qg cmVhbGx5IHRlbGxpbmcgbXVjaCBhbnl0aGluZy4gClRoaXMgZnVuY3Rpb24gY291bGQgYmUgdGhl IGZpcnN0IGFjdHVhbCB2ZWN0b3Igb3B0aW1pc2F0aW9uIGluIGtlcm5lbCBpZi93aGVuIAppdCBn ZXRzIG1lcmdlZC4KClNob3VsZCB0aGUgc2FtZSBncm91cCBtdWx0aXBsaWVyIGJlIHVzZWQgZm9y ICJhY3R1YWwiIHZlY3RvciBsb29wcyB0aHJvdWdob3V0IAp0aGUga2VybmVsPyBJJ3ZlIHNlZW4g Y29uZmxpY3RpbmcgYWR2aXNlcyBvciBvcGluaW9ucyBoZXJlLiBTaG91bGQga2VybmVsIGNvZGUg CmFsd2F5cyB1c2UgdGhlIG1heGltdW0gcG9zc2libGUgTE1VTCwgZGVwZW5kaW5nIG9uIHJlZ2lz dGVyIHByZXNzdXJlIG9mIHRoZSAKbG9vcD8gT3Igd2lsbCB0aGF0IGp1c3QgaW5jcmVhc2UgbGF0 ZW5jeSB3aXRoIG5vIGJhbmR3aWR0aCBnYWlucyBjb21wYXJlZCB0bywgCnNheSwgTE1VTD0xIG9y IExNVUw9Mj8KCj4gKwl2bGU4LnYgdjAsIChhMSkKPiArCXZsZTgudiB2OCwgKGEyKQo+ICsJc3Vi IGEwLCBhMCwgYTMKPiArCXZ4b3IudnYgdjE2LCB2MCwgdjgKPiArCWFkZCBhMiwgYTIsIGEzCj4g Kwl2c2U4LnYgdjE2LCAoYTEpCj4gKwlhZGQgYTEsIGExLCBhMwo+ICsJYm5leiBhMCwgeG9yX3Jl Z3NfMl8KPiArCXJldAo+ICtFTkQoeG9yX3JlZ3NfMl8pCj4gK0VYUE9SVF9TWU1CT0woeG9yX3Jl Z3NfMl8pCj4gKwo+ICtFTlRSWSh4b3JfcmVnc18zXykKPiArCXZzZXR2bGkgYTQsIGEwLCBlOCwg bTgsIHRhLCBtYQo+ICsJdmxlOC52IHYwLCAoYTEpCj4gKwl2bGU4LnYgdjgsIChhMikKPiArCXN1 YiBhMCwgYTAsIGE0Cj4gKwl2eG9yLnZ2IHYwLCB2MCwgdjgKPiArCXZsZTgudiB2MTYsIChhMykK PiArCWFkZCBhMiwgYTIsIGE0Cj4gKwl2eG9yLnZ2IHYxNiwgdjAsIHYxNgo+ICsJYWRkIGEzLCBh MywgYTQKPiArCXZzZTgudiB2MTYsIChhMSkKPiArCWFkZCBhMSwgYTEsIGE0Cj4gKwlibmV6IGEw LCB4b3JfcmVnc18zXwo+ICsJcmV0Cj4gK0VORCh4b3JfcmVnc18zXykKPiArRVhQT1JUX1NZTUJP TCh4b3JfcmVnc18zXykKPiArCj4gK0VOVFJZKHhvcl9yZWdzXzRfKQo+ICsJdnNldHZsaSBhNSwg YTAsIGU4LCBtOCwgdGEsIG1hCj4gKwl2bGU4LnYgdjAsIChhMSkKPiArCXZsZTgudiB2OCwgKGEy KQo+ICsJc3ViIGEwLCBhMCwgYTUKPiArCXZ4b3IudnYgdjAsIHYwLCB2OAo+ICsJdmxlOC52IHYx NiwgKGEzKQo+ICsJYWRkIGEyLCBhMiwgYTUKPiArCXZ4b3IudnYgdjAsIHYwLCB2MTYKPiArCXZs ZTgudiB2MjQsIChhNCkKPiArCWFkZCBhMywgYTMsIGE1Cj4gKwl2eG9yLnZ2IHYxNiwgdjAsIHYy NAo+ICsJYWRkIGE0LCBhNCwgYTUKPiArCXZzZTgudiB2MTYsIChhMSkKPiArCWFkZCBhMSwgYTEs IGE1Cj4gKwlibmV6IGEwLCB4b3JfcmVnc180Xwo+ICsJcmV0Cj4gK0VORCh4b3JfcmVnc180XykK PiArRVhQT1JUX1NZTUJPTCh4b3JfcmVnc180XykKPiArCj4gK0VOVFJZKHhvcl9yZWdzXzVfKQo+ ICsJdnNldHZsaSBhNiwgYTAsIGU4LCBtOCwgdGEsIG1hCj4gKwl2bGU4LnYgdjAsIChhMSkKPiAr CXZsZTgudiB2OCwgKGEyKQo+ICsJc3ViIGEwLCBhMCwgYTYKPiArCXZ4b3IudnYgdjAsIHYwLCB2 OAo+ICsJdmxlOC52IHYxNiwgKGEzKQo+ICsJYWRkIGEyLCBhMiwgYTYKPiArCXZ4b3IudnYgdjAs IHYwLCB2MTYKPiArCXZsZTgudiB2MjQsIChhNCkKPiArCWFkZCBhMywgYTMsIGE2Cj4gKwl2eG9y LnZ2IHYwLCB2MCwgdjI0Cj4gKwl2bGU4LnYgdjgsIChhNSkKPiArCWFkZCBhNCwgYTQsIGE2Cj4g Kwl2eG9yLnZ2IHYxNiwgdjAsIHY4Cj4gKwlhZGQgYTUsIGE1LCBhNgo+ICsJdnNlOC52IHYxNiwg KGExKQo+ICsJYWRkIGExLCBhMSwgYTYKPiArCWJuZXogYTAsIHhvcl9yZWdzXzVfCj4gKwlyZXQK PiArRU5EKHhvcl9yZWdzXzVfKQo+ICtFWFBPUlRfU1lNQk9MKHhvcl9yZWdzXzVfKQoKCi0tIArj g6zjg5/jg7vjg4fjg4st44Kv44O844Or44Oi44OzCmh0dHA6Ly93d3cucmVtbGFiLm5ldC8KCgoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJp c2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 24A1EEB64DC for ; Tue, 11 Jul 2023 18:52:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230155AbjGKSwI convert rfc822-to-8bit (ORCPT ); Tue, 11 Jul 2023 14:52:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44594 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229509AbjGKSwG (ORCPT ); Tue, 11 Jul 2023 14:52:06 -0400 X-Greylist: delayed 4691 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Tue, 11 Jul 2023 11:52:04 PDT Received: from 9.mo584.mail-out.ovh.net (9.mo584.mail-out.ovh.net [46.105.40.176]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9B0C5BC for ; Tue, 11 Jul 2023 11:52:04 -0700 (PDT) Received: from director3.ghost.mail-out.ovh.net (unknown [10.109.156.38]) by mo584.mail-out.ovh.net (Postfix) with ESMTP id D2D652703D for ; Tue, 11 Jul 2023 17:33:51 +0000 (UTC) Received: from ghost-submission-6684bf9d7b-l5klt (unknown [10.110.171.34]) by director3.ghost.mail-out.ovh.net (Postfix) with ESMTPS id 602A01FD37; Tue, 11 Jul 2023 17:33:51 +0000 (UTC) Received: from courmont.net ([37.59.142.107]) by ghost-submission-6684bf9d7b-l5klt with ESMTPSA id WdOxEn+SrWTPKC4Auh2lqg (envelope-from ); Tue, 11 Jul 2023 17:33:51 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-107S001ecf9f6e3-4f29-4dc6-a688-e1e232be3982, BD5993DD31A8D185A8BDB9FDB50A3FED214DC06B) smtp.auth=postmaster@courmont.net X-OVh-ClientIp: 87.92.194.88 From: =?ISO-8859-1?Q?R=E9mi?= Denis-Courmont To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4 02/12] riscv: Add vector extension XOR implementation Date: Tue, 11 Jul 2023 20:33:50 +0300 Message-ID: <2289969.yH7iMFiWxO@basile.remlab.net> Organization: Remlab In-Reply-To: <20230711153743.1970625-3-heiko@sntech.de> References: <20230711153743.1970625-1-heiko@sntech.de> <20230711153743.1970625-3-heiko@sntech.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT Content-Type: text/plain; charset="UTF-8" X-Ovh-Tracer-Id: 10556156052126767579 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedviedrfedtgdduudehucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvffufffkohgjfhgggfgtsehtqhertddttdejnecuhfhrohhmpeftrohmihcuffgvnhhishdqvehouhhrmhhonhhtuceorhgvmhhisehrvghmlhgrsgdrnhgvtheqnecuggftrfgrthhtvghrnheptdetleevudfgtdevleeuhfffgeehvdevieetvdektdegtdekvedvhfegkeehhfdunecuffhomhgrihhnpeigohhrrdhssgdprhgvmhhlrggsrdhnvghtnecukfhppeduvdejrddtrddtrddupdekjedrledvrdduleegrdekkedpfeejrdehledrudegvddruddtjeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeduvdejrddtrddtrddupdhmrghilhhfrhhomhepoehrvghmihesrhgvmhhlrggsrdhnvghtqedpnhgspghrtghpthhtohepuddprhgtphhtthhopehlihhnuhigqdhkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrghdpoffvtefjohhsthepmhhoheekgedpmhhouggvpehsmhhtphhouhht Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le tiistaina 11. heinäkuuta 2023, 18.37.33 EEST Heiko Stuebner a écrit : > diff --git a/arch/riscv/lib/xor.S b/arch/riscv/lib/xor.S > new file mode 100644 > index 000000000000..3bc059e18171 > --- /dev/null > +++ b/arch/riscv/lib/xor.S > @@ -0,0 +1,81 @@ > +/* SPDX-License-Identifier: GPL-2.0-or-later */ > +/* > + * Copyright (C) 2021 SiFive > + */ > +#include > +#include > +#include > + > +ENTRY(xor_regs_2_) > + vsetvli a3, a0, e8, m8, ta, ma AFAICT, so far, Linux only uses `vsetvli` to save/restore/flush vectors, and that's, of course, with LMUL=8, so that's not really telling much anything. This function could be the first actual vector optimisation in kernel if/when it gets merged. Should the same group multiplier be used for "actual" vector loops throughout the kernel? I've seen conflicting advises or opinions here. Should kernel code always use the maximum possible LMUL, depending on register pressure of the loop? Or will that just increase latency with no bandwidth gains compared to, say, LMUL=1 or LMUL=2? > + vle8.v v0, (a1) > + vle8.v v8, (a2) > + sub a0, a0, a3 > + vxor.vv v16, v0, v8 > + add a2, a2, a3 > + vse8.v v16, (a1) > + add a1, a1, a3 > + bnez a0, xor_regs_2_ > + ret > +END(xor_regs_2_) > +EXPORT_SYMBOL(xor_regs_2_) > + > +ENTRY(xor_regs_3_) > + vsetvli a4, a0, e8, m8, ta, ma > + vle8.v v0, (a1) > + vle8.v v8, (a2) > + sub a0, a0, a4 > + vxor.vv v0, v0, v8 > + vle8.v v16, (a3) > + add a2, a2, a4 > + vxor.vv v16, v0, v16 > + add a3, a3, a4 > + vse8.v v16, (a1) > + add a1, a1, a4 > + bnez a0, xor_regs_3_ > + ret > +END(xor_regs_3_) > +EXPORT_SYMBOL(xor_regs_3_) > + > +ENTRY(xor_regs_4_) > + vsetvli a5, a0, e8, m8, ta, ma > + vle8.v v0, (a1) > + vle8.v v8, (a2) > + sub a0, a0, a5 > + vxor.vv v0, v0, v8 > + vle8.v v16, (a3) > + add a2, a2, a5 > + vxor.vv v0, v0, v16 > + vle8.v v24, (a4) > + add a3, a3, a5 > + vxor.vv v16, v0, v24 > + add a4, a4, a5 > + vse8.v v16, (a1) > + add a1, a1, a5 > + bnez a0, xor_regs_4_ > + ret > +END(xor_regs_4_) > +EXPORT_SYMBOL(xor_regs_4_) > + > +ENTRY(xor_regs_5_) > + vsetvli a6, a0, e8, m8, ta, ma > + vle8.v v0, (a1) > + vle8.v v8, (a2) > + sub a0, a0, a6 > + vxor.vv v0, v0, v8 > + vle8.v v16, (a3) > + add a2, a2, a6 > + vxor.vv v0, v0, v16 > + vle8.v v24, (a4) > + add a3, a3, a6 > + vxor.vv v0, v0, v24 > + vle8.v v8, (a5) > + add a4, a4, a6 > + vxor.vv v16, v0, v8 > + add a5, a5, a6 > + vse8.v v16, (a1) > + add a1, a1, a6 > + bnez a0, xor_regs_5_ > + ret > +END(xor_regs_5_) > +EXPORT_SYMBOL(xor_regs_5_) -- レミ・デニ-クールモン http://www.remlab.net/