[llvm] r340821 - [llvm-mca] Pass an instruction reference when notifying event listeners about reserved/released buffer resources. NFC

Andrea Di Biagio via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 28 06:14:43 PDT 2018


Author: adibiagio
Date: Tue Aug 28 06:14:42 2018
New Revision: 340821

URL: http://llvm.org/viewvc/llvm-project?rev=340821&view=rev
Log:
[llvm-mca] Pass an instruction reference when notifying event listeners about reserved/released buffer resources. NFC

Modified:
    llvm/trunk/tools/llvm-mca/Views/SchedulerStatistics.cpp
    llvm/trunk/tools/llvm-mca/Views/SchedulerStatistics.h
    llvm/trunk/tools/llvm-mca/include/HWEventListener.h
    llvm/trunk/tools/llvm-mca/include/Stages/ExecuteStage.h
    llvm/trunk/tools/llvm-mca/lib/Stages/ExecuteStage.cpp

Modified: llvm/trunk/tools/llvm-mca/Views/SchedulerStatistics.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/Views/SchedulerStatistics.cpp?rev=340821&r1=340820&r2=340821&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/Views/SchedulerStatistics.cpp (original)
+++ llvm/trunk/tools/llvm-mca/Views/SchedulerStatistics.cpp Tue Aug 28 06:14:42 2018
@@ -25,7 +25,8 @@ void SchedulerStatistics::onEvent(const
     ++NumIssued;
 }
 
-void SchedulerStatistics::onReservedBuffers(ArrayRef<unsigned> Buffers) {
+void SchedulerStatistics::onReservedBuffers(const InstRef & /* unused */,
+                                            ArrayRef<unsigned> Buffers) {
   for (const unsigned Buffer : Buffers) {
     BufferUsage &BU = Usage[Buffer];
     BU.SlotsInUse++;
@@ -33,7 +34,8 @@ void SchedulerStatistics::onReservedBuff
   }
 }
 
-void SchedulerStatistics::onReleasedBuffers(ArrayRef<unsigned> Buffers) {
+void SchedulerStatistics::onReleasedBuffers(const InstRef & /* unused */,
+                                            ArrayRef<unsigned> Buffers) {
   for (const unsigned Buffer : Buffers)
     Usage[Buffer].SlotsInUse--;
 }

Modified: llvm/trunk/tools/llvm-mca/Views/SchedulerStatistics.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/Views/SchedulerStatistics.h?rev=340821&r1=340820&r2=340821&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/Views/SchedulerStatistics.h (original)
+++ llvm/trunk/tools/llvm-mca/Views/SchedulerStatistics.h Tue Aug 28 06:14:42 2018
@@ -77,11 +77,13 @@ public:
 
   // Increases the number of used scheduler queue slots of every buffered
   // resource in the Buffers set.
-  void onReservedBuffers(llvm::ArrayRef<unsigned> Buffers) override;
+  void onReservedBuffers(const InstRef &IR,
+                         llvm::ArrayRef<unsigned> Buffers) override;
 
   // Decreases by one the number of used scheduler queue slots of every
   // buffered resource in the Buffers set.
-  void onReleasedBuffers(llvm::ArrayRef<unsigned> Buffers) override;
+  void onReleasedBuffers(const InstRef &IR,
+                         llvm::ArrayRef<unsigned> Buffers) override;
 
   void printView(llvm::raw_ostream &OS) const override;
 };

Modified: llvm/trunk/tools/llvm-mca/include/HWEventListener.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/include/HWEventListener.h?rev=340821&r1=340820&r2=340821&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/include/HWEventListener.h (original)
+++ llvm/trunk/tools/llvm-mca/include/HWEventListener.h Tue Aug 28 06:14:42 2018
@@ -127,9 +127,11 @@ public:
   virtual void onResourceAvailable(const ResourceRef &RRef) {}
 
   // Events generated by the Scheduler when buffered resources are
-  // consumed/freed.
-  virtual void onReservedBuffers(llvm::ArrayRef<unsigned> Buffers) {}
-  virtual void onReleasedBuffers(llvm::ArrayRef<unsigned> Buffers) {}
+  // consumed/freed for an instruction.
+  virtual void onReservedBuffers(const InstRef &Inst,
+                                 llvm::ArrayRef<unsigned> Buffers) {}
+  virtual void onReleasedBuffers(const InstRef &Inst,
+                                 llvm::ArrayRef<unsigned> Buffers) {}
 
   virtual ~HWEventListener() {}
 

Modified: llvm/trunk/tools/llvm-mca/include/Stages/ExecuteStage.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/include/Stages/ExecuteStage.h?rev=340821&r1=340820&r2=340821&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/include/Stages/ExecuteStage.h (original)
+++ llvm/trunk/tools/llvm-mca/include/Stages/ExecuteStage.h Tue Aug 28 06:14:42 2018
@@ -66,11 +66,8 @@ public:
   void notifyInstructionReady(const InstRef &IR);
   void notifyResourceAvailable(const ResourceRef &RR);
 
-  // Notify listeners that buffered resources were consumed.
-  void notifyReservedBuffers(llvm::ArrayRef<uint64_t> Buffers);
-
-  // Notify listeners that buffered resources were freed.
-  void notifyReleasedBuffers(llvm::ArrayRef<uint64_t> Buffers);
+  // Notify listeners that buffered resources have been consumed or freed.
+  void notifyReservedOrReleasedBuffers(const InstRef &IR, bool Reserved);
 };
 
 } // namespace mca

Modified: llvm/trunk/tools/llvm-mca/lib/Stages/ExecuteStage.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/lib/Stages/ExecuteStage.cpp?rev=340821&r1=340820&r2=340821&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/lib/Stages/ExecuteStage.cpp (original)
+++ llvm/trunk/tools/llvm-mca/lib/Stages/ExecuteStage.cpp Tue Aug 28 06:14:42 2018
@@ -57,12 +57,11 @@ Error ExecuteStage::issueInstruction(Ins
   SmallVector<InstRef, 4> Ready;
   HWS.issueInstruction(IR, Used, Ready);
 
-  const InstrDesc &Desc = IR.getInstruction()->getDesc();
-  notifyReleasedBuffers(Desc.Buffers);
+  notifyReservedOrReleasedBuffers(IR, /* Reserved */false);
   notifyInstructionIssued(IR, Used);
   if (IR.getInstruction()->isExecuted()) {
     notifyInstructionExecuted(IR);
-    //FIXME: add a buffer of executed instructions.
+    // FIXME: add a buffer of executed instructions.
     if (Error S = moveToTheNextStage(IR))
       return S;
   }
@@ -97,7 +96,7 @@ Error ExecuteStage::cycleStart() {
 
   for (InstRef &IR : Executed) {
     notifyInstructionExecuted(IR);
-    //FIXME: add a buffer of executed instructions.
+    // FIXME: add a buffer of executed instructions.
     if (Error S = moveToTheNextStage(IR))
       return S;
   }
@@ -120,9 +119,8 @@ Error ExecuteStage::execute(InstRef &IR)
   // BufferSize=0 as reserved. Resources with a buffer size of zero will only
   // be released after MCIS is issued, and all the ResourceCycles for those
   // units have been consumed.
-  const InstrDesc &Desc = IR.getInstruction()->getDesc();
   HWS.dispatch(IR);
-  notifyReservedBuffers(Desc.Buffers);
+  notifyReservedOrReleasedBuffers(IR, /* Reserved */true);
   if (!HWS.isReady(IR))
     return ErrorSuccess();
 
@@ -170,26 +168,23 @@ void ExecuteStage::notifyInstructionIssu
   notifyEvent<HWInstructionEvent>(HWInstructionIssuedEvent(IR, Used));
 }
 
-void ExecuteStage::notifyReservedBuffers(ArrayRef<uint64_t> Buffers) {
-  if (Buffers.empty())
+void ExecuteStage::notifyReservedOrReleasedBuffers(const InstRef &IR,
+                                                   bool Reserved) {
+  const InstrDesc &Desc = IR.getInstruction()->getDesc();
+  if (Desc.Buffers.empty())
     return;
 
-  SmallVector<unsigned, 4> BufferIDs(Buffers.begin(), Buffers.end());
-  std::transform(Buffers.begin(), Buffers.end(), BufferIDs.begin(),
+  SmallVector<unsigned, 4> BufferIDs(Desc.Buffers.begin(), Desc.Buffers.end());
+  std::transform(Desc.Buffers.begin(), Desc.Buffers.end(), BufferIDs.begin(),
                  [&](uint64_t Op) { return HWS.getResourceID(Op); });
-  for (HWEventListener *Listener : getListeners())
-    Listener->onReservedBuffers(BufferIDs);
-}
-
-void ExecuteStage::notifyReleasedBuffers(ArrayRef<uint64_t> Buffers) {
-  if (Buffers.empty())
+  if (Reserved) {
+    for (HWEventListener *Listener : getListeners())
+      Listener->onReservedBuffers(IR, BufferIDs);
     return;
+  }
 
-  SmallVector<unsigned, 4> BufferIDs(Buffers.begin(), Buffers.end());
-  std::transform(Buffers.begin(), Buffers.end(), BufferIDs.begin(),
-                 [&](uint64_t Op) { return HWS.getResourceID(Op); });
   for (HWEventListener *Listener : getListeners())
-    Listener->onReleasedBuffers(BufferIDs);
+    Listener->onReleasedBuffers(IR, BufferIDs);
 }
 
 } // namespace mca




More information about the llvm-commits mailing list