// Copyright (c) 2018 Graphcore Ltd. All rights reserved.
/*
 * THIS IS AN AUTOGENERATED FILE, DO NOT EDIT DIRECTLY
 *
 * To regenerate this file run the gen_operators.py script
 */
#ifndef GUARD_NEURALNET_OPSETS_GEN_HPP_
#define GUARD_NEURALNET_OPSETS_GEN_HPP_

#include <map>
#include <string>
#include <utility>

#include "popart/names.hpp"
#include "popart/operatoridentifier.hpp"
#include "popart/operators.hpp"

namespace popart {
using OpTypeMap = std::map<OpType, OperatorIdentifier>;
using OpsetMap  = std::map<std::pair<OpDomain, OpVersion>, OpTypeMap>;

// Using the getOpsets function protects us from error with the static
// initialization order. If `opsets` were some static class, we could not
// guarantee that it would be initialized before all the static
// OperatorIdentifiers it uses.
// But the return of `getOpsets` can be stored to a static
// variable, after we know the OperatorIdentifiers have been
// initialized.
OpsetMap getOpsets() {
  OpsetMap opsets;
  opsets[{"ai.onnx", 11}] = {
      {"Abs", Onnx::AiOnnx::OpSet11::Abs},
      {"Acos", Onnx::AiOnnx::OpSet11::Acos},
      {"Acosh", Onnx::AiOnnx::OpSet11::Acosh},
      {"Add", Onnx::AiOnnx::OpSet11::Add},
      {"And", Onnx::AiOnnx::OpSet11::And},
      {"ArgMax", Onnx::AiOnnx::OpSet11::ArgMax},
      {"ArgMin", Onnx::AiOnnx::OpSet11::ArgMin},
      {"Asin", Onnx::AiOnnx::OpSet11::Asin},
      {"Asinh", Onnx::AiOnnx::OpSet11::Asinh},
      {"Atan", Onnx::AiOnnx::OpSet11::Atan},
      {"Atanh", Onnx::AiOnnx::OpSet11::Atanh},
      {"AveragePool", Onnx::AiOnnx::OpSet11::AveragePool},
      {"BatchNormalization", Onnx::AiOnnx::OpSet11::BatchNormalization},
      {"BitShift", Onnx::AiOnnx::OpSet11::BitShift},
      {"Cast", Onnx::AiOnnx::OpSet11::Cast},
      {"Ceil", Onnx::AiOnnx::OpSet11::Ceil},
      {"Clip", Onnx::AiOnnx::OpSet11::Clip},
      {"Compress", Onnx::AiOnnx::OpSet11::Compress},
      {"Concat", Onnx::AiOnnx::OpSet11::Concat},
      {"ConcatFromSequence", Onnx::AiOnnx::OpSet11::ConcatFromSequence},
      {"Constant", Onnx::AiOnnx::OpSet11::Constant},
      {"ConstantOfShape", Onnx::AiOnnx::OpSet11::ConstantOfShape},
      {"Conv", Onnx::AiOnnx::OpSet11::Conv},
      {"ConvInteger", Onnx::AiOnnx::OpSet11::ConvInteger},
      {"ConvTranspose", Onnx::AiOnnx::OpSet11::ConvTranspose},
      {"Cos", Onnx::AiOnnx::OpSet11::Cos},
      {"Cosh", Onnx::AiOnnx::OpSet11::Cosh},
      {"CumSum", Onnx::AiOnnx::OpSet11::CumSum},
      {"DepthToSpace", Onnx::AiOnnx::OpSet11::DepthToSpace},
      {"DequantizeLinear", Onnx::AiOnnx::OpSet11::DequantizeLinear},
      {"Det", Onnx::AiOnnx::OpSet11::Det},
      {"Div", Onnx::AiOnnx::OpSet11::Div},
      {"Dropout", Onnx::AiOnnx::OpSet11::Dropout},
      {"DynamicQuantizeLinear", Onnx::AiOnnx::OpSet11::DynamicQuantizeLinear},
      {"Elu", Onnx::AiOnnx::OpSet11::Elu},
      {"Equal", Onnx::AiOnnx::OpSet11::Equal},
      {"Erf", Onnx::AiOnnx::OpSet11::Erf},
      {"Exp", Onnx::AiOnnx::OpSet11::Exp},
      {"Expand", Onnx::AiOnnx::OpSet11::Expand},
      {"EyeLike", Onnx::AiOnnx::OpSet11::EyeLike},
      {"Flatten", Onnx::AiOnnx::OpSet11::Flatten},
      {"Floor", Onnx::AiOnnx::OpSet11::Floor},
      {"GRU", Onnx::AiOnnx::OpSet11::GRU},
      {"Gather", Onnx::AiOnnx::OpSet11::Gather},
      {"GatherElements", Onnx::AiOnnx::OpSet11::GatherElements},
      {"GatherND", Onnx::AiOnnx::OpSet11::GatherND},
      {"Gemm", Onnx::AiOnnx::OpSet11::Gemm},
      {"GlobalAveragePool", Onnx::AiOnnx::OpSet11::GlobalAveragePool},
      {"GlobalLpPool", Onnx::AiOnnx::OpSet11::GlobalLpPool},
      {"GlobalMaxPool", Onnx::AiOnnx::OpSet11::GlobalMaxPool},
      {"Greater", Onnx::AiOnnx::OpSet11::Greater},
      {"HardSigmoid", Onnx::AiOnnx::OpSet11::HardSigmoid},
      {"Hardmax", Onnx::AiOnnx::OpSet11::Hardmax},
      {"Identity", Onnx::AiOnnx::OpSet11::Identity},
      {"If", Onnx::AiOnnx::OpSet11::If},
      {"InstanceNormalization", Onnx::AiOnnx::OpSet11::InstanceNormalization},
      {"IsInf", Onnx::AiOnnx::OpSet11::IsInf},
      {"IsNaN", Onnx::AiOnnx::OpSet11::IsNaN},
      {"LRN", Onnx::AiOnnx::OpSet11::LRN},
      {"LSTM", Onnx::AiOnnx::OpSet11::LSTM},
      {"LeakyRelu", Onnx::AiOnnx::OpSet11::LeakyRelu},
      {"Less", Onnx::AiOnnx::OpSet11::Less},
      {"Log", Onnx::AiOnnx::OpSet11::Log},
      {"LogSoftmax", Onnx::AiOnnx::OpSet11::LogSoftmax},
      {"Loop", Onnx::AiOnnx::OpSet11::Loop},
      {"LpNormalization", Onnx::AiOnnx::OpSet11::LpNormalization},
      {"LpPool", Onnx::AiOnnx::OpSet11::LpPool},
      {"MatMul", Onnx::AiOnnx::OpSet11::MatMul},
      {"MatMulInteger", Onnx::AiOnnx::OpSet11::MatMulInteger},
      {"Max", Onnx::AiOnnx::OpSet11::Max},
      {"MaxPool", Onnx::AiOnnx::OpSet11::MaxPool},
      {"MaxRoiPool", Onnx::AiOnnx::OpSet11::MaxRoiPool},
      {"MaxUnpool", Onnx::AiOnnx::OpSet11::MaxUnpool},
      {"Mean", Onnx::AiOnnx::OpSet11::Mean},
      {"MeanVarianceNormalization",
       Onnx::AiOnnx::OpSet11::MeanVarianceNormalization},
      {"Min", Onnx::AiOnnx::OpSet11::Min},
      {"Mod", Onnx::AiOnnx::OpSet11::Mod},
      {"Mul", Onnx::AiOnnx::OpSet11::Mul},
      {"Multinomial", Onnx::AiOnnx::OpSet11::Multinomial},
      {"Neg", Onnx::AiOnnx::OpSet11::Neg},
      {"NonMaxSuppression", Onnx::AiOnnx::OpSet11::NonMaxSuppression},
      {"NonZero", Onnx::AiOnnx::OpSet11::NonZero},
      {"Not", Onnx::AiOnnx::OpSet11::Not},
      {"OneHot", Onnx::AiOnnx::OpSet11::OneHot},
      {"Or", Onnx::AiOnnx::OpSet11::Or},
      {"PRelu", Onnx::AiOnnx::OpSet11::PRelu},
      {"Pad", Onnx::AiOnnx::OpSet11::Pad},
      {"Pow", Onnx::AiOnnx::OpSet11::Pow},
      {"QLinearConv", Onnx::AiOnnx::OpSet11::QLinearConv},
      {"QLinearMatMul", Onnx::AiOnnx::OpSet11::QLinearMatMul},
      {"QuantizeLinear", Onnx::AiOnnx::OpSet11::QuantizeLinear},
      {"RNN", Onnx::AiOnnx::OpSet11::RNN},
      {"RandomNormal", Onnx::AiOnnx::OpSet11::RandomNormal},
      {"RandomNormalLike", Onnx::AiOnnx::OpSet11::RandomNormalLike},
      {"RandomUniform", Onnx::AiOnnx::OpSet11::RandomUniform},
      {"RandomUniformLike", Onnx::AiOnnx::OpSet11::RandomUniformLike},
      {"Range", Onnx::AiOnnx::OpSet11::Range},
      {"Reciprocal", Onnx::AiOnnx::OpSet11::Reciprocal},
      {"ReduceL1", Onnx::AiOnnx::OpSet11::ReduceL1},
      {"ReduceL2", Onnx::AiOnnx::OpSet11::ReduceL2},
      {"ReduceLogSum", Onnx::AiOnnx::OpSet11::ReduceLogSum},
      {"ReduceLogSumExp", Onnx::AiOnnx::OpSet11::ReduceLogSumExp},
      {"ReduceMax", Onnx::AiOnnx::OpSet11::ReduceMax},
      {"ReduceMean", Onnx::AiOnnx::OpSet11::ReduceMean},
      {"ReduceMin", Onnx::AiOnnx::OpSet11::ReduceMin},
      {"ReduceProd", Onnx::AiOnnx::OpSet11::ReduceProd},
      {"ReduceSum", Onnx::AiOnnx::OpSet11::ReduceSum},
      {"ReduceSumSquare", Onnx::AiOnnx::OpSet11::ReduceSumSquare},
      {"Relu", Onnx::AiOnnx::OpSet11::Relu},
      {"Reshape", Onnx::AiOnnx::OpSet11::Reshape},
      {"Resize", Onnx::AiOnnx::OpSet11::Resize},
      {"ReverseSequence", Onnx::AiOnnx::OpSet11::ReverseSequence},
      {"RoiAlign", Onnx::AiOnnx::OpSet11::RoiAlign},
      {"Round", Onnx::AiOnnx::OpSet11::Round},
      {"Scan", Onnx::AiOnnx::OpSet11::Scan},
      {"ScatterElements", Onnx::AiOnnx::OpSet11::ScatterElements},
      {"ScatterND", Onnx::AiOnnx::OpSet11::ScatterND},
      {"Selu", Onnx::AiOnnx::OpSet11::Selu},
      {"SequenceAt", Onnx::AiOnnx::OpSet11::SequenceAt},
      {"SequenceConstruct", Onnx::AiOnnx::OpSet11::SequenceConstruct},
      {"SequenceEmpty", Onnx::AiOnnx::OpSet11::SequenceEmpty},
      {"SequenceErase", Onnx::AiOnnx::OpSet11::SequenceErase},
      {"SequenceInsert", Onnx::AiOnnx::OpSet11::SequenceInsert},
      {"SequenceLength", Onnx::AiOnnx::OpSet11::SequenceLength},
      {"Shape", Onnx::AiOnnx::OpSet11::Shape},
      {"Shrink", Onnx::AiOnnx::OpSet11::Shrink},
      {"Sigmoid", Onnx::AiOnnx::OpSet11::Sigmoid},
      {"Sign", Onnx::AiOnnx::OpSet11::Sign},
      {"Sin", Onnx::AiOnnx::OpSet11::Sin},
      {"Sinh", Onnx::AiOnnx::OpSet11::Sinh},
      {"Size", Onnx::AiOnnx::OpSet11::Size},
      {"Slice", Onnx::AiOnnx::OpSet11::Slice},
      {"Softmax", Onnx::AiOnnx::OpSet11::Softmax},
      {"Softplus", Onnx::AiOnnx::OpSet11::Softplus},
      {"Softsign", Onnx::AiOnnx::OpSet11::Softsign},
      {"SpaceToDepth", Onnx::AiOnnx::OpSet11::SpaceToDepth},
      {"Split", Onnx::AiOnnx::OpSet11::Split},
      {"SplitToSequence", Onnx::AiOnnx::OpSet11::SplitToSequence},
      {"Sqrt", Onnx::AiOnnx::OpSet11::Sqrt},
      {"Squeeze", Onnx::AiOnnx::OpSet11::Squeeze},
      {"StringNormalizer", Onnx::AiOnnx::OpSet11::StringNormalizer},
      {"Sub", Onnx::AiOnnx::OpSet11::Sub},
      {"Sum", Onnx::AiOnnx::OpSet11::Sum},
      {"Tan", Onnx::AiOnnx::OpSet11::Tan},
      {"Tanh", Onnx::AiOnnx::OpSet11::Tanh},
      {"TfIdfVectorizer", Onnx::AiOnnx::OpSet11::TfIdfVectorizer},
      {"ThresholdedRelu", Onnx::AiOnnx::OpSet11::ThresholdedRelu},
      {"Tile", Onnx::AiOnnx::OpSet11::Tile},
      {"TopK", Onnx::AiOnnx::OpSet11::TopK},
      {"Transpose", Onnx::AiOnnx::OpSet11::Transpose},
      {"Unique", Onnx::AiOnnx::OpSet11::Unique},
      {"Unsqueeze", Onnx::AiOnnx::OpSet11::Unsqueeze},
      {"Where", Onnx::AiOnnx::OpSet11::Where},
      {"Xor", Onnx::AiOnnx::OpSet11::Xor}};

  opsets[{"ai.onnx", 10}] = {
      {"Abs", Onnx::AiOnnx::OpSet10::Abs},
      {"Acos", Onnx::AiOnnx::OpSet10::Acos},
      {"Acosh", Onnx::AiOnnx::OpSet10::Acosh},
      {"Add", Onnx::AiOnnx::OpSet10::Add},
      {"And", Onnx::AiOnnx::OpSet10::And},
      {"ArgMax", Onnx::AiOnnx::OpSet10::ArgMax},
      {"ArgMin", Onnx::AiOnnx::OpSet10::ArgMin},
      {"Asin", Onnx::AiOnnx::OpSet10::Asin},
      {"Asinh", Onnx::AiOnnx::OpSet10::Asinh},
      {"Atan", Onnx::AiOnnx::OpSet10::Atan},
      {"Atanh", Onnx::AiOnnx::OpSet10::Atanh},
      {"AveragePool", Onnx::AiOnnx::OpSet10::AveragePool},
      {"BatchNormalization", Onnx::AiOnnx::OpSet10::BatchNormalization},
      {"Cast", Onnx::AiOnnx::OpSet10::Cast},
      {"Ceil", Onnx::AiOnnx::OpSet10::Ceil},
      {"Clip", Onnx::AiOnnx::OpSet10::Clip},
      {"Compress", Onnx::AiOnnx::OpSet10::Compress},
      {"Concat", Onnx::AiOnnx::OpSet10::Concat},
      {"Constant", Onnx::AiOnnx::OpSet10::Constant},
      {"ConstantOfShape", Onnx::AiOnnx::OpSet10::ConstantOfShape},
      {"Conv", Onnx::AiOnnx::OpSet10::Conv},
      {"ConvInteger", Onnx::AiOnnx::OpSet10::ConvInteger},
      {"ConvTranspose", Onnx::AiOnnx::OpSet10::ConvTranspose},
      {"Cos", Onnx::AiOnnx::OpSet10::Cos},
      {"Cosh", Onnx::AiOnnx::OpSet10::Cosh},
      {"DepthToSpace", Onnx::AiOnnx::OpSet10::DepthToSpace},
      {"DequantizeLinear", Onnx::AiOnnx::OpSet10::DequantizeLinear},
      {"Div", Onnx::AiOnnx::OpSet10::Div},
      {"Dropout", Onnx::AiOnnx::OpSet10::Dropout},
      {"Elu", Onnx::AiOnnx::OpSet10::Elu},
      {"Equal", Onnx::AiOnnx::OpSet10::Equal},
      {"Erf", Onnx::AiOnnx::OpSet10::Erf},
      {"Exp", Onnx::AiOnnx::OpSet10::Exp},
      {"Expand", Onnx::AiOnnx::OpSet10::Expand},
      {"EyeLike", Onnx::AiOnnx::OpSet10::EyeLike},
      {"Flatten", Onnx::AiOnnx::OpSet10::Flatten},
      {"Floor", Onnx::AiOnnx::OpSet10::Floor},
      {"GRU", Onnx::AiOnnx::OpSet10::GRU},
      {"Gather", Onnx::AiOnnx::OpSet10::Gather},
      {"Gemm", Onnx::AiOnnx::OpSet10::Gemm},
      {"GlobalAveragePool", Onnx::AiOnnx::OpSet10::GlobalAveragePool},
      {"GlobalLpPool", Onnx::AiOnnx::OpSet10::GlobalLpPool},
      {"GlobalMaxPool", Onnx::AiOnnx::OpSet10::GlobalMaxPool},
      {"Greater", Onnx::AiOnnx::OpSet10::Greater},
      {"HardSigmoid", Onnx::AiOnnx::OpSet10::HardSigmoid},
      {"Hardmax", Onnx::AiOnnx::OpSet10::Hardmax},
      {"Identity", Onnx::AiOnnx::OpSet10::Identity},
      {"If", Onnx::AiOnnx::OpSet10::If},
      {"InstanceNormalization", Onnx::AiOnnx::OpSet10::InstanceNormalization},
      {"IsInf", Onnx::AiOnnx::OpSet10::IsInf},
      {"IsNaN", Onnx::AiOnnx::OpSet10::IsNaN},
      {"LRN", Onnx::AiOnnx::OpSet10::LRN},
      {"LSTM", Onnx::AiOnnx::OpSet10::LSTM},
      {"LeakyRelu", Onnx::AiOnnx::OpSet10::LeakyRelu},
      {"Less", Onnx::AiOnnx::OpSet10::Less},
      {"Log", Onnx::AiOnnx::OpSet10::Log},
      {"LogSoftmax", Onnx::AiOnnx::OpSet10::LogSoftmax},
      {"Loop", Onnx::AiOnnx::OpSet10::Loop},
      {"LpNormalization", Onnx::AiOnnx::OpSet10::LpNormalization},
      {"LpPool", Onnx::AiOnnx::OpSet10::LpPool},
      {"MatMul", Onnx::AiOnnx::OpSet10::MatMul},
      {"MatMulInteger", Onnx::AiOnnx::OpSet10::MatMulInteger},
      {"Max", Onnx::AiOnnx::OpSet10::Max},
      {"MaxPool", Onnx::AiOnnx::OpSet10::MaxPool},
      {"MaxRoiPool", Onnx::AiOnnx::OpSet10::MaxRoiPool},
      {"MaxUnpool", Onnx::AiOnnx::OpSet10::MaxUnpool},
      {"Mean", Onnx::AiOnnx::OpSet10::Mean},
      {"MeanVarianceNormalization",
       Onnx::AiOnnx::OpSet10::MeanVarianceNormalization},
      {"Min", Onnx::AiOnnx::OpSet10::Min},
      {"Mod", Onnx::AiOnnx::OpSet10::Mod},
      {"Mul", Onnx::AiOnnx::OpSet10::Mul},
      {"Multinomial", Onnx::AiOnnx::OpSet10::Multinomial},
      {"Neg", Onnx::AiOnnx::OpSet10::Neg},
      {"NonMaxSuppression", Onnx::AiOnnx::OpSet10::NonMaxSuppression},
      {"NonZero", Onnx::AiOnnx::OpSet10::NonZero},
      {"Not", Onnx::AiOnnx::OpSet10::Not},
      {"OneHot", Onnx::AiOnnx::OpSet10::OneHot},
      {"Or", Onnx::AiOnnx::OpSet10::Or},
      {"PRelu", Onnx::AiOnnx::OpSet10::PRelu},
      {"Pad", Onnx::AiOnnx::OpSet10::Pad},
      {"Pow", Onnx::AiOnnx::OpSet10::Pow},
      {"QLinearConv", Onnx::AiOnnx::OpSet10::QLinearConv},
      {"QLinearMatMul", Onnx::AiOnnx::OpSet10::QLinearMatMul},
      {"QuantizeLinear", Onnx::AiOnnx::OpSet10::QuantizeLinear},
      {"RNN", Onnx::AiOnnx::OpSet10::RNN},
      {"RandomNormal", Onnx::AiOnnx::OpSet10::RandomNormal},
      {"RandomNormalLike", Onnx::AiOnnx::OpSet10::RandomNormalLike},
      {"RandomUniform", Onnx::AiOnnx::OpSet10::RandomUniform},
      {"RandomUniformLike", Onnx::AiOnnx::OpSet10::RandomUniformLike},
      {"Reciprocal", Onnx::AiOnnx::OpSet10::Reciprocal},
      {"ReduceL1", Onnx::AiOnnx::OpSet10::ReduceL1},
      {"ReduceL2", Onnx::AiOnnx::OpSet10::ReduceL2},
      {"ReduceLogSum", Onnx::AiOnnx::OpSet10::ReduceLogSum},
      {"ReduceLogSumExp", Onnx::AiOnnx::OpSet10::ReduceLogSumExp},
      {"ReduceMax", Onnx::AiOnnx::OpSet10::ReduceMax},
      {"ReduceMean", Onnx::AiOnnx::OpSet10::ReduceMean},
      {"ReduceMin", Onnx::AiOnnx::OpSet10::ReduceMin},
      {"ReduceProd", Onnx::AiOnnx::OpSet10::ReduceProd},
      {"ReduceSum", Onnx::AiOnnx::OpSet10::ReduceSum},
      {"ReduceSumSquare", Onnx::AiOnnx::OpSet10::ReduceSumSquare},
      {"Relu", Onnx::AiOnnx::OpSet10::Relu},
      {"Reshape", Onnx::AiOnnx::OpSet10::Reshape},
      {"Resize", Onnx::AiOnnx::OpSet10::Resize},
      {"ReverseSequence", Onnx::AiOnnx::OpSet10::ReverseSequence},
      {"RoiAlign", Onnx::AiOnnx::OpSet10::RoiAlign},
      {"Scan", Onnx::AiOnnx::OpSet10::Scan},
      {"Scatter", Onnx::AiOnnx::OpSet10::Scatter},
      {"Selu", Onnx::AiOnnx::OpSet10::Selu},
      {"Shape", Onnx::AiOnnx::OpSet10::Shape},
      {"Shrink", Onnx::AiOnnx::OpSet10::Shrink},
      {"Sigmoid", Onnx::AiOnnx::OpSet10::Sigmoid},
      {"Sign", Onnx::AiOnnx::OpSet10::Sign},
      {"Sin", Onnx::AiOnnx::OpSet10::Sin},
      {"Sinh", Onnx::AiOnnx::OpSet10::Sinh},
      {"Size", Onnx::AiOnnx::OpSet10::Size},
      {"Slice", Onnx::AiOnnx::OpSet10::Slice},
      {"Softmax", Onnx::AiOnnx::OpSet10::Softmax},
      {"Softplus", Onnx::AiOnnx::OpSet10::Softplus},
      {"Softsign", Onnx::AiOnnx::OpSet10::Softsign},
      {"SpaceToDepth", Onnx::AiOnnx::OpSet10::SpaceToDepth},
      {"Split", Onnx::AiOnnx::OpSet10::Split},
      {"Sqrt", Onnx::AiOnnx::OpSet10::Sqrt},
      {"Squeeze", Onnx::AiOnnx::OpSet10::Squeeze},
      {"StringNormalizer", Onnx::AiOnnx::OpSet10::StringNormalizer},
      {"Sub", Onnx::AiOnnx::OpSet10::Sub},
      {"Sum", Onnx::AiOnnx::OpSet10::Sum},
      {"Tan", Onnx::AiOnnx::OpSet10::Tan},
      {"Tanh", Onnx::AiOnnx::OpSet10::Tanh},
      {"TfIdfVectorizer", Onnx::AiOnnx::OpSet10::TfIdfVectorizer},
      {"ThresholdedRelu", Onnx::AiOnnx::OpSet10::ThresholdedRelu},
      {"Tile", Onnx::AiOnnx::OpSet10::Tile},
      {"TopK", Onnx::AiOnnx::OpSet10::TopK},
      {"Transpose", Onnx::AiOnnx::OpSet10::Transpose},
      {"Unsqueeze", Onnx::AiOnnx::OpSet10::Unsqueeze},
      {"Where", Onnx::AiOnnx::OpSet10::Where},
      {"Xor", Onnx::AiOnnx::OpSet10::Xor}};

  opsets[{"ai.onnx", 9}] = {
      {"Abs", Onnx::AiOnnx::OpSet9::Abs},
      {"Acos", Onnx::AiOnnx::OpSet9::Acos},
      {"Acosh", Onnx::AiOnnx::OpSet9::Acosh},
      {"Add", Onnx::AiOnnx::OpSet9::Add},
      {"And", Onnx::AiOnnx::OpSet9::And},
      {"ArgMax", Onnx::AiOnnx::OpSet9::ArgMax},
      {"ArgMin", Onnx::AiOnnx::OpSet9::ArgMin},
      {"Asin", Onnx::AiOnnx::OpSet9::Asin},
      {"Asinh", Onnx::AiOnnx::OpSet9::Asinh},
      {"Atan", Onnx::AiOnnx::OpSet9::Atan},
      {"Atanh", Onnx::AiOnnx::OpSet9::Atanh},
      {"AveragePool", Onnx::AiOnnx::OpSet9::AveragePool},
      {"BatchNormalization", Onnx::AiOnnx::OpSet9::BatchNormalization},
      {"Cast", Onnx::AiOnnx::OpSet9::Cast},
      {"Ceil", Onnx::AiOnnx::OpSet9::Ceil},
      {"Clip", Onnx::AiOnnx::OpSet9::Clip},
      {"Compress", Onnx::AiOnnx::OpSet9::Compress},
      {"Concat", Onnx::AiOnnx::OpSet9::Concat},
      {"Constant", Onnx::AiOnnx::OpSet9::Constant},
      {"ConstantOfShape", Onnx::AiOnnx::OpSet9::ConstantOfShape},
      {"Conv", Onnx::AiOnnx::OpSet9::Conv},
      {"ConvTranspose", Onnx::AiOnnx::OpSet9::ConvTranspose},
      {"Cos", Onnx::AiOnnx::OpSet9::Cos},
      {"Cosh", Onnx::AiOnnx::OpSet9::Cosh},
      {"DepthToSpace", Onnx::AiOnnx::OpSet9::DepthToSpace},
      {"Div", Onnx::AiOnnx::OpSet9::Div},
      {"Dropout", Onnx::AiOnnx::OpSet9::Dropout},
      {"Elu", Onnx::AiOnnx::OpSet9::Elu},
      {"Equal", Onnx::AiOnnx::OpSet9::Equal},
      {"Erf", Onnx::AiOnnx::OpSet9::Erf},
      {"Exp", Onnx::AiOnnx::OpSet9::Exp},
      {"Expand", Onnx::AiOnnx::OpSet9::Expand},
      {"EyeLike", Onnx::AiOnnx::OpSet9::EyeLike},
      {"Flatten", Onnx::AiOnnx::OpSet9::Flatten},
      {"Floor", Onnx::AiOnnx::OpSet9::Floor},
      {"GRU", Onnx::AiOnnx::OpSet9::GRU},
      {"Gather", Onnx::AiOnnx::OpSet9::Gather},
      {"Gemm", Onnx::AiOnnx::OpSet9::Gemm},
      {"GlobalAveragePool", Onnx::AiOnnx::OpSet9::GlobalAveragePool},
      {"GlobalLpPool", Onnx::AiOnnx::OpSet9::GlobalLpPool},
      {"GlobalMaxPool", Onnx::AiOnnx::OpSet9::GlobalMaxPool},
      {"Greater", Onnx::AiOnnx::OpSet9::Greater},
      {"HardSigmoid", Onnx::AiOnnx::OpSet9::HardSigmoid},
      {"Hardmax", Onnx::AiOnnx::OpSet9::Hardmax},
      {"Identity", Onnx::AiOnnx::OpSet9::Identity},
      {"If", Onnx::AiOnnx::OpSet9::If},
      {"InstanceNormalization", Onnx::AiOnnx::OpSet9::InstanceNormalization},
      {"IsNaN", Onnx::AiOnnx::OpSet9::IsNaN},
      {"LRN", Onnx::AiOnnx::OpSet9::LRN},
      {"LSTM", Onnx::AiOnnx::OpSet9::LSTM},
      {"LeakyRelu", Onnx::AiOnnx::OpSet9::LeakyRelu},
      {"Less", Onnx::AiOnnx::OpSet9::Less},
      {"Log", Onnx::AiOnnx::OpSet9::Log},
      {"LogSoftmax", Onnx::AiOnnx::OpSet9::LogSoftmax},
      {"Loop", Onnx::AiOnnx::OpSet9::Loop},
      {"LpNormalization", Onnx::AiOnnx::OpSet9::LpNormalization},
      {"LpPool", Onnx::AiOnnx::OpSet9::LpPool},
      {"MatMul", Onnx::AiOnnx::OpSet9::MatMul},
      {"Max", Onnx::AiOnnx::OpSet9::Max},
      {"MaxPool", Onnx::AiOnnx::OpSet9::MaxPool},
      {"MaxRoiPool", Onnx::AiOnnx::OpSet9::MaxRoiPool},
      {"MaxUnpool", Onnx::AiOnnx::OpSet9::MaxUnpool},
      {"Mean", Onnx::AiOnnx::OpSet9::Mean},
      {"MeanVarianceNormalization",
       Onnx::AiOnnx::OpSet9::MeanVarianceNormalization},
      {"Min", Onnx::AiOnnx::OpSet9::Min},
      {"Mul", Onnx::AiOnnx::OpSet9::Mul},
      {"Multinomial", Onnx::AiOnnx::OpSet9::Multinomial},
      {"Neg", Onnx::AiOnnx::OpSet9::Neg},
      {"NonZero", Onnx::AiOnnx::OpSet9::NonZero},
      {"Not", Onnx::AiOnnx::OpSet9::Not},
      {"OneHot", Onnx::AiOnnx::OpSet9::OneHot},
      {"Or", Onnx::AiOnnx::OpSet9::Or},
      {"PRelu", Onnx::AiOnnx::OpSet9::PRelu},
      {"Pad", Onnx::AiOnnx::OpSet9::Pad},
      {"Pow", Onnx::AiOnnx::OpSet9::Pow},
      {"RNN", Onnx::AiOnnx::OpSet9::RNN},
      {"RandomNormal", Onnx::AiOnnx::OpSet9::RandomNormal},
      {"RandomNormalLike", Onnx::AiOnnx::OpSet9::RandomNormalLike},
      {"RandomUniform", Onnx::AiOnnx::OpSet9::RandomUniform},
      {"RandomUniformLike", Onnx::AiOnnx::OpSet9::RandomUniformLike},
      {"Reciprocal", Onnx::AiOnnx::OpSet9::Reciprocal},
      {"ReduceL1", Onnx::AiOnnx::OpSet9::ReduceL1},
      {"ReduceL2", Onnx::AiOnnx::OpSet9::ReduceL2},
      {"ReduceLogSum", Onnx::AiOnnx::OpSet9::ReduceLogSum},
      {"ReduceLogSumExp", Onnx::AiOnnx::OpSet9::ReduceLogSumExp},
      {"ReduceMax", Onnx::AiOnnx::OpSet9::ReduceMax},
      {"ReduceMean", Onnx::AiOnnx::OpSet9::ReduceMean},
      {"ReduceMin", Onnx::AiOnnx::OpSet9::ReduceMin},
      {"ReduceProd", Onnx::AiOnnx::OpSet9::ReduceProd},
      {"ReduceSum", Onnx::AiOnnx::OpSet9::ReduceSum},
      {"ReduceSumSquare", Onnx::AiOnnx::OpSet9::ReduceSumSquare},
      {"Relu", Onnx::AiOnnx::OpSet9::Relu},
      {"Reshape", Onnx::AiOnnx::OpSet9::Reshape},
      {"Scan", Onnx::AiOnnx::OpSet9::Scan},
      {"Scatter", Onnx::AiOnnx::OpSet9::Scatter},
      {"Selu", Onnx::AiOnnx::OpSet9::Selu},
      {"Shape", Onnx::AiOnnx::OpSet9::Shape},
      {"Shrink", Onnx::AiOnnx::OpSet9::Shrink},
      {"Sigmoid", Onnx::AiOnnx::OpSet9::Sigmoid},
      {"Sign", Onnx::AiOnnx::OpSet9::Sign},
      {"Sin", Onnx::AiOnnx::OpSet9::Sin},
      {"Sinh", Onnx::AiOnnx::OpSet9::Sinh},
      {"Size", Onnx::AiOnnx::OpSet9::Size},
      {"Slice", Onnx::AiOnnx::OpSet9::Slice},
      {"Softmax", Onnx::AiOnnx::OpSet9::Softmax},
      {"Softplus", Onnx::AiOnnx::OpSet9::Softplus},
      {"Softsign", Onnx::AiOnnx::OpSet9::Softsign},
      {"SpaceToDepth", Onnx::AiOnnx::OpSet9::SpaceToDepth},
      {"Split", Onnx::AiOnnx::OpSet9::Split},
      {"Sqrt", Onnx::AiOnnx::OpSet9::Sqrt},
      {"Squeeze", Onnx::AiOnnx::OpSet9::Squeeze},
      {"Sub", Onnx::AiOnnx::OpSet9::Sub},
      {"Sum", Onnx::AiOnnx::OpSet9::Sum},
      {"Tan", Onnx::AiOnnx::OpSet9::Tan},
      {"Tanh", Onnx::AiOnnx::OpSet9::Tanh},
      {"TfIdfVectorizer", Onnx::AiOnnx::OpSet9::TfIdfVectorizer},
      {"Tile", Onnx::AiOnnx::OpSet9::Tile},
      {"TopK", Onnx::AiOnnx::OpSet9::TopK},
      {"Transpose", Onnx::AiOnnx::OpSet9::Transpose},
      {"Unsqueeze", Onnx::AiOnnx::OpSet9::Unsqueeze},
      {"Upsample", Onnx::AiOnnx::OpSet9::Upsample},
      {"Where", Onnx::AiOnnx::OpSet9::Where},
      {"Xor", Onnx::AiOnnx::OpSet9::Xor}};

  opsets[{"ai.onnx", 8}] = {
      {"Abs", Onnx::AiOnnx::OpSet8::Abs},
      {"Acos", Onnx::AiOnnx::OpSet8::Acos},
      {"Add", Onnx::AiOnnx::OpSet8::Add},
      {"And", Onnx::AiOnnx::OpSet8::And},
      {"ArgMax", Onnx::AiOnnx::OpSet8::ArgMax},
      {"ArgMin", Onnx::AiOnnx::OpSet8::ArgMin},
      {"Asin", Onnx::AiOnnx::OpSet8::Asin},
      {"Atan", Onnx::AiOnnx::OpSet8::Atan},
      {"AveragePool", Onnx::AiOnnx::OpSet8::AveragePool},
      {"BatchNormalization", Onnx::AiOnnx::OpSet8::BatchNormalization},
      {"Cast", Onnx::AiOnnx::OpSet8::Cast},
      {"Ceil", Onnx::AiOnnx::OpSet8::Ceil},
      {"Clip", Onnx::AiOnnx::OpSet8::Clip},
      {"Concat", Onnx::AiOnnx::OpSet8::Concat},
      {"Constant", Onnx::AiOnnx::OpSet8::Constant},
      {"Conv", Onnx::AiOnnx::OpSet8::Conv},
      {"ConvTranspose", Onnx::AiOnnx::OpSet8::ConvTranspose},
      {"Cos", Onnx::AiOnnx::OpSet8::Cos},
      {"DepthToSpace", Onnx::AiOnnx::OpSet8::DepthToSpace},
      {"Div", Onnx::AiOnnx::OpSet8::Div},
      {"Dropout", Onnx::AiOnnx::OpSet8::Dropout},
      {"Elu", Onnx::AiOnnx::OpSet8::Elu},
      {"Equal", Onnx::AiOnnx::OpSet8::Equal},
      {"Exp", Onnx::AiOnnx::OpSet8::Exp},
      {"Expand", Onnx::AiOnnx::OpSet8::Expand},
      {"Flatten", Onnx::AiOnnx::OpSet8::Flatten},
      {"Floor", Onnx::AiOnnx::OpSet8::Floor},
      {"GRU", Onnx::AiOnnx::OpSet8::GRU},
      {"Gather", Onnx::AiOnnx::OpSet8::Gather},
      {"Gemm", Onnx::AiOnnx::OpSet8::Gemm},
      {"GlobalAveragePool", Onnx::AiOnnx::OpSet8::GlobalAveragePool},
      {"GlobalLpPool", Onnx::AiOnnx::OpSet8::GlobalLpPool},
      {"GlobalMaxPool", Onnx::AiOnnx::OpSet8::GlobalMaxPool},
      {"Greater", Onnx::AiOnnx::OpSet8::Greater},
      {"HardSigmoid", Onnx::AiOnnx::OpSet8::HardSigmoid},
      {"Hardmax", Onnx::AiOnnx::OpSet8::Hardmax},
      {"Identity", Onnx::AiOnnx::OpSet8::Identity},
      {"If", Onnx::AiOnnx::OpSet8::If},
      {"InstanceNormalization", Onnx::AiOnnx::OpSet8::InstanceNormalization},
      {"LRN", Onnx::AiOnnx::OpSet8::LRN},
      {"LSTM", Onnx::AiOnnx::OpSet8::LSTM},
      {"LeakyRelu", Onnx::AiOnnx::OpSet8::LeakyRelu},
      {"Less", Onnx::AiOnnx::OpSet8::Less},
      {"Log", Onnx::AiOnnx::OpSet8::Log},
      {"LogSoftmax", Onnx::AiOnnx::OpSet8::LogSoftmax},
      {"Loop", Onnx::AiOnnx::OpSet8::Loop},
      {"LpNormalization", Onnx::AiOnnx::OpSet8::LpNormalization},
      {"LpPool", Onnx::AiOnnx::OpSet8::LpPool},
      {"MatMul", Onnx::AiOnnx::OpSet8::MatMul},
      {"Max", Onnx::AiOnnx::OpSet8::Max},
      {"MaxPool", Onnx::AiOnnx::OpSet8::MaxPool},
      {"MaxRoiPool", Onnx::AiOnnx::OpSet8::MaxRoiPool},
      {"Mean", Onnx::AiOnnx::OpSet8::Mean},
      {"Min", Onnx::AiOnnx::OpSet8::Min},
      {"Mul", Onnx::AiOnnx::OpSet8::Mul},
      {"Multinomial", Onnx::AiOnnx::OpSet8::Multinomial},
      {"Neg", Onnx::AiOnnx::OpSet8::Neg},
      {"Not", Onnx::AiOnnx::OpSet8::Not},
      {"Or", Onnx::AiOnnx::OpSet8::Or},
      {"PRelu", Onnx::AiOnnx::OpSet8::PRelu},
      {"Pad", Onnx::AiOnnx::OpSet8::Pad},
      {"Pow", Onnx::AiOnnx::OpSet8::Pow},
      {"RNN", Onnx::AiOnnx::OpSet8::RNN},
      {"RandomNormal", Onnx::AiOnnx::OpSet8::RandomNormal},
      {"RandomNormalLike", Onnx::AiOnnx::OpSet8::RandomNormalLike},
      {"RandomUniform", Onnx::AiOnnx::OpSet8::RandomUniform},
      {"RandomUniformLike", Onnx::AiOnnx::OpSet8::RandomUniformLike},
      {"Reciprocal", Onnx::AiOnnx::OpSet8::Reciprocal},
      {"ReduceL1", Onnx::AiOnnx::OpSet8::ReduceL1},
      {"ReduceL2", Onnx::AiOnnx::OpSet8::ReduceL2},
      {"ReduceLogSum", Onnx::AiOnnx::OpSet8::ReduceLogSum},
      {"ReduceLogSumExp", Onnx::AiOnnx::OpSet8::ReduceLogSumExp},
      {"ReduceMax", Onnx::AiOnnx::OpSet8::ReduceMax},
      {"ReduceMean", Onnx::AiOnnx::OpSet8::ReduceMean},
      {"ReduceMin", Onnx::AiOnnx::OpSet8::ReduceMin},
      {"ReduceProd", Onnx::AiOnnx::OpSet8::ReduceProd},
      {"ReduceSum", Onnx::AiOnnx::OpSet8::ReduceSum},
      {"ReduceSumSquare", Onnx::AiOnnx::OpSet8::ReduceSumSquare},
      {"Relu", Onnx::AiOnnx::OpSet8::Relu},
      {"Reshape", Onnx::AiOnnx::OpSet8::Reshape},
      {"Scan", Onnx::AiOnnx::OpSet8::Scan},
      {"Selu", Onnx::AiOnnx::OpSet8::Selu},
      {"Shape", Onnx::AiOnnx::OpSet8::Shape},
      {"Sigmoid", Onnx::AiOnnx::OpSet8::Sigmoid},
      {"Sin", Onnx::AiOnnx::OpSet8::Sin},
      {"Size", Onnx::AiOnnx::OpSet8::Size},
      {"Slice", Onnx::AiOnnx::OpSet8::Slice},
      {"Softmax", Onnx::AiOnnx::OpSet8::Softmax},
      {"Softplus", Onnx::AiOnnx::OpSet8::Softplus},
      {"Softsign", Onnx::AiOnnx::OpSet8::Softsign},
      {"SpaceToDepth", Onnx::AiOnnx::OpSet8::SpaceToDepth},
      {"Split", Onnx::AiOnnx::OpSet8::Split},
      {"Sqrt", Onnx::AiOnnx::OpSet8::Sqrt},
      {"Squeeze", Onnx::AiOnnx::OpSet8::Squeeze},
      {"Sub", Onnx::AiOnnx::OpSet8::Sub},
      {"Sum", Onnx::AiOnnx::OpSet8::Sum},
      {"Tan", Onnx::AiOnnx::OpSet8::Tan},
      {"Tanh", Onnx::AiOnnx::OpSet8::Tanh},
      {"Tile", Onnx::AiOnnx::OpSet8::Tile},
      {"TopK", Onnx::AiOnnx::OpSet8::TopK},
      {"Transpose", Onnx::AiOnnx::OpSet8::Transpose},
      {"Unsqueeze", Onnx::AiOnnx::OpSet8::Unsqueeze},
      {"Upsample", Onnx::AiOnnx::OpSet8::Upsample},
      {"Xor", Onnx::AiOnnx::OpSet8::Xor}};

  opsets[{"ai.onnx", 7}] = {
      {"Abs", Onnx::AiOnnx::OpSet7::Abs},
      {"Acos", Onnx::AiOnnx::OpSet7::Acos},
      {"Add", Onnx::AiOnnx::OpSet7::Add},
      {"And", Onnx::AiOnnx::OpSet7::And},
      {"ArgMax", Onnx::AiOnnx::OpSet7::ArgMax},
      {"ArgMin", Onnx::AiOnnx::OpSet7::ArgMin},
      {"Asin", Onnx::AiOnnx::OpSet7::Asin},
      {"Atan", Onnx::AiOnnx::OpSet7::Atan},
      {"AveragePool", Onnx::AiOnnx::OpSet7::AveragePool},
      {"BatchNormalization", Onnx::AiOnnx::OpSet7::BatchNormalization},
      {"Cast", Onnx::AiOnnx::OpSet7::Cast},
      {"Ceil", Onnx::AiOnnx::OpSet7::Ceil},
      {"Clip", Onnx::AiOnnx::OpSet7::Clip},
      {"Concat", Onnx::AiOnnx::OpSet7::Concat},
      {"Constant", Onnx::AiOnnx::OpSet7::Constant},
      {"Conv", Onnx::AiOnnx::OpSet7::Conv},
      {"ConvTranspose", Onnx::AiOnnx::OpSet7::ConvTranspose},
      {"Cos", Onnx::AiOnnx::OpSet7::Cos},
      {"DepthToSpace", Onnx::AiOnnx::OpSet7::DepthToSpace},
      {"Div", Onnx::AiOnnx::OpSet7::Div},
      {"Dropout", Onnx::AiOnnx::OpSet7::Dropout},
      {"Elu", Onnx::AiOnnx::OpSet7::Elu},
      {"Equal", Onnx::AiOnnx::OpSet7::Equal},
      {"Exp", Onnx::AiOnnx::OpSet7::Exp},
      {"Flatten", Onnx::AiOnnx::OpSet7::Flatten},
      {"Floor", Onnx::AiOnnx::OpSet7::Floor},
      {"GRU", Onnx::AiOnnx::OpSet7::GRU},
      {"Gather", Onnx::AiOnnx::OpSet7::Gather},
      {"Gemm", Onnx::AiOnnx::OpSet7::Gemm},
      {"GlobalAveragePool", Onnx::AiOnnx::OpSet7::GlobalAveragePool},
      {"GlobalLpPool", Onnx::AiOnnx::OpSet7::GlobalLpPool},
      {"GlobalMaxPool", Onnx::AiOnnx::OpSet7::GlobalMaxPool},
      {"Greater", Onnx::AiOnnx::OpSet7::Greater},
      {"HardSigmoid", Onnx::AiOnnx::OpSet7::HardSigmoid},
      {"Hardmax", Onnx::AiOnnx::OpSet7::Hardmax},
      {"Identity", Onnx::AiOnnx::OpSet7::Identity},
      {"If", Onnx::AiOnnx::OpSet7::If},
      {"InstanceNormalization", Onnx::AiOnnx::OpSet7::InstanceNormalization},
      {"LRN", Onnx::AiOnnx::OpSet7::LRN},
      {"LSTM", Onnx::AiOnnx::OpSet7::LSTM},
      {"LeakyRelu", Onnx::AiOnnx::OpSet7::LeakyRelu},
      {"Less", Onnx::AiOnnx::OpSet7::Less},
      {"Log", Onnx::AiOnnx::OpSet7::Log},
      {"LogSoftmax", Onnx::AiOnnx::OpSet7::LogSoftmax},
      {"Loop", Onnx::AiOnnx::OpSet7::Loop},
      {"LpNormalization", Onnx::AiOnnx::OpSet7::LpNormalization},
      {"LpPool", Onnx::AiOnnx::OpSet7::LpPool},
      {"MatMul", Onnx::AiOnnx::OpSet7::MatMul},
      {"Max", Onnx::AiOnnx::OpSet7::Max},
      {"MaxPool", Onnx::AiOnnx::OpSet7::MaxPool},
      {"MaxRoiPool", Onnx::AiOnnx::OpSet7::MaxRoiPool},
      {"Mean", Onnx::AiOnnx::OpSet7::Mean},
      {"Min", Onnx::AiOnnx::OpSet7::Min},
      {"Mul", Onnx::AiOnnx::OpSet7::Mul},
      {"Multinomial", Onnx::AiOnnx::OpSet7::Multinomial},
      {"Neg", Onnx::AiOnnx::OpSet7::Neg},
      {"Not", Onnx::AiOnnx::OpSet7::Not},
      {"Or", Onnx::AiOnnx::OpSet7::Or},
      {"PRelu", Onnx::AiOnnx::OpSet7::PRelu},
      {"Pad", Onnx::AiOnnx::OpSet7::Pad},
      {"Pow", Onnx::AiOnnx::OpSet7::Pow},
      {"RNN", Onnx::AiOnnx::OpSet7::RNN},
      {"RandomNormal", Onnx::AiOnnx::OpSet7::RandomNormal},
      {"RandomNormalLike", Onnx::AiOnnx::OpSet7::RandomNormalLike},
      {"RandomUniform", Onnx::AiOnnx::OpSet7::RandomUniform},
      {"RandomUniformLike", Onnx::AiOnnx::OpSet7::RandomUniformLike},
      {"Reciprocal", Onnx::AiOnnx::OpSet7::Reciprocal},
      {"ReduceL1", Onnx::AiOnnx::OpSet7::ReduceL1},
      {"ReduceL2", Onnx::AiOnnx::OpSet7::ReduceL2},
      {"ReduceLogSum", Onnx::AiOnnx::OpSet7::ReduceLogSum},
      {"ReduceLogSumExp", Onnx::AiOnnx::OpSet7::ReduceLogSumExp},
      {"ReduceMax", Onnx::AiOnnx::OpSet7::ReduceMax},
      {"ReduceMean", Onnx::AiOnnx::OpSet7::ReduceMean},
      {"ReduceMin", Onnx::AiOnnx::OpSet7::ReduceMin},
      {"ReduceProd", Onnx::AiOnnx::OpSet7::ReduceProd},
      {"ReduceSum", Onnx::AiOnnx::OpSet7::ReduceSum},
      {"ReduceSumSquare", Onnx::AiOnnx::OpSet7::ReduceSumSquare},
      {"Relu", Onnx::AiOnnx::OpSet7::Relu},
      {"Reshape", Onnx::AiOnnx::OpSet7::Reshape},
      {"Selu", Onnx::AiOnnx::OpSet7::Selu},
      {"Shape", Onnx::AiOnnx::OpSet7::Shape},
      {"Sigmoid", Onnx::AiOnnx::OpSet7::Sigmoid},
      {"Sin", Onnx::AiOnnx::OpSet7::Sin},
      {"Size", Onnx::AiOnnx::OpSet7::Size},
      {"Slice", Onnx::AiOnnx::OpSet7::Slice},
      {"Softmax", Onnx::AiOnnx::OpSet7::Softmax},
      {"Softplus", Onnx::AiOnnx::OpSet7::Softplus},
      {"Softsign", Onnx::AiOnnx::OpSet7::Softsign},
      {"SpaceToDepth", Onnx::AiOnnx::OpSet7::SpaceToDepth},
      {"Split", Onnx::AiOnnx::OpSet7::Split},
      {"Sqrt", Onnx::AiOnnx::OpSet7::Sqrt},
      {"Squeeze", Onnx::AiOnnx::OpSet7::Squeeze},
      {"Sub", Onnx::AiOnnx::OpSet7::Sub},
      {"Sum", Onnx::AiOnnx::OpSet7::Sum},
      {"Tan", Onnx::AiOnnx::OpSet7::Tan},
      {"Tanh", Onnx::AiOnnx::OpSet7::Tanh},
      {"Tile", Onnx::AiOnnx::OpSet7::Tile},
      {"TopK", Onnx::AiOnnx::OpSet7::TopK},
      {"Transpose", Onnx::AiOnnx::OpSet7::Transpose},
      {"Unsqueeze", Onnx::AiOnnx::OpSet7::Unsqueeze},
      {"Upsample", Onnx::AiOnnx::OpSet7::Upsample},
      {"Xor", Onnx::AiOnnx::OpSet7::Xor}};

  opsets[{"ai.onnx", 6}] = {
      {"Abs", Onnx::AiOnnx::OpSet6::Abs},
      {"Add", Onnx::AiOnnx::OpSet6::Add},
      {"And", Onnx::AiOnnx::OpSet6::And},
      {"ArgMax", Onnx::AiOnnx::OpSet6::ArgMax},
      {"ArgMin", Onnx::AiOnnx::OpSet6::ArgMin},
      {"AveragePool", Onnx::AiOnnx::OpSet6::AveragePool},
      {"BatchNormalization", Onnx::AiOnnx::OpSet6::BatchNormalization},
      {"Cast", Onnx::AiOnnx::OpSet6::Cast},
      {"Ceil", Onnx::AiOnnx::OpSet6::Ceil},
      {"Clip", Onnx::AiOnnx::OpSet6::Clip},
      {"Concat", Onnx::AiOnnx::OpSet6::Concat},
      {"Constant", Onnx::AiOnnx::OpSet6::Constant},
      {"Conv", Onnx::AiOnnx::OpSet6::Conv},
      {"ConvTranspose", Onnx::AiOnnx::OpSet6::ConvTranspose},
      {"DepthToSpace", Onnx::AiOnnx::OpSet6::DepthToSpace},
      {"Div", Onnx::AiOnnx::OpSet6::Div},
      {"Dropout", Onnx::AiOnnx::OpSet6::Dropout},
      {"Elu", Onnx::AiOnnx::OpSet6::Elu},
      {"Equal", Onnx::AiOnnx::OpSet6::Equal},
      {"Exp", Onnx::AiOnnx::OpSet6::Exp},
      {"Flatten", Onnx::AiOnnx::OpSet6::Flatten},
      {"Floor", Onnx::AiOnnx::OpSet6::Floor},
      {"GRU", Onnx::AiOnnx::OpSet6::GRU},
      {"Gather", Onnx::AiOnnx::OpSet6::Gather},
      {"Gemm", Onnx::AiOnnx::OpSet6::Gemm},
      {"GlobalAveragePool", Onnx::AiOnnx::OpSet6::GlobalAveragePool},
      {"GlobalLpPool", Onnx::AiOnnx::OpSet6::GlobalLpPool},
      {"GlobalMaxPool", Onnx::AiOnnx::OpSet6::GlobalMaxPool},
      {"Greater", Onnx::AiOnnx::OpSet6::Greater},
      {"HardSigmoid", Onnx::AiOnnx::OpSet6::HardSigmoid},
      {"Hardmax", Onnx::AiOnnx::OpSet6::Hardmax},
      {"Identity", Onnx::AiOnnx::OpSet6::Identity},
      {"If", Onnx::AiOnnx::OpSet6::If},
      {"InstanceNormalization", Onnx::AiOnnx::OpSet6::InstanceNormalization},
      {"LRN", Onnx::AiOnnx::OpSet6::LRN},
      {"LSTM", Onnx::AiOnnx::OpSet6::LSTM},
      {"LeakyRelu", Onnx::AiOnnx::OpSet6::LeakyRelu},
      {"Less", Onnx::AiOnnx::OpSet6::Less},
      {"Log", Onnx::AiOnnx::OpSet6::Log},
      {"LogSoftmax", Onnx::AiOnnx::OpSet6::LogSoftmax},
      {"Loop", Onnx::AiOnnx::OpSet6::Loop},
      {"LpNormalization", Onnx::AiOnnx::OpSet6::LpNormalization},
      {"LpPool", Onnx::AiOnnx::OpSet6::LpPool},
      {"MatMul", Onnx::AiOnnx::OpSet6::MatMul},
      {"Max", Onnx::AiOnnx::OpSet6::Max},
      {"MaxPool", Onnx::AiOnnx::OpSet6::MaxPool},
      {"MaxRoiPool", Onnx::AiOnnx::OpSet6::MaxRoiPool},
      {"Mean", Onnx::AiOnnx::OpSet6::Mean},
      {"Min", Onnx::AiOnnx::OpSet6::Min},
      {"Mul", Onnx::AiOnnx::OpSet6::Mul},
      {"Neg", Onnx::AiOnnx::OpSet6::Neg},
      {"Not", Onnx::AiOnnx::OpSet6::Not},
      {"Or", Onnx::AiOnnx::OpSet6::Or},
      {"PRelu", Onnx::AiOnnx::OpSet6::PRelu},
      {"Pad", Onnx::AiOnnx::OpSet6::Pad},
      {"Pow", Onnx::AiOnnx::OpSet6::Pow},
      {"RNN", Onnx::AiOnnx::OpSet6::RNN},
      {"RandomNormal", Onnx::AiOnnx::OpSet6::RandomNormal},
      {"RandomNormalLike", Onnx::AiOnnx::OpSet6::RandomNormalLike},
      {"RandomUniform", Onnx::AiOnnx::OpSet6::RandomUniform},
      {"RandomUniformLike", Onnx::AiOnnx::OpSet6::RandomUniformLike},
      {"Reciprocal", Onnx::AiOnnx::OpSet6::Reciprocal},
      {"ReduceL1", Onnx::AiOnnx::OpSet6::ReduceL1},
      {"ReduceL2", Onnx::AiOnnx::OpSet6::ReduceL2},
      {"ReduceLogSum", Onnx::AiOnnx::OpSet6::ReduceLogSum},
      {"ReduceLogSumExp", Onnx::AiOnnx::OpSet6::ReduceLogSumExp},
      {"ReduceMax", Onnx::AiOnnx::OpSet6::ReduceMax},
      {"ReduceMean", Onnx::AiOnnx::OpSet6::ReduceMean},
      {"ReduceMin", Onnx::AiOnnx::OpSet6::ReduceMin},
      {"ReduceProd", Onnx::AiOnnx::OpSet6::ReduceProd},
      {"ReduceSum", Onnx::AiOnnx::OpSet6::ReduceSum},
      {"ReduceSumSquare", Onnx::AiOnnx::OpSet6::ReduceSumSquare},
      {"Relu", Onnx::AiOnnx::OpSet6::Relu},
      {"Reshape", Onnx::AiOnnx::OpSet6::Reshape},
      {"Selu", Onnx::AiOnnx::OpSet6::Selu},
      {"Shape", Onnx::AiOnnx::OpSet6::Shape},
      {"Sigmoid", Onnx::AiOnnx::OpSet6::Sigmoid},
      {"Size", Onnx::AiOnnx::OpSet6::Size},
      {"Slice", Onnx::AiOnnx::OpSet6::Slice},
      {"Softmax", Onnx::AiOnnx::OpSet6::Softmax},
      {"Softplus", Onnx::AiOnnx::OpSet6::Softplus},
      {"Softsign", Onnx::AiOnnx::OpSet6::Softsign},
      {"SpaceToDepth", Onnx::AiOnnx::OpSet6::SpaceToDepth},
      {"Split", Onnx::AiOnnx::OpSet6::Split},
      {"Sqrt", Onnx::AiOnnx::OpSet6::Sqrt},
      {"Squeeze", Onnx::AiOnnx::OpSet6::Squeeze},
      {"Sub", Onnx::AiOnnx::OpSet6::Sub},
      {"Sum", Onnx::AiOnnx::OpSet6::Sum},
      {"Tanh", Onnx::AiOnnx::OpSet6::Tanh},
      {"Tile", Onnx::AiOnnx::OpSet6::Tile},
      {"TopK", Onnx::AiOnnx::OpSet6::TopK},
      {"Transpose", Onnx::AiOnnx::OpSet6::Transpose},
      {"Unsqueeze", Onnx::AiOnnx::OpSet6::Unsqueeze},
      {"Upsample", Onnx::AiOnnx::OpSet6::Upsample},
      {"Xor", Onnx::AiOnnx::OpSet6::Xor}};

  return opsets;
}
} // namespace popart
#endif
