| 57 | |
| 58 | template <typename T> |
| 59 | SmallVector<T*> find_oprs(SymbolVar endpoint) { |
| 60 | SmallVector<T*> res; |
| 61 | auto cb = [&res](cg::OperatorNodeBase* opr) { |
| 62 | if (opr->same_type<T>()) { |
| 63 | auto ptr = &(opr->cast_final_safe<T>()); |
| 64 | res.push_back(ptr); |
| 65 | } |
| 66 | }; |
| 67 | cg::DepOprIter{cb}.add(endpoint.node()->owner_opr()); |
| 68 | return res; |
| 69 | } |
| 70 | |
| 71 | template <typename T> |
| 72 | SmallVector<T*> find_oprs(cg::AsyncExecutable& func) { |