From 53733cdb23e73bdb6a45fdbf93aa8e40d603217d Mon Sep 17 00:00:00 2001 From: Jim Grosbach Date: Thu, 1 Mar 2012 17:30:35 +0000 Subject: [PATCH] Revert "Emit the SubRegTable with the smallest possible integer type." This reverts commit 151760. We want to move getSubReg() from TargetRegisterInfo into MCRegisterInfo, but to do that, the type of the lookup table needs to be the same for all targets. llvm-svn: 151814 --- llvm/utils/TableGen/AsmMatcherEmitter.cpp | 9 +++++++++ llvm/utils/TableGen/CodeGenTarget.cpp | 8 -------- llvm/utils/TableGen/CodeGenTarget.h | 4 ---- llvm/utils/TableGen/RegisterInfoEmitter.cpp | 4 ++-- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/llvm/utils/TableGen/AsmMatcherEmitter.cpp b/llvm/utils/TableGen/AsmMatcherEmitter.cpp index 88e787cfd211..80467ff3dc7e 100644 --- a/llvm/utils/TableGen/AsmMatcherEmitter.cpp +++ b/llvm/utils/TableGen/AsmMatcherEmitter.cpp @@ -2008,6 +2008,15 @@ static bool EmitMnemonicAliases(raw_ostream &OS, const AsmMatcherInfo &Info) { return true; } +static const char *getMinimalTypeForRange(uint64_t Range) { + assert(Range < 0xFFFFFFFFULL && "Enum too large"); + if (Range > 0xFFFF) + return "uint32_t"; + if (Range > 0xFF) + return "uint16_t"; + return "uint8_t"; +} + static void EmitCustomOperandParsing(raw_ostream &OS, CodeGenTarget &Target, const AsmMatcherInfo &Info, StringRef ClassName) { // Emit the static custom operand parsing table; diff --git a/llvm/utils/TableGen/CodeGenTarget.cpp b/llvm/utils/TableGen/CodeGenTarget.cpp index 1eb1a54e5653..cf6793570a26 100644 --- a/llvm/utils/TableGen/CodeGenTarget.cpp +++ b/llvm/utils/TableGen/CodeGenTarget.cpp @@ -108,14 +108,6 @@ std::string llvm::getQualifiedName(const Record *R) { return Namespace + "::" + R->getName(); } -const char *llvm::getMinimalTypeForRange(uint64_t Range) { - assert(Range < 0xFFFFFFFFULL && "Enum too large"); - if (Range > 0xFFFF) - return "uint32_t"; - if (Range > 0xFF) - return "uint16_t"; - return "uint8_t"; -} /// getTarget - Return the current instance of the Target class. /// diff --git a/llvm/utils/TableGen/CodeGenTarget.h b/llvm/utils/TableGen/CodeGenTarget.h index a0df08bf9546..85463da59731 100644 --- a/llvm/utils/TableGen/CodeGenTarget.h +++ b/llvm/utils/TableGen/CodeGenTarget.h @@ -58,10 +58,6 @@ std::string getEnumName(MVT::SimpleValueType T); /// namespace qualifier if the record contains one. std::string getQualifiedName(const Record *R); -/// getMinimalTypeForRange - Helper method to get the minimum data type required -/// to represent Range. -const char *getMinimalTypeForRange(uint64_t Range); - /// CodeGenTarget - This class corresponds to the Target class in the .td files. /// class CodeGenTarget { diff --git a/llvm/utils/TableGen/RegisterInfoEmitter.cpp b/llvm/utils/TableGen/RegisterInfoEmitter.cpp index 949213b0a1ef..7171e50dc35c 100644 --- a/llvm/utils/TableGen/RegisterInfoEmitter.cpp +++ b/llvm/utils/TableGen/RegisterInfoEmitter.cpp @@ -733,8 +733,8 @@ RegisterInfoEmitter::runTargetDesc(raw_ostream &OS, CodeGenTarget &Target, // Emit the data table for getSubReg(). if (SubRegIndices.size()) { - OS << "static const " << getMinimalTypeForRange(Regs.size()) << ' ' - << TargetName << "SubRegTable[][" << SubRegIndices.size() << "] = {\n"; + OS << "static const unsigned short " << TargetName << "SubRegTable[][" + << SubRegIndices.size() << "] = {\n"; for (unsigned i = 0, e = Regs.size(); i != e; ++i) { const CodeGenRegister::SubRegMap &SRM = Regs[i]->getSubRegs(); OS << " /* " << Regs[i]->TheDef->getName() << " */\n";