[llvm] r329792 - [llvm-mca] Move the logic that prints scheduler statistics from BackendStatistics to its own view.

Andrea Di Biagio via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 11 04:37:46 PDT 2018


Author: adibiagio
Date: Wed Apr 11 04:37:46 2018
New Revision: 329792

URL: http://llvm.org/viewvc/llvm-project?rev=329792&view=rev
Log:
[llvm-mca] Move the logic that prints scheduler statistics from BackendStatistics to its own view.

Added flag -scheduler-stats to print scheduler related statistics.

Added:
    llvm/trunk/tools/llvm-mca/SchedulerStatistics.cpp
    llvm/trunk/tools/llvm-mca/SchedulerStatistics.h
Modified:
    llvm/trunk/docs/CommandGuide/llvm-mca.rst
    llvm/trunk/test/tools/llvm-mca/AArch64/Exynos/scheduler-queue-usage.s
    llvm/trunk/test/tools/llvm-mca/X86/BtVer2/scheduler-queue-usage.s
    llvm/trunk/tools/llvm-mca/BackendStatistics.cpp
    llvm/trunk/tools/llvm-mca/BackendStatistics.h
    llvm/trunk/tools/llvm-mca/CMakeLists.txt
    llvm/trunk/tools/llvm-mca/llvm-mca.cpp

Modified: llvm/trunk/docs/CommandGuide/llvm-mca.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/CommandGuide/llvm-mca.rst?rev=329792&r1=329791&r2=329792&view=diff
==============================================================================
--- llvm/trunk/docs/CommandGuide/llvm-mca.rst (original)
+++ llvm/trunk/docs/CommandGuide/llvm-mca.rst Wed Apr 11 04:37:46 2018
@@ -139,8 +139,7 @@ option specifies "``-``", then the outpu
 .. option:: -verbose
 
   Enable verbose output. In particular, this flag enables a number of extra
-  statistics and performance counters for the dispatch logic, the reorder
-  buffer, the retire control unit and the register file.
+  statistics and performance counters for the retire control unit.
 
 .. option:: -timeline
 
@@ -170,6 +169,11 @@ option specifies "``-``", then the outpu
   dispatch events, as well as static/dynamic dispatch stall events. This view
   is disabled by default.
 
+.. option:: -scheduler-stats
+
+  Enable extra scheduler statistics. This view collects and analyzes instruction
+  issue events. This view is disabled by default.
+
 .. option:: -instruction-info
 
   Enable the instruction info view. This is enabled by default.

Modified: llvm/trunk/test/tools/llvm-mca/AArch64/Exynos/scheduler-queue-usage.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/AArch64/Exynos/scheduler-queue-usage.s?rev=329792&r1=329791&r2=329792&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/AArch64/Exynos/scheduler-queue-usage.s (original)
+++ llvm/trunk/test/tools/llvm-mca/AArch64/Exynos/scheduler-queue-usage.s Wed Apr 11 04:37:46 2018
@@ -1,7 +1,13 @@
-# RUN: llvm-mca -march=aarch64 -mcpu=exynos-m3 -iterations=1 -verbose -resource-pressure=false -instruction-info=false < %s | FileCheck %s -check-prefix=ALL
-# RUN: llvm-mca -march=aarch64 -mcpu=exynos-m1 -iterations=1 -verbose -resource-pressure=false -instruction-info=false < %s | FileCheck %s -check-prefix=ALL
+# RUN: llvm-mca -march=aarch64 -mcpu=exynos-m3 -iterations=1 -scheduler-stats -resource-pressure=false -instruction-info=false < %s | FileCheck %s -check-prefix=ALL
+# RUN: llvm-mca -march=aarch64 -mcpu=exynos-m1 -iterations=1 -scheduler-stats -resource-pressure=false -instruction-info=false < %s | FileCheck %s -check-prefix=ALL
 
