QS8 4x16c4-aarch64-neondot-ld64 IGEMM microkernel

PiperOrigin-RevId: 362158244
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5b65062..28f075e 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -949,112 +949,112 @@
   src/qs8-gemm/gen/1x8c2-minmax-neon-mull-padal-dup.c
   src/qs8-gemm/gen/1x8c8-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/1x8c8-minmax-neon-mull-padal.c
+  src/qs8-gemm/gen/1x8c16-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/1x16-minmax-neon-mlal-lane.c
   src/qs8-gemm/gen/1x16-minmax-neon-mull-addw-dup.c
   src/qs8-gemm/gen/1x16c2-minmax-neon-mlal-padal-dup.c
   src/qs8-gemm/gen/1x16c2-minmax-neon-mull-padal-dup.c
   src/qs8-gemm/gen/1x16c8-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/1x16c8-minmax-neon-mull-padal.c
+  src/qs8-gemm/gen/1x16c16-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/2x8-minmax-neon-mlal-lane.c
   src/qs8-gemm/gen/2x8-minmax-neon-mull-addw-dup.c
   src/qs8-gemm/gen/2x8c2-minmax-neon-mlal-padal-dup.c
   src/qs8-gemm/gen/2x8c2-minmax-neon-mull-padal-dup.c
   src/qs8-gemm/gen/2x8c8-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/2x8c8-minmax-neon-mull-padal.c
+  src/qs8-gemm/gen/2x8c16-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/2x16-minmax-neon-mlal-lane.c
   src/qs8-gemm/gen/2x16-minmax-neon-mull-addw-dup.c
   src/qs8-gemm/gen/2x16c2-minmax-neon-mlal-padal-dup.c
   src/qs8-gemm/gen/2x16c2-minmax-neon-mull-padal-dup.c
   src/qs8-gemm/gen/2x16c8-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/2x16c8-minmax-neon-mull-padal.c
+  src/qs8-gemm/gen/2x16c16-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/3x8-minmax-neon-mlal-lane.c
   src/qs8-gemm/gen/3x8-minmax-neon-mull-addw-dup.c
   src/qs8-gemm/gen/3x8c2-minmax-neon-mlal-padal-dup.c
   src/qs8-gemm/gen/3x8c2-minmax-neon-mull-padal-dup.c
   src/qs8-gemm/gen/3x8c8-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/3x8c8-minmax-neon-mull-padal.c
+  src/qs8-gemm/gen/3x8c16-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/3x16-minmax-neon-mlal-lane.c
   src/qs8-gemm/gen/3x16-minmax-neon-mull-addw-dup.c
   src/qs8-gemm/gen/3x16c2-minmax-neon-mlal-padal-dup.c
   src/qs8-gemm/gen/3x16c2-minmax-neon-mull-padal-dup.c
   src/qs8-gemm/gen/3x16c8-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/3x16c8-minmax-neon-mull-padal.c
+  src/qs8-gemm/gen/3x16c16-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/4x8-minmax-neon-mlal-lane.c
   src/qs8-gemm/gen/4x8-minmax-neon-mull-addw-dup.c
   src/qs8-gemm/gen/4x8c2-minmax-neon-mlal-padal-dup.c
   src/qs8-gemm/gen/4x8c2-minmax-neon-mull-padal-dup.c
   src/qs8-gemm/gen/4x8c8-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/4x8c8-minmax-neon-mull-padal.c
+  src/qs8-gemm/gen/4x8c16-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/4x16-minmax-neon-mlal-lane.c
   src/qs8-gemm/gen/4x16-minmax-neon-mull-addw-dup.c
   src/qs8-gemm/gen/4x16c2-minmax-neon-mlal-padal-dup.c
   src/qs8-gemm/gen/4x16c2-minmax-neon-mull-padal-dup.c
   src/qs8-gemm/gen/4x16c8-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/4x16c8-minmax-neon-mull-padal.c
