| 159 | } |
| 160 | |
| 161 | void SubGraph::iter(const Callback& cb, std::shared_ptr<ExtraDep> extra_dep) const { |
| 162 | Callback on_opr; |
| 163 | |
| 164 | if (m_owner_opt_state) { |
| 165 | on_opr = [state = m_owner_opt_state, &cb](OperatorNodeBase* opr) { |
| 166 | state->m_opr_property_flag = OprPropertyFlag::ALL; |
| 167 | state->m_cur_iter_src_opr = cg::get_opr_root_source_opr(opr); |
| 168 | state->m_cur_iter_opr_priority = opr->node_prop().attribute().priority; |
| 169 | state->m_cur_iter_opr_stream_prop_type = |
| 170 | state->m_comp_node_opt.stream_prop_type(opr->output(0)); |
| 171 | mgb_assert(state->m_oprs_inserted.empty()); |
| 172 | cb(opr); |
| 173 | state->m_opr_property_flag = OprPropertyFlag::NONE; |
| 174 | state->m_cur_iter_src_opr = nullptr; |
| 175 | state->m_oprs_inserted.clear(); |
| 176 | }; |
| 177 | } else { |
| 178 | on_opr = cb; |
| 179 | } |
| 180 | |
| 181 | cg::DepOprIter dep_iter{on_opr, std::move(extra_dep)}; |
| 182 | for (auto i : m_endpoint_oprs) |
| 183 | dep_iter.add(i); |
| 184 | } |
| 185 | |
| 186 | ThinHashMap<VarNode*, size_t> SubGraph::get_var2nr_val_dep_oprs() const { |
| 187 | ThinHashMap<VarNode*, size_t> ret; |
no test coverage detected