Lines Matching refs:region
49 // connect region
62 auto region = linearizer_->FindPredRegion(state);
63 linearizer_->AddFixedGateToRegion(fixedGate, region);
64 linearizer_->BindGate(fixedGate, region);
149 info.region = currentRegion_;
387 for (auto region : *loopInfo.loopExits) {
388 auto current = region->state_;
403 GateRegion* curRegion = curState.region;
448 auto curRegion = curState.region;
481 auto curRegion = curState.region;
549 size_t Push(GateRegion *region, size_t depth)
551 if (region->IsUnvisited(acc_)) {
552 dfsStack_[depth].region = region;
554 region->SetVisited(acc_);
562 DFSState(GateRegion *region, size_t index)
563 : region(region), index(index) {}
565 GateRegion *region;
590 auto region = linearizer_->GateToRegion(fixedGate);
596 linearizer_->AddFixedGateToRegion(succGate, region);
700 (curInfo.schedulableUseCount != 0) || (curInfo.region != nullptr)) {
703 auto region = GetCommonDominatorOfAllUses(curGate);
706 ASSERT(linearizer_->GetCommonDominator(region, curInfo.upperBound) == curInfo.upperBound);
708 auto upperRegion = GetUpperBoundRegion(region);
710 region = upperRegion;
711 upperRegion = GetUpperBoundRegion(region);
715 ScheduleAllocRegion(curGate, region);
717 ScheduleGate(curGate, region);
721 GateRegion* GetUpperBoundRegion(GateRegion* region)
723 if (region->IsLoopHead()) {
724 return region->iDominator_;
726 auto loopInfo = linearizer_->GetLoopInfo(region);
728 if (!CheckRegionDomLoopExist(region, loopInfo)) {
736 void ScheduleAllocRegion(GateRef gate, GateRegion* region)
740 ScheduleGate(gate, region);
748 ASSERT(curInfo.region == nullptr);
753 ScheduleGate(curGate, region);
758 ScheduleGate(curGate, region);
761 bool CheckRegionDomLoopExist(GateRegion* region, GraphLinearizer::LoopInfo* loopInfo)
767 if (linearizer_->GetCommonDominator(region, exitRegion) != region) {
774 void ScheduleGate(GateRef gate, GateRegion* region)
789 linearizer_->BindGate(gate, region);
794 GateRegion* region = nullptr;
802 GateRegion* useRegion = useInfo.region;
813 if (region == nullptr) {
814 region = useRegion;
817 region = linearizer_->GetCommonDominator(region, useRegion);
820 return region;
832 GateRegion* region = linearizer_->GateToRegion(gate);
833 linearizer_->BindGate(gate, region);
885 auto region = new (chunk_) GateRegion(chunk_);
886 region->id_ = regionList_.size();
887 regionList_.emplace_back(region);
890 region->stateKind_ = GateRegion::StateKind::LOOP_HEAD;
892 AddRootGateToRegion(gate, region);
931 size_t GraphLinearizer::OptimizeControls(GateRegion *region)
934 GateRegion* target = region;