f4409fd7ab
Dev refactored glm.c → colibri.c and extracted the matmul/quant kernels into quant.h (matmul, matmul_q, matmul_i4, matmul_i4_grouped, matmul_i2, quant_scratch, dot_i4i8, matmul_q_idot, matmul_i4_idot, etc. all live there now). The original #298 commit re-added all of these inline; on rebase they became duplicate definitions. Resolution: - Removed the ~700-line duplicate block (everything dev moved to quant.h) - Kept ONLY the unique fmt=4 contribution: matmul_i4_grouped_pair (the fused gate+up kernel that reads x once instead of twice, ~33% decode speedup) + the fmt=4 branch in expert_gate_up that dispatches to it. Dev's expert_gate_up only fused fmt==2; this adds the fmt==4 case. - Forward-declared matmul_i4_grouped_pair before expert_gate_up. - Fixed quant_matmul call site in the ragged attention path (backend_cuda.cu) to pass gs/ng — the kernel signature gained those args in the attention scales fix, but dev's new ragged path called it with the old signature. Build-verified: colibri.exe (CPU + COLI_CUDA) and coli_cuda.dll both compile clean on the rebased branch.