Lines Matching defs:SubReg
266 for (const auto &SubReg : SubRegs) {
267 CodeGenRegister *SR = SubReg.second;
361 for (const auto &SubReg : Map)
362 if (Orphans.erase(SubReg.second))
363 SubRegs[RegBank.getCompositeSubRegIndex(Idx, SubReg.first)] =
364 SubReg.second;
367 // Compute the inverse SubReg -> Idx map.
368 for (const auto &SubReg : SubRegs) {
369 if (SubReg.second == this) {
379 SubReg.first->AllSuperRegsCovered = false;
383 SubReg2Idx.try_emplace(SubReg.second, SubReg.first).first;
384 if (Ins->second == SubReg.first)
386 // Trouble: Two different names for SubReg.second.
391 Loc, "Sub-register can't have two names: " + SubReg.second->getName() +
392 " available as " + SubReg.first->getName() + " and " +
494 const CodeGenRegister *SubReg;
495 std::tie(SubRegIdx, SubReg) = SubRegQueue.front();
498 const CodeGenRegister::SuperRegList &Leads = SubReg->LeadingSuperRegs;
510 // We know that the first component is (SubRegIdx,SubReg). However we
512 assert(Cand->ExplicitSubRegs[0] == SubReg && "LeadingSuperRegs correct");
513 assert(getSubRegIndex(SubReg) == SubRegIdx && "LeadingSuperRegs correct");
514 for (CodeGenRegister *SubReg : Cand->ExplicitSubRegs) {
515 if (CodeGenSubRegIndex *SubRegIdx = getSubRegIndex(SubReg)) {
552 for (auto SubReg : NewSubReg->SubRegs) {
553 CodeGenSubRegIndex *SubIdx = getSubRegIndex(SubReg.second);
556 SubReg.second->getName() +
558 NewIdx->addComposite(SubReg.first, SubIdx, RegBank.getHwModes());
571 for (auto SubReg : SubRegs)
572 SubReg.second->computeSuperRegs(RegBank);
577 for (auto SubReg : SubRegs) {
578 // Topological signature computed from SubIdx, TopoId(SubReg).
580 Id.push_back(SubReg.first->EnumValue);
581 Id.push_back(SubReg.second->TopoSig);
584 if (!SubReg.second->SuperRegs.empty() &&
585 SubReg.second->SuperRegs.back() == this)
587 SubReg.second->SuperRegs.push_back(this);
601 for (auto SubReg : SubRegs)
602 OSet.insert(SubReg.second);
2174 CodeGenRegister *SubReg = S.second;
2177 if (!SubReg->getSubRegs().empty())