Lines Matching refs:DV
140 void SetLiveReg(int rx, DomainValue *DV);
143 void Collapse(DomainValue *dv, unsigned domain);
164 DomainValue *dv = Avail.empty() ?
167 dv->Dist = Distance;
169 dv->addDomain(domain);
170 return dv;
173 void SSEDomainFixPass::Recycle(DomainValue *dv) {
174 assert(dv && "Cannot recycle NULL");
175 dv->clear();
176 Avail.push_back(dv);
179 /// Set LiveRegs[rx] = dv, updating reference counts.
180 void SSEDomainFixPass::SetLiveReg(int rx, DomainValue *dv) {
187 if (LiveRegs[rx] == dv)
193 LiveRegs[rx] = dv;
194 if (dv) ++dv->Refs;
213 DomainValue *dv;
214 if (LiveRegs && (dv = LiveRegs[rx])) {
215 if (dv->isCollapsed())
216 dv->addDomain(domain);
217 else if (dv->hasDomain(domain))
218 Collapse(dv, domain);
222 Collapse(dv, dv->getFirstDomain());
233 /// registers using dv, they each get a unique collapsed DomainValue.
234 void SSEDomainFixPass::Collapse(DomainValue *dv, unsigned domain) {
235 assert(dv->hasDomain(domain) && "Cannot collapse");
238 while (!dv->Instrs.empty())
239 TII->SetSSEDomain(dv->Instrs.pop_back_val(), domain);
240 dv->setSingleDomain(domain);
243 if (LiveRegs && dv->Refs > 1)
245 if (LiveRegs[rx] == dv)
343 if (DomainValue *dv = LiveRegs[rx]) {
344 // Bitmask of domains that dv and available have in common.
345 unsigned common = dv->getCommonDomains(available);
347 if (dv->isCollapsed()) {
375 DomainValue *dv = LiveRegs[rx];
377 if (!dv->getCommonDomains(available)) {
385 if (dv == *i)
387 else if (dv->Dist < (*i)->Dist) {
389 doms.insert(i, dv);
393 doms.push_back(dv);
398 DomainValue *dv = 0;
400 if (!dv) {
401 dv = doms.pop_back_val();
406 if (Merge(dv, latest)) continue;
414 // dv is the DomainValue we are going to use for this instruction.
415 if (!dv)
416 dv = Alloc();
417 dv->Dist = Distance;
418 dv->AvailableDomains = available;
419 dv->Instrs.push_back(mi);
421 // Finally set all defs and non-collapsed uses to dv.
427 if (!LiveRegs || !LiveRegs[rx] || (mo.isDef() && LiveRegs[rx]!=dv)) {
429 SetLiveReg(rx, dv);