Provide vectorized NNUE code for SSE2 and MMX targets
authorFanael Linithien <fanael4@gmail.com>
Sun, 9 Aug 2020 14:20:45 +0000 (16:20 +0200)
committerJoost VandeVondele <Joost.VandeVondele@gmail.com>
Mon, 10 Aug 2020 17:17:57 +0000 (19:17 +0200)
commit21df37d7fd4dcc9b4a9c319382cc43685c0259c8
tree0b45013ffd05da20d002033ca0a4cac29972d7bb
parentf948cd008d3a289ebbadc463271f84888e8069ba
Provide vectorized NNUE code for SSE2 and MMX targets

This patch allows old x86 CPUs, from AMD K8 (which the x86-64 baseline
targets) all the way down to the Pentium MMX, to benefit from NNUE with
comparable performance hit versus hand-written eval as on more modern
processors.

NPS of the bench with NNUE enabled on a Pentium III 1.13 GHz (using the
MMX code):
  master: 38951
  this patch: 80586

NPS of the bench with NNUE enabled using baseline x86-64 arch, which is
how linux distros are likely to package stockfish, on a modern CPU
(using the SSE2 code):
  master: 882584
  this patch: 1203945

closes https://github.com/official-stockfish/Stockfish/pull/2956

No functional change.
AUTHORS
src/Makefile
src/misc.cpp
src/nnue/layers/affine_transform.h
src/nnue/layers/clipped_relu.h
src/nnue/nnue_common.h
src/nnue/nnue_feature_transformer.h