forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.7 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 "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
 |