Skip to content

Add NEON optimizations for SynetInnerProduct16bGemmNN - #822

Merged
ermig1979 merged 1 commit into
devfrom
cursor/neon-synet-innerproduct16b-gemmnn-7750
Aug 5, 2026
Merged

Add NEON optimizations for SynetInnerProduct16bGemmNN#822
ermig1979 merged 1 commit into
devfrom
cursor/neon-synet-innerproduct16b-gemmnn-7750

Conversation

@ermig1979

@ermig1979 ermig1979 commented Aug 5, 2026

Copy link
Copy Markdown
Owner

Summary

  • Port Base::SynetInnerProduct16bGemmNN to ARM/ARM64 NEON (SimdNeonSynetInnerProduct16b.cpp, SimdNeonSynetInnerProduct16bGemmNN.cpp), following the existing SSE4.1 (fixed 128-bit) and SVE2 GemmNN patterns.
  • Wire NEON into SimdSynetInnerProduct16bInit dispatch, Test::SynetInnerProduct16bAutoTest, VS2022 Neon project files, and release notes in docs/2026.html (7.2.165).

Implementation notes

  • Micro-kernel uses F=4, microM=5, microN=8, microK=2 (same tiling as SSE4.1).
  • BF16 packing/unpacking uses existing Neon::Float32ToBFloat16 / Bf16::MASK; A broadcasts via BroadcastBf16 (same approach as SVE2).
  • Activation post-processing uses Neon Activate<> with local Save1/Save2 helpers (Term16bLast16b / Last32f / Interim).

Validation

  • aarch64 cross-compile of libSimd.so + Test succeeded.
  • Under qemu-aarch64-static, SynetInnerProduct16b AutoTest passed for Neon vs Base (default Release case + temporarily expanded aligned/unaligned/transpose cases covering Convert/Reorder A/B paths).
  • Native x86 Release build + SynetInnerProduct16b smoke also passed (shared wiring still OK).
Open in Web Open in Cursor 

Port Base::SynetInnerProduct16bGemmNN to ARM/ARM64 NEON following the
existing SSE4.1/SVE2 GemmNN patterns. Wire Init dispatch, tests,
VS2022 Neon project files, and release notes for 7.2.165.

Co-authored-by: Ihar Yermalayeu <ermig1979@gmail.com>
@ermig1979
ermig1979 marked this pull request as ready for review August 5, 2026 11:12
@ermig1979
ermig1979 merged commit d45efa9 into dev Aug 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants