// File: moe.cpp
// Binding harness: forwards straight to inner_moe (no derived dims needed).
// ABI: armbench_entry_moe(hidden_states*, output*, hs_scales*, router_weight*,
//   gate_proj*, gate_scales*, up_proj*, up_scales*, down_proj*, down_scales*, n_tokens)
#include "moe.h"
using namespace moe_def;

extern "C" int armbench_entry_moe(
    const int8_t* hidden_states, float* output, const uint16_t* hs_scales,
    const float* router_weight,
    const int8_t* gate_proj, const uint16_t* gate_scales,
    const int8_t* up_proj, const uint16_t* up_scales,
    const int8_t* down_proj, const uint16_t* down_scales,
    int n_tokens)
{
    inner_moe(hidden_states, output, hs_scales, router_weight,
              gate_proj, gate_scales, up_proj, up_scales,
              down_proj, down_scales, n_tokens);
    return 0;
}