//
// SPDX-FileCopyrightText: Copyright 2023-2025 Arm Limited and/or its affiliates <open-source-office@arm.com>
//
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0 (the License); you may
// not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an AS IS BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

#include "compiler/op_type.hpp"

BEGIN_ENUM_TABLE(regor::OpType)
    ADD_ENUM_NAME(None)
    // TOSA equivalent ops
    ADD_ENUM_NAME(ArgMax)
    ADD_ENUM_NAME(AvgPool)
    ADD_ENUM_NAME(Conv2D)
    ADD_ENUM_NAME(Conv3D)
    ADD_ENUM_NAME(DepthwiseConv2D)
    ADD_ENUM_NAME(FullyConnected)
    ADD_ENUM_NAME(MatMul)
    ADD_ENUM_NAME(MaxPool)
    ADD_ENUM_NAME(TransposeConv2D)
    ADD_ENUM_NAME(Clamp)
    ADD_ENUM_NAME(Sigmoid)
    ADD_ENUM_NAME(Tanh)
    ADD_ENUM_NAME(Add)
    ADD_ENUM_NAME(Asr)
    ADD_ENUM_NAME(And)
    ADD_ENUM_NAME(Or)
    ADD_ENUM_NAME(Xor)
    ADD_ENUM_NAME(Div)
    ADD_ENUM_NAME(LogicalAnd)
    ADD_ENUM_NAME(SHL)
    ADD_ENUM_NAME(SHR)
    ADD_ENUM_NAME(LogicalOr)
    ADD_ENUM_NAME(LogicalXor)
    ADD_ENUM_NAME(Maximum)
    ADD_ENUM_NAME(Minimum)
    ADD_ENUM_NAME(Mul)
    ADD_ENUM_NAME(Pow)
    ADD_ENUM_NAME(Sub)
    ADD_ENUM_NAME(Table)
    ADD_ENUM_NAME(Abs)
    ADD_ENUM_NAME(Not)
    ADD_ENUM_NAME(Ceil)
    ADD_ENUM_NAME(CLZ)
    ADD_ENUM_NAME(Exp)
    ADD_ENUM_NAME(Floor)
    ADD_ENUM_NAME(LogicalNot)
    ADD_ENUM_NAME(Neg)
    ADD_ENUM_NAME(Reciprocal)
    ADD_ENUM_NAME(Rsqrt)
    ADD_ENUM_NAME(Select)
    ADD_ENUM_NAME(Equal)
    ADD_ENUM_NAME(Greater)
    ADD_ENUM_NAME(GreaterEqual)
    ADD_ENUM_NAME(ReduceAny)
    ADD_ENUM_NAME(ReduceAll)
    ADD_ENUM_NAME(ReduceMax)
    ADD_ENUM_NAME(ReduceMin)
    ADD_ENUM_NAME(ReduceProduct)
    ADD_ENUM_NAME(ReduceSum)
    ADD_ENUM_NAME(Concat)
    ADD_ENUM_NAME(Pad)
    ADD_ENUM_NAME(Reshape)
    ADD_ENUM_NAME(Reverse)
    ADD_ENUM_NAME(Slice)
    ADD_ENUM_NAME(Tile)
    ADD_ENUM_NAME(Transpose)
    ADD_ENUM_NAME(Gather)
    ADD_ENUM_NAME(Scatter)
    ADD_ENUM_NAME(Resize)
    ADD_ENUM_NAME(Cast)
    ADD_ENUM_NAME(Rescale)
    ADD_ENUM_NAME(Identity)
    ADD_ENUM_NAME(If)
    ADD_ENUM_NAME(While)
    // Regor Internal Operators
    ADD_ENUM_NAME(MemoryCopy)
    ADD_ENUM_NAME(ReinterpretCast)
    ADD_ENUM_NAME(Passthrough)
    ADD_ENUM_NAME(LUT)
    ADD_ENUM_NAME(AndNot)
    // Compatibility Operators
    ADD_ENUM_NAME(AddN)
    ADD_ENUM_NAME(ArgMin)
    ADD_ENUM_NAME(BatchMatMul)
    ADD_ENUM_NAME(BatchToSpaceND)
    ADD_ENUM_NAME(BidirectionalSequenceLstm)
    ADD_ENUM_NAME(BidirectionalSequenceRnn)
    ADD_ENUM_NAME(BlockLSTM)
    ADD_ENUM_NAME(Call)
    ADD_ENUM_NAME(ConcatEmbeddings)
    ADD_ENUM_NAME(Const)
    ADD_ENUM_NAME(Cos)
    ADD_ENUM_NAME(Cumsum)
    ADD_ENUM_NAME(Custom)
    ADD_ENUM_NAME(CustomNpuOp)
    ADD_ENUM_NAME(Delegate)
    ADD_ENUM_NAME(Densify)
    ADD_ENUM_NAME(DepthToSpace)
    ADD_ENUM_NAME(Dequantize)
    ADD_ENUM_NAME(Elu)
    ADD_ENUM_NAME(EmbeddingLookup)
    ADD_ENUM_NAME(EmbeddingLookupSparse)
    ADD_ENUM_NAME(ExpandDims)
    ADD_ENUM_NAME(FakeQuantWithMinMaxArgs)
    ADD_ENUM_NAME(Fill)
    ADD_ENUM_NAME(FloorDiv)
    ADD_ENUM_NAME(FloorMod)
    ADD_ENUM_NAME(GatherNd)
    ADD_ENUM_NAME(GatherV2)
    ADD_ENUM_NAME(HardSwish)
    ADD_ENUM_NAME(HashtableLookup)
    ADD_ENUM_NAME(L2Norm)
    ADD_ENUM_NAME(L2Pool2D)
    ADD_ENUM_NAME(LRN)
    ADD_ENUM_NAME(LSHProjection)
    ADD_ENUM_NAME(LeakyRelu)
    ADD_ENUM_NAME(Less)
    ADD_ENUM_NAME(LessEqual)
    ADD_ENUM_NAME(Log)
    ADD_ENUM_NAME(LogSoftmax)
    ADD_ENUM_NAME(Lstm)
    ADD_ENUM_NAME(MatrixDiag)
    ADD_ENUM_NAME(MatrixSetDiag)
    ADD_ENUM_NAME(Mean)
    ADD_ENUM_NAME(MirrorPad)
    ADD_ENUM_NAME(NonMaxSuppressionV4)
    ADD_ENUM_NAME(NonMaxSuppressionV5)
    ADD_ENUM_NAME(NotEqual)
    ADD_ENUM_NAME(OneHot)
    ADD_ENUM_NAME(Pack)
    ADD_ENUM_NAME(PadV2)
    ADD_ENUM_NAME(Placeholder)
    ADD_ENUM_NAME(Prelu)
    ADD_ENUM_NAME(Quantize)
    ADD_ENUM_NAME(QuantizedAvgPool)
    ADD_ENUM_NAME(QuantizedConv2D)
    ADD_ENUM_NAME(QuantizedMatMul)
    ADD_ENUM_NAME(QuantizedMaxPool)
    ADD_ENUM_NAME(QuantizedReshape)
    ADD_ENUM_NAME(Range)
    ADD_ENUM_NAME(Rank)
    ADD_ENUM_NAME(Relu)
    ADD_ENUM_NAME(Relu0To1)
    ADD_ENUM_NAME(Relu6)
    ADD_ENUM_NAME(ReluN1To1)
    ADD_ENUM_NAME(ReluN)
    ADD_ENUM_NAME(ResizeBilinear)
    ADD_ENUM_NAME(ResizeNearestNeighbor)
    ADD_ENUM_NAME(ReverseSequence)
    ADD_ENUM_NAME(ReverseV2)
    ADD_ENUM_NAME(Rnn)
    ADD_ENUM_NAME(Round)
    ADD_ENUM_NAME(ScatterNd)
    ADD_ENUM_NAME(SegmentSum)
    ADD_ENUM_NAME(SelectV2)
    ADD_ENUM_NAME(Shape)
    ADD_ENUM_NAME(SignBit)
    ADD_ENUM_NAME(Sin)
    ADD_ENUM_NAME(SkipGram)
    ADD_ENUM_NAME(Softmax)
    ADD_ENUM_NAME(SpaceToBatchND)
    ADD_ENUM_NAME(SpaceToDepth)
    ADD_ENUM_NAME(SparseToDense)
    ADD_ENUM_NAME(Split)
    ADD_ENUM_NAME(SplitV)
    ADD_ENUM_NAME(Sqrt)
    ADD_ENUM_NAME(Square)
    ADD_ENUM_NAME(SquaredDifference)
    ADD_ENUM_NAME(Squeeze)
    ADD_ENUM_NAME(StridedSlice)
    ADD_ENUM_NAME(SubgraphInput)
    ADD_ENUM_NAME(Svdf)
    ADD_ENUM_NAME(TopKV2)
    ADD_ENUM_NAME(UnidirectionalSequenceLstm)
    ADD_ENUM_NAME(UnidirectionalSequenceRnn)
    ADD_ENUM_NAME(Unique)
    ADD_ENUM_NAME(Unpack)
    ADD_ENUM_NAME(Where)
    ADD_ENUM_NAME(ZerosLike)
    ADD_ENUM_NAME(LookupTable)
END_ENUM_TABLE()
