brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · ed3736c Raw
65 lines · c
1//===--------------------- RetireControlUnitStatistics.h --------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8/// \file9///10/// This file defines class RetireControlUnitStatistics: a view that knows how11/// to print general statistics related to the retire control unit.12///13/// Example:14/// ========15///16/// Retire Control Unit - number of cycles where we saw N instructions retired:17/// [# retired], [# cycles]18///  0,           109  (17.9%)19///  1,           102  (16.7%)20///  2,           399  (65.4%)21///22/// Total ROB Entries:                6423/// Max Used ROB Entries:             35  ( 54.7% )24/// Average Used ROB Entries per cy:  32  ( 50.0% )25///26//===----------------------------------------------------------------------===//27 28#ifndef LLVM_TOOLS_LLVM_MCA_RETIRECONTROLUNITSTATISTICS_H29#define LLVM_TOOLS_LLVM_MCA_RETIRECONTROLUNITSTATISTICS_H30 31#include "llvm/MC/MCSchedule.h"32#include "llvm/MCA/View.h"33#include <map>34 35namespace llvm {36namespace mca {37 38class RetireControlUnitStatistics : public View {39  using Histogram = std::map<unsigned, unsigned>;40  Histogram RetiredPerCycle;41 42  unsigned NumRetired;43  unsigned NumCycles;44  unsigned TotalROBEntries;45  unsigned EntriesInUse;46  unsigned MaxUsedEntries;47  unsigned SumOfUsedEntries;48 49public:50  RetireControlUnitStatistics(const MCSchedModel &SM);51 52  void onEvent(const HWInstructionEvent &Event) override;53  void onCycleEnd() override;54  void printView(llvm::raw_ostream &OS) const override;55  StringRef getNameAsString() const override {56    return "RetireControlUnitStatistics";57  }58  bool isSerializable() const override { return false; }59};60 61} // namespace mca62} // namespace llvm63 64#endif65