mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-21 03:53:04 +02:00
e2bef9a902
Before this patch, the "BackendStatistics" view was responsible for printing the register file usage (as well as many other statistics). Now users can enable register file usage statistics using the command line flag `-register-file-stats`. By default, the tool doesn't print register file statistics. llvm-svn: 329083
68 lines
1.9 KiB
C++
68 lines
1.9 KiB
C++
//===--------------------- RegisterFileStatistics.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 view collects and prints register file usage statistics.
|
|
///
|
|
/// Example (-mcpu=btver2):
|
|
/// ========================
|
|
///
|
|
/// Register File statistics:
|
|
/// Total number of mappings created: 6
|
|
/// Max number of mappings used: 3
|
|
///
|
|
/// * Register File #1 -- FpuPRF:
|
|
/// Number of physical registers: 72
|
|
/// Total number of mappings created: 0
|
|
/// Max number of mappings used: 0
|
|
///
|
|
/// * Register File #2 -- IntegerPRF:
|
|
/// Number of physical registers: 64
|
|
/// Total number of mappings created: 6
|
|
/// Max number of mappings used: 3
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_TOOLS_LLVM_MCA_REGISTERFILESTATISTICS_H
|
|
#define LLVM_TOOLS_LLVM_MCA_REGISTERFILESTATISTICS_H
|
|
|
|
#include "View.h"
|
|
#include "llvm/ADT/SmallVector.h"
|
|
#include "llvm/MC/MCSubtargetInfo.h"
|
|
|
|
namespace mca {
|
|
|
|
class RegisterFileStatistics : public View {
|
|
const llvm::MCSubtargetInfo &STI;
|
|
|
|
// Used to track the number of physical registers used in a register file.
|
|
struct RegisterFileUsage {
|
|
unsigned TotalMappings;
|
|
unsigned MaxUsedMappings;
|
|
unsigned CurrentlyUsedMappings;
|
|
};
|
|
|
|
// There is one entry for each register file implemented by the processor.
|
|
llvm::SmallVector<RegisterFileUsage, 4> RegisterFiles;
|
|
|
|
void initializeRegisterFileInfo();
|
|
|
|
public:
|
|
RegisterFileStatistics(const llvm::MCSubtargetInfo &sti) : STI(sti) {
|
|
initializeRegisterFileInfo();
|
|
}
|
|
|
|
void onInstructionEvent(const HWInstructionEvent &Event) override;
|
|
|
|
void printView(llvm::raw_ostream &OS) const override;
|
|
};
|
|
} // namespace mca
|
|
|
|
#endif
|