from .hooks.elementwise import *
from .hooks.pointwise import *
from .hooks.quantize import *
from .hooks.fusion import *


SUPPORTED_OPERATIONS = {
    'Conv' : Conv,
    'ConvTranspose' : ConvTranspose,
    'Unsqueeze' : Unsqueeze,
    'Squeeze' : Squeeze,
    'Resize' : Resize,
    'ScatterND' : ScatterND,
    'ScatterElements' : ScatterElements,
    'Pool' : Pool,
    'MaxPool' : MaxPool,
    'AveragePool' : AveragePool,
    'GlobalAveragePool' : GlobalAveragePool,
    'Gather' : Gather,
    'Constant' : Constant,
    'Concat' : Concat,
    'Reshape' : Reshape,
    'ArgMax' : ArgMax,
    'Expand' : Expand,
    'Tile' : Tile,
    'GRU' : GRU,
    'TopK' : TopK,
    'LSTM' : LSTM,
    'Compress' : Compress,
    'RoiAlign' : RoiAlign,
    'Gemm' : Gemm,
    'MatMul' : MatMul,
    'MatMulInteger' : MatMulInteger,
    'Shape' : Shape,
    'OneHot' : OneHot,
    'Pad' : Pad,
    'Split' : Split,
    'ReduceMean' : ReduceMean,
    'ReduceProd' : ReduceProd,
    'ReduceL2' : ReduceL2,
    'ReduceMax' : ReduceMax,
    'ReduceMin' : ReduceMin,
    'ReduceSum' : ReduceSum,
    'NonZero' : NonZero,
    'Transpose' : Transpose,
    'ConstantOfShape' : ConstantOfShape,
    'Flatten' : Flatten,
    'Einsum' : Einsum,
    'Less' : Less,
    'LessOrEqual' : LessOrEqual,
    'Not' : Not,
    'And' : And,
    'Where' : Where,
    'Greater' : Greater,
    'Equal' : Equal,
    'CategoryMapper' : CategoryMapper,
    'LRN' : LocalResponseNormalization,
    'Add' : Add,
    'Sub' : Sub,
    'Mul' : Mul,
    'Sum' : Sum,
    'Abs' : Abs,
    'Neg' : Neg,
    'Min' : Min,
    'Max' : Max,
    'Pow' : Pow,
    'Exp' : Exp,
    'Log' : Log,
    'Sin' : Sin,
    'Cos' : Cos,
    'Div' : Div,
    'Hardmax' : Hardmax,
    'Relu' : Relu,
    'PRelu' : PRelu,
    'Clip' : Clip,
    'Relu6' : Relu6,
    'CumSum' : CumSum,
    'Sigmoid' : Sigmoid,
    'Softmax' : Softmax,
    'Tanh' : Tanh,
    'Sqrt' : Sqrt,
    'InstanceNormalization' : InstanceNormalization,
    'Range' : Range,
    'Reciprocal' : Reciprocal,
    'HardSigmoid' : HardSigmoid,
    'LeakyRelu' : LeakyRelu,
    'Identity' : Identity,
    'Erf' : Erf,
    'Dropout' : Dropout,
    'BatchNormalization' : BatchNormalization,
    'Slice' : Slice,
    'Cast' : Cast,
    'Floor' : Floor,
    'Ceil' : Ceil,
    'DequantizeLinear' : DequantizeLinear,
    'QuantizeLinear' : QuantizeLinear,
    'QuantizeLinearMatMul' : QuantizeLinearMatMul,
    'QuantizeLinearConv' : QuantizeLinearConv,
}