-   b   t
+  b   t
+
+# ALL:      Schedulers - number of cycles where we saw N instructions issued:
+# ALL-NEXT: [# issued], [# cycles]
+# ALL-NEXT:  0,          1  (50.0%)
+# ALL-NEXT:  1,          1  (50.0%)
 
 # ALL:      Scheduler's queue usage:
 # ALL-NEXT: No scheduler resources used.
+

Modified: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/scheduler-queue-usage.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-mca/X86/BtVer2/scheduler-queue-usage.s?rev=329792&r1=329791&r2=329792&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/scheduler-queue-usage.s (original)
+++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/scheduler-queue-usage.s Wed Apr 11 04:37:46 2018
@@ -1,8 +1,31 @@
-# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -iterations=1 -verbose < %s | FileCheck %s
+# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -iterations=1 -scheduler-stats < %s | FileCheck %s
 
 vmulps (%rsi), %xmm0, %xmm0
 add  %rsi, %rsi
 
+# CHECK:      Iterations:     1
+# CHECK-NEXT: Instructions:   2
+# CHECK-NEXT: Total Cycles:   10
+# CHECK-NEXT: Dispatch Width: 2
+# CHECK-NEXT: IPC:            0.20
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]	Instructions:
+# CHECK-NEXT:  1      7     1.00    *               	vmulps	(%rsi), %xmm0, %xmm0
+# CHECK-NEXT:  1      1     0.50                    	addq	%rsi, %rsi
+
+# CHECK:      Schedulers - number of cycles where we saw N instructions issued:
+# CHECK-NEXT: [# issued], [# cycles]
+# CHECK-NEXT:  0,          9  (90.0%)
+# CHECK-NEXT:  2,          1  (10.0%)
+
 # CHECK:      Scheduler's queue usage:
 # CHECK-NEXT: JALU01,  1/20
 # CHECK-NEXT: JFPU01,  1/18
@@ -26,9 +49,10 @@ add  %rsi, %rsi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]   
-# CHECK-NEXT:  -     1.00    -      -     1.00    -     1.00   1.00    -      -      -      -      -      -     
+# CHECK-NEXT:  -     1.00    -      -     1.00    -     1.00   1.00    -      -      -      -      -      -
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]   	Instructions:
 # CHECK-NEXT:  -      -      -      -     1.00    -     1.00   1.00    -      -      -      -      -      -     	vmulps	(%rsi), %xmm0, %xmm0
 # CHECK-NEXT:  -     1.00    -      -      -      -      -      -      -      -      -      -      -      -     	addq	%rsi, %rsi
+

Modified: llvm/trunk/tools/llvm-mca/BackendStatistics.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/BackendStatistics.cpp?rev=329792&r1=329791&r2=329792&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/BackendStatistics.cpp (original)
+++ llvm/trunk/tools/llvm-mca/BackendStatistics.cpp Wed Apr 11 04:37:46 2018
@@ -21,42 +21,11 @@ using namespace llvm;
 namespace mca {
 
 void BackendStatistics::onInstructionEvent(const HWInstructionEvent &Event) {
-  switch (Event.Type) {
-  default:
-    break;
-  case HWInstructionEvent::Retired: {
+  if (Event.Type == HWInstructionEvent::Retired)
     ++NumRetired;
-    break;
-  }
-  case HWInstructionEvent::Issued:
-    ++NumIssued;
-  }
-}
-
-void BackendStatistics::onReservedBuffers(ArrayRef<unsigned> Buffers) {
-  for (const unsigned Buffer : Buffers) {
-    if (BufferedResources.find(Buffer) != BufferedResources.end()) {
-      BufferUsage &BU = BufferedResources[Buffer];
-      BU.SlotsInUse++;
-      BU.MaxUsedSlots = std::max(BU.MaxUsedSlots, BU.SlotsInUse);
-      continue;
-    }
-
-    BufferedResources.insert(
-        std::pair<unsigned, BufferUsage>(Buffer, {1U, 1U}));
-  }
-}
-
-void BackendStatistics::onReleasedBuffers(ArrayRef<unsigned> Buffers) {
-  for (const unsigned Buffer : Buffers) {
-    assert(BufferedResources.find(Buffer) != BufferedResources.end() &&
-           "Buffered resource not in map?");
-    BufferUsage &BU = BufferedResources[Buffer];
-    BU.SlotsInUse--;
-  }
 }
 
-void BackendStatistics::printRetireUnitStatistics(llvm::raw_ostream &OS) const {
+void BackendStatistics::printView(llvm::raw_ostream &OS) const {
   std::string Buffer;
   raw_string_ostream TempStream(Buffer);
   TempStream << "\n\nRetire Control Unit - "
@@ -78,46 +47,4 @@ void BackendStatistics::printRetireUnitS
   OS << Buffer;
 }
 
-void BackendStatistics::printSchedulerStatistics(llvm::raw_ostream &OS) const {
-  std::string Buffer;
-  raw_string_ostream TempStream(Buffer);
-  TempStream << "\n\nSchedulers - number of cycles where we saw N instructions "
-                "issued:\n";
-  TempStream << "[# issued], [# cycles]\n";
-  for (const std::pair<unsigned, unsigned> &Entry : IssuedPerCycle) {
-    TempStream << " " << Entry.first << ",          " << Entry.second << "  ("
-               << format("%.1f", ((double)Entry.second / NumCycles) * 100)
-               << "%)\n";
-  }
-
-  TempStream.flush();
-  OS << Buffer;
-}
-
-void BackendStatistics::printSchedulerUsage(raw_ostream &OS,
-                                            const MCSchedModel &SM) const {
-  std::string Buffer;
-  raw_string_ostream TempStream(Buffer);
-  TempStream << "\n\nScheduler's queue usage:\n";
-  // Early exit if no buffered resources were consumed.
-  if (BufferedResources.empty()) {
-    TempStream << "No scheduler resources used.\n";
-    TempStream.flush();
-    OS << Buffer;
-    return;
-  }
-
-  for (unsigned I = 0, E = SM.getNumProcResourceKinds(); I < E; ++I) {
-    const MCProcResourceDesc &ProcResource = *SM.getProcResource(I);
-    if (ProcResource.BufferSize <= 0)
-      continue;
-
-    const BufferUsage &BU = BufferedResources.lookup(I);
-    TempStream << ProcResource.Name << ",  " << BU.MaxUsedSlots << '/'
-               << ProcResource.BufferSize << '\n';
-  }
-
-  TempStream.flush();
-  OS << Buffer;
-}
 } // namespace mca

Modified: llvm/trunk/tools/llvm-mca/BackendStatistics.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/BackendStatistics.h?rev=329792&r1=329791&r2=329792&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/BackendStatistics.h (original)
+++ llvm/trunk/tools/llvm-mca/BackendStatistics.h Wed Apr 11 04:37:46 2018
@@ -8,18 +8,12 @@
 //===----------------------------------------------------------------------===//
 /// \file
 ///
-/// This file implements a printer class for printing generic Backend
-/// statistics related to the scheduler and retire unit.
+/// This file implements a View named BackendStatistics that knows how to
+/// collect and print a few statistics related to the retire unit.
 ///
 /// Example:
 /// ========
 ///
-/// Schedulers - number of cycles where we saw N instructions issued:
-/// [# issued], [# cycles]
-///  0,          7  (5.4%)
-///  1,          4  (3.1%)
-///  2,          8  (6.2%)
-///
 /// Retire Control Unit - number of cycles where we saw N instructions retired:
 /// [# retired], [# cycles]
 ///  0,           9  (6.9%)
@@ -27,11 +21,6 @@
 ///  2,           1  (0.8%)
 ///  4,           3  (2.3%)
 ///
-/// Scheduler's queue usage:
-/// JALU01,  0/20
-/// JFPU01,  18/18
-/// JLSAGU,  0/12
-///
 //===----------------------------------------------------------------------===//
 
 #ifndef LLVM_TOOLS_LLVM_MCA_BACKENDSTATISTICS_H
@@ -49,43 +38,21 @@ class BackendStatistics : public View {
 
   using Histogram = llvm::DenseMap<unsigned, unsigned>;
   Histogram RetiredPerCycle;
-  Histogram IssuedPerCycle;
 
-  unsigned NumIssued;
   unsigned NumRetired;
   unsigned NumCycles;
 
-  // Tracks the usage of a scheduler's queue.
-  struct BufferUsage {
-    unsigned SlotsInUse;
-    unsigned MaxUsedSlots;
-  };
-
-  // There is a map entry for each buffered resource in the scheduling model.
-  // Every time a buffer is consumed/freed, this view updates the corresponding
-  // entry.
-  llvm::DenseMap<unsigned, BufferUsage> BufferedResources;
-
   void updateHistograms() {
-    IssuedPerCycle[NumIssued]++;
     RetiredPerCycle[NumRetired]++;
-    NumIssued = 0;
     NumRetired = 0;
   }
 
-  void printRetireUnitStatistics(llvm::raw_ostream &OS) const;
-  void printSchedulerStatistics(llvm::raw_ostream &OS) const;
-
   void printRCUStatistics(llvm::raw_ostream &OS, const Histogram &Histogram,
                           unsigned Cycles) const;
-  void printIssuePerCycle(const Histogram &IssuePerCycle,
-                          unsigned TotalCycles) const;
-  void printSchedulerUsage(llvm::raw_ostream &OS,
-                           const llvm::MCSchedModel &SM) const;
 
 public:
   BackendStatistics(const llvm::MCSubtargetInfo &sti)
-      : STI(sti), NumIssued(0), NumRetired(0), NumCycles(0) { }
+      : STI(sti), NumRetired(0), NumCycles(0) {}
 
   void onInstructionEvent(const HWInstructionEvent &Event) override;
 
@@ -93,19 +60,7 @@ public:
 
   void onCycleEnd(unsigned Cycle) override { updateHistograms(); }
 
-  // Increases the number of used scheduler queue slots of every buffered
-  // resource in the Buffers set.
-  void onReservedBuffers(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 printView(llvm::raw_ostream &OS) const override {
-    printSchedulerStatistics(OS);
-    printRetireUnitStatistics(OS);
-    printSchedulerUsage(OS, STI.getSchedModel());
-  }
+  void printView(llvm::raw_ostream &OS) const override;
 };
 } // namespace mca
 

Modified: llvm/trunk/tools/llvm-mca/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/CMakeLists.txt?rev=329792&r1=329791&r2=329792&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/CMakeLists.txt (original)
+++ llvm/trunk/tools/llvm-mca/CMakeLists.txt Wed Apr 11 04:37:46 2018
@@ -26,6 +26,7 @@ add_llvm_tool(llvm-mca
   RegisterFileStatistics.cpp
   ResourcePressureView.cpp
   Scheduler.cpp
+  SchedulerStatistics.cpp
   Support.cpp
   SummaryView.cpp
   TimelineView.cpp

Added: llvm/trunk/tools/llvm-mca/SchedulerStatistics.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/SchedulerStatistics.cpp?rev=329792&view=auto
==============================================================================
--- llvm/trunk/tools/llvm-mca/SchedulerStatistics.cpp (added)
+++ llvm/trunk/tools/llvm-mca/SchedulerStatistics.cpp Wed Apr 11 04:37:46 2018
@@ -0,0 +1,92 @@
+//===--------------------- SchedulerStatistics.cpp --------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file implements the SchedulerStatistics interface.
+///
+//===----------------------------------------------------------------------===//
+
+#include "SchedulerStatistics.h"
+#include "llvm/Support/Format.h"
+
+using namespace llvm;
+
+namespace mca {
+
+void SchedulerStatistics::onInstructionEvent(const HWInstructionEvent &Event) {
+  if (Event.Type == HWInstructionEvent::Issued)
+    ++NumIssued;
+}
+
+void SchedulerStatistics::onReservedBuffers(ArrayRef<unsigned> Buffers) {
+  for (const unsigned Buffer : Buffers) {
+    if (BufferedResources.find(Buffer) != BufferedResources.end()) {
+      BufferUsage &BU = BufferedResources[Buffer];
+      BU.SlotsInUse++;
+      BU.MaxUsedSlots = std::max(BU.MaxUsedSlots, BU.SlotsInUse);
+      continue;
+    }
+
+    BufferedResources.insert(
+        std::pair<unsigned, BufferUsage>(Buffer, {1U, 1U}));
+  }
+}
+
+void SchedulerStatistics::onReleasedBuffers(ArrayRef<unsigned> Buffers) {
+  for (const unsigned Buffer : Buffers) {
+    assert(BufferedResources.find(Buffer) != BufferedResources.end() &&
+           "Buffered resource not in map?");
+    BufferUsage &BU = BufferedResources[Buffer];
+    BU.SlotsInUse--;
+  }
+}
+
+void SchedulerStatistics::printSchedulerStatistics(llvm::raw_ostream &OS) const {
+  std::string Buffer;
+  raw_string_ostream TempStream(Buffer);
+  TempStream << "\n\nSchedulers - number of cycles where we saw N instructions "
+                "issued:\n";
+  TempStream << "[# issued], [# cycles]\n";
+  for (const std::pair<unsigned, unsigned> &Entry : IssuedPerCycle) {
+    TempStream << " " << Entry.first << ",          " << Entry.second << "  ("
+               << format("%.1f", ((double)Entry.second / NumCycles) * 100)
+               << "%)\n";
+  }
+
+  TempStream.flush();
+  OS << Buffer;
+}
+
+void SchedulerStatistics::printSchedulerUsage(raw_ostream &OS,
+                                            const MCSchedModel &SM) const {
+  std::string Buffer;
+  raw_string_ostream TempStream(Buffer);
+  TempStream << "\n\nScheduler's queue usage:\n";
+  // Early exit if no buffered resources were consumed.
+  if (BufferedResources.empty()) {
+    TempStream << "No scheduler resources used.\n";
+    TempStream.flush();
+    OS << Buffer;
+    return;
+  }
+
+  for (unsigned I = 0, E = SM.getNumProcResourceKinds(); I < E; ++I) {
+    const MCProcResourceDesc &ProcResource = *SM.getProcResource(I);
+    if (ProcResource.BufferSize <= 0)
+      continue;
+
+    const BufferUsage &BU = BufferedResources.lookup(I);
+    TempStream << ProcResource.Name << ",  " << BU.MaxUsedSlots << '/'
+               << ProcResource.BufferSize << '\n';
+  }
+
+  TempStream.flush();
+  OS << Buffer;
+}
+} // namespace mca

Added: llvm/trunk/tools/llvm-mca/SchedulerStatistics.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/SchedulerStatistics.h?rev=329792&view=auto
==============================================================================
--- llvm/trunk/tools/llvm-mca/SchedulerStatistics.h (added)
+++ llvm/trunk/tools/llvm-mca/SchedulerStatistics.h Wed Apr 11 04:37:46 2018
@@ -0,0 +1,95 @@
+//===--------------------- SchedulerStatistics.h ----------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This file defines class SchedulerStatistics. Class SchedulerStatistics is a
+/// View that listens to instruction issue events in order to print general
+/// statistics related to the hardware schedulers.
+///
+/// Example:
+/// ========
+///
+/// Schedulers - number of cycles where we saw N instructions issued:
+/// [# issued], [# cycles]
+///  0,          7  (5.4%)
+///  1,          4  (3.1%)
+///  2,          8  (6.2%)
+///
+/// Scheduler's queue usage:
+/// JALU01,  0/20
+/// JFPU01,  18/18
+/// JLSAGU,  0/12
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TOOLS_LLVM_MCA_SCHEDULERSTATISTICS_H
+#define LLVM_TOOLS_LLVM_MCA_SCHEDULERSTATISTICS_H
+
+#include "View.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/MC/MCSubtargetInfo.h"
+
+namespace mca {
+
+class SchedulerStatistics : public View {
+  const llvm::MCSubtargetInfo &STI;
+
+  using Histogram = llvm::DenseMap<unsigned, unsigned>;
+  Histogram IssuedPerCycle;
+
+  unsigned NumIssued;
+  unsigned NumCycles;
+
+  // Tracks the usage of a scheduler's queue.
+  struct BufferUsage {
+    unsigned SlotsInUse;
+    unsigned MaxUsedSlots;
+  };
+
+  llvm::DenseMap<unsigned, BufferUsage> BufferedResources;
+
+  void updateHistograms() {
+    IssuedPerCycle[NumIssued]++;
+    NumIssued = 0;
+  }
+
+  void printSchedulerStatistics(llvm::raw_ostream &OS) const;
+
+  void printIssuePerCycle(const Histogram &IssuePerCycle,
+                          unsigned TotalCycles) const;
+  void printSchedulerUsage(llvm::raw_ostream &OS,
+                           const llvm::MCSchedModel &SM) const;
+
+public:
+  SchedulerStatistics(const llvm::MCSubtargetInfo &sti)
+      : STI(sti), NumIssued(0), NumCycles(0) { }
+
+  void onInstructionEvent(const HWInstructionEvent &Event) override;
+
+  void onCycleBegin(unsigned Cycle) override { NumCycles++; }
+
+  void onCycleEnd(unsigned Cycle) override { updateHistograms(); }
+
+  // Increases the number of used scheduler queue slots of every buffered
+  // resource in the Buffers set.
+  void onReservedBuffers(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 printView(llvm::raw_ostream &OS) const override {
+    printSchedulerStatistics(OS);
+    printSchedulerUsage(OS, STI.getSchedModel());
+  }
+};
+} // namespace mca
+
+#endif

Modified: llvm/trunk/tools/llvm-mca/llvm-mca.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/llvm-mca.cpp?rev=329792&r1=329791&r2=329792&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/llvm-mca.cpp (original)
+++ llvm/trunk/tools/llvm-mca/llvm-mca.cpp Wed Apr 11 04:37:46 2018
@@ -29,6 +29,7 @@
 #include "InstructionTables.h"
 #include "RegisterFileStatistics.h"
 #include "ResourcePressureView.h"
+#include "SchedulerStatistics.h"
 #include "SummaryView.h"
 #include "TimelineView.h"
 #include "llvm/MC/MCAsmInfo.h"
@@ -100,6 +101,11 @@ static cl::opt<bool>
                        cl::init(false));
 
 static cl::opt<bool>
+    PrintiSchedulerStats("scheduler-stats",
+                         cl::desc("Print scheduler statistics"),
+                         cl::init(false));
+
+static cl::opt<bool>
     PrintResourcePressureView("resource-pressure",
                               cl::desc("Print the resource pressure view"),
                               cl::init(true));
@@ -432,6 +438,9 @@ int main(int argc, char **argv) {
     if (PrintDispatchStats)
       Printer.addView(llvm::make_unique<mca::DispatchStatistics>(*STI));
 
+    if (PrintiSchedulerStats)
+      Printer.addView(llvm::make_unique<mca::SchedulerStatistics>(*STI));
+
     if (PrintModeVerbose)
       Printer.addView(llvm::make_unique<mca::BackendStatistics>(*STI));
 




More information about the llvm-commits mailing list