Lines Matching defs:gate
26 GateRef LaterElimination::VisitDependEntry(GateRef gate)
29 return UpdateDependChain(gate, empty);
32 GateRef LaterElimination::VisitGate(GateRef gate)
34 auto opcode = acc_.GetOpCode(gate);
58 return TryEliminateGate(gate);
60 return TryEliminateDependSelector(gate);
62 if (acc_.GetDependCount(gate) == 1) { // 1: depend in is 1
63 return TryEliminateOther(gate);
69 GateRef LaterElimination::TryEliminateOther(GateRef gate)
71 ASSERT(acc_.GetDependCount(gate) >= 1);
72 auto depIn = acc_.GetDep(gate);
77 return UpdateDependChain(gate, dependChain);
80 GateRef LaterElimination::TryEliminateGate(GateRef gate)
82 ASSERT(acc_.GetDependCount(gate) == 1);
83 auto depIn = acc_.GetDep(gate);
89 // lookup gate, replace
90 auto preGate = LookupNode(dependChain, gate);
94 // update gate, for others elimination
95 dependChain = dependChain->UpdateNode(gate);
96 return UpdateDependChain(gate, dependChain);
99 GateRef LaterElimination::TryEliminateDependSelector(GateRef gate)
101 auto state = acc_.GetState(gate);
104 return TryEliminateOther(gate);
107 auto dependCount = acc_.GetDependCount(gate);
109 auto depend = acc_.GetDep(gate, i);
117 auto depend = acc_.GetDep(gate);
122 auto dependIn = acc_.GetDep(gate, i);
126 return UpdateDependChain(gate, copy);
129 GateRef LaterElimination::UpdateDependChain(GateRef gate, DependChains* dependChain)
132 auto oldDependChain = GetDependChain(gate);
136 dependChains_[acc_.GetId(gate)] = dependChain;
137 return gate;