Files
colibri/c
cdhdt c4b2cf6db0 idot: independent accumulators on the AVX-VNNI int8/int4 dot kernels
The __AVXVNNI__ branches of dot_i8i8/dot_i4i8 (quant.h) accumulated every vpdpbusd
into a single register, a serial dependency chain (vpdpbusd is latency-bound ~5c).
Use 4 independent accumulators, mirroring the NEON 4-accumulator path in this file.
On x86 the tiled SMMLA _mm path is ARM-only, so these two dots are THE int8/int4
IDOT matmul kernels on x86 (g_idot=1 default), prefill and decode.

Integer accumulation is associative -> bit-identical (test_idot passes bit-for-bit).
Microbench (tests/bench_idot, i7-12700H P-core, I=6144):
  dot_i8i8  6.85 -> 19.26 GB/s  (2.81x)
  dot_i4i8  3.41 ->  7.25 GB/s  (2.13x)
2026-07-19 23:09:51 +02:00
..
2026-07-15 12:42:13 +02:00