Lines Matching refs:dv
192 void collapse(DomainValue *dv, unsigned domain);
218 DomainValue *dv = Avail.empty() ? in alloc() local
222 dv->addDomain(domain); in alloc()
223 assert(dv->Refs == 0 && "Reference count wasn't cleared"); in alloc()
224 assert(!dv->Next && "Chained DomainValue shouldn't have been recycled"); in alloc()
225 return dv; in alloc()
267 void ExeDepsFix::setLiveReg(int rx, DomainValue *dv) { in setLiveReg() argument
271 if (LiveRegs[rx].Value == dv) in setLiveReg()
275 LiveRegs[rx].Value = retain(dv); in setLiveReg()
293 if (DomainValue *dv = LiveRegs[rx].Value) { in force() local
294 if (dv->isCollapsed()) in force()
295 dv->addDomain(domain); in force()
296 else if (dv->hasDomain(domain)) in force()
297 collapse(dv, domain); in force()
301 collapse(dv, dv->getFirstDomain()); in force()
313 void ExeDepsFix::collapse(DomainValue *dv, unsigned domain) { in collapse() argument
314 assert(dv->hasDomain(domain) && "Cannot collapse"); in collapse()
317 while (!dv->Instrs.empty()) in collapse()
318 TII->setExecutionDomain(dv->Instrs.pop_back_val(), domain); in collapse()
319 dv->setSingleDomain(domain); in collapse()
322 if (LiveRegs && dv->Refs > 1) in collapse()
324 if (LiveRegs[rx].Value == dv) in collapse()
619 DomainValue *dv = LiveRegs[rx].Value; in visitSoftInstr() local
620 if (dv == nullptr) in visitSoftInstr()
623 unsigned common = dv->getCommonDomains(available); in visitSoftInstr()
625 if (dv->isCollapsed()) { in visitSoftInstr()
675 DomainValue *dv = nullptr; in visitSoftInstr() local
677 if (!dv) { in visitSoftInstr()
678 dv = Regs.pop_back_val().Value; in visitSoftInstr()
680 dv->AvailableDomains = dv->getCommonDomains(available); in visitSoftInstr()
681 assert(dv->AvailableDomains && "Domain should have been filtered"); in visitSoftInstr()
687 if (Latest == dv || Latest->Next) in visitSoftInstr()
689 if (merge(dv, Latest)) in visitSoftInstr()
701 if (!dv) { in visitSoftInstr()
702 dv = alloc(); in visitSoftInstr()
703 dv->AvailableDomains = available; in visitSoftInstr()
705 dv->Instrs.push_back(mi); in visitSoftInstr()
715 if (!LiveRegs[rx].Value || (mo.isDef() && LiveRegs[rx].Value != dv)) { in visitSoftInstr()
717 setLiveReg(rx, dv); in visitSoftInstr()