Lines Matching defs:CodeGenRegister

150 //                              CodeGenRegister
153 CodeGenRegister::CodeGenRegister(Record *R, unsigned Enum)
162 void CodeGenRegister::buildObjectGraph(CodeGenRegBank &RegBank) {
187 CodeGenRegister *Reg = RegBank.getReg(Alias);
193 StringRef CodeGenRegister::getName() const {
202 CodeGenRegister::Vec::const_iterator RegI, RegE;
203 CodeGenRegister::RegUnitList::iterator UnitI, UnitE;
204 static CodeGenRegister::RegUnitList Sentinel;
207 RegUnitIterator(const CodeGenRegister::Vec &Regs):
224 const CodeGenRegister *getReg() const { assert(isValid()); return *RegI; }
244 CodeGenRegister::RegUnitList RegUnitIterator::Sentinel;
249 static bool hasRegUnit(CodeGenRegister::RegUnitList &RegUnits, unsigned Unit) {
255 bool CodeGenRegister::inheritRegUnits(CodeGenRegBank &RegBank) {
258 CodeGenRegister *SR = SubReg.second;
266 const CodeGenRegister::SubRegMap &
267 CodeGenRegister::computeSubRegs(CodeGenRegBank &RegBank) {
277 CodeGenRegister *SR = ExplicitSubRegs[i];
290 SmallPtrSet<CodeGenRegister*, 8> Orphans;
294 for (CodeGenRegister *ESR : ExplicitSubRegs) {
312 CodeGenRegister *SR = SubRegs[Idx];
349 CodeGenRegister *SR = SubRegs[Idx];
371 DenseMap<const CodeGenRegister*, CodeGenSubRegIndex*>::iterator Ins =
389 CodeGenRegister *SR = ExplicitSubRegs[i];
413 CodeGenRegister *SR = ExplicitSubRegs[i];
427 CodeGenRegister *AR = ExplicitAliases[i];
464 void CodeGenRegister::computeSecondarySubRegs(CodeGenRegBank &RegBank) {
467 std::queue<std::pair<CodeGenSubRegIndex*,CodeGenRegister*>> SubRegQueue;
468 for (std::pair<CodeGenSubRegIndex*,CodeGenRegister*> P : SubRegs)
476 const CodeGenRegister *SubReg;
480 const CodeGenRegister::SuperRegList &Leads = SubReg->LeadingSuperRegs;
482 CodeGenRegister *Cand = const_cast<CodeGenRegister*>(Leads[i]);
496 for (CodeGenRegister *SubReg : Cand->ExplicitSubRegs) {
516 std::pair<CodeGenSubRegIndex*,CodeGenRegister*> NewSubReg =
532 CodeGenRegister *NewSubReg = NewSubRegs[i].second;
544 void CodeGenRegister::computeSuperRegs(CodeGenRegBank &RegBank) {
574 CodeGenRegister::addSubRegsPreOrder(SetVector<const CodeGenRegister*> &OSet,
578 CodeGenRegister *SR = ExplicitSubRegs[i];
588 unsigned CodeGenRegister::getWeight(const CodeGenRegBank &RegBank) const {
668 // is only for consumption by CodeGenRegister, it is not added to the
734 static void sortAndUniqueRegisters(CodeGenRegister::Vec &M) {
764 const CodeGenRegister *Reg = RegBank.getReg((*Elements)[i]);
778 CodeGenRegister *Reg = RegBank.getReg(Order.back());
888 bool CodeGenRegisterClass::contains(const CodeGenRegister *Reg) const {
1261 const CodeGenRegister *SR = P.second;
1322 CodeGenRegister *CodeGenRegBank::getReg(Record *Def) {
1323 CodeGenRegister *&Reg = Def2Reg[Def];
1344 const CodeGenRegister::Vec *Members,
1422 using RegMap = std::map<const CodeGenRegister*, const CodeGenRegister*>;
1428 for (const CodeGenRegister &R : Registers) {
1429 const CodeGenRegister::SubRegMap &SM = R.getSubRegs();
1430 for (std::pair<const CodeGenSubRegIndex*, const CodeGenRegister*> P : SM)
1441 for (std::pair<const CodeGenRegister*, const CodeGenRegister*> P : Img1) {
1456 for (std::pair<const CodeGenRegister*, const CodeGenRegister*> P : Map1) {
1481 const CodeGenRegister::SubRegMap &SRM1 = Reg1.getSubRegs();
1484 CodeGenRegister *Reg2 = I1.second;
1488 const CodeGenRegister::SubRegMap &SRM2 = Reg2->getSubRegs();
1492 CodeGenRegister *Reg3 = I2.second;
1668 CodeGenRegister::Vec Regs;
1670 CodeGenRegister::RegUnitList SingularDeterminants;
1697 const CodeGenRegister::Vec &Regs = RegClass.getMembers();
1705 for (const CodeGenRegister *CGR : llvm::drop_begin(Regs)) {
1727 for (const CodeGenRegister &Reg : Registers) {
1748 const CodeGenRegister *Reg = nullptr;
1798 static bool normalizeWeight(CodeGenRegister *Reg,
1802 CodeGenRegister::RegUnitList &NormalUnits,
1810 const CodeGenRegister::SubRegMap &SRM = Reg->getSubRegs();
1877 CodeGenRegister::RegUnitList NormalUnits;
2146 CodeGenRegister::RegUnitLaneMaskList RegUnitLaneMasks(
2149 typedef CodeGenRegister::SubRegMap SubRegMap;
2152 CodeGenRegister *SubReg = S.second;
2158 const CodeGenRegister *SubRegister = S.second;
2198 for (const CodeGenRegister *Reg : RC.getMembers()) {
2240 const CodeGenRegister::Vec &Memb1 = RC1->getMembers();
2241 const CodeGenRegister::Vec &Memb2 = RC2->getMembers();
2242 CodeGenRegister::Vec Intersection;
2270 typedef std::map<const CodeGenSubRegIndex *, CodeGenRegister::Vec,
2279 const CodeGenRegister::SubRegMap &SRM = R->getSubRegs();
2320 DenseMap<const CodeGenRegister *, std::vector<const CodeGenRegister *>>
2336 const CodeGenRegister *Sub = Super->getSubRegs().find(&SubIdx)->second;
2356 CodeGenRegister::Vec SubSetVec;
2357 for (const CodeGenRegister *R : SubRC.getMembers()) {
2360 const std::vector<const CodeGenRegister *> &SuperRegs = It->second;
2436 const CodeGenRegister *Reg = getReg(R);
2477 const CodeGenRegister *Reg = getReg(RegRecord);
2490 SetVector<const CodeGenRegister*> Set;
2494 CodeGenRegister *Reg = getReg(Regs[i]);
2503 const CodeGenRegister::SuperRegList &SR = Set[i]->getSuperRegs();
2505 const CodeGenRegister *Super = SR[j];
2510 const CodeGenRegister::SubRegMap &SRM = Super->getSubRegs();