// Copyright (c) ONNX Project Contributors
//
// SPDX-License-Identifier: Apache-2.0

#include "onnx_extensions/backend_test/cases/nn/include_nn_cases.h"

namespace ONNX_LIGHT_NAMESPACE::onnx_backend_test {

void CollectNNTestCases(std::vector<TestCase> &registry, const std::string &op_type,
                        TestMode mode) {
  static const OpRegisterModeMap kEntries = {
      {"Attention", &RegisterAttentionCases},
      {"AveragePool", &RegisterAveragePoolCases},
      {"BatchNormalization", &RegisterBatchNormalizationCases},
      {"CausalConvWithState", &RegisterCausalConvWithStateCases},
      {"Col2Im", &RegisterCol2ImCases},
      {"Conv", &RegisterConvCases},
      {"ConvInteger", &RegisterConvIntegerCases},
      {"ConvTranspose", &RegisterConvTransposeCases},
      {"DeformConv", &RegisterDeformConvCases},
      {"Dropout", &RegisterDropoutCases},
      {"Flatten", &RegisterFlattenCases},
      {"GlobalAveragePool", &RegisterGlobalAveragePoolCases},
      {"GlobalLpPool", &RegisterGlobalLpPoolCases},
      {"GlobalMaxPool", &RegisterGlobalMaxPoolCases},
      {"GroupNormalization", &RegisterGroupNormalizationCases},
      {"GRU", &RegisterGRUCases},
      {"InstanceNormalization", &RegisterInstanceNormalizationCases},
      {"LayerNormalization", &RegisterLayerNormalizationCases},
      {"LinearAttention", &RegisterLinearAttentionCases},
      {"LRN", &RegisterLRNCases},
      {"LpNormalization", &RegisterLpNormalizationCases},
      {"LpPool", &RegisterLpPoolCases},
      {"LSTM", &RegisterLSTMCases},
      {"MaxPool", &RegisterMaxPoolCases},
      {"MaxRoiPool", &RegisterMaxRoiPoolCases},
      {"MaxUnpool", &RegisterMaxUnpoolCases},
      {"MeanVarianceNormalization", &RegisterMeanVarianceNormalizationCases},
      {"RNN", &RegisterRNNCases},
      {"RMSNormalization", &RegisterRMSNormalizationCases},
      {"RotaryEmbedding", &RegisterRotaryEmbeddingCases},
  };
  DispatchRegisterByOpType(registry, op_type, kEntries, mode);
}

} // namespace ONNX_LIGHT_NAMESPACE::onnx_backend_test
