From 4204c922f87e8f2d9f5d37c717caf60cfdace478 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Sun, 22 May 2022 13:06:58 +0200 Subject: [PATCH] Optimize target selection and use profile-build * Add aarch64 to arch array * On x86_64, add detection for all supported CPU capabilities (excluding x86-64-modern which is an alias for x86-64-sse41-popcnt) * Fix performance on AMD before Zen 3 * Build with profile-guided optimization --- PKGBUILD | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/PKGBUILD b/PKGBUILD index 3c870b0..ed3a5b6 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,13 +5,14 @@ # Contributor: P. Badredin

# Contributor: Justin Blanchard # Contributor: Auguste Pop < auguste [at] gmail [dot] com > +# Contributor: niklas.fiekas at backscattering dot de pkgname=stockfish pkgver=15 -pkgrel=1 +pkgrel=2 epoch=1 pkgdesc="A strong chess engine written by Tord Romstad, Marco Costalba, Joona Kiiski" -arch=('x86_64' 'i686' 'armv7h') +arch=('x86_64' 'i686' 'armv7h' 'aarch64') url="https://stockfishchess.org/" license=('GPL3') depends=('glibc') @@ -27,15 +28,32 @@ build() { _arch=armv8 elif [[ "$CARCH" == "i686" ]]; then _arch=x86-32 + elif grep -wq avx512dq /proc/cpuinfo && grep -wq avx512vl /proc/cpuinfo && grep -wq avx512_vnni /proc/cpuinfo; then + _arch=x86-64-vnni512 + elif grep -wq avx512f /proc/cpuinfo && grep -wq avx512bw /proc/cpuinfo; then + _arch=x86-64-avx512 elif grep -wq bmi2 /proc/cpuinfo; then - _arch=x86-64-bmi2 - elif grep -w popcnt /proc/cpuinfo | grep -wqv cr8_legacy; then - _arch=x86-64-modern + if grep -wq GenuineIntel /proc/cpuinfo; then + _arch=x86-64-bmi2 + elif grep -wq AuthenticAMD /proc/cpuinfo && [[ "$(grep --max-count=1 'cpu family' /proc/cpuinfo | sed -e 's/^.*: //')" -ge 25 ]]; then + _arch=x86-64-bmi2 + else + # On AMD, bmi2 is emulated before Zen 3, so that using it is a slowdown + _arch=x86-64-avx2 + fi + elif grep -wq avx2 /proc/cpuinfo; then + _arch=x86-64-avx2 + elif grep -wq sse4_1 /proc/cpuinfo && grep -wq popcnt /proc/cpuinfo; then + _arch=x86-64-sse41-popcnt + elif grep -wq ssse3 /proc/cpuinfo; then + _arch=x86-64-ssse3 + elif grep -wq pni /proc/cpuinfo && grep -wq popcnt /proc/cpuinfo; then + _arch=x86-64-sse3-popcnt else _arch=x86-64 fi - make build ARCH="$_arch" COMP=gcc + make profile-build ARCH="$_arch" COMP=gcc } package() {