Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp2948857imm; Thu, 24 May 2018 19:42:09 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqAfdEx0i7mqa/izk4xrhRfn147wSGKXXzx8mMjCfssVp45SkX+VlU4KKRm1Id209iIeIW+ X-Received: by 2002:a17:902:2bc5:: with SMTP id l63-v6mr579153plb.299.1527216129523; Thu, 24 May 2018 19:42:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527216129; cv=none; d=google.com; s=arc-20160816; b=pN5ZT5xzmUT1uCKXEpxNSDi0iIypJIqJzRhtBN9SLl56c9Oql2nT44bl4Oxy6AKpgV XZ3WsE7qwURe8yXmj+LXOBPEKItrtTeqctthvzdcDgM+sLLLk27tsEvjYaPUsGjG+3qb HKI6TW8q4qUC1Ahs7P39Q2SCLCYyyI4++1a6slaDyZF8Rqr4FmO/VLZY3RApH0ikyU9y 3z9cfUgRVtgEe1YpkRJ5/YbNVm7KQ+cUQTmDhfys5WAws3qbuEJPVC27PCKsyYHGDAM4 a2Y1bBa96Kx/mCfJeEvotqQxetwGJs3BIt+QacJElrVOSHi9XkjBm5XUXsPAKvPQZwbI oTLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=h9Um25p0mIxAtBKbCDP3ogUbDm4U/y02Y49hJn8BH6k=; b=zJXby2wEHEKSVHz12Zq2S6CRmaS0EDGf9PeLU5sn/2b9Utysn9AGOeJZ9Vc2g++1ff NVf7LkgJeOxFV6Sf/SRZALKZ3JGVD4HPRYASCY5lS/RQhscpqiOcXhjjn/OCcSP5tp62 j3xOKQvyra2zRmZr4+qpr+dSbWKYyP8lYuLSgiykCggCC1g38023PNQopofvnHB1uFII tj24Y0qRVxvxUUOxxUc/uaPMczZgJnikBL5199YJkNJPN3iKmnCrBspNIvHTAmiLefIV ITi53S7o0xchJjI7Ki6UpiUkbp+I9fpAPvM4HXx7CCFTk4EOHXeXs2OIMIjkrO+3DQNW cJQA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c17-v6si6192705pgp.408.2018.05.24.19.41.54; Thu, 24 May 2018 19:42:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935766AbeEXUEh (ORCPT + 99 others); Thu, 24 May 2018 16:04:37 -0400 Received: from gate.crashing.org ([63.228.1.57]:33176 "EHLO gate.crashing.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935330AbeEXUEe (ORCPT ); Thu, 24 May 2018 16:04:34 -0400 Received: from gate.crashing.org (localhost.localdomain [127.0.0.1]) by gate.crashing.org (8.14.1/8.14.1) with ESMTP id w4OK3pQW016978; Thu, 24 May 2018 15:03:52 -0500 Received: (from segher@localhost) by gate.crashing.org (8.14.1/8.14.1/Submit) id w4OK3pcB016977; Thu, 24 May 2018 15:03:51 -0500 Date: Thu, 24 May 2018 15:03:50 -0500 From: Segher Boessenkool To: Christophe Leroy Cc: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Subject: Re: [PATCH v4] powerpc: Implement csum_ipv6_magic in assembly Message-ID: <20180524200350.GG17342@gate.crashing.org> References: <7a756b816161007903ca8b28aec662de27135c55.1527161282.git.christophe.leroy@c-s.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7a756b816161007903ca8b28aec662de27135c55.1527161282.git.christophe.leroy@c-s.fr> User-Agent: Mutt/1.4.2.3i Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Looks fine to me (one comment below): Reviewed-by: Segher Boessenkool On Thu, May 24, 2018 at 11:33:18AM +0000, Christophe Leroy wrote: > +_GLOBAL(csum_ipv6_magic) > + lwz r8, 0(r3) > + lwz r9, 4(r3) > + addc r0, r7, r8 > + lwz r10, 8(r3) > + adde r0, r0, r9 > + lwz r11, 12(r3) > + adde r0, r0, r10 > + lwz r8, 0(r4) > + adde r0, r0, r11 > + lwz r9, 4(r4) > + adde r0, r0, r8 > + lwz r10, 8(r4) > + adde r0, r0, r9 > + lwz r11, 12(r4) > + adde r0, r0, r10 > + add r5, r5, r6 /* assumption: len + proto doesn't carry */ > + adde r0, r0, r11 > + adde r0, r0, r5 > + addze r0, r0 > + rotlwi r3, r0, 16 > + add r3, r0, r3 > + not r3, r3 > + rlwinm r3, r3, 16, 16, 31 > + blr > +EXPORT_SYMBOL(csum_ipv6_magic) > diff --git a/arch/powerpc/lib/checksum_64.S b/arch/powerpc/lib/checksum_64.S > index d7f1a966136e..bf0546e546fc 100644 > --- a/arch/powerpc/lib/checksum_64.S > +++ b/arch/powerpc/lib/checksum_64.S > @@ -429,3 +429,31 @@ dstnr; stb r6,0(r4) > stw r6,0(r8) > blr > EXPORT_SYMBOL(csum_partial_copy_generic) > + > +/* > + * __sum16 csum_ipv6_magic(const struct in6_addr *saddr, > + * const struct in6_addr *daddr, > + * __u32 len, __u8 proto, __wsum sum) > + */ > + > +_GLOBAL(csum_ipv6_magic) > + ld r8, 0(r3) > + ld r9, 8(r3) > + add r5, r5, r6 > + addc r0, r8, r9 > + ld r10, 0(r4) > + ld r11, 8(r4) > + adde r0, r0, r10 > + add r5, r5, r7 > + adde r0, r0, r11 > + adde r0, r0, r5 > + addze r0, r0 > + rotldi r3 ,r0, 32 /* fold two 32 bit halves together */ Typo (s/ ,/, /). > + add r3, r0, r3 > + srdi r0, r3, 32 > + rotlwi r3, r0, 16 /* fold two 16 bit halves together */ > + add r3, r0, r3 > + not r3, r3 > + rlwinm r3, r3, 16, 16, 31 > + blr > +EXPORT_SYMBOL(csum_ipv6_magic) > -- > 2.13.3