Lines Matching defs:domain
1 //===- ExecutionDomainFix.cpp - Fix execution domain issues ----*- C++ -*--===//
25 DomainValue *ExecutionDomainFix::alloc(int domain) {
28 if (domain >= 0)
29 dv->addDomain(domain);
91 void ExecutionDomainFix::force(int rx, unsigned domain) {
96 dv->addDomain(domain);
97 else if (dv->hasDomain(domain))
98 collapse(dv, domain);
101 // force the new value into domain. This costs a domain crossing.
104 LiveRegs[rx]->addDomain(domain);
108 setLiveReg(rx, alloc(domain));
112 void ExecutionDomainFix::collapse(DomainValue *dv, unsigned domain) {
113 assert(dv->hasDomain(domain) && "Cannot collapse");
117 TII->setExecutionDomain(*dv->Instrs.pop_back_val(), domain);
118 dv->setSingleDomain(domain);
124 setLiveReg(rx, alloc(domain));
158 // Set default domain values to 'no domain' (nullptr)
257 void ExecutionDomainFix::visitHardInstr(MachineInstr *mi, unsigned domain) {
266 force(rx, domain);
277 force(rx, domain);
305 // If there are no common domains, we must pay the cross-domain
319 // If the collapsed operands force a single domain, propagate the collapse.
321 unsigned domain = llvm::countr_zero(available);
322 TII->setExecutionDomain(*mi, domain);
323 visitHardInstr(mi, domain);