-  src/qs8-gemm/gen/1x8c16-minmax-neon-mlal-padal.c
-  src/qs8-gemm/gen/2x8c16-minmax-neon-mlal-padal.c
-  src/qs8-gemm/gen/3x8c16-minmax-neon-mlal-padal.c
-  src/qs8-gemm/gen/4x8c16-minmax-neon-mlal-padal.c
-  src/qs8-gemm/gen/1x16c16-minmax-neon-mlal-padal.c
-  src/qs8-gemm/gen/2x16c16-minmax-neon-mlal-padal.c
-  src/qs8-gemm/gen/3x16c16-minmax-neon-mlal-padal.c
   src/qs8-gemm/gen/4x16c16-minmax-neon-mlal-padal.c
   src/qs8-igemm/gen/1x8-minmax-neon-mlal-lane.c
-  src/qs8-igemm/gen/1x16-minmax-neon-mlal-lane.c
-  src/qs8-igemm/gen/2x8-minmax-neon-mlal-lane.c
-  src/qs8-igemm/gen/2x16-minmax-neon-mlal-lane.c
-  src/qs8-igemm/gen/3x8-minmax-neon-mlal-lane.c
-  src/qs8-igemm/gen/3x16-minmax-neon-mlal-lane.c
-  src/qs8-igemm/gen/4x8-minmax-neon-mlal-lane.c
-  src/qs8-igemm/gen/4x16-minmax-neon-mlal-lane.c
-  src/qs8-igemm/gen/1x16c8-minmax-neon-mlal-padal.c
-  src/qs8-igemm/gen/1x16c8-minmax-neon-mull-padal.c
+  src/qs8-igemm/gen/1x8-minmax-neon-mull-addw-dup.c
+  src/qs8-igemm/gen/1x8c2-minmax-neon-mlal-padal-dup.c
+  src/qs8-igemm/gen/1x8c2-minmax-neon-mull-padal-dup.c
   src/qs8-igemm/gen/1x8c8-minmax-neon-mlal-padal.c
   src/qs8-igemm/gen/1x8c8-minmax-neon-mull-padal.c
-  src/qs8-igemm/gen/2x16c8-minmax-neon-mlal-padal.c
-  src/qs8-igemm/gen/2x16c8-minmax-neon-mull-padal.c
+  src/qs8-igemm/gen/1x8c16-minmax-neon-mlal-padal.c
+  src/qs8-igemm/gen/1x16-minmax-neon-mlal-lane.c
+  src/qs8-igemm/gen/1x16-minmax-neon-mull-addw-dup.c
+  src/qs8-igemm/gen/1x16c2-minmax-neon-mlal-padal-dup.c
+  src/qs8-igemm/gen/1x16c2-minmax-neon-mull-padal-dup.c
+  src/qs8-igemm/gen/1x16c8-minmax-neon-mlal-padal.c
+  src/qs8-igemm/gen/1x16c8-minmax-neon-mull-padal.c
+  src/qs8-igemm/gen/1x16c16-minmax-neon-mlal-padal.c
+  src/qs8-igemm/gen/2x8-minmax-neon-mlal-lane.c
+  src/qs8-igemm/gen/2x8-minmax-neon-mull-addw-dup.c
+  src/qs8-igemm/gen/2x8c2-minmax-neon-mlal-padal-dup.c
+  src/qs8-igemm/gen/2x8c2-minmax-neon-mull-padal-dup.c
   src/qs8-igemm/gen/2x8c8-minmax-neon-mlal-padal.c
   src/qs8-igemm/gen/2x8c8-minmax-neon-mull-padal.c
