/* * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved * * 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 * * http://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. */ #ifndef __NEURUN_BACKEND_ACL_CL_SHAPE_FIXER_H__ #define __NEURUN_BACKEND_ACL_CL_SHAPE_FIXER_H__ #include #include "model/Operands.h" #include "TensorBuilder.h" namespace neurun { namespace backend { namespace acl_cl { class ShapeFixer : public IShapeFixer { public: ShapeFixer(const neurun::model::Operands &ctx, const std::shared_ptr &tensor_builder); std::shared_ptr tensor_builder() override { return _tensor_builder; } void visit(const model::operation::Conv2DNode &) override; void visit(const model::operation::DepthwiseConv2DNode &) override; void visit(const model::operation::MaxPool2DNode &) override; void visit(const model::operation::AvgPool2DNode &) override; void visit(const model::operation::ConcatNode &) override; void visit(const model::operation::FullyConnectedNode &) override; void visit(const model::operation::MulNode &) override; void visit(const model::operation::ReduceSumNode &) override; void visit(const model::operation::ReshapeNode &) override; void visit(const model::operation::SqueezeNode &) override; void visit(const model::operation::TanhNode &) override; void visit(const model::operation::SoftmaxNode &) override; void visit(const model::operation::StridedSliceNode &) override; void visit(const model::operation::TransposeNode &) override; void visit(const model::operation::AddNode &) override; void visit(const model::operation::SubNode &) override; void visit(const model::operation::CastNode &) override; void visit(const model::operation::DivNode &) override; void visit(const model::operation::ExpNode &) override; void visit(const model::operation::LogisticNode &) override; void visit(const model::operation::ReduceMaxNode &) override; void visit(const model::operation::ComparisonNode &) override; void visit(const model::operation::LogicalAndNode &) override; void visit(const model::operation::LSTMNode &) override; void visit(const model::operation::RSQRTNode &) override; void visit(const model::operation::ReLUNode &) override; void visit(const model::operation::ResizeBilinearNode &) override; void visit(const model::operation::ReLU1Node &) override; void visit(const model::operation::ReLU6Node &) override; void visit(const model::operation::RNNNode &) override; void visit(const model::operation::FloorNode &) override; void visit(const model::operation::SpaceToDepthNode &) override; void visit(const model::operation::L2Pool2DNode &) override; void visit(const model::operation::EmbeddingLookupNode &) override; void visit(const model::operation::L2NormalizationNode &) override; void visit(const model::operation::HashtableLookupNode &) override; void visit(const model::operation::PReLUNode &) override; void visit(const model::operation::TransposeConvNode &) override; void visit(const model::operation::SQRTNode &) override; void visit(const model::operation::LogicalOrNode &) override; void visit(const model::operation::LogicalNotNode &) override; void visit(const model::operation::SquaredDifferenceNode &) override; void visit(const model::operation::TopKV2Node &) override; void visit(const model::operation::GatherNode &) override; void visit(const model::operation::NegNode &) override; void visit(const model::operation::AbsNode &) override; void visit(const model::operation::ArgMaxNode &) override; void visit(const model::operation::DequantizeNode &) override; void visit(const model::operation::MeanNode &) override; void visit(const model::operation::LocalResponseNormalizationNode &) override; void visit(const model::operation::DepthToSpaceNode &) override; void visit(const model::operation::ReduceMinNode &) override; void visit(const model::operation::SplitNode &) override; void visit(const model::operation::UnpackNode &) override; void visit(const model::operation::PadNode &) override; private: const neurun::model::Operands &_ctx; std::shared_ptr _tensor_builder; }; } // namespace acl_cl } // namespace backend } // namespace neurun #endif // __NEURUN_BACKEND_ACL_CL_SHAPE_FIXER_H__