IEEE binary16
Optional width. Off unless -DVECMAT_ENABLE_FP16=ON. It does not change vm_, vm_, or abi.h. Include vecmat/ directly. vecmat.h does not include it. With the switch off the header is not installed, and vm_ is not a symbol.
vm_ is IEEE binary16 bits in a uint16_t, not _Float16. vm_ rounds ties to even. Inf stays inf. Every NaN becomes 0x7e00. The scalar path keeps subnormals.
vm_ is row-major, no transpose:
void vm_gemm_fp16f32( float *c, int ldc, const vm_fp16_t *a, int lda, const vm_fp16_t *b, int ldb, int m, int n, int k, float alpha, float beta);
c is f32. a and b are fp16. Leading dimensions are in elements of their own type. This is not vm_: that call takes a layout and transpose flags, and VM_ is 0. Accumulators are f32. A long k is not offered as fp16 dot.
vm_ installs the scalar slot and calls the generated vm_. A module overrides with vm_. vm_ returns fp16=scalar until then. That note is not vm_. VECMAT_FORCE_ISA does not select this slot.