Lines Matching defs:gate
20 GateRef DeadCodeElimination::VisitGate(GateRef gate)
22 auto opcode = acc_.GetOpCode(gate);
26 return EliminateBranch(gate);
29 return EliminateMergeAndLoopBegin(gate);
31 return EliminateDependSelector(gate);
33 return EliminateIfException(gate);
35 return EliminateLoopExit(gate);
37 return EliminateGate(gate);
42 GateRef DeadCodeElimination::StateIsDead(GateRef gate)
44 auto state = acc_.GetState(gate);
51 GateRef DeadCodeElimination::EliminateDependSelector(GateRef gate)
53 GateRef state = StateIsDead(gate);
57 auto stateInput = acc_.GetState(gate);
58 size_t dependCount = acc_.GetDependCount(gate);
61 auto depend = acc_.GetDep(gate, i);
65 result = gate;
71 GateRef DeadCodeElimination::EliminateIfException(GateRef gate)
73 GateRef state = StateIsDead(gate);
77 GateRef depend = acc_.GetDep(gate);
84 GateRef DeadCodeElimination::EliminateLoopExit(GateRef gate)
86 GateRef state = StateIsDead(gate);
88 return DeleteLoopExit(gate);
93 GateRef DeadCodeElimination::EliminateBranch(GateRef gate)
95 GateRef state = StateIsDead(gate);
99 GateRef value = acc_.GetValueIn(gate, 0);
101 auto uses = acc_.Uses(gate);
104 ReplaceGate(*it, acc_.GetState(gate));
110 return gate;
113 void DeadCodeElimination::DecreaseAllSelectors(GateRef gate, size_t count)
115 auto uses = acc_.Uses(gate);
122 GateRef DeadCodeElimination::EliminateMergeAndLoopBegin(GateRef gate)
124 if (acc_.GetOpCode(gate) == OpCode::LOOP_BEGIN) {
125 auto loopEntry = acc_.GetIn(gate, 0);
131 size_t inputCount = acc_.GetNumIns(gate);
133 auto input = acc_.GetIn(gate, count);
135 acc_.DecreaseIn(gate, count);
136 DecreaseAllSelectors(gate, count);
144 auto uses = acc_.Uses(gate);
152 return acc_.GetIn(gate, 0);
155 auto uses = acc_.Uses(gate);
161 return gate;
166 void DeadCodeElimination::TryFindAndDeleteLoopExit(GateRef gate)
168 auto uses = acc_.Uses(gate);
171 GateRef loopExit = acc_.GetState(gate);
176 GateRef DeadCodeElimination::DeleteLoopExit(GateRef gate)
178 auto uses = acc_.Uses(gate);
186 return acc_.GetState(gate);
189 GateRef DeadCodeElimination::EliminateGate(GateRef gate)
191 if (acc_.GetStateCount(gate) == 1) {
192 return StateIsDead(gate);