diff options
Diffstat (limited to 'llvm/tools/llvm-mca/Views/RetireControlUnitStatistics.h')
| -rw-r--r-- | llvm/tools/llvm-mca/Views/RetireControlUnitStatistics.h | 60 | 
1 files changed, 60 insertions, 0 deletions
diff --git a/llvm/tools/llvm-mca/Views/RetireControlUnitStatistics.h b/llvm/tools/llvm-mca/Views/RetireControlUnitStatistics.h new file mode 100644 index 000000000000..1a4d3dec5c56 --- /dev/null +++ b/llvm/tools/llvm-mca/Views/RetireControlUnitStatistics.h @@ -0,0 +1,60 @@ +//===--------------------- RetireControlUnitStatistics.h --------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// \file +/// +/// This file defines class RetireControlUnitStatistics: a view that knows how +/// to print general statistics related to the retire control unit. +/// +/// Example: +/// ======== +/// +/// Retire Control Unit - number of cycles where we saw N instructions retired: +/// [# retired], [# cycles] +///  0,           109  (17.9%) +///  1,           102  (16.7%) +///  2,           399  (65.4%) +/// +/// Total ROB Entries:                64 +/// Max Used ROB Entries:             35  ( 54.7% ) +/// Average Used ROB Entries per cy:  32  ( 50.0% ) +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TOOLS_LLVM_MCA_RETIRECONTROLUNITSTATISTICS_H +#define LLVM_TOOLS_LLVM_MCA_RETIRECONTROLUNITSTATISTICS_H + +#include "Views/View.h" +#include "llvm/MC/MCSchedule.h" +#include <map> + +namespace llvm { +namespace mca { + +class RetireControlUnitStatistics : public View { +  using Histogram = std::map<unsigned, unsigned>; +  Histogram RetiredPerCycle; + +  unsigned NumRetired; +  unsigned NumCycles; +  unsigned TotalROBEntries; +  unsigned EntriesInUse; +  unsigned MaxUsedEntries; +  unsigned SumOfUsedEntries; + +public: +  RetireControlUnitStatistics(const MCSchedModel &SM); + +  void onEvent(const HWInstructionEvent &Event) override; +  void onCycleEnd() override; +  void printView(llvm::raw_ostream &OS) const override; +}; + +} // namespace mca +} // namespace llvm + +#endif  | 
