…lems
The platform's Stage-2 paper (fwht/winograd/spmm) is float32 with -march=rv32imf and self-describing inputs; the previous Q16.16 int32 kernels could never pass it.
- _emit_platform_fwht: int32 -> float32 (flw/fsw/fadd.s/fsub.s), same butterfly order as the oracle
- _emit_platform_conv: rewrite to the winograd ABI ([batch,H,W,Cin,Cout,K] header, NHWC feat, OIHW weights, NCHW out, SAME pad, no bias)
- _emit_platform_spmm: rewrite to the spmm ABI ([M,K,N,nnz] + row_ptr + col_idx int32 + values + B float32)
- emit_platform_asm: route Conv/WinogradConv to the FP32 conv kernel
- tests: extend the in-test interpreter with RV32F ops; move platform-kernel and Stage-2 references to float32/new ABI
Verified: platform_asm + kernels 16 passed; Stage-2 30 passed; submitted to the platform -> fwht 30/30, winograd 30/30, spmm 40/40.
…lems
The platform's Stage-2 paper (fwht/winograd/spmm) is float32 with -march=rv32imf and self-describing inputs; the previous Q16.16 int32 kernels could never pass it.
_emit_platform_fwht: int32 -> float32 (flw/fsw/fadd.s/fsub.s), same butterfly order as the oracle
_emit_platform_conv: rewrite to the winograd ABI ([batch,H,W,Cin,Cout,K] header, NHWC feat, OIHW weights, NCHW out, SAME pad, no bias)
_emit_platform_spmm: rewrite to the spmm ABI ([M,K,N,nnz] + row_ptr + col_idx int32 + values + B float32)
emit_platform_asm: route Conv/WinogradConv to the FP32 conv kernel
tests: extend the in-test interpreter with RV32F ops; move platform-kernel and Stage-2 references to float32/new ABI
Verified: platform_asm + kernels 16 passed; Stage-2 30 passed; submitted to the platform -> fwht 30/30, winograd 30/30, spmm 40/40.