Lines Matching full:hinductionvaranalysis
121 InductionVarRange::InductionVarRange(HInductionVarAnalysis* induction_analysis)
135 HInductionVarAnalysis::InductionInfo* info = induction_analysis_->LookupInfo(loop, instruction);
154 HInductionVarAnalysis::InductionInfo* trip =
227 bool InductionVarRange::IsConstant(HInductionVarAnalysis::InductionInfo* info,
233 if (info->induction_class == HInductionVarAnalysis::kInvariant &&
234 info->operation == HInductionVarAnalysis::kFetch) {
267 bool InductionVarRange::NeedsTripCount(HInductionVarAnalysis::InductionInfo* info) const {
269 if (info->induction_class == HInductionVarAnalysis::kLinear) {
271 } else if (info->induction_class == HInductionVarAnalysis::kWrapAround) {
278 bool InductionVarRange::IsBodyTripCount(HInductionVarAnalysis::InductionInfo* trip) const {
280 if (trip->induction_class == HInductionVarAnalysis::kInvariant) {
281 return trip->operation == HInductionVarAnalysis::kTripCountInBody ||
282 trip->operation == HInductionVarAnalysis::kTripCountInBodyUnsafe;
288 bool InductionVarRange::IsUnsafeTripCount(HInductionVarAnalysis::InductionInfo* trip) const {
290 if (trip->induction_class == HInductionVarAnalysis::kInvariant) {
291 return trip->operation == HInductionVarAnalysis::kTripCountInBodyUnsafe ||
292 trip->operation == HInductionVarAnalysis::kTripCountInLoopUnsafe;
298 InductionVarRange::Value InductionVarRange::GetLinear(HInductionVarAnalysis::InductionInfo* info,
299 HInductionVarAnalysis::InductionInfo* trip,
307 HInductionVarAnalysis::InductionInfo* trip_expr = trip->op_a;
308 if (trip_expr->operation == HInductionVarAnalysis::kSub) {
313 if (HInductionVarAnalysis::InductionEqual(trip_expr->op_b, info->op_b)) {
315 HInductionVarAnalysis::InductionInfo cancelled_trip(
326 if (HInductionVarAnalysis::InductionEqual(trip_expr->op_a, info->op_b)) {
328 HInductionVarAnalysis::InductionInfo neg(
329 HInductionVarAnalysis::kInvariant,
330 HInductionVarAnalysis::kNeg,
335 HInductionVarAnalysis::InductionInfo cancelled_trip(
349 HInductionVarAnalysis::InductionInfo* trip,
382 InductionVarRange::Value InductionVarRange::GetVal(HInductionVarAnalysis::InductionInfo* info,
383 HInductionVarAnalysis::InductionInfo* trip,
388 case HInductionVarAnalysis::kInvariant:
391 case HInductionVarAnalysis::kAdd:
394 case HInductionVarAnalysis::kSub: // second reversed!
397 case HInductionVarAnalysis::kNeg: // second reversed!
400 case HInductionVarAnalysis::kMul:
402 case HInductionVarAnalysis::kDiv:
404 case HInductionVarAnalysis::kFetch:
406 case HInductionVarAnalysis::kTripCountInLoop:
407 case HInductionVarAnalysis::kTripCountInLoopUnsafe:
412 case HInductionVarAnalysis::kTripCountInBody:
413 case HInductionVarAnalysis::kTripCountInBodyUnsafe:
424 case HInductionVarAnalysis::kLinear: {
427 case HInductionVarAnalysis::kWrapAround:
428 case HInductionVarAnalysis::kPeriodic:
436 InductionVarRange::Value InductionVarRange::GetMul(HInductionVarAnalysis::InductionInfo* info1,
437 HInductionVarAnalysis::InductionInfo* info2,
438 HInductionVarAnalysis::InductionInfo* trip,
474 InductionVarRange::Value InductionVarRange::GetDiv(HInductionVarAnalysis::InductionInfo* info1,
475 HInductionVarAnalysis::InductionInfo* info2,
476 HInductionVarAnalysis::InductionInfo* trip,
592 HInductionVarAnalysis::InductionInfo* info = induction_analysis_->LookupInfo(loop, v.instruction);
599 HInductionVarAnalysis::InductionInfo* trip =
618 HInductionVarAnalysis::InductionInfo* info = induction_analysis_->LookupInfo(loop, instruction);
625 HInductionVarAnalysis::InductionInfo* trip =
650 ((info->induction_class == HInductionVarAnalysis::kInvariant) ||
656 bool InductionVarRange::GenerateCode(HInductionVarAnalysis::InductionInfo* info,
657 HInductionVarAnalysis::InductionInfo* trip,
673 case HInductionVarAnalysis::kInvariant:
676 case HInductionVarAnalysis::kAdd:
677 case HInductionVarAnalysis::kLT:
678 case HInductionVarAnalysis::kLE:
679 case HInductionVarAnalysis::kGT:
680 case HInductionVarAnalysis::kGE:
686 case HInductionVarAnalysis::kAdd:
688 case HInductionVarAnalysis::kLT:
690 case HInductionVarAnalysis::kLE:
692 case HInductionVarAnalysis::kGT:
694 case HInductionVarAnalysis::kGE:
704 case HInductionVarAnalysis::kSub: // second reversed!
713 case HInductionVarAnalysis::kNeg: // reversed!
721 case HInductionVarAnalysis::kFetch:
726 case HInductionVarAnalysis::kTripCountInLoop:
727 case HInductionVarAnalysis::kTripCountInLoopUnsafe:
732 HInductionVarAnalysis::kTripCountInBody:
733 case HInductionVarAnalysis::kTripCountInBodyUnsafe:
754 case HInductionVarAnalysis::kLinear: {
778 case HInductionVarAnalysis::kWrapAround:
779 case HInductionVarAnalysis::kPeriodic: {