Lines Matching refs:dv

26   DomainValue *dv = Avail.empty() ? new (Allocator.Allocate()) DomainValue
29 dv->addDomain(domain);
30 assert(dv->Refs == 0 && "Reference count wasn't cleared");
31 assert(!dv->Next && "Chained DomainValue shouldn't have been recycled");
32 return dv;
70 void ExecutionDomainFix::setLiveReg(int rx, DomainValue *dv) {
74 if (LiveRegs[rx] == dv)
78 LiveRegs[rx] = retain(dv);
94 if (DomainValue *dv = LiveRegs[rx]) {
95 if (dv->isCollapsed())
96 dv->addDomain(domain);
97 else if (dv->hasDomain(domain))
98 collapse(dv, domain);
102 collapse(dv, dv->getFirstDomain());
112 void ExecutionDomainFix::collapse(DomainValue *dv, unsigned domain) {
113 assert(dv->hasDomain(domain) && "Cannot collapse");
116 while (!dv->Instrs.empty())
117 TII->setExecutionDomain(*dv->Instrs.pop_back_val(), domain);
118 dv->setSingleDomain(domain);
121 if (!LiveRegs.empty() && dv->Refs > 1)
123 if (LiveRegs[rx] == dv)
297 DomainValue *dv = LiveRegs[rx];
298 if (dv == nullptr)
300 // Bitmask of domains that dv and available have in common.
301 unsigned common = dv->getCommonDomains(available);
303 if (dv->isCollapsed()) {
349 DomainValue *dv = nullptr;
351 if (!dv) {
352 dv = LiveRegs[Regs.pop_back_val()];
353 // Force the first dv to match the current instruction.
354 dv->AvailableDomains = dv->getCommonDomains(available);
355 assert(dv->AvailableDomains && "Domain should have been filtered");
361 if (Latest == dv || Latest->Next)
363 if (merge(dv, Latest))
374 // dv is the DomainValue we are going to use for this instruction.
375 if (!dv) {
376 dv = alloc();
377 dv->AvailableDomains = available;
379 dv->Instrs.push_back(mi);
381 // Finally set all defs and non-collapsed uses to dv. We must iterate through
387 if (!LiveRegs[rx] || (mo.isDef() && LiveRegs[rx] != dv)) {
389 setLiveReg(rx, dv);