LLVM  6.0.0svn
Public Member Functions | Protected Member Functions | List of all members
llvm::MCSubtargetInfo Class Reference

MCSubtargetInfo - Generic base class for all target subtargets. More...

#include "llvm/MC/MCSubtargetInfo.h"

Inheritance diagram for llvm::MCSubtargetInfo:
Inheritance graph
[legend]

Public Member Functions

 MCSubtargetInfo (const MCSubtargetInfo &)=default
 
 MCSubtargetInfo (const Triple &TT, StringRef CPU, StringRef FS, ArrayRef< SubtargetFeatureKV > PF, ArrayRef< SubtargetFeatureKV > PD, const SubtargetInfoKV *ProcSched, const MCWriteProcResEntry *WPR, const MCWriteLatencyEntry *WL, const MCReadAdvanceEntry *RA, const InstrStage *IS, const unsigned *OC, const unsigned *FP)
 
 MCSubtargetInfo ()=delete
 
MCSubtargetInfooperator= (const MCSubtargetInfo &)=delete
 
MCSubtargetInfooperator= (MCSubtargetInfo &&)=delete
 
virtual ~MCSubtargetInfo ()=default
 
const TriplegetTargetTriple () const
 getTargetTriple - Return the target triple string. More...
 
StringRef getCPU () const
 getCPU - Return the CPU string. More...
 
const FeatureBitsetgetFeatureBits () const
 getFeatureBits - Return the feature bits. More...
 
void setFeatureBits (const FeatureBitset &FeatureBits_)
 setFeatureBits - Set the feature bits. More...
 
bool hasFeature (unsigned Feature) const
 
void setDefaultFeatures (StringRef CPU, StringRef FS)
 Set the features to the default for the given CPU with an appended feature string. More...
 
FeatureBitset ToggleFeature (uint64_t FB)
 ToggleFeature - Toggle a feature and returns the re-computed feature bits. More...
 
FeatureBitset ToggleFeature (const FeatureBitset &FB)
 ToggleFeature - Toggle a feature and returns the re-computed feature bits. More...
 
FeatureBitset ToggleFeature (StringRef FS)
 ToggleFeature - Toggle a set of features and returns the re-computed feature bits. More...
 
FeatureBitset ApplyFeatureFlag (StringRef FS)
 Apply a feature flag and return the re-computed feature bits, including all feature bits implied by the flag. More...
 
bool checkFeatures (StringRef FS) const
 Check whether the subtarget features are enabled/disabled as per the provided string, ignoring all other features. More...
 
const MCSchedModelgetSchedModelForCPU (StringRef CPU) const
 getSchedModelForCPU - Get the machine model of a CPU. More...
 
const MCSchedModelgetSchedModel () const
 Get the machine model for this subtarget's CPU. More...
 
const MCWriteProcResEntrygetWriteProcResBegin (const MCSchedClassDesc *SC) const
 Return an iterator at the first process resource consumed by the given scheduling class. More...
 
const MCWriteProcResEntrygetWriteProcResEnd (const MCSchedClassDesc *SC) const
 
const MCWriteLatencyEntrygetWriteLatencyEntry (const MCSchedClassDesc *SC, unsigned DefIdx) const
 
int getReadAdvanceCycles (const MCSchedClassDesc *SC, unsigned UseIdx, unsigned WriteResID) const
 
InstrItineraryData getInstrItineraryForCPU (StringRef CPU) const
 getInstrItineraryForCPU - Get scheduling itinerary of a CPU. More...
 
void initInstrItins (InstrItineraryData &InstrItins) const
 Initialize an InstrItineraryData instance. More...
 
bool isCPUStringValid (StringRef CPU) const
 Check whether the CPU string is valid. More...
 
virtual std::string getSchedInfoStr (const MachineInstr &MI) const
 Returns string representation of scheduler comment. More...
 
virtual std::string getSchedInfoStr (MCInst const &MCI) const
 

Protected Member Functions

