Lines Matching defs:gate

26 GateRef RangeGuard::VisitGate(GateRef gate)
28 auto op = acc_.GetOpCode(gate);
34 return TryApplyRangeGuardGate(gate);
37 return TraverseDependSelector(gate);
40 if (acc_.GetDependCount(gate) == 1) { // 1: depend in is 1
41 return TraverseOthers(gate);
49 GateRef RangeGuard::TraverseOthers(GateRef gate)
51 ASSERT(acc_.GetDependCount(gate) >= 1);
52 auto depIn = acc_.GetDep(gate);
58 return UpdateDependChain(gate, dependChain);
61 GateRef RangeGuard::TraverseDependSelector(GateRef gate)
63 auto state = acc_.GetState(gate);
65 return TraverseOthers(gate);
68 auto dependCount = acc_.GetDependCount(gate);
70 auto depend = acc_.GetDep(gate, i);
78 auto depend = acc_.GetDep(gate);
83 auto dependIn = acc_.GetDep(gate, i);
87 return UpdateDependChain(gate, copy);
90 GateRef RangeGuard::TryApplyRangeGuardForLength(DependChains* dependChain, GateRef gate, GateRef input)
95 Environment env(gate, circuit_, &builder_);
103 GateRef RangeGuard::TryApplyRangeGuardForIndex(DependChains* dependChain, GateRef gate, GateRef input)
108 Environment env(gate, circuit_, &builder_);
116 GateRef RangeGuard::TryApplyRangeGuardGate(GateRef gate)
118 if (acc_.GetDependCount(gate) < 1) {
122 auto depIn = acc_.GetDep(gate);
129 auto numIns = acc_.GetInValueCount(gate);
131 auto originalInput = acc_.GetValueIn(gate, i);
136 rangeGuardGate = TryApplyRangeGuardForLength(dependChain, gate, originalInput);
138 rangeGuardGate = TryApplyRangeGuardForIndex(dependChain, gate, originalInput);
141 acc_.ReplaceValueIn(gate, rangeGuardGate, i);
144 dependChain = dependChain->UpdateNode(gate);
145 return UpdateDependChain(gate, dependChain);
148 GateRef RangeGuard::VisitDependEntry(GateRef gate)
151 return UpdateDependChain(gate, empty);
154 GateRef RangeGuard::UpdateDependChain(GateRef gate, DependChains* dependChain)
157 auto oldDependChain = GetDependChain(gate);
161 dependChains_[acc_.GetId(gate)] = dependChain;
162 return gate;