// File: conv2d_depthwise.h
#pragma once

// Per-definition constants for this conv2d_depthwise specialisation.
namespace conv2d_depthwise_def {
constexpr int Kh  = 3;
constexpr int Kw  = 3;
constexpr int Sh  = 2;
constexpr int Sw  = 2;
constexpr int Dh  = 1;
constexpr int Dw  = 1;
constexpr int pad = 1;
} // namespace conv2d_depthwise_def

#ifdef __cplusplus
extern "C" {
#endif
// LLM target: implement this in kernel.cpp.
// N, C, H, W are var dims; H_out/W_out are pre-computed by the binding harness.
// Input layout: (N, C, H, W), output layout: (N, C, H_out, W_out).
void inner_conv2d_depthwise(
    const float* input, float* output,
    const float* weight, const float* bias,
    int N, int C, int H, int W, int H_out, int W_out);
#ifdef __cplusplus
}
#endif