Optimize Arm Neoverse V2 kernels using the `vm8` layout
mainThe vm8 layout is an in-memory arrangement designed to eliminate ZIP instructions in Arm Neoverse V2 kernels. It changes the vector-major arrangement from 4 vectors x 4 byte-groups per 16-byte register to 2 vectors x 8 byte-groups per 16-byte register.
This layout ensures that vhi and vlo (the even and odd dimension halves) are already in the correct format for SMMLA B operands, allowing the kernel to run without reordering.
Performance Characteristics:
- MT (Multi-threaded): ~1.06x speedup.
- ST (Single-threaded): Performance parity with the standard 4-group layout (provided register pressure is managed by using smaller blocks to prevent spills).
- Implementation Note: This is an in-memory-only optimization.
turboveccontinues to store sequential, arch-neutral bytes on disk; thepack::native_transformfunction handles the conversion to thevm8layout at load time.