| 104 | } |
| 105 | |
| 106 | VarNodeArray apply_on_var_node(const OpDef& def, const VarNodeArray& inputs) { |
| 107 | auto&& attr = def.cast_final_safe<OprAttr>(); |
| 108 | auto config = attr.config; |
| 109 | config.name(attr.make_name()); |
| 110 | mgb_assert(!inputs.empty()); |
| 111 | auto registry = serialization::OprRegistry::find_by_name(attr.type); |
| 112 | mgb_assert(registry, "operator %s not found", attr.type.c_str()); |
| 113 | OprParamsLoadContext ctx{attr.param, inputs[0]->owner_graph()}; |
| 114 | auto opr_with_accessor = registry->loader(ctx, inputs, config); |
| 115 | auto&& opr = opr_with_accessor.opr(); |
| 116 | if (get_type2policy().find(opr->dyn_typeinfo()) != get_type2policy().end()) { |
| 117 | get_type2policy().at(opr->dyn_typeinfo()).second(opr, attr.policy); |
| 118 | } |
| 119 | return opr_with_accessor.usable_output(); |
| 120 | } |
| 121 | |
| 122 | std::shared_ptr<OpDef> make_from_op_node(cg::OperatorNodeBase* opr) { |
| 123 | OprParamsDumpContext ctx; |
nothing calls this directly
no test coverage detected