Lines Matching defs:loopInfo

365                 auto& loopInfo = linearizer_->loops_[i];
366 PrintLoop(loopInfo);
371 void PrintLoop(GraphLinearizer::LoopInfo& loopInfo)
375 LOG_COMPILER(INFO) << "Head: " << acc_.GetId(loopInfo.loopHead->state_);
376 LOG_COMPILER(INFO) << "loopNumber: " << loopInfo.loopHead->loopNumber_;
379 if (loopInfo.loopBodys->TestBit(i)) {
386 if (loopInfo.loopExits != nullptr) {
387 for (auto region : *loopInfo.loopExits) {
406 auto& loopInfo = linearizer_->loops_[loopNumber];
408 if (loopInfo.loopHead == nullptr) {
409 loopInfo.loopHead = loopHead;
410 loopInfo.loopBodys = chunk_->New<BitSet>(chunk_, size);
411 loopInfo.loopIndex = static_cast<size_t>(loopNumber);
412 loopInfo.loopHead->loopIndex_ = static_cast<int32_t>(loopInfo.loopIndex);
415 loopInfo.loopBodys->SetBit(curRegion->GetId());
418 PropagateLoopBody(loopInfo);
422 void PropagateLoopBody(GraphLinearizer::LoopInfo& loopInfo)
428 if (pred != loopInfo.loopHead) {
429 if (!loopInfo.loopBodys->TestBit(pred->GetId())) {
430 loopInfo.loopBodys->SetBit(pred->GetId());
477 GraphLinearizer::LoopInfo *loopInfo = nullptr;
487 ASSERT(loopInfo != nullptr && loopInfo->loopHead == curRegion);
488 loopInfo = loopInfo->outer;
505 if (loopInfo != nullptr && !loopInfo->loopBodys->TestBit(succ->GetId())) {
506 AddLoopExit(succ, loopInfo);
509 loopInfo = EnterInnerLoop(succ, loopInfo);
520 void AddLoopExit(GateRegion* succ, GraphLinearizer::LoopInfo *loopInfo)
522 if (loopInfo->loopExits == nullptr) {
523 loopInfo->loopExits = chunk_->New<ChunkVector<GateRegion*>>(chunk_);
525 loopInfo->loopExits->emplace_back(succ);
528 GraphLinearizer::LoopInfo *EnterInnerLoop(GateRegion* succ, GraphLinearizer::LoopInfo *loopInfo)
534 innerLoop.outer = loopInfo;
535 if (loopInfo != nullptr) {
536 innerLoop.loopDepth = loopInfo->loopDepth + 1;
541 loopInfo = &innerLoop;
542 } else if (loopInfo != nullptr) {
543 succ->loopIndex_ = static_cast<int32_t>(loopInfo->loopIndex);
544 succ->loopDepth_ = static_cast<int32_t>(loopInfo->loopDepth);
546 return loopInfo;
726 auto loopInfo = linearizer_->GetLoopInfo(region);
727 if (loopInfo != nullptr) {
728 if (!CheckRegionDomLoopExist(region, loopInfo)) {
731 return loopInfo->loopHead->iDominator_;
761 bool CheckRegionDomLoopExist(GateRegion* region, GraphLinearizer::LoopInfo* loopInfo)
763 if (loopInfo->loopExits == nullptr) {
766 for (auto exitRegion : *loopInfo->loopExits) {
1029 auto loopInfo = GetLoopInfo(bb);
1030 if (loopInfo != nullptr) {
1031 loopHeadId = loopInfo->loopHead->id_;