XNNPACK microkernel function names follow a specific structured pattern that encodes the data type, operation, fused activations, parameters, architecture, and unroll factor. This allows developers to identify the capabilities and constraints of a microkernel directly from its symbol name.
Naming Pattern:
xnn_<datatype>_<microkernel><activation?>_ukernel_<parameters>__<arch>_u<unroll>
Component Definitions
1. <datatype>
Specifies the numerical format:
f16: 16-bit half precision floatf32: 32-bit single precision floatqc8, qs8 (quantized signed 8 bit), qu8 (quantized unsigned 8 bit)s16, u32, x8, x16, x24, x32, xx
2. <microkernel>
The type of operation being performed:
gemm: General Matrix Multiplicationigemm: Indirect General Matrix Multiplication (reads pointers to matrix A instead of A directly)avgpool: Average Pooling
3. <activation?> (Optional)
An activation function fused into the microkernel:
4. <parameters>
Microkernel-specific tiling or configuration parameters (see specific microkernel sections for details).
5. <arch>
The target architecture and instruction set:
scalar, aarch32_neon_cortex_a55, neonv8_mlal, wasm, avx512, avx512skx
6. <unroll>
The unroll factor in elements along the innermost loop of the microkernel.