-  src/qs8-igemm/gen/3x16c8-minmax-neon-mlal-padal.c
-  src/qs8-igemm/gen/3x16c8-minmax-neon-mull-padal.c
+  src/qs8-igemm/gen/2x8c16-minmax-neon-mlal-padal.c
+  src/qs8-igemm/gen/2x16-minmax-neon-mlal-lane.c
+  src/qs8-igemm/gen/2x16-minmax-neon-mull-addw-dup.c
+  src/qs8-igemm/gen/2x16c2-minmax-neon-mlal-padal-dup.c
+  src/qs8-igemm/gen/2x16c2-minmax-neon-mull-padal-dup.c
+  src/qs8-igemm/gen/2x16c8-minmax-neon-mlal-padal.c
+  src/qs8-igemm/gen/2x16c8-minmax-neon-mull-padal.c
+  src/qs8-igemm/gen/2x16c16-minmax-neon-mlal-padal.c
+  src/qs8-igemm/gen/3x8-minmax-neon-mlal-lane.c
+  src/qs8-igemm/gen/3x8-minmax-neon-mull-addw-dup.c
+  src/qs8-igemm/gen/3x8c2-minmax-neon-mlal-padal-dup.c
+  src/qs8-igemm/gen/3x8c2-minmax-neon-mull-padal-dup.c
   src/qs8-igemm/gen/3x8c8-minmax-neon-mlal-padal.c
   src/qs8-igemm/gen/3x8c8-minmax-neon-mull-padal.c
-  src/qs8-igemm/gen/4x16c8-minmax-neon-mlal-padal.c
-  src/qs8-igemm/gen/4x16c8-minmax-neon-mull-padal.c
+  src/qs8-igemm/gen/3x8c16-minmax-neon-mlal-padal.c
+  src/qs8-igemm/gen/3x16-minmax-neon-mlal-lane.c
+  src/qs8-igemm/gen/3x16-minmax-neon-mull-addw-dup.c
+  src/qs8-igemm/gen/3x16c2-minmax-neon-mlal-padal-dup.c
+  src/qs8-igemm/gen/3x16c2-minmax-neon-mull-padal-dup.c
+  src/qs8-igemm/gen/3x16c8-minmax-neon-mlal-padal.c
+  src/qs8-igemm/gen/3x16c8-minmax-neon-mull-padal.c
+  src/qs8-igemm/gen/3x16c16-minmax-neon-mlal-padal.c
+  src/qs8-igemm/gen/4x8-minmax-neon-mlal-lane.c
+  src/qs8-igemm/gen/4x8-minmax-neon-mull-addw-dup.c
+  src/qs8-igemm/gen/4x8c2-minmax-neon-mlal-padal-dup.c
+  src/qs8-igemm/gen/4x8c2-minmax-neon-mull-padal-dup.c
   src/qs8-igemm/gen/4x8c8-minmax-neon-mlal-padal.c
   src/qs8-igemm/gen/4x8c8-minmax-neon-mull-padal.c
-  src/qs8-igemm/gen/1x16c16-minmax-neon-mlal-padal.c
-  src/qs8-igemm/gen/1x8c16-minmax-neon-mlal-padal.c
-  src/qs8-igemm/gen/2x16c16-minmax-neon-mlal-padal.c
-  src/qs8-igemm/gen/2x8c16-minmax-neon-mlal-padal.c
-  src/qs8-igemm/gen/3x16c16-minmax-neon-mlal-padal.c
-  src/qs8-igemm/gen/3x8c16-minmax-neon-mlal-padal.c
-  src/qs8-igemm/gen/4x16c16-minmax-neon-mlal-padal.c
   src/qs8-igemm/gen/4x8c16-minmax-neon-mlal-padal.c
-  src/qs8-igemm/gen/1x16c2-minmax-neon-mlal-padal-dup.c
-  src/qs8-igemm/gen/1x8c2-minmax-neon-mlal-padal-dup.c
-  src/qs8-igemm/gen/2x16c2-minmax-neon-mlal-padal-dup.c
-  src/qs8-igemm/gen/2x8c2-minmax-neon-mlal-padal-dup.c
-  src/qs8-igemm/gen/3x16c2-minmax-neon-mlal-padal-dup.c
-  src/qs8-igemm/gen/3x8c2-minmax-neon-mlal-padal-dup.c
-  src/qs8-igemm/gen/4x16c2-minmax-neon-mlal-padal-dup.c
-  src/qs8-igemm/gen/4x8c2-minmax-neon-mlal-padal-dup.c
-  src/qs8-igemm/gen/1x16c2-minmax-neon-mull-padal-dup.c
-  src/qs8-igemm/gen/1x8c2-minmax-neon-mull-padal-dup.c
-  src/qs8-igemm/gen/2x16c2-minmax-neon-mull-padal-dup.c
-  src/qs8-igemm/gen/2x8c2-minmax-neon-mull-padal-dup.c
-  src/qs8-igemm/gen/3x16c2-minmax-neon-mull-padal-dup.c
-  src/qs8-igemm/gen/3x8c2-minmax-neon-mull-padal-dup.c
-  src/qs8-igemm/gen/4x16c2-minmax-neon-mull-padal-dup.c
-  src/qs8-igemm/gen/4x8c2-minmax-neon-mull-padal-dup.c
-  src/qs8-igemm/gen/1x16-minmax-neon-mull-addw-dup.c
-  src/qs8-igemm/gen/1x8-minmax-neon-mull-addw-dup.c
-  src/qs8-igemm/gen/2x16-minmax-neon-mull-addw-dup.c
-  src/qs8-igemm/gen/2x8-minmax-neon-mull-addw-dup.c
-  src/qs8-igemm/gen/3x16-minmax-neon-mull-addw-dup.c
-  src/qs8-igemm/gen/3x8-minmax-neon-mull-addw-dup.c
+  src/qs8-igemm/gen/4x16-minmax-neon-mlal-lane.c
   src/qs8-igemm/gen/4x16-minmax-neon-mull-addw-dup.c
-  src/qs8-igemm/gen/4x8-minmax-neon-mull-addw-dup.c
+  src/qs8-igemm/gen/4x16c2-minmax-neon-mlal-padal-dup.c
+  src/qs8-igemm/gen/4x16c2-minmax-neon-mull-padal-dup.c
+  src/qs8-igemm/gen/4x16c8-minmax-neon-mlal-padal.c
+  src/qs8-igemm/gen/4x16c8-minmax-neon-mull-padal.c
+  src/qs8-igemm/gen/4x16c16-minmax-neon-mlal-padal.c
   src/qs8-requantization/fp32-neon.c
   src/qs8-requantization/precise-neon.c
   src/qs8-requantization/q31-neon.c
@@ -2790,11 +2790,12 @@
   src/f32-igemm/gen/6x8-minmax-aarch64-neonfma-cortex-a75.S
   src/qs8-gemm/1x16c4-aarch64-neondot-ld32.S
   src/qs8-gemm/1x16c4-aarch64-neondot-ld64.S
-  src/qs8-gemm/4x16c4-aarch64-neondot-cortex-a55.S
   src/qs8-gemm/2x8c16-aarch64-neon-mlal-padal.S
+  src/qs8-gemm/4x16c4-aarch64-neondot-cortex-a55.S
   src/qs8-gemm/4x16c4-aarch64-neondot-ld32.S
   src/qs8-gemm/4x16c4-aarch64-neondot-ld64.S
-  src/qs8-igemm/4x16c4-aarch64-neondot-cortex-a55.S)
+  src/qs8-igemm/4x16c4-aarch64-neondot-cortex-a55.S
+  src/qs8-igemm/4x16c4-aarch64-neondot-ld64.S)
 
 SET(XNNPACK_MICROKERNEL_SRCS ${XNNPACK_SCALAR_MICROKERNEL_SRCS})
 IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv[5-8]" OR IOS_ARCH MATCHES "^armv7")