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

Noah Goldstein goldstein.w.n at gmail.com
Wed Nov 24 22:49:34 PST 2021


On Thu, Nov 25, 2021 at 12:46 AM Eric Dumazet <edumazet at google.com> wrote:
>
> On Wed, Nov 24, 2021 at 10:32 PM Eric Dumazet <edumazet at google.com> 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



More information about the linux-um mailing list