// File: gemm_contract.h
#pragma once
#include "mat.h"
#include "option.h"

// Harness contract for gemm baseline (C = A @ B^T).
// Called by armbench_entry_gemm (binding.cpp); implemented by kernel.cpp.
// A is a genuine 2D Mat (w=K, h=M); B is flat 1D (N*K, ncnn InnerProduct
// weight_data layout); top is pre-allocated 2D (w=N, h=M) by binding.cpp.
namespace ncnn {
int gemm_kernel(
    const Mat& bottom_blob, Mat& top_blob,
    const Mat& weight_data,
    const Option& opt);
}