]> git.sesse.net Git - stockfish/commitdiff
Fix asm modifiers in add_dpbusd_epi32x2 implementations
authorSebastian Buchwald <UniQP@web.de>
Sat, 14 Jan 2023 15:09:31 +0000 (16:09 +0100)
committerJoost VandeVondele <Joost.VandeVondele@gmail.com>
Sun, 22 Jan 2023 09:51:02 +0000 (10:51 +0100)
The accumulator should be an earlyclobber because it is written before
all input operands are read. Otherwise, the asm code computes a wrong
result if the accumulator shares a register with one of the other input
operands (which happens if we pass in the same expression for the
accumulator and the operand).

Closes https://github.com/official-stockfish/Stockfish/pull/4339

No functional change

src/nnue/layers/simd.h

index aeab39c4fc393cd86cd211304ad5f5242ebeaf37..231f78912168a5c210c96d097ba7c7176d1a55db 100644 (file)
@@ -153,7 +153,7 @@ namespace Stockfish::Simd {
       asm(
         "vpdpbusd %[b0], %[a0], %[acc]\n\t"
         "vpdpbusd %[b1], %[a1], %[acc]\n\t"
-        : [acc]"+v"(acc)
+        : [acc]"+&v"(acc)
         : [a0]"v"(a0), [b0]"vm"(b0), [a1]"v"(a1), [b1]"vm"(b1)
       );
 #   else
@@ -249,7 +249,7 @@ namespace Stockfish::Simd {
       asm(
         VNNI_PREFIX "vpdpbusd %[b0], %[a0], %[acc]\n\t"
         VNNI_PREFIX "vpdpbusd %[b1], %[a1], %[acc]\n\t"
-        : [acc]"+v"(acc)
+        : [acc]"+&v"(acc)
         : [a0]"v"(a0), [b0]"vm"(b0), [a1]"v"(a1), [b1]"vm"(b1)
       );
 #   else