OSDN Git Service

[llvm-mca] remove unused argument from method InstrBuilder::createInstrDescImpl.
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Fri, 4 May 2018 13:10:10 +0000 (13:10 +0000)
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Fri, 4 May 2018 13:10:10 +0000 (13:10 +0000)
We don't need to pass the instruction index to the method that constructs new
instruction descriptors.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@331516 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-mca/Backend.cpp
tools/llvm-mca/InstrBuilder.cpp
tools/llvm-mca/InstrBuilder.h
tools/llvm-mca/InstructionTables.cpp

index dbe2012..f000837 100644 (file)
@@ -33,8 +33,7 @@ void Backend::runCycle(unsigned Cycle) {
 
   while (SM.hasNext()) {
     InstRef IR = SM.peekNext();
-    std::unique_ptr<Instruction> NewIS =
-        IB.createInstruction(IR.first, *IR.second);
+    std::unique_ptr<Instruction> NewIS = IB.createInstruction(*IR.second);
     const InstrDesc &Desc = NewIS->getDesc();
     if (!DU->isAvailable(Desc.NumMicroOps) ||
         !DU->canDispatch(IR.first, *NewIS))
index c45ec7d..193daf4 100644 (file)
@@ -366,7 +366,7 @@ static void populateReads(InstrDesc &ID, const MCInst &MCI,
   }
 }
 
-void InstrBuilder::createInstrDescImpl(const MCInst &MCI) {
+const InstrDesc &InstrBuilder::createInstrDescImpl(const MCInst &MCI) {
   assert(STI.getSchedModel().hasInstrSchedModel() &&
          "Itineraries are not yet supported!");
 
@@ -376,8 +376,8 @@ void InstrBuilder::createInstrDescImpl(const MCInst &MCI) {
   const MCSchedModel &SM = STI.getSchedModel();
 
   // Then obtain the scheduling class information from the instruction.
-  const MCSchedClassDesc &SCDesc =
-      *SM.getSchedClassDesc(MCDesc.getSchedClass());
+  unsigned SchedClassID = MCDesc.getSchedClass();
+  const MCSchedClassDesc &SCDesc = *SM.getSchedClassDesc(SchedClassID);
 
   // Create a new empty descriptor.
   std::unique_ptr<InstrDesc> ID = llvm::make_unique<InstrDesc>();
@@ -417,16 +417,17 @@ void InstrBuilder::createInstrDescImpl(const MCInst &MCI) {
 
   // Now add the new descriptor.
   Descriptors[Opcode] = std::move(ID);
+  return *Descriptors[Opcode];
 }
 
 const InstrDesc &InstrBuilder::getOrCreateInstrDesc(const MCInst &MCI) {
   if (Descriptors.find_as(MCI.getOpcode()) == Descriptors.end())
-    createInstrDescImpl(MCI);
+    return createInstrDescImpl(MCI);
   return *Descriptors[MCI.getOpcode()];
 }
 
 std::unique_ptr<Instruction>
-InstrBuilder::createInstruction(unsigned Idx, const MCInst &MCI) {
+InstrBuilder::createInstruction(const MCInst &MCI) {
   const InstrDesc &D = getOrCreateInstrDesc(MCI);
   std::unique_ptr<Instruction> NewIS = llvm::make_unique<Instruction>(D);
 
index 30af1bf..c22b7dc 100644 (file)
@@ -41,7 +41,10 @@ class InstrBuilder {
 
   llvm::DenseMap<unsigned short, std::unique_ptr<const InstrDesc>> Descriptors;
 
-  void createInstrDescImpl(const llvm::MCInst &MCI);
+  const InstrDesc &createInstrDescImpl(const llvm::MCInst &MCI);
+
+  InstrBuilder(const InstrBuilder &) = delete;
+  InstrBuilder &operator=(const InstrBuilder &) = delete;
 
 public:
   InstrBuilder(const llvm::MCSubtargetInfo &sti, const llvm::MCInstrInfo &mcii)
@@ -59,8 +62,7 @@ public:
     return ProcResourceMasks;
   }
 
-  std::unique_ptr<Instruction> createInstruction(unsigned Idx,
-                                                 const llvm::MCInst &MCI);
+  std::unique_ptr<Instruction> createInstruction(const llvm::MCInst &MCI);
 };
 } // namespace mca
 
index 18691ad..ae96568 100644 (file)
@@ -31,7 +31,7 @@ void InstructionTables::run() {
   while (S.hasNext()) {
     UsedResources.clear();
     InstRef IR = S.peekNext();
-    std::unique_ptr<Instruction> Inst = IB.createInstruction(IR.first, *IR.second);
+    std::unique_ptr<Instruction> Inst = IB.createInstruction(*IR.second);
     const InstrDesc &Desc = Inst->getDesc();
     // Now identify the resources consumed by this instruction.
     for (const std::pair<uint64_t, ResourceUsage> Resource : Desc.Resources) {