| 87 | |
| 88 | typedef std::vector<mgb::cg::OperatorNodeBase*> OperatorArray; |
| 89 | std::vector<mgb::cg::VarNode*> _replace_oprs( |
| 90 | const OperatorArray& repl_src, const OperatorArray& repl_dst, |
| 91 | const std::vector<mgb::cg::VarNode*>& vars) { |
| 92 | mgb::ThinHashMap<mgb::cg::OperatorNodeBase*, mgb::cg::OperatorNodeBase*> oprmap; |
| 93 | for (size_t i = 0; i < repl_src.size(); ++i) { |
| 94 | oprmap[repl_src[i]] = repl_dst[i]; |
| 95 | } |
| 96 | const SymbolVarArray symvars(vars.begin(), vars.end()); |
| 97 | auto sym_result = mgb::cg::replace_oprs(symvars, oprmap); |
| 98 | std::vector<mgb::cg::VarNode*> result; |
| 99 | for (auto symvar : sym_result) { |
| 100 | result.push_back(symvar.node()); |
| 101 | } |
| 102 | return result; |
| 103 | } |
| 104 | |
| 105 | void _set_priority_to_id(const std::vector<mgb::cg::VarNode*>& dest_vars) { |
| 106 | auto on_opr = [](mgb::cg::OperatorNodeBase* opr) { |