Lines Matching defs:CodeGenSubRegIndex

47 //                             CodeGenSubRegIndex
50 CodeGenSubRegIndex::CodeGenSubRegIndex(const Record *R, unsigned Enum,
64 CodeGenSubRegIndex::CodeGenSubRegIndex(StringRef N, StringRef Nspace,
70 std::string CodeGenSubRegIndex::getQualifiedName() const {
78 void CodeGenSubRegIndex::updateComponents(CodeGenRegBank &RegBank) {
88 CodeGenSubRegIndex *A = RegBank.getSubRegIdx(Comps[0]);
89 CodeGenSubRegIndex *B = RegBank.getSubRegIdx(Comps[1]);
90 CodeGenSubRegIndex *X = A->addComposite(B, this, RegBank.getHwModes());
101 SmallVector<CodeGenSubRegIndex *, 8> IdxParts;
108 LaneBitmask CodeGenSubRegIndex::computeLaneMask() const {
125 void CodeGenSubRegIndex::setConcatenationOf(
126 ArrayRef<CodeGenSubRegIndex *> Parts) {
134 void CodeGenSubRegIndex::computeConcatTransitiveClosure() {
135 for (SmallVectorImpl<CodeGenSubRegIndex *>::iterator I =
139 CodeGenSubRegIndex *SubIdx = *I;
142 for (CodeGenSubRegIndex *SRI : SubIdx->ConcatenationOf)
287 CodeGenSubRegIndex *Idx = ExplicitSubRegIndices[i];
318 SmallVector<CodeGenSubRegIndex *, 8> Indices = ExplicitSubRegIndices;
320 CodeGenSubRegIndex *Idx = Indices[i];
321 const CodeGenSubRegIndex::CompMap &Comps = Idx->getComposites();
358 CodeGenSubRegIndex *Idx = Indices.pop_back_val();
382 DenseMap<const CodeGenRegister *, CodeGenSubRegIndex *>::iterator Ins =
407 SmallVector<CodeGenSubRegIndex *, 8> Parts;
409 CodeGenSubRegIndex &I = *SR->ExplicitSubRegIndices[j];
421 CodeGenSubRegIndex &Idx = *ExplicitSubRegIndices[i];
485 std::queue<std::pair<CodeGenSubRegIndex *, CodeGenRegister *>> SubRegQueue;
486 for (std::pair<CodeGenSubRegIndex *, CodeGenRegister *> P : SubRegs)
493 CodeGenSubRegIndex *SubRegIdx;
509 SmallVector<CodeGenSubRegIndex *, 8> Parts;
515 if (CodeGenSubRegIndex *SubRegIdx = getSubRegIndex(SubReg)) {
533 CodeGenSubRegIndex *Concat =
535 std::pair<CodeGenSubRegIndex *, CodeGenRegister *> NewSubReg = {Concat,
550 CodeGenSubRegIndex *NewIdx = NewSubRegs[i].first;
553 CodeGenSubRegIndex *SubIdx = getSubRegIndex(SubReg.second);
1066 CodeGenRegBank &RegBank, const CodeGenSubRegIndex *SubIdx) const {
1150 void CodeGenRegisterClass::getSuperRegClasses(const CodeGenSubRegIndex *SubIdx,
1259 for (CodeGenSubRegIndex &SRI : SubRegIndices) {
1263 SmallVector<CodeGenSubRegIndex *, 8>(SRI.ConcatenationOf.begin(),
1323 // Create a synthetic CodeGenSubRegIndex without a corresponding Record.
1324 CodeGenSubRegIndex *CodeGenRegBank::createSubRegIndex(StringRef Name,
1330 CodeGenSubRegIndex *CodeGenRegBank::getSubRegIdx(const Record *Def) {
1331 CodeGenSubRegIndex *&Idx = Def2SubRegIdx[Def];
1339 const CodeGenSubRegIndex *
1387 CodeGenSubRegIndex *
1388 CodeGenRegBank::getCompositeSubRegIndex(CodeGenSubRegIndex *A,
1389 CodeGenSubRegIndex *B) {
1391 CodeGenSubRegIndex *Comp = A->compose(B);
1402 CodeGenSubRegIndex *CodeGenRegBank::getConcatSubRegIndex(
1403 const SmallVector<CodeGenSubRegIndex *, 8> &Parts,
1407 for (CodeGenSubRegIndex *Idx : Parts) {
1413 CodeGenSubRegIndex *&Idx = ConcatIdx[Parts];
1431 const CodeGenSubRegIndex *Part = Parts.front();
1469 std::map<const CodeGenSubRegIndex *, RegMap> SubRegAction;
1472 for (std::pair<const CodeGenSubRegIndex *, const CodeGenRegister *> P : SM)
1478 auto compose = [&SubRegAction](const CodeGenSubRegIndex *Sub1,
1479 const CodeGenSubRegIndex *Sub2) {
1507 std::pair<const CodeGenSubRegIndex *, const CodeGenSubRegIndex *>;
1509 for (const CodeGenSubRegIndex &Idx : SubRegIndices)
1525 CodeGenSubRegIndex *Idx1 = I1.first;
1533 CodeGenSubRegIndex *Idx2 = I2.first;
1539 CodeGenSubRegIndex *Idx3 = Reg1.getSubRegIndex(Reg3);
1543 if (CodeGenSubRegIndex *Prev =
1625 const CodeGenSubRegIndex *Composite = C->second;
2179 CodeGenSubRegIndex *SubRegIndex = S.first;
2292 typedef std::map<const CodeGenSubRegIndex *, CodeGenRegister::Vec,