Lines Matching refs:InductionInfo
100 struct InductionInfo : public ArenaObject<kArenaAllocInductionVarAnalysis> { struct
101 InductionInfo(InductionClass ic, in InductionInfo() function
103 InductionInfo* a, in InductionInfo()
104 InductionInfo* b, in InductionInfo()
115 InductionInfo* op_a; argument
116 InductionInfo* op_b; argument
125 InductionInfo* CreateInvariantOp(InductionOp op, InductionInfo* a, InductionInfo* b) { in CreateInvariantOp() argument
130 InductionInfo* CreateInvariantFetch(HInstruction* f) { in CreateInvariantFetch()
133 InductionInfo(kInvariant, kFetch, nullptr, nullptr, f, f->GetType()); in CreateInvariantFetch()
136 InductionInfo* CreateTripCount(InductionOp op, in CreateTripCount()
137 InductionInfo* a, in CreateTripCount()
138 InductionInfo* b, in CreateTripCount()
141 return new (graph_->GetAllocator()) InductionInfo(kInvariant, op, a, b, nullptr, type); in CreateTripCount()
144 InductionInfo* CreateInduction(InductionClass ic, in CreateInduction()
146 InductionInfo* a, in CreateInduction()
147 InductionInfo* b, in CreateInduction()
151 return new (graph_->GetAllocator()) InductionInfo(ic, op, a, b, f, type); in CreateInduction()
160 InductionInfo* RotatePeriodicInduction(InductionInfo* induction, InductionInfo* last);
163 InductionInfo* TransferPhi(HLoopInformation* loop,
167 InductionInfo* TransferAddSub(InductionInfo* a, InductionInfo* b, InductionOp op);
168 InductionInfo* TransferNeg(InductionInfo* a);
169 InductionInfo* TransferMul(InductionInfo* a, InductionInfo* b);
170 InductionInfo* TransferConversion(InductionInfo* a, DataType::Type from, DataType::Type to);
173 InductionInfo* SolvePhi(HInstruction* phi, size_t input_index, size_t adjust_input_size);
174 InductionInfo* SolvePhiAllInputs(HLoopInformation* loop,
177 InductionInfo* SolveAddSub(HLoopInformation* loop,
184 InductionInfo* SolveOp(HLoopInformation* loop,
190 InductionInfo* SolveTest(HLoopInformation* loop,
194 InductionInfo* SolveConversion(HLoopInformation* loop,
206 InductionInfo* a,
207 InductionInfo* b,
211 InductionInfo* lower_expr,
212 InductionInfo* upper_expr,
213 InductionInfo* stride,
217 bool IsTaken(InductionInfo* lower_expr, InductionInfo* upper_expr, IfCondition cmp);
218 bool IsFinite(InductionInfo* upper_expr,
222 bool FitsNarrowerControl(InductionInfo* lower_expr,
223 InductionInfo* upper_expr,
237 void AssignInfo(HLoopInformation* loop, HInstruction* instruction, InductionInfo* info);
238 InductionInfo* LookupInfo(HLoopInformation* loop, HInstruction* instruction);
239 InductionInfo* CreateConstant(int64_t value, DataType::Type type);
240 InductionInfo* CreateSimplifiedInvariant(InductionOp op, InductionInfo* a, InductionInfo* b);
243 InductionInfo* initial);
248 bool IsExact(InductionInfo* info, /*out*/ int64_t* value);
249 bool IsAtMost(InductionInfo* info, /*out*/ int64_t* value);
250 bool IsAtLeast(InductionInfo* info, /*out*/ int64_t* value);
253 static bool IsNarrowingLinear(InductionInfo* info);
254 static bool InductionEqual(InductionInfo* info1, InductionInfo* info2);
256 static std::string InductionToString(InductionInfo* info);
265 ArenaSafeMap<HInstruction*, InductionInfo*> cycle_;
272 ArenaSafeMap<HLoopInformation*, ArenaSafeMap<HInstruction*, InductionInfo*>> induction_;