diff options
author | Evan Cheng <evan.cheng@apple.com> | 2011-06-27 23:47:21 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2011-06-27 23:47:21 +0000 |
commit | 4db3748fcf39ac0001b9d02eb6bf803e309a5c19 (patch) | |
tree | dc0950f307e2ef9e03b94103dd26a47266d2a893 /utils/TableGen/InstrInfoEmitter.cpp | |
parent | f10711fb8c8b5596e973bcc27b5af6203fec34b4 (diff) | |
download | llvm-4db3748fcf39ac0001b9d02eb6bf803e309a5c19.tar.gz llvm-4db3748fcf39ac0001b9d02eb6bf803e309a5c19.tar.bz2 llvm-4db3748fcf39ac0001b9d02eb6bf803e309a5c19.tar.xz |
Remove RCBarriers from TargetInstrDesc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133964 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/InstrInfoEmitter.cpp')
-rw-r--r-- | utils/TableGen/InstrInfoEmitter.cpp | 56 |
1 files changed, 1 insertions, 55 deletions
diff --git a/utils/TableGen/InstrInfoEmitter.cpp b/utils/TableGen/InstrInfoEmitter.cpp index 6a96696b24..22c100451e 100644 --- a/utils/TableGen/InstrInfoEmitter.cpp +++ b/utils/TableGen/InstrInfoEmitter.cpp @@ -27,14 +27,6 @@ static void PrintDefList(const std::vector<Record*> &Uses, OS << "0 };\n"; } -static void PrintBarriers(std::vector<Record*> &Barriers, - unsigned Num, raw_ostream &OS) { - OS << "static const TargetRegisterClass* Barriers" << Num << "[] = { "; - for (unsigned i = 0, e = Barriers.size(); i != e; ++i) - OS << "&" << getQualifiedName(Barriers[i]) << "RegClass, "; - OS << "NULL };\n"; -} - //===----------------------------------------------------------------------===// // Instruction Itinerary Information. //===----------------------------------------------------------------------===// @@ -158,33 +150,6 @@ void InstrInfoEmitter::EmitOperandInfo(raw_ostream &OS, } } -void InstrInfoEmitter::DetectRegisterClassBarriers(std::vector<Record*> &Defs, - const std::vector<CodeGenRegisterClass> &RCs, - std::vector<Record*> &Barriers) { - std::set<Record*> DefSet; - unsigned NumDefs = Defs.size(); - for (unsigned i = 0; i < NumDefs; ++i) - DefSet.insert(Defs[i]); - - for (unsigned i = 0, e = RCs.size(); i != e; ++i) { - const CodeGenRegisterClass &RC = RCs[i]; - ArrayRef<Record*> Order = RC.getOrder(); - if (Order.size() > NumDefs) - continue; // Can't possibly clobber this RC. - - bool Clobber = true; - for (unsigned j = 0; j < Order.size(); ++j) { - Record *Reg = Order[j]; - if (!DefSet.count(Reg)) { - Clobber = false; - break; - } - } - if (Clobber) - Barriers.push_back(RC.TheDef); - } -} - //===----------------------------------------------------------------------===// // Main Output. //===----------------------------------------------------------------------===// @@ -199,14 +164,10 @@ void InstrInfoEmitter::run(raw_ostream &OS) { CodeGenTarget &Target = CDP.getTargetInfo(); const std::string &TargetName = Target.getName(); Record *InstrInfo = Target.getInstructionSet(); - const std::vector<CodeGenRegisterClass> &RCs = Target.getRegisterClasses(); // Keep track of all of the def lists we have emitted already. std::map<std::vector<Record*>, unsigned> EmittedLists; unsigned ListNumber = 0; - std::map<std::vector<Record*>, unsigned> EmittedBarriers; - unsigned BarrierNumber = 0; - std::map<Record*, unsigned> BarriersMap; // Emit all of the instruction's implicit uses and defs. for (CodeGenTarget::inst_iterator II = Target.inst_begin(), @@ -219,14 +180,6 @@ void InstrInfoEmitter::run(raw_ostream &OS) { } std::vector<Record*> Defs = Inst->getValueAsListOfDefs("Defs"); if (!Defs.empty()) { - std::vector<Record*> RCBarriers; - DetectRegisterClassBarriers(Defs, RCs, RCBarriers); - if (!RCBarriers.empty()) { - unsigned &IB = EmittedBarriers[RCBarriers]; - if (!IB) PrintBarriers(RCBarriers, IB = ++BarrierNumber, OS); - BarriersMap.insert(std::make_pair(Inst, IB)); - } - unsigned &IL = EmittedLists[Defs]; if (!IL) PrintDefList(Defs, IL = ++ListNumber, OS); } @@ -246,7 +199,7 @@ void InstrInfoEmitter::run(raw_ostream &OS) { for (unsigned i = 0, e = NumberedInstructions.size(); i != e; ++i) emitRecord(*NumberedInstructions[i], i, InstrInfo, EmittedLists, - BarriersMap, OperandInfoIDs, OS); + OperandInfoIDs, OS); OS << "};\n"; OS << "} // End llvm namespace \n"; } @@ -254,7 +207,6 @@ void InstrInfoEmitter::run(raw_ostream &OS) { void InstrInfoEmitter::emitRecord(const CodeGenInstruction &Inst, unsigned Num, Record *InstrInfo, std::map<std::vector<Record*>, unsigned> &EmittedLists, - std::map<Record*, unsigned> &BarriersMap, const OperandInfoMapTy &OpInfo, raw_ostream &OS) { int MinOperands = 0; @@ -322,12 +274,6 @@ void InstrInfoEmitter::emitRecord(const CodeGenInstruction &Inst, unsigned Num, else OS << "ImplicitList" << EmittedLists[DefList] << ", "; - std::map<Record*, unsigned>::iterator BI = BarriersMap.find(Inst.TheDef); - if (BI == BarriersMap.end()) - OS << "NULL, "; - else - OS << "Barriers" << BI->second << ", "; - // Emit the operand info. std::vector<std::string> OperandInfo = GetOperandInfo(Inst); if (OperandInfo.empty()) |