mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-26 07:34:06 +00:00
eae8ef479d
This is useful for debugging issues in the BlockFrequency implementation since one can easily visualize where probability mass and other errors occur in the propagation. This is the MI version of r194654. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196183 91177308-0d34-0410-b5e6-96231b3b80d8
60 lines
1.8 KiB
C++
60 lines
1.8 KiB
C++
//====-- MachineBlockFrequencyInfo.h - MBB Frequency Analysis -*- C++ -*--====//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Loops should be simplified before this analysis.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_CODEGEN_MACHINEBLOCKFREQUENCYINFO_H
|
|
#define LLVM_CODEGEN_MACHINEBLOCKFREQUENCYINFO_H
|
|
|
|
#include "llvm/CodeGen/MachineFunctionPass.h"
|
|
#include "llvm/Support/BlockFrequency.h"
|
|
#include <climits>
|
|
|
|
namespace llvm {
|
|
|
|
class MachineBasicBlock;
|
|
class MachineBranchProbabilityInfo;
|
|
template<class BlockT, class FunctionT, class BranchProbInfoT>
|
|
class BlockFrequencyImpl;
|
|
|
|
/// MachineBlockFrequencyInfo pass uses BlockFrequencyImpl implementation to estimate
|
|
/// machine basic block frequencies.
|
|
class MachineBlockFrequencyInfo : public MachineFunctionPass {
|
|
|
|
BlockFrequencyImpl<MachineBasicBlock, MachineFunction,
|
|
MachineBranchProbabilityInfo> *MBFI;
|
|
|
|
public:
|
|
static char ID;
|
|
|
|
MachineBlockFrequencyInfo();
|
|
|
|
~MachineBlockFrequencyInfo();
|
|
|
|
void getAnalysisUsage(AnalysisUsage &AU) const;
|
|
|
|
bool runOnMachineFunction(MachineFunction &F);
|
|
|
|
/// getblockFreq - Return block frequency. Return 0 if we don't have the
|
|
/// information. Please note that initial frequency is equal to 1024. It means
|
|
/// that we should not rely on the value itself, but only on the comparison to
|
|
/// the other block frequencies. We do this to avoid using of floating points.
|
|
///
|
|
BlockFrequency getBlockFreq(const MachineBasicBlock *MBB) const;
|
|
|
|
MachineFunction *getFunction() const;
|
|
void view() const;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|