// File: pooling.h
#pragma once

// Per-definition constants for this pooling (max) specialisation.
namespace pooling_def {
constexpr int Kh       = 2;
constexpr int Kw       = 2;
constexpr int Sh       = 2;
constexpr int Sw       = 2;
constexpr int pad_top  = 0;
constexpr int pad_left = 0;
} // namespace pooling_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_pooling(const float* input, float* output,
                    int N, int C, int H, int W, int H_out, int W_out);
#ifdef __cplusplus
}
#endif