diff options
author | Jim Laskey <jlaskey@mac.com> | 2007-01-26 17:29:20 +0000 |
---|---|---|
committer | Jim Laskey <jlaskey@mac.com> | 2007-01-26 17:29:20 +0000 |
commit | a683f9ba1356e92a5e7243d9f80fe8a8b6f737c8 (patch) | |
tree | f1968755ecfab5c1612dba797cfe0c8e3631cb94 | |
parent | 9373d272b2183bf62083773e22ad6b1272cb089a (diff) | |
download | llvm-a683f9ba1356e92a5e7243d9f80fe8a8b6f737c8.tar.gz llvm-a683f9ba1356e92a5e7243d9f80fe8a8b6f737c8.tar.bz2 llvm-a683f9ba1356e92a5e7243d9f80fe8a8b6f737c8.tar.xz |
Files missing from LABEL check in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33539 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | utils/TableGen/AsmWriterEmitter.cpp | 5 | ||||
-rw-r--r-- | utils/TableGen/CodeEmitterGen.cpp | 12 | ||||
-rw-r--r-- | utils/TableGen/CodeGenTarget.cpp | 9 | ||||
-rw-r--r-- | utils/TableGen/DAGISelEmitter.cpp | 11 | ||||
-rw-r--r-- | utils/TableGen/InstrInfoEmitter.cpp | 4 |
5 files changed, 34 insertions, 7 deletions
diff --git a/utils/TableGen/AsmWriterEmitter.cpp b/utils/TableGen/AsmWriterEmitter.cpp index 24d2eef07a..4a72e76997 100644 --- a/utils/TableGen/AsmWriterEmitter.cpp +++ b/utils/TableGen/AsmWriterEmitter.cpp @@ -344,7 +344,7 @@ FindUniqueOperandCommands(std::vector<std::string> &UniqueOperandCommands, for (unsigned i = 0, e = NumberedInstructions.size(); i != e; ++i) { const AsmWriterInst *Inst = getAsmWriterInstByID(i); - if (Inst == 0) continue; // PHI, INLINEASM, etc. + if (Inst == 0) continue; // PHI, INLINEASM, LABEL, etc. std::string Command; if (Inst->Operands.empty()) @@ -621,6 +621,9 @@ void AsmWriterEmitter::run(std::ostream &O) { O << " if (MI->getOpcode() == TargetInstrInfo::INLINEASM) {\n" << " printInlineAsm(MI);\n" << " return true;\n" + << " } else if (MI->getOpcode() == TargetInstrInfo::LABEL) {\n" + << " printLabel(MI);\n" + << " return true;\n" << " }\n\n"; O << " // Emit the opcode for the instruction.\n" diff --git a/utils/TableGen/CodeEmitterGen.cpp b/utils/TableGen/CodeEmitterGen.cpp index 861c6b0e34..300a1009a7 100644 --- a/utils/TableGen/CodeEmitterGen.cpp +++ b/utils/TableGen/CodeEmitterGen.cpp @@ -24,7 +24,9 @@ void CodeEmitterGen::reverseBits(std::vector<Record*> &Insts) { for (std::vector<Record*>::iterator I = Insts.begin(), E = Insts.end(); I != E; ++I) { Record *R = *I; - if (R->getName() == "PHI" || R->getName() == "INLINEASM") continue; + if (R->getName() == "PHI" || + R->getName() == "INLINEASM" || + R->getName() == "LABEL") continue; BitsInit *BI = R->getValueAsBitsInit("Inst"); @@ -93,7 +95,9 @@ void CodeEmitterGen::run(std::ostream &o) { if (IN != NumberedInstructions.begin()) o << ",\n"; - if (R->getName() == "PHI" || R->getName() == "INLINEASM") { + if (R->getName() == "PHI" || + R->getName() == "INLINEASM" || + R->getName() == "LABEL") { o << " 0U"; continue; } @@ -121,7 +125,9 @@ void CodeEmitterGen::run(std::ostream &o) { const std::string &InstName = R->getName(); std::string Case(""); - if (InstName == "PHI" || InstName == "INLINEASM") continue; + if (InstName == "PHI" || + InstName == "INLINEASM" || + InstName == "LABEL") continue; BitsInit *BI = R->getValueAsBitsInit("Inst"); const std::vector<RecordVal> &Vals = R->getValues(); diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp index e6ac2c3573..688ed0f924 100644 --- a/utils/TableGen/CodeGenTarget.cpp +++ b/utils/TableGen/CodeGenTarget.cpp @@ -258,11 +258,18 @@ getInstructionsByEnumValue(std::vector<const CodeGenInstruction*> if (I == Instructions.end()) throw "Could not find 'INLINEASM' instruction!"; const CodeGenInstruction *INLINEASM = &I->second; + I = getInstructions().find("LABEL"); + if (I == Instructions.end()) throw "Could not find 'LABEL' instruction!"; + const CodeGenInstruction *LABEL = &I->second; + // Print out the rest of the instructions now. NumberedInstructions.push_back(PHI); NumberedInstructions.push_back(INLINEASM); + NumberedInstructions.push_back(LABEL); for (inst_iterator II = inst_begin(), E = inst_end(); II != E; ++II) - if (&II->second != PHI &&&II->second != INLINEASM) + if (&II->second != PHI && + &II->second != INLINEASM && + &II->second != LABEL) NumberedInstructions.push_back(&II->second); } diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index fbd0a9660b..6c9825de0f 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -3688,6 +3688,14 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) { << " return New.Val;\n" << "}\n\n"; + OS << "SDNode *Select_LABEL(const SDOperand &N) {\n" + << " SDOperand Chain = N.getOperand(0);\n" + << " SDOperand N1 = N.getOperand(1);\n" + << " AddToISelQueue(Chain);\n" + << " return CurDAG->getTargetNode(TargetInstrInfo::LABEL,\n" + << " MVT::Other, N1, Chain);\n" + << "}\n\n"; + OS << "// The main instruction selector code.\n" << "SDNode *SelectCode(SDOperand N) {\n" << " if (N.getOpcode() >= ISD::BUILTIN_OP_END &&\n" @@ -3722,7 +3730,8 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) { << " AddToISelQueue(N.getOperand(i));\n" << " return NULL;\n" << " }\n" - << " case ISD::INLINEASM: return Select_INLINEASM(N);\n"; + << " case ISD::INLINEASM: return Select_INLINEASM(N);\n" + << " case ISD::LABEL: return Select_LABEL(N);\n"; // Loop over all of the case statements, emiting a call to each method we diff --git a/utils/TableGen/InstrInfoEmitter.cpp b/utils/TableGen/InstrInfoEmitter.cpp index 3d4da0ee28..7ea85980da 100644 --- a/utils/TableGen/InstrInfoEmitter.cpp +++ b/utils/TableGen/InstrInfoEmitter.cpp @@ -315,7 +315,9 @@ void InstrInfoEmitter::emitShiftedValue(Record *R, StringInit *Val, if (RV == 0 || RV->getValue() == 0) { // This isn't an error if this is a builtin instruction. - if (R->getName() != "PHI" && R->getName() != "INLINEASM") + if (R->getName() != "PHI" && + R->getName() != "INLINEASM" && + R->getName() != "LABEL") throw R->getName() + " doesn't have a field named '" + Val->getValue() + "'!"; return; |