| 29 | } |
| 30 | |
| 31 | SmallVector<bool> Subgraph::gen_input_mask() { |
| 32 | std::unordered_set<size_t> unused_inputs = {inputs.begin(), inputs.end()}; |
| 33 | for (auto&& expr : exprs) { |
| 34 | for (auto&& input : expr.inputs) { |
| 35 | unused_inputs.erase(input); |
| 36 | } |
| 37 | } |
| 38 | for (auto&& output : outputs) { |
| 39 | unused_inputs.erase(output); |
| 40 | } |
| 41 | unused_inputs.insert(0); |
| 42 | SmallVector<bool> mask(inputs.size(), true); |
| 43 | for (size_t i = 0; i < inputs.size(); ++i) { |
| 44 | if (unused_inputs.count(inputs[i])) { |
| 45 | mask[i] = false; |
| 46 | } |
| 47 | } |
| 48 | return mask; |
| 49 | } |
| 50 | |
| 51 | SmallVector<bool> Subgraph::gen_output_mask() { |
| 52 | std::unordered_set<size_t> invalid_outputs = {outputs.begin(), outputs.end()}; |