• Home
  • Raw
  • Download

Lines Matching refs:gate

20 GateRef RangeAnalysis::UpdateRange(GateRef gate, const RangeInfo& info)  in UpdateRange()  argument
22 auto &range = rangeInfos_[acc_.GetId(gate)]; in UpdateRange()
25 return gate; in UpdateRange()
31 RangeInfo RangeAnalysis::GetRange(GateRef gate) const in GetRange()
33 ASSERT(acc_.GetId(gate) < rangeInfos_.size()); in GetRange()
34 return rangeInfos_[acc_.GetId(gate)]; in GetRange()
37 bool RangeAnalysis::IsInt32Type(GateRef gate) const in IsInt32Type()
39 auto id = acc_.GetId(gate); in IsInt32Type()
41 return acc_.GetMachineType(gate) == MachineType::I32; in IsInt32Type()
46 GateRef RangeAnalysis::VisitGate(GateRef gate) in VisitGate() argument
48 auto op = acc_.GetOpCode(gate); in VisitGate()
51 return VisitConstant(gate); in VisitGate()
53 return VisitPhi(gate); in VisitGate()
55 return VisitTypedBinaryOp(gate); in VisitGate()
57 return VisitTypedUnaryOp(gate); in VisitGate()
59 return VisitIndexCheck(gate); in VisitGate()
61 return VisitLoadArrayLength(gate); in VisitGate()
63 return VisitLoadStringLength(gate); in VisitGate()
65 return VisitLoadTypedArrayLength(gate); in VisitGate()
67 return VisitRangeGuard(gate); in VisitGate()
69 return VisitOthers(gate); in VisitGate()
73 GateRef RangeAnalysis::VisitPhi(GateRef gate) in VisitPhi() argument
75 if (!IsInt32Type(gate)) { in VisitPhi()
79 auto numIn = acc_.GetInValueCount(gate); in VisitPhi()
81 auto valueIn = acc_.GetValueIn(gate, i); in VisitPhi()
84 return UpdateRange(gate, range); in VisitPhi()
87 GateRef RangeAnalysis::VisitOthers(GateRef gate) in VisitOthers() argument
89 if (!IsInt32Type(gate)) { in VisitOthers()
92 return UpdateRange(gate, RangeInfo::ANY()); in VisitOthers()
95 GateRef RangeAnalysis::VisitConstant(GateRef gate) in VisitConstant() argument
97 if (!IsInt32Type(gate)) { in VisitConstant()
100 auto value = acc_.GetInt32FromConstant(gate); in VisitConstant()
101 return UpdateRange(gate, RangeInfo(value, value)); in VisitConstant()
104 GateRef RangeAnalysis::VisitTypedUnaryOp(GateRef gate) in VisitTypedUnaryOp() argument
106 if (!IsInt32Type(gate)) { in VisitTypedUnaryOp()
109 auto op = acc_.GetTypedUnAccessor(gate).GetTypedUnOp(); in VisitTypedUnaryOp()
110 auto range = GetRange(acc_.GetValueIn(gate, 0)); in VisitTypedUnaryOp()
130 return UpdateRange(gate, range); in VisitTypedUnaryOp()
133 GateRef RangeAnalysis::VisitTypedBinaryOp(GateRef gate) in VisitTypedBinaryOp() argument
135 if (!IsInt32Type(gate)) { in VisitTypedBinaryOp()
138 auto op = acc_.GetTypedBinaryOp(gate); in VisitTypedBinaryOp()
142 range = GetRangeOfCalculate<TypedBinOp::TYPED_ADD>(gate); in VisitTypedBinaryOp()
145 range = GetRangeOfCalculate<TypedBinOp::TYPED_SUB>(gate); in VisitTypedBinaryOp()
148 range = GetRangeOfCalculate<TypedBinOp::TYPED_MOD>(gate); in VisitTypedBinaryOp()
151 range = GetRangeOfCalculate<TypedBinOp::TYPED_MUL>(gate); in VisitTypedBinaryOp()
154 range = GetRangeOfShift<TypedBinOp::TYPED_SHR>(gate); in VisitTypedBinaryOp()
157 range = GetRangeOfShift<TypedBinOp::TYPED_ASHR>(gate); in VisitTypedBinaryOp()
162 return UpdateRange(gate, range); in VisitTypedBinaryOp()
165 GateRef RangeAnalysis::VisitIndexCheck(GateRef gate) in VisitIndexCheck() argument
167 ASSERT(IsInt32Type(gate)); in VisitIndexCheck()
168 auto value = GetRange(acc_.GetValueIn(gate, 0)); in VisitIndexCheck()
171 return UpdateRange(gate, intersected); in VisitIndexCheck()
174 GateRef RangeAnalysis::VisitLoadArrayLength(GateRef gate) in VisitLoadArrayLength() argument
176 ASSERT(IsInt32Type(gate)); in VisitLoadArrayLength()
177 return UpdateRange(gate, RangeInfo(0, INT32_MAX)); in VisitLoadArrayLength()
180 GateRef RangeAnalysis::VisitLoadStringLength(GateRef gate) in VisitLoadStringLength() argument
182 ASSERT(IsInt32Type(gate)); in VisitLoadStringLength()
183 return UpdateRange(gate, RangeInfo(0, INT32_MAX)); in VisitLoadStringLength()
186 GateRef RangeAnalysis::VisitLoadTypedArrayLength(GateRef gate) in VisitLoadTypedArrayLength() argument
188 TypedArrayMetaDateAccessor accessor = acc_.GetTypedArrayMetaDateAccessor(gate); in VisitLoadTypedArrayLength()
191 return UpdateRange(gate, RangeInfo(0, max)); in VisitLoadTypedArrayLength()
194 GateRef RangeAnalysis::VisitRangeGuard(GateRef gate) in VisitRangeGuard() argument
196 auto left = acc_.GetFirstValue(gate); in VisitRangeGuard()
197 auto right = acc_.GetSecondValue(gate); in VisitRangeGuard()
198 return UpdateRange(gate, RangeInfo(left, right)); in VisitRangeGuard()
202 RangeInfo RangeAnalysis::GetRangeOfCalculate(GateRef gate) in GetRangeOfCalculate() argument
204 auto left = GetRange(acc_.GetValueIn(gate, 0)); in GetRangeOfCalculate()
205 auto right = GetRange(acc_.GetValueIn(gate, 1)); in GetRangeOfCalculate()
224 RangeInfo RangeAnalysis::GetRangeOfShift(GateRef gate) in GetRangeOfShift() argument
227 auto value = GetRange(acc_.GetValueIn(gate, 0)); in GetRangeOfShift()
228 auto shift = GetRange(acc_.GetValueIn(gate, 1)); in GetRangeOfShift()
269 RangeInfo RangeAnalysis::GetRangeOfCompare(GateRef gate, GateRef value, bool flag) in GetRangeOfCompare() argument
271 auto op = acc_.GetTypedBinaryOp(gate); in GetRangeOfCompare()
272 auto left = acc_.GetValueIn(gate, 0); in GetRangeOfCompare()
273 auto right = acc_.GetValueIn(gate, 1); in GetRangeOfCompare()
311 for (auto gate : gateList) { in PrintRangeInfo() local
312 if (!IsInt32Type(gate)) { in PrintRangeInfo()
315 log = "id:" + std::to_string(acc_.GetId(gate)); in PrintRangeInfo()
316 auto op = acc_.GetOpCode(gate); in PrintRangeInfo()
327 auto binOp = acc_.GetTypedBinaryOp(gate); in PrintRangeInfo()
354 auto unOp = acc_.GetTypedUnAccessor(gate).GetTypedUnOp(); in PrintRangeInfo()
384 auto range = GetRange(gate); in PrintRangeInfo()