Re: [tip:x86/core 1/1] arch/x86/um/../lib/csum-partial_64.c:98:12: error: implicit declaration of function 'load_unaligned_zeropad'

From: Noah Goldstein
Date: Thu Nov 25 2021 - 01:51:51 EST


On Thu, Nov 25, 2021 at 12:46 AM Eric Dumazet <edumazet@xxxxxxxxxx> wrote:
>
> On Wed, Nov 24, 2021 at 10:32 PM Eric Dumazet <edumazet@xxxxxxxxxx> wrote:
>
> > - }
> > + if (unlikely(odd))
> > + result = ror32(result, 8);
> > return (__force __wsum)result;
>
> Oh well, gcc at least removes the conditional and generates a ror and a cmov

Seems like a missed optimization for `unlikely` where dependency breaking
is pretty common.

Although still saves a uop because of `imm8` operand.

>
> mov %edx,%eax
> ror $0x8,%eax
> test %r8,%r8
> cmove %edx,%eax
> ret
>
> clang keeps the cond jmp
> test $0x1,%dil
> je 93
> rol $0x18,%eax
> 93: ret