void InitMCProcessorInfo (StringRef CPU, StringRef FS)
 Initialize the scheduling model and feature bits. More...
 

Detailed Description

MCSubtargetInfo - Generic base class for all target subtargets.

Definition at line 37 of file MCSubtargetInfo.h.

Constructor & Destructor Documentation

◆ MCSubtargetInfo() [1/3]

llvm::MCSubtargetInfo::MCSubtargetInfo ( const MCSubtargetInfo )
default

◆ MCSubtargetInfo() [2/3]

MCSubtargetInfo::MCSubtargetInfo ( const Triple TT,
StringRef  CPU,
StringRef  FS,
ArrayRef< SubtargetFeatureKV PF,
ArrayRef< SubtargetFeatureKV PD,
const SubtargetInfoKV ProcSched,
const MCWriteProcResEntry WPR,
const MCWriteLatencyEntry WL,
const MCReadAdvanceEntry RA,
const InstrStage IS,
const unsigned OC,
const unsigned FP 
)

Definition at line 42 of file MCSubtargetInfo.cpp.

References InitMCProcessorInfo().

◆ MCSubtargetInfo() [3/3]

llvm::MCSubtargetInfo::MCSubtargetInfo ( )
delete

◆ ~MCSubtargetInfo()

virtual llvm::MCSubtargetInfo::~MCSubtargetInfo ( )
virtualdefault

Member Function Documentation

◆ ApplyFeatureFlag()

FeatureBitset MCSubtargetInfo::ApplyFeatureFlag ( StringRef  FS)

Apply a feature flag and return the re-computed feature bits, including all feature bits implied by the flag.

Definition at line 73 of file MCSubtargetInfo.cpp.

References llvm::SubtargetFeatures::ApplyFeatureFlag().

Referenced by hasFeature(), and llvm::IsCPSRDead< MCInst >().

◆ checkFeatures()

bool MCSubtargetInfo::checkFeatures ( StringRef  FS) const

Check whether the subtarget features are enabled/disabled as per the provided string, ignoring all other features.

Definition at line 78 of file MCSubtargetInfo.cpp.

References llvm::SubtargetFeatures::ApplyFeatureFlag(), F(), llvm::SubtargetFeatures::getFeatures(), and T.

Referenced by hasFeature().

◆ getCPU()

StringRef llvm::MCSubtargetInfo::getCPU ( ) const
inline

◆ getFeatureBits()

const FeatureBitset& llvm::MCSubtargetInfo::getFeatureBits ( ) const
inline

getFeatureBits - Return the feature bits.

Definition at line 79 of file MCSubtargetInfo.h.

Referenced by allOpsDefaultValue(), llvm::AArch64TTIImpl::areInlineCompatible(), llvm::ARMTTIImpl::areInlineCompatible(), llvm::X86TTIImpl::areInlineCompatible(), llvm::AMDGPUTTIImpl::areInlineCompatible(), llvm::AVRAsmParser::AVRAsmParser(), llvm::AVRELFStreamer::AVRELFStreamer(), checkFeature(), checkScale(), clearFeature(), llvm::AMDGPUDisassembler::convertSDWAInst(), llvm::Hexagon_MC::createHexagonMCSubtargetInfo(), llvm::createR600MCCodeEmitter(), llvm::CreateX86AsmInstrumentation(), DecodeHINTInstruction(), llvm::AMDGPUDisassembler::decodeSDWASrc(), llvm::AMDGPUDisassembler::decodeSDWAVopcDst(), DecodeSETPANInstruction(), DecodeSystemPStateInstruction(), llvm::HexagonMCCodeEmitter::encodeInstruction(), llvm::MipsTargetELFStreamer::finish(), getARMLoadDeprecationInfo(), getARMStoreDeprecationInfo(), llvm::MCInstrDesc::getDeprecatedInfo(), llvm::AMDGPUDisassembler::getInstruction(), getITDeprecationInfo(), getLit16Encoding(), getLit32Encoding(), getLit64Encoding(), getMCRDeprecationInfo(), getRelaxedOpcode(), llvm::ARMAsmBackend::hasNOP(), incrementLoc(), llvm::AMDGPU::isCI(), llvm::IsCPSRDead< MCInst >(), llvm::AMDGPU::isGCN3Encoding(), llvm::AMDGPU::isGFX9(), llvm::AMDGPU::isSI(), IsSmallMemAccess(), isThumb(), llvm::SparcInstPrinter::isV9(), llvm::AMDGPU::isVI(), LowerLargeShift(), llvm::MipsTargetELFStreamer::MipsTargetELFStreamer(), llvm::X86ATTInstPrinter::printInst(), llvm::PPCInstPrinter::printInst(), llvm::ARMInstPrinter::printMemBOption(), llvm::AArch64InstPrinter::printMRSSystemRegister(), llvm::ARMInstPrinter::printMSRMaskOperand(), llvm::AArch64InstPrinter::printMSRSystemRegister(), llvm::AMDGPUInstPrinter::printRegOperand(), llvm::AArch64InstPrinter::printSysAlias(), llvm::AArch64InstPrinter::printSystemPStateField(), llvm::AMDGPUInstPrinter::printWaitFlag(), llvm::AMDGPU::IsaInfo::streamIsaVersion(), and SwapBits().

◆ getInstrItineraryForCPU()

InstrItineraryData MCSubtargetInfo::getInstrItineraryForCPU ( StringRef  CPU) const

getInstrItineraryForCPU - Get scheduling itinerary of a CPU.

Definition at line 116 of file MCSubtargetInfo.cpp.

References getSchedModelForCPU().

Referenced by getItineraryLatency(), and getReadAdvanceCycles().

◆ getReadAdvanceCycles()

int llvm::MCSubtargetInfo::getReadAdvanceCycles ( const MCSchedClassDesc SC,
unsigned  UseIdx,
unsigned  WriteResID 
) const
inline

◆ getSchedInfoStr() [1/2]

virtual std::string llvm::MCSubtargetInfo::getSchedInfoStr ( const MachineInstr MI) const
inlinevirtual

Returns string representation of scheduler comment.

Reimplemented in llvm::TargetSubtargetInfo.

Definition at line 184 of file MCSubtargetInfo.h.

Referenced by PrintCFIEscape().

◆ getSchedInfoStr() [2/2]

virtual std::string llvm::MCSubtargetInfo::getSchedInfoStr ( MCInst const MCI) const
inlinevirtual

Reimplemented in llvm::TargetSubtargetInfo.

Definition at line 188 of file MCSubtargetInfo.h.

◆ getSchedModel()

const MCSchedModel& llvm::MCSubtargetInfo::getSchedModel ( ) const
inline

◆ getSchedModelForCPU()

const MCSchedModel & MCSubtargetInfo::getSchedModelForCPU ( StringRef  CPU) const

getSchedModelForCPU - Get the machine model of a CPU.

Definition at line 90 of file MCSubtargetInfo.cpp.

References assert(), llvm::errs(), llvm::MCSchedModel::GetDefaultSchedModel(), llvm::SubtargetInfoKV::Key, and llvm::lower_bound().

Referenced by getInstrItineraryForCPU(), hasFeature(), and InitMCProcessorInfo().

◆ getTargetTriple()

const Triple& llvm::MCSubtargetInfo::getTargetTriple ( ) const
inline

◆ getWriteLatencyEntry()

const MCWriteLatencyEntry* llvm::MCSubtargetInfo::getWriteLatencyEntry ( const MCSchedClassDesc SC,
unsigned  DefIdx 
) const
inline

◆ getWriteProcResBegin()

const MCWriteProcResEntry* llvm::MCSubtargetInfo::getWriteProcResBegin ( const MCSchedClassDesc SC) const
inline

Return an iterator at the first process resource consumed by the given scheduling class.

Definition at line 134 of file MCSubtargetInfo.h.

References llvm::MCSchedClassDesc::WriteProcResIdx.

Referenced by llvm::TargetSchedModel::computeOutputLatency(), getRThroughputFromInstrSchedModel(), llvm::TargetSchedModel::getWriteProcResBegin(), and getWriteProcResEnd().

◆ getWriteProcResEnd()

const MCWriteProcResEntry* llvm::MCSubtargetInfo::getWriteProcResEnd ( const MCSchedClassDesc SC) const
inline

◆ hasFeature()

bool llvm::MCSubtargetInfo::hasFeature ( unsigned  Feature) const
inline

◆ initInstrItins()

void MCSubtargetInfo::initInstrItins ( InstrItineraryData InstrItins) const

Initialize an InstrItineraryData instance.

Definition at line 122 of file MCSubtargetInfo.cpp.

References getSchedModel().

Referenced by getReadAdvanceCycles(), and llvm::TargetSchedModel::init().

◆ InitMCProcessorInfo()

void MCSubtargetInfo::InitMCProcessorInfo ( StringRef  CPU,
StringRef  FS 
)
protected

Initialize the scheduling model and feature bits.

FIXME: Find a way to stick this in the constructor, since it should only be called during initialization.

Definition at line 30 of file MCSubtargetInfo.cpp.

References llvm::StringRef::empty(), llvm::MCSchedModel::GetDefaultSchedModel(), getFeatures(), and getSchedModelForCPU().

Referenced by hasFeature(), and MCSubtargetInfo().

◆ isCPUStringValid()

bool llvm::MCSubtargetInfo::isCPUStringValid ( StringRef  CPU) const
inline

Check whether the CPU string is valid.

Definition at line 178 of file MCSubtargetInfo.h.

References llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), and llvm::lower_bound().

◆ operator=() [1/2]

MCSubtargetInfo& llvm::MCSubtargetInfo::operator= ( const MCSubtargetInfo )
delete

◆ operator=() [2/2]

MCSubtargetInfo& llvm::MCSubtargetInfo::operator= ( MCSubtargetInfo &&  )
delete

◆ setDefaultFeatures()

void MCSubtargetInfo::setDefaultFeatures ( StringRef  CPU,
StringRef  FS 
)

Set the features to the default for the given CPU with an appended feature string.

Definition at line 38 of file MCSubtargetInfo.cpp.

References getFeatures().

Referenced by hasFeature(), incrementLoc(), and llvm::IsCPSRDead< MCInst >().

◆ setFeatureBits()

void llvm::MCSubtargetInfo::setFeatureBits ( const FeatureBitset FeatureBits_)
inline

setFeatureBits - Set the feature bits.

Definition at line 85 of file MCSubtargetInfo.h.

Referenced by llvm::Hexagon_MC::createHexagonMCSubtargetInfo(), and RefineErrorLoc().

◆ ToggleFeature() [1/3]

FeatureBitset MCSubtargetInfo::ToggleFeature ( uint64_t  FB)

ToggleFeature - Toggle a feature and returns the re-computed feature bits.

This version does not change the implied bits.

Definition at line 56 of file MCSubtargetInfo.cpp.

Referenced by checkScale(), clearFeature(), hasFeature(), and incrementLoc().

◆ ToggleFeature() [2/3]

FeatureBitset MCSubtargetInfo::ToggleFeature ( const FeatureBitset FB)

ToggleFeature - Toggle a feature and returns the re-computed feature bits.

This version does not change the implied bits.

Definition at line 61 of file MCSubtargetInfo.cpp.

◆ ToggleFeature() [3/3]

FeatureBitset MCSubtargetInfo::ToggleFeature ( StringRef  FS)

ToggleFeature - Toggle a set of features and returns the re-computed feature bits.

ToggleFeature - Toggle a feature and returns the re-computed feature bits.

This version will also change all implied bits.

Definition at line 68 of file MCSubtargetInfo.cpp.

References llvm::SubtargetFeatures::ToggleFeature().


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