/** * \file src/gopt/test/helper.cpp * MegEngine is Licensed under the Apache License, Version 2.0 (the "License") * * Copyright (c) 2014-2021 Megvii Inc. All rights reserved. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ #include "./helper.h" #include "megbrain/serialization/sereg.h" #include "megbrain/opr/utility.h" using namespace mgb; namespace { MGB_DEFINE_OPR_CLASS(OprReaderForTest, opr::intl::ForwardInputToOutput) // { public: OprReaderForTest(VarNode* input, const OperatorNodeConfig& config); static SymbolVar make(SymbolVar input, const OperatorNodeConfig& config = {}); }; cg::OperatorNodeBase* opr_shallow_copy_opr_reader_for_test( const serialization::OprShallowCopyContext &ctx, const cg::OperatorNodeBase &opr_, const VarNodeArray &inputs, const OperatorNodeConfig &config) { mgb_assert(inputs.size() == 1); return OprReaderForTest::make(inputs[0], config).node()->owner_opr(); } MGB_REG_OPR_SHALLOW_COPY(OprReaderForTest, opr_shallow_copy_opr_reader_for_test); } // anonymous namespace MGB_DYN_TYPE_OBJ_FINAL_IMPL(OprReaderForTest); OprReaderForTest::OprReaderForTest(VarNode* input, const OperatorNodeConfig& config) : Super(input->owner_graph(), config, "opr_reader", {input}) { add_input({input}); add_output(None); } SymbolVar OprReaderForTest::make(SymbolVar input, const OperatorNodeConfig& config) { return input.insert_single_output_opr(input.node(), config); } SymbolVar mgb::opr_reader_for_test(SymbolVar x) { return OprReaderForTest::make(x); } // vim: syntax=cpp.doxygen foldmethod=marker foldmarker=f{{{,f}}}