llvm-project/llvm/tools/llvm-mca/Views/RetireControlUnitStatistics.h
Patrick Holland fe01014faa [MCA] Moved View.h and View.cpp from /tools/llvm-mca/ to /lib/MCA/.
Moved View.h and View.cpp from /tools/llvm-mca/Views/ to /lib/MCA/ and
/include/llvm/MCA/. This is so that targets can define their own Views within
the /lib/Target/ directory (so that the View can use backend functionality).
To enable these Views within mca, targets will need to add them to the vector of
Views returned by their target's CustomBehaviour::getViews() methods.

Differential Revision: https://reviews.llvm.org/D108520
2021-08-25 12:12:47 -07:00

65 lines
1.9 KiB
C++

//===--------------------- 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 "llvm/MC/MCSchedule.h"
#include "llvm/MCA/View.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;
StringRef getNameAsString() const override {
return "RetireControlUnitStatistics";
}
bool isSerializable() const override { return false; }
};
} // namespace mca
} // namespace llvm
#endif