diff --git a/llvm/utils/TableGen/CodeGenRegisters.h b/llvm/utils/TableGen/CodeGenRegisters.h --- a/llvm/utils/TableGen/CodeGenRegisters.h +++ b/llvm/utils/TableGen/CodeGenRegisters.h @@ -353,8 +353,11 @@ // created by TableGen. Record *getDef() const { return TheDef; } + std::string getNamespaceQualification() const; const std::string &getName() const { return Name; } std::string getQualifiedName() const; + std::string getIdName() const; + std::string getQualifiedIdName() const; ArrayRef getValueTypes() const { return VTs; } unsigned getNumValueTypes() const { return VTs.size(); } bool hasType(const ValueTypeByHwMode &VT) const; diff --git a/llvm/utils/TableGen/CodeGenRegisters.cpp b/llvm/utils/TableGen/CodeGenRegisters.cpp --- a/llvm/utils/TableGen/CodeGenRegisters.cpp +++ b/llvm/utils/TableGen/CodeGenRegisters.cpp @@ -965,11 +965,20 @@ return StringRef(A->getName()) < B->getName(); } +std::string CodeGenRegisterClass::getNamespaceQualification() const { + return Namespace.empty() ? "" : (Namespace + "::").str(); +} + std::string CodeGenRegisterClass::getQualifiedName() const { - if (Namespace.empty()) - return getName(); - else - return (Namespace + "::" + getName()).str(); + return getNamespaceQualification() + getName(); +} + +std::string CodeGenRegisterClass::getIdName() const { + return getName() + "RegClassID"; +} + +std::string CodeGenRegisterClass::getQualifiedIdName() const { + return getNamespaceQualification() + getIdName(); } // Compute sub-classes of all register classes. diff --git a/llvm/utils/TableGen/DAGISelMatcherGen.cpp b/llvm/utils/TableGen/DAGISelMatcherGen.cpp --- a/llvm/utils/TableGen/DAGISelMatcherGen.cpp +++ b/llvm/utils/TableGen/DAGISelMatcherGen.cpp @@ -710,7 +710,7 @@ const CodeGenRegisterClass &RC = CGP.getTargetInfo().getRegisterClass(Def); if (RC.EnumValue <= 127) { - std::string Value = getQualifiedName(Def) + "RegClassID"; + std::string Value = RC.getQualifiedIdName(); AddMatcher(new EmitStringIntegerMatcher(Value, MVT::i32)); ResultOps.push_back(NextRecordedOperandNo++); } else { diff --git a/llvm/utils/TableGen/GlobalISelMatchTable.cpp b/llvm/utils/TableGen/GlobalISelMatchTable.cpp --- a/llvm/utils/TableGen/GlobalISelMatchTable.cpp +++ b/llvm/utils/TableGen/GlobalISelMatchTable.cpp @@ -1104,7 +1104,7 @@ << MatchTable::Comment("MI") << MatchTable::IntValue(InsnVarID) << MatchTable::Comment("Op") << MatchTable::IntValue(OpIdx) << MatchTable::Comment("RC") - << MatchTable::NamedValue(RC.getQualifiedName() + "RegClassID") + << MatchTable::NamedValue(RC.getQualifiedIdName()) << MatchTable::LineBreak; } @@ -2000,7 +2000,7 @@ Table << MatchTable::Opcode("GIR_ConstrainOperandRC") << MatchTable::Comment("InsnID") << MatchTable::IntValue(InsnID) << MatchTable::Comment("Op") << MatchTable::IntValue(OpIdx) - << MatchTable::NamedValue(RC.getQualifiedName() + "RegClassID") + << MatchTable::NamedValue(RC.getQualifiedIdName()) << MatchTable::LineBreak; } diff --git a/llvm/utils/TableGen/RegisterBankEmitter.cpp b/llvm/utils/TableGen/RegisterBankEmitter.cpp --- a/llvm/utils/TableGen/RegisterBankEmitter.cpp +++ b/llvm/utils/TableGen/RegisterBankEmitter.cpp @@ -231,9 +231,7 @@ for (const auto &RCs : RCsGroupedByWord) { OS << " // " << LowestIdxInWord << "-" << (LowestIdxInWord + 31) << "\n"; for (const auto &RC : RCs) { - std::string QualifiedRegClassID = - (Twine(RC->Namespace) + "::" + RC->getName() + "RegClassID").str(); - OS << " (1u << (" << QualifiedRegClassID << " - " + OS << " (1u << (" << RC->getQualifiedIdName() << " - " << LowestIdxInWord << ")) |\n"; } OS << " 0,\n"; diff --git a/llvm/utils/TableGen/RegisterInfoEmitter.cpp b/llvm/utils/TableGen/RegisterInfoEmitter.cpp --- a/llvm/utils/TableGen/RegisterInfoEmitter.cpp +++ b/llvm/utils/TableGen/RegisterInfoEmitter.cpp @@ -146,8 +146,7 @@ OS << "namespace " << Namespace << " {\n"; OS << "enum {\n"; for (const auto &RC : RegisterClasses) - OS << " " << RC.getName() << "RegClassID" - << " = " << RC.EnumValue << ",\n"; + OS << " " << RC.getIdName() << " = " << RC.EnumValue << ",\n"; OS << "\n};\n"; if (!Namespace.empty()) OS << "} // end namespace " << Namespace << "\n\n"; @@ -1072,8 +1071,8 @@ RegSize = RC.RSI.getSimple().RegSize; OS << " { " << RCName << ", " << RCBitsName << ", " << RegClassStrings.get(RC.getName()) << ", " << RC.getOrder().size() - << ", " << RCBitsSize << ", " << RC.getQualifiedName() + "RegClassID" - << ", " << RegSize << ", " << RC.CopyCost << ", " + << ", " << RCBitsSize << ", " << RC.getQualifiedIdName() << ", " + << RegSize << ", " << RC.CopyCost << ", " << (RC.Allocatable ? "true" : "false") << " },\n"; } @@ -1621,8 +1620,7 @@ } OS << " " - << (BaseRC ? BaseRC->getQualifiedName() + "RegClassID" - : "InvalidRegClassID") + << (BaseRC ? BaseRC->getQualifiedIdName() : "InvalidRegClassID") << ", // " << Reg.getName() << "\n"; } OS << " };\n\n"