LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Public Attributes | Static Public Attributes | Friends | List of all members
llvm::MCSchedModel Class Reference

#include <MCSchedule.h>

Collaboration diagram for llvm::MCSchedModel:
Collaboration graph
[legend]

Public Member Functions

 MCSchedModel ()
 
 MCSchedModel (unsigned iw, int mbs, unsigned ll, unsigned hl, unsigned mp, bool cm, unsigned pi, const MCProcResourceDesc *pr, const MCSchedClassDesc *sc, unsigned npr, unsigned nsc, const InstrItinerary *ii)
 
unsigned getProcessorID () const
 
bool hasInstrSchedModel () const
 Does this machine model include instruction-level scheduling. More...
 
bool isComplete () const
 
unsigned getNumProcResourceKinds () const
 
const MCProcResourceDescgetProcResource (unsigned ProcResourceIdx) const
 
const MCSchedClassDescgetSchedClassDesc (unsigned SchedClassIdx) const
 

Public Attributes

unsigned IssueWidth
 
unsigned MicroOpBufferSize
 
unsigned LoadLatency
 
unsigned HighLatency
 
unsigned MispredictPenalty
 
bool CompleteModel
 

Static Public Attributes

static MCSchedModel DefaultSchedModel
 
static const unsigned DefaultIssueWidth = 1
 
static const unsigned DefaultMicroOpBufferSize = 0
 
static const unsigned DefaultLoadLatency = 4
 
static const unsigned DefaultHighLatency = 10
 
static const unsigned DefaultMispredictPenalty = 10
 

Friends

class InstrItineraryData
 

Detailed Description

Machine model for scheduling, bundling, and heuristics.

The machine model directly provides basic information about the microarchitecture to the scheduler in the form of properties. It also optionally refers to scheduler resource tables and itinerary tables. Scheduler resource tables model the latency and cost for each instruction type. Itinerary tables are an independent mechanism that provides a detailed reservation table describing each cycle of instruction execution. Subtargets may define any or all of the above categories of data depending on the type of CPU and selected scheduler.

Definition at line 131 of file MCSchedule.h.

Constructor & Destructor Documentation

llvm::MCSchedModel::MCSchedModel ( )
inline

Definition at line 194 of file MCSchedule.h.

llvm::MCSchedModel::MCSchedModel ( unsigned  iw,
int  mbs,
unsigned  ll,
unsigned  hl,
unsigned  mp,
bool  cm,
unsigned  pi,
const MCProcResourceDesc pr,
const MCSchedClassDesc sc,
unsigned  npr,
unsigned  nsc,
const InstrItinerary ii 
)
inline

Definition at line 208 of file MCSchedule.h.

Member Function Documentation

unsigned llvm::MCSchedModel::getNumProcResourceKinds ( ) const
inline
unsigned llvm::MCSchedModel::getProcessorID ( ) const
inline

Definition at line 217 of file MCSchedule.h.

Referenced by llvm::TargetSchedModel::getProcessorID().

const MCProcResourceDesc* llvm::MCSchedModel::getProcResource ( unsigned  ProcResourceIdx) const
inline
const MCSchedClassDesc* llvm::MCSchedModel::getSchedClassDesc ( unsigned  SchedClassIdx) const
inline

Definition at line 237 of file MCSchedule.h.

References hasInstrSchedModel().

Referenced by getLatency(), and llvm::TargetSchedModel::resolveSchedClass().

bool llvm::MCSchedModel::hasInstrSchedModel ( ) const
inline

Does this machine model include instruction-level scheduling.

Definition at line 220 of file MCSchedule.h.

Referenced by getLatency(), getProcResource(), getSchedClassDesc(), and llvm::TargetSchedModel::hasInstrSchedModel().

bool llvm::MCSchedModel::isComplete ( ) const
inline

Return true if this machine model data for all instructions with a scheduling class (itinerary class or SchedRW list).

Definition at line 224 of file MCSchedule.h.

References CompleteModel.

Referenced by llvm::TargetSchedModel::computeOperandLatency().

Friends And Related Function Documentation

friend class InstrItineraryData
friend

Definition at line 186 of file MCSchedule.h.

Member Data Documentation

bool llvm::MCSchedModel::CompleteModel

Definition at line 177 of file MCSchedule.h.

Referenced by isComplete().

const unsigned llvm::MCSchedModel::DefaultHighLatency = 10
static

Definition at line 170 of file MCSchedule.h.

const unsigned llvm::MCSchedModel::DefaultIssueWidth = 1
static

Definition at line 138 of file MCSchedule.h.

const unsigned llvm::MCSchedModel::DefaultLoadLatency = 4
static

Definition at line 162 of file MCSchedule.h.

const unsigned llvm::MCSchedModel::DefaultMicroOpBufferSize = 0
static

Definition at line 155 of file MCSchedule.h.

const unsigned llvm::MCSchedModel::DefaultMispredictPenalty = 10
static

Definition at line 175 of file MCSchedule.h.

MCSchedModel MCSchedModel::DefaultSchedModel
static
unsigned llvm::MCSchedModel::HighLatency

Definition at line 169 of file MCSchedule.h.

Referenced by llvm::TargetInstrInfo::defaultDefLatency().

unsigned llvm::MCSchedModel::IssueWidth
unsigned llvm::MCSchedModel::LoadLatency

Definition at line 161 of file MCSchedule.h.

Referenced by llvm::TargetInstrInfo::defaultDefLatency().

unsigned llvm::MCSchedModel::MicroOpBufferSize
unsigned llvm::MCSchedModel::MispredictPenalty

Definition at line 174 of file MCSchedule.h.

Referenced by llvm::ARMSubtarget::getMispredictionPenalty().


The documentation for this class was generated from the following files: