LLVM  6.0.0svn
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Friends | List of all members
llvm::MCSchedModel Struct Reference

Machine model for scheduling, bundling, and heuristics. More...

#include "llvm/MC/MCSchedule.h"

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

Public Member Functions

unsigned getProcessorID () const
 
bool hasInstrSchedModel () const
 Does this machine model include instruction-level scheduling. More...
 
bool isComplete () const
 Return true if this machine model data for all instructions with a scheduling class (itinerary class or SchedRW list). More...
 
bool isOutOfOrder () const
 Return true if machine supports out of order execution. More...
 
unsigned getNumProcResourceKinds () const
 
const MCProcResourceDescgetProcResource (unsigned ProcResourceIdx) const
 
const MCSchedClassDescgetSchedClassDesc (unsigned SchedClassIdx) const
 

Static Public Member Functions

static const MCSchedModelGetDefaultSchedModel ()
 Returns the default initialized model. More...
 

Public Attributes

unsigned IssueWidth
 
unsigned MicroOpBufferSize
 
unsigned LoopMicroOpBufferSize
 
unsigned LoadLatency
 
unsigned HighLatency
 
unsigned MispredictPenalty
 
bool PostRAScheduler
 
bool CompleteModel
 
unsigned ProcID
 
const MCProcResourceDescProcResourceTable
 
const MCSchedClassDescSchedClassTable
 
unsigned NumProcResourceKinds
 
unsigned NumSchedClasses
 
const InstrItineraryInstrItineraries
 

Static Public Attributes

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

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 136 of file MCSchedule.h.

Member Function Documentation

◆ GetDefaultSchedModel()

static const MCSchedModel& llvm::MCSchedModel::GetDefaultSchedModel ( )
inlinestatic

Returns the default initialized model.

Definition at line 227 of file MCSchedule.h.

References llvm::Default.

Referenced by llvm::MCSubtargetInfo::getSchedModelForCPU(), and llvm::MCSubtargetInfo::InitMCProcessorInfo().

◆ getNumProcResourceKinds()

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

◆ getProcessorID()

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

Definition at line 196 of file MCSchedule.h.

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

◆ getProcResource()

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

◆ getSchedClassDesc()

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

◆ hasInstrSchedModel()

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

Does this machine model include instruction-level scheduling.

Definition at line 199 of file MCSchedule.h.

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

◆ isComplete()

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 203 of file MCSchedule.h.

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

◆ isOutOfOrder()

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

Return true if machine supports out of order execution.

Definition at line 206 of file MCSchedule.h.

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

Friends And Related Function Documentation

◆ InstrItineraryData

friend class InstrItineraryData
friend

Definition at line 193 of file MCSchedule.h.

Member Data Documentation

◆ CompleteModel

bool llvm::MCSchedModel::CompleteModel

Definition at line 185 of file MCSchedule.h.

◆ Default

const MCSchedModel MCSchedModel::Default
static
Initial value:

Definition at line 228 of file MCSchedule.h.

◆ DefaultHighLatency

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

Definition at line 176 of file MCSchedule.h.

◆ DefaultIssueWidth

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

Definition at line 140 of file MCSchedule.h.

◆ DefaultLoadLatency

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

◆ DefaultLoopMicroOpBufferSize

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

Definition at line 165 of file MCSchedule.h.

◆ DefaultMicroOpBufferSize

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

Definition at line 157 of file MCSchedule.h.

◆ DefaultMispredictPenalty

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

Definition at line 181 of file MCSchedule.h.

◆ HighLatency

unsigned llvm::MCSchedModel::HighLatency

Definition at line 175 of file MCSchedule.h.

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

◆ InstrItineraries

const InstrItinerary* llvm::MCSchedModel::InstrItineraries

◆ IssueWidth

unsigned llvm::MCSchedModel::IssueWidth

◆ LoadLatency

unsigned llvm::MCSchedModel::LoadLatency

Definition at line 168 of file MCSchedule.h.

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

◆ LoopMicroOpBufferSize

unsigned llvm::MCSchedModel::LoopMicroOpBufferSize

◆ MicroOpBufferSize

unsigned llvm::MCSchedModel::MicroOpBufferSize

Definition at line 156 of file MCSchedule.h.

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

◆ MispredictPenalty

unsigned llvm::MCSchedModel::MispredictPenalty

Definition at line 180 of file MCSchedule.h.

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

◆ NumProcResourceKinds

unsigned llvm::MCSchedModel::NumProcResourceKinds

Definition at line 190 of file MCSchedule.h.

◆ NumSchedClasses

unsigned llvm::MCSchedModel::NumSchedClasses

Definition at line 191 of file MCSchedule.h.

◆ PostRAScheduler

bool llvm::MCSchedModel::PostRAScheduler

Definition at line 183 of file MCSchedule.h.

Referenced by llvm::TargetSubtargetInfo::enablePostRAScheduler().

◆ ProcID

unsigned llvm::MCSchedModel::ProcID

Definition at line 187 of file MCSchedule.h.

◆ ProcResourceTable

const MCProcResourceDesc* llvm::MCSchedModel::ProcResourceTable

Definition at line 188 of file MCSchedule.h.

◆ SchedClassTable

const MCSchedClassDesc* llvm::MCSchedModel::SchedClassTable

Definition at line 189 of file MCSchedule.h.


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