[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAFUsyfLACUMcOZmNF3S_xAaTXTPXAMg+kJ8tV6tKk+xw0XLOtg@mail.gmail.com>
Date: Thu, 25 Nov 2021 00:49:34 -0600
From: Noah Goldstein <goldstein.w.n@...il.com>
To: Eric Dumazet <edumazet@...gle.com>
Cc: Johannes Berg <johannes@...solutions.net>, alexanderduyck@...com,
kbuild-all@...ts.01.org, open list <linux-kernel@...r.kernel.org>,
linux-um@...ts.infradead.org, lkp@...el.com, peterz@...radead.org,
X86 ML <x86@...nel.org>
Subject: Re: [tip:x86/core 1/1] arch/x86/um/../lib/csum-partial_64.c:98:12:
error: implicit declaration of function 'load_unaligned_zeropad'
On Thu, Nov 25, 2021 at 12:46 AM Eric Dumazet <edumazet@...gle.com> wrote:
>
> On Wed, Nov 24, 2021 at 10:32 PM Eric Dumazet <edumazet@...gle.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
Powered by blists - more mailing lists