Re: [PATCH 2/5] x86_64, -march=native: POPCNT support

From: Alexey Dobriyan
Date: Mon Jul 22 2019 - 17:15:46 EST


On Mon, Jul 22, 2019 at 11:12:10PM +0200, Peter Zijlstra wrote:
> On Mon, Jul 22, 2019 at 11:27:20PM +0300, Alexey Dobriyan wrote:
> > Detect POPCNT instruction support and inline hweigth*() functions
> > if it is supported by CPU.
> >
> > Detect POPCNT at boot time and conditionally refuse to boot.
> >
> > Signed-off-by: Alexey Dobriyan <adobriyan@xxxxxxxxx>
> > ---
> > arch/x86/include/asm/arch_hweight.h | 24 +++++++++++++++++++
> > arch/x86/include/asm/segment.h | 1 +
> > arch/x86/kernel/verify_cpu.S | 8 +++++++
> > arch/x86/lib/Makefile | 5 +++-
> > .../drm/i915/display/intel_display_power.c | 2 +-
> > drivers/misc/sgi-gru/grumain.c | 2 +-
> > fs/btrfs/tree-checker.c | 4 ++--
> > include/linux/bitops.h | 2 ++
> > lib/Makefile | 2 ++
> > scripts/kconfig/cpuid.c | 7 ++++++
> > scripts/march-native.sh | 2 ++
> > 11 files changed, 54 insertions(+), 5 deletions(-)
>
> *WHY* ?
>
> AFAICT this just adds lines and complexity and wins aboslutely nothing.

If CPU is know to have POPCNT, it doesn't make sense to go through RDI.
Additionally some CPUs (still?) have fake dependency on the destination,
so "popcnt rax, rdi" is suboptimal.