lkml.org 
[lkml]   [2023]   [Sep]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v6 1/4] asm-generic: Improve csum_fold
    On Fri, Sep 15, 2023 at 10:01:17AM -0700, Charlie Jenkins wrote:
    > This csum_fold implementation introduced into arch/arc by Vineet Gupta
    > is better than the default implementation on at least arc, x86, and
    > riscv. Using GCC trunk and compiling non-inlined version, this
    > implementation has 41.6667%, 25% fewer instructions on riscv64, x86-64
    > respectively with -O3 optimization. Most implmentations override this
    > default in asm, but this should be more performant than all of those
    > other implementations except for arm which has barrel shifting and
    > sparc32 which has a carry flag.
    >
    > Signed-off-by: Charlie Jenkins <charlie@rivosinc.com>
    > Reviewed-by: David Laight <david.laight@aculab.com>
    > ---
    > include/asm-generic/checksum.h | 4 +---
    > 1 file changed, 1 insertion(+), 3 deletions(-)
    >
    > diff --git a/include/asm-generic/checksum.h b/include/asm-generic/checksum.h
    > index 43e18db89c14..37f5ec70ac93 100644
    > --- a/include/asm-generic/checksum.h
    > +++ b/include/asm-generic/checksum.h
    > @@ -31,9 +31,7 @@ extern __sum16 ip_fast_csum(const void *iph, unsigned int ihl);
    > static inline __sum16 csum_fold(__wsum csum)
    > {
    > u32 sum = (__force u32)csum;
    > - sum = (sum & 0xffff) + (sum >> 16);
    > - sum = (sum & 0xffff) + (sum >> 16);
    > - return (__force __sum16)~sum;
    > + return (__force __sum16)((~sum - ror32(sum, 16)) >> 16);

    Breaks the build on RISC-V in a way that is repaired by later patches in
    the series, so you likely did not notice:

    ./include/asm-generic/checksum.h:34:35: error: call to undeclared function 'ror32'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    ../include/linux/bitops.h:134:21: error: static declaration of 'ror32' follows non-static declaration

    Cheers,
    Conor.
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2023-09-16 10:52    [W:3.440 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site