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

#include "onnx_extensions/backend_test/cases/math/include_math_cases.h"

namespace ONNX_LIGHT_NAMESPACE::onnx_backend_test {

void CollectMathTestCases(std::vector<TestCase> &registry, const std::string &op_type,
                          TestMode mode) {
  static const OpRegisterModeMap kEntries = {
      {"Abs", &RegisterAbsCases},
      {"Acos", &RegisterAcosCases},
      {"Acosh", &RegisterAcoshCases},
      {"Asin", &RegisterAsinCases},
      {"Asinh", &RegisterAsinhCases},
      {"Atan", &RegisterAtanCases},
      {"Atanh", &RegisterAtanhCases},
      {"Add", &RegisterAddCases},
      {"Sub", &RegisterSubCases},
      {"Sum", &RegisterSumCases},
      {"Mul", &RegisterMulCases},
      {"Neg", &RegisterNegCases},
      {"Pow", &RegisterPowCases},
      {"PRelu", &RegisterPReluCases},
      {"Div", &RegisterDivCases},
      {"Mod", &RegisterModCases},
      {"Einsum", &RegisterEinsumCases},
      {"BlackmanWindow", &RegisterBlackmanWindowCases},
      {"Erf", &RegisterErfCases},
      {"HannWindow", &RegisterHannWindowCases},
      {"HammingWindow", &RegisterHammingWindowCases},
      {"HardSigmoid", &RegisterHardSigmoidCases},
      {"HardSwish", &RegisterHardSwishCases},
      {"Hardmax", &RegisterHardmaxCases},
      {"Shrink", &RegisterShrinkCases},
      {"Exp", &RegisterExpCases},
      {"Log", &RegisterLogCases},
      {"Gemm", &RegisterGemmCases},
      {"MatMul", &RegisterMatMulCases},
      {"MatMulInteger", &RegisterMatMulIntegerCases},
      {"Max", &RegisterMaxCases},
      {"Mean", &RegisterMeanCases},
      {"MelWeightMatrix", &RegisterMelWeightMatrixCases},
      {"Min", &RegisterMinCases},
      {"Cos", &RegisterCosCases},
      {"Cosh", &RegisterCoshCases},
      {"CumProd", &RegisterCumProdCases},
      {"CumSum", &RegisterCumSumCases},
      {"DFT", &RegisterDFTCases},
      {"STFT", &RegisterSTFTCases},
      {"Det", &RegisterDetCases},
      {"Sin", &RegisterSinCases},
      {"Sinh", &RegisterSinhCases},
      {"Sigmoid", &RegisterSigmoidCases},
      {"Softmax", &RegisterSoftmaxCases},
      {"LogSoftmax", &RegisterLogSoftmaxCases},
      {"SoftmaxCrossEntropyLoss", &RegisterSoftmaxCrossEntropyLossCases},
      {"NegativeLogLikelihoodLoss", &RegisterNegativeLogLikelihoodLossCases},
      {"Softplus", &RegisterSoftplusCases},
      {"Softsign", &RegisterSoftsignCases},
      {"Sqrt", &RegisterSqrtCases},
      {"Tan", &RegisterTanCases},
      {"Tanh", &RegisterTanhCases},
      {"ThresholdedRelu", &RegisterThresholdedReluCases},
      {"Relu", &RegisterReluCases},
      {"LeakyRelu", &RegisterLeakyReluCases},
      {"Elu", &RegisterEluCases},
      {"Celu", &RegisterCeluCases},
      {"Gelu", &RegisterGeluCases},
      {"Selu", &RegisterSeluCases},
      {"Swish", &RegisterSwishCases},
      {"SwiGLU", &RegisterSwiGLUCases},
      {"Mish", &RegisterMishCases},
      {"TopK", &RegisterTopKCases},
      {"Floor", &RegisterFloorCases},
      {"Ceil", &RegisterCeilCases},
      {"Clip", &RegisterClipCases},
      {"Round", &RegisterRoundCases},
      {"Reciprocal", &RegisterReciprocalCases},
      {"Sign", &RegisterSignCases},
  };
  DispatchRegisterByOpType(registry, op_type, kEntries, mode);
}

} // namespace ONNX_LIGHT_NAMESPACE::onnx_backend_test
