Lines Matching refs:InductionInfo

95   struct InductionInfo : public ArenaObject<kArenaAllocInductionVarAnalysis> {  struct
96 InductionInfo(InductionClass ic, in InductionInfo() argument
98 InductionInfo* a, in InductionInfo()
99 InductionInfo* b, in InductionInfo()
110 InductionInfo* op_a; argument
111 InductionInfo* op_b; argument
120 InductionInfo* CreateInvariantOp(InductionOp op, InductionInfo* a, InductionInfo* b) { in CreateInvariantOp() argument
125 InductionInfo* CreateInvariantFetch(HInstruction* f) { in CreateInvariantFetch()
128 InductionInfo(kInvariant, kFetch, nullptr, nullptr, f, f->GetType()); in CreateInvariantFetch()
131 InductionInfo* CreateTripCount(InductionOp op, in CreateTripCount()
132 InductionInfo* a, in CreateTripCount()
133 InductionInfo* b, in CreateTripCount()
136 return new (graph_->GetArena()) InductionInfo(kInvariant, op, a, b, nullptr, type); in CreateTripCount()
139 InductionInfo* CreateInduction(InductionClass ic, in CreateInduction()
140 InductionInfo* a, in CreateInduction()
141 InductionInfo* b, in CreateInduction()
144 return new (graph_->GetArena()) InductionInfo(ic, kNop, a, b, nullptr, type); in CreateInduction()
153 InductionInfo* RotatePeriodicInduction(InductionInfo* induction, InductionInfo* last);
156 InductionInfo* TransferPhi(HLoopInformation* loop, HInstruction* phi, size_t input_index);
157 InductionInfo* TransferAddSub(InductionInfo* a, InductionInfo* b, InductionOp op);
158 InductionInfo* TransferMul(InductionInfo* a, InductionInfo* b);
159 InductionInfo* TransferShl(InductionInfo* a, InductionInfo* b, Primitive::Type type);
160 InductionInfo* TransferNeg(InductionInfo* a);
161 InductionInfo* TransferCnv(InductionInfo* a, Primitive::Type from, Primitive::Type to);
164 InductionInfo* SolvePhi(HInstruction* phi, size_t input_index);
165 InductionInfo* SolvePhiAllInputs(HLoopInformation* loop,
168 InductionInfo* SolveAddSub(HLoopInformation* loop,
175 InductionInfo* SolveCnv(HTypeConversion* conversion);
180 InductionInfo* a,
181 InductionInfo* b,
185 InductionInfo* lower_expr,
186 InductionInfo* upper_expr,
187 InductionInfo* stride,
191 bool IsTaken(InductionInfo* lower_expr, InductionInfo* upper_expr, IfCondition cmp);
192 bool IsFinite(InductionInfo* upper_expr,
196 bool FitsNarrowerControl(InductionInfo* lower_expr,
197 InductionInfo* upper_expr,
203 void AssignInfo(HLoopInformation* loop, HInstruction* instruction, InductionInfo* info);
204 InductionInfo* LookupInfo(HLoopInformation* loop, HInstruction* instruction);
205 InductionInfo* CreateConstant(int64_t value, Primitive::Type type);
206 InductionInfo* CreateSimplifiedInvariant(InductionOp op, InductionInfo* a, InductionInfo* b);
209 bool IsExact(InductionInfo* info, /*out*/ int64_t* value);
210 bool IsAtMost(InductionInfo* info, /*out*/ int64_t* value);
211 bool IsAtLeast(InductionInfo* info, /*out*/ int64_t* value);
214 static bool InductionEqual(InductionInfo* info1, InductionInfo* info2);
215 static std::string InductionToString(InductionInfo* info);
224 ArenaSafeMap<HInstruction*, InductionInfo*> cycle_;
231 ArenaSafeMap<HLoopInformation*, ArenaSafeMap<HInstruction*, InductionInfo*>> induction_;