LLVM 19.0.0git
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
llvm::MipsSubtarget Class Reference

#include "Target/Mips/MipsSubtarget.h"

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

Public Member Functions

bool isPositionIndependent () const
 
bool enablePostRAScheduler () const override
 This overrides the PostRAScheduler bit in the SchedModel for each CPU.
 
void getCriticalPathRCs (RegClassVector &CriticalPathRCs) const override
 
CodeGenOptLevel getOptLevelToEnablePostRAScheduler () const override
 
bool isABI_N64 () const
 
bool isABI_N32 () const
 
bool isABI_O32 () const
 
const MipsABIInfogetABI () const
 
bool isABI_FPXX () const
 
 MipsSubtarget (const Triple &TT, StringRef CPU, StringRef FS, bool little, const MipsTargetMachine &TM, MaybeAlign StackAlignOverride)
 This constructor initializes the data members to match that of the specified triple.
 
void ParseSubtargetFeatures (StringRef CPU, StringRef TuneCPU, StringRef FS)
 ParseSubtargetFeatures - Parses features string setting specified subtarget options.
 
bool hasMips1 () const
 
bool hasMips2 () const
 
bool hasMips3 () const
 
bool hasMips4 () const
 
bool hasMips5 () const
 
bool hasMips4_32 () const
 
bool hasMips4_32r2 () const
 
bool hasMips32 () const
 
bool hasMips32r2 () const
 
bool hasMips32r3 () const
 
bool hasMips32r5 () const
 
bool hasMips32r6 () const
 
bool hasMips64 () const
 
bool hasMips64r2 () const
 
bool hasMips64r3 () const
 
bool hasMips64r5 () const
 
bool hasMips64r6 () const
 
bool hasCnMips () const
 
bool hasCnMipsP () const
 
bool isLittle () const
 
bool isABICalls () const
 
bool isFPXX () const
 
bool isFP64bit () const
 
bool useOddSPReg () const
 
bool noOddSPReg () const
 
bool isNaN2008 () const
 
bool inAbs2008Mode () const
 
bool isGP64bit () const
 
bool isGP32bit () const
 
unsigned getGPRSizeInBytes () const
 
bool isPTR64bit () const
 
bool isPTR32bit () const
 
bool hasSym32 () const
 
bool isSingleFloat () const
 
bool isTargetELF () const
 
bool hasVFPU () const
 
bool inMips16Mode () const
 
bool inMips16ModeDefault () const
 
bool inMips16HardFloat () const
 
bool inMicroMipsMode () const
 
bool inMicroMips32r6Mode () const
 
bool hasDSP () const
 
bool hasDSPR2 () const
 
bool hasDSPR3 () const
 
bool has3D () const
 
bool hasMSA () const
 
bool disableMadd4 () const
 
bool hasEVA () const
 
bool hasMT () const
 
bool hasCRC () const
 
bool hasVirt () const
 
bool hasGINV () const
 
bool useIndirectJumpsHazard () const
 
bool useSmallSection () const
 
bool hasStandardEncoding () const
 
bool useSoftFloat () const
 
bool useLongCalls () const
 
bool useXGOT () const
 
bool enableLongBranchPass () const
 
bool hasExtractInsert () const
 Features related to the presence of specific instructions.
 
bool hasMTHC1 () const
 
bool allowMixed16_32 () const
 
bool os16 () const
 
bool isTargetNaCl () const
 
bool isXRaySupported () const override
 
Align getStackAlignment () const
 
Reloc::Model getRelocationModel () const
 
MipsSubtargetinitializeSubtargetDependencies (StringRef CPU, StringRef FS, const TargetMachine &TM)
 
bool systemSupportsUnalignedAccess () const
 Does the system support unaligned memory access.
 
void setHelperClassesMips16 ()
 
void setHelperClassesMipsSE ()
 
const SelectionDAGTargetInfogetSelectionDAGInfo () const override
 
const MipsInstrInfogetInstrInfo () const override
 
const TargetFrameLoweringgetFrameLowering () const override
 
const MipsRegisterInfogetRegisterInfo () const override
 
const MipsTargetLoweringgetTargetLowering () const override
 
const InstrItineraryDatagetInstrItineraryData () const override
 
const CallLoweringgetCallLowering () const override
 
const LegalizerInfogetLegalizerInfo () const override
 
const RegisterBankInfogetRegBankInfo () const override
 
InstructionSelectorgetInstructionSelector () const override
 

Static Public Member Functions

static bool useConstantIslands ()
 

Protected Attributes

std::unique_ptr< CallLoweringCallLoweringInfo
 
std::unique_ptr< LegalizerInfoLegalizer
 
std::unique_ptr< RegisterBankInfoRegBankInfo
 
std::unique_ptr< InstructionSelectorInstSelector
 

Detailed Description

Definition at line 38 of file MipsSubtarget.h.

Constructor & Destructor Documentation

◆ MipsSubtarget()

MipsSubtarget::MipsSubtarget ( const Triple TT,
StringRef  CPU,
StringRef  FS,
bool  little,
const MipsTargetMachine TM,
MaybeAlign  StackAlignOverride 
)

Member Function Documentation

◆ allowMixed16_32()

bool llvm::MipsSubtarget::allowMixed16_32 ( ) const
inline

◆ disableMadd4()

bool llvm::MipsSubtarget::disableMadd4 ( ) const
inline

Definition at line 325 of file MipsSubtarget.h.

◆ enableLongBranchPass()

bool llvm::MipsSubtarget::enableLongBranchPass ( ) const
inline

Definition at line 344 of file MipsSubtarget.h.

References allowMixed16_32(), hasStandardEncoding(), and inMicroMipsMode().

◆ enablePostRAScheduler()

bool MipsSubtarget::enablePostRAScheduler ( ) const
override

This overrides the PostRAScheduler bit in the SchedModel for each CPU.

This overrides the PostRAScheduler bit in the SchedModel for any CPU.

Definition at line 229 of file MipsSubtarget.cpp.

◆ getABI()

const MipsABIInfo & MipsSubtarget::getABI ( ) const

◆ getCallLowering()

const CallLowering * MipsSubtarget::getCallLowering ( ) const
override

Definition at line 285 of file MipsSubtarget.cpp.

References CallLoweringInfo.

◆ getCriticalPathRCs()

void MipsSubtarget::getCriticalPathRCs ( RegClassVector &  CriticalPathRCs) const
override

Definition at line 231 of file MipsSubtarget.cpp.

References isGP64bit().

◆ getFrameLowering()

const TargetFrameLowering * llvm::MipsSubtarget::getFrameLowering ( ) const
inlineoverride

◆ getGPRSizeInBytes()

unsigned llvm::MipsSubtarget::getGPRSizeInBytes ( ) const
inline

Definition at line 296 of file MipsSubtarget.h.

References isGP64bit().

Referenced by llvm::MipsTargetLowering::HandleByVal().

◆ getInstrInfo()

const MipsInstrInfo * llvm::MipsSubtarget::getInstrInfo ( ) const
inlineoverride

◆ getInstrItineraryData()

const InstrItineraryData * llvm::MipsSubtarget::getInstrItineraryData ( ) const
inlineoverride

Definition at line 399 of file MipsSubtarget.h.

◆ getInstructionSelector()

InstructionSelector * MipsSubtarget::getInstructionSelector ( ) const
override

Definition at line 297 of file MipsSubtarget.cpp.

References InstSelector.

◆ getLegalizerInfo()

const LegalizerInfo * MipsSubtarget::getLegalizerInfo ( ) const
override

Definition at line 289 of file MipsSubtarget.cpp.

◆ getOptLevelToEnablePostRAScheduler()

CodeGenOptLevel MipsSubtarget::getOptLevelToEnablePostRAScheduler ( ) const
override

Definition at line 237 of file MipsSubtarget.cpp.

References llvm::Aggressive.

◆ getRegBankInfo()

const RegisterBankInfo * MipsSubtarget::getRegBankInfo ( ) const
override

Definition at line 293 of file MipsSubtarget.cpp.

References RegBankInfo.

Referenced by llvm::MipsCallLowering::lowerCall().

◆ getRegisterInfo()

const MipsRegisterInfo * llvm::MipsSubtarget::getRegisterInfo ( ) const
inlineoverride

◆ getRelocationModel()

Reloc::Model MipsSubtarget::getRelocationModel ( ) const

Definition at line 276 of file MipsSubtarget.cpp.

References llvm::TargetMachine::getRelocationModel().

◆ getSelectionDAGInfo()

const SelectionDAGTargetInfo * llvm::MipsSubtarget::getSelectionDAGInfo ( ) const
inlineoverride

Definition at line 386 of file MipsSubtarget.h.

◆ getStackAlignment()

Align llvm::MipsSubtarget::getStackAlignment ( ) const
inline

Definition at line 365 of file MipsSubtarget.h.

◆ getTargetLowering()

const MipsTargetLowering * llvm::MipsSubtarget::getTargetLowering ( ) const
inlineoverride

Definition at line 396 of file MipsSubtarget.h.

Referenced by MipsSubtarget().

◆ has3D()

bool llvm::MipsSubtarget::has3D ( ) const
inline

Definition at line 323 of file MipsSubtarget.h.

◆ hasCnMips()

bool llvm::MipsSubtarget::hasCnMips ( ) const
inline

◆ hasCnMipsP()

bool llvm::MipsSubtarget::hasCnMipsP ( ) const
inline

Definition at line 284 of file MipsSubtarget.h.

◆ hasCRC()

bool llvm::MipsSubtarget::hasCRC ( ) const
inline

Definition at line 328 of file MipsSubtarget.h.

Referenced by MipsSubtarget().

◆ hasDSP()

bool llvm::MipsSubtarget::hasDSP ( ) const
inline

◆ hasDSPR2()

bool llvm::MipsSubtarget::hasDSPR2 ( ) const
inline

◆ hasDSPR3()

bool llvm::MipsSubtarget::hasDSPR3 ( ) const
inline

Definition at line 322 of file MipsSubtarget.h.

◆ hasEVA()

bool llvm::MipsSubtarget::hasEVA ( ) const
inline

Definition at line 326 of file MipsSubtarget.h.

◆ hasExtractInsert()

bool llvm::MipsSubtarget::hasExtractInsert ( ) const
inline

Features related to the presence of specific instructions.

Definition at line 349 of file MipsSubtarget.h.

References hasMips32r2(), and inMips16Mode().

Referenced by performANDCombine(), and performORCombine().

◆ hasGINV()

bool llvm::MipsSubtarget::hasGINV ( ) const
inline

Definition at line 330 of file MipsSubtarget.h.

Referenced by MipsSubtarget().

◆ hasMips1()

bool llvm::MipsSubtarget::hasMips1 ( ) const
inline

Definition at line 250 of file MipsSubtarget.h.

◆ hasMips2()

bool llvm::MipsSubtarget::hasMips2 ( ) const
inline

Definition at line 251 of file MipsSubtarget.h.

◆ hasMips3()

bool llvm::MipsSubtarget::hasMips3 ( ) const
inline

Definition at line 252 of file MipsSubtarget.h.

◆ hasMips32()

bool llvm::MipsSubtarget::hasMips32 ( ) const
inline

◆ hasMips32r2()

bool llvm::MipsSubtarget::hasMips32r2 ( ) const
inline

◆ hasMips32r3()

bool llvm::MipsSubtarget::hasMips32r3 ( ) const
inline

Definition at line 265 of file MipsSubtarget.h.

References hasMips64r2().

◆ hasMips32r5()

bool llvm::MipsSubtarget::hasMips32r5 ( ) const
inline

Definition at line 269 of file MipsSubtarget.h.

References hasMips64r5().

Referenced by MipsSubtarget().

◆ hasMips32r6()

bool llvm::MipsSubtarget::hasMips32r6 ( ) const
inline

◆ hasMips4()

bool llvm::MipsSubtarget::hasMips4 ( ) const
inline

Definition at line 253 of file MipsSubtarget.h.

◆ hasMips4_32()

bool llvm::MipsSubtarget::hasMips4_32 ( ) const
inline

Definition at line 255 of file MipsSubtarget.h.

◆ hasMips4_32r2()

bool llvm::MipsSubtarget::hasMips4_32r2 ( ) const
inline

Definition at line 256 of file MipsSubtarget.h.

◆ hasMips5()

bool llvm::MipsSubtarget::hasMips5 ( ) const
inline

Definition at line 254 of file MipsSubtarget.h.

◆ hasMips64()

bool llvm::MipsSubtarget::hasMips64 ( ) const
inline

◆ hasMips64r2()

bool llvm::MipsSubtarget::hasMips64r2 ( ) const
inline

◆ hasMips64r3()

bool llvm::MipsSubtarget::hasMips64r3 ( ) const
inline

Definition at line 279 of file MipsSubtarget.h.

◆ hasMips64r5()

bool llvm::MipsSubtarget::hasMips64r5 ( ) const
inline

Definition at line 280 of file MipsSubtarget.h.

Referenced by hasMips32r5().

◆ hasMips64r6()

bool llvm::MipsSubtarget::hasMips64r6 ( ) const
inline

◆ hasMSA()

bool llvm::MipsSubtarget::hasMSA ( ) const
inline

◆ hasMT()

bool llvm::MipsSubtarget::hasMT ( ) const
inline

Definition at line 327 of file MipsSubtarget.h.

◆ hasMTHC1()

bool llvm::MipsSubtarget::hasMTHC1 ( ) const
inline

Definition at line 350 of file MipsSubtarget.h.

References hasMips32r2().

◆ hasStandardEncoding()

bool llvm::MipsSubtarget::hasStandardEncoding ( ) const
inline

Definition at line 336 of file MipsSubtarget.h.

Referenced by enableLongBranchPass().

◆ hasSym32()

bool llvm::MipsSubtarget::hasSym32 ( ) const
inline

Definition at line 299 of file MipsSubtarget.h.

References isABI_N32(), isABI_N64(), and isABI_O32().

Referenced by llvm::MipsAsmPrinter::emitStartOfAsmFile(), and MipsSubtarget().

◆ hasVFPU()

bool llvm::MipsSubtarget::hasVFPU ( ) const
inline

Definition at line 304 of file MipsSubtarget.h.

◆ hasVirt()

bool llvm::MipsSubtarget::hasVirt ( ) const
inline

Definition at line 329 of file MipsSubtarget.h.

Referenced by MipsSubtarget().

◆ inAbs2008Mode()

bool llvm::MipsSubtarget::inAbs2008Mode ( ) const
inline

Definition at line 293 of file MipsSubtarget.h.

Referenced by MipsSubtarget().

◆ initializeSubtargetDependencies()

MipsSubtarget & MipsSubtarget::initializeSubtargetDependencies ( StringRef  CPU,
StringRef  FS,
const TargetMachine TM 
)

◆ inMicroMips32r6Mode()

bool llvm::MipsSubtarget::inMicroMips32r6Mode ( ) const
inline

Definition at line 317 of file MipsSubtarget.h.

References hasMips32r6(), and inMicroMipsMode().

◆ inMicroMipsMode()

bool llvm::MipsSubtarget::inMicroMipsMode ( ) const
inline

◆ inMips16HardFloat()

bool llvm::MipsSubtarget::inMips16HardFloat ( ) const
inline

◆ inMips16Mode()

bool llvm::MipsSubtarget::inMips16Mode ( ) const
inline

◆ inMips16ModeDefault()

bool llvm::MipsSubtarget::inMips16ModeDefault ( ) const
inline

Definition at line 306 of file MipsSubtarget.h.

Referenced by allowMixed16_32().

◆ isABI_FPXX()

bool llvm::MipsSubtarget::isABI_FPXX ( ) const
inline

Definition at line 239 of file MipsSubtarget.h.

References isABI_O32().

Referenced by llvm::MipsAsmPrinter::emitStartOfAsmFile().

◆ isABI_N32()

bool MipsSubtarget::isABI_N32 ( ) const

◆ isABI_N64()

bool MipsSubtarget::isABI_N64 ( ) const

◆ isABI_O32()

bool MipsSubtarget::isABI_O32 ( ) const

◆ isABICalls()

bool llvm::MipsSubtarget::isABICalls ( ) const
inline

◆ isFP64bit()

bool llvm::MipsSubtarget::isFP64bit ( ) const
inline

◆ isFPXX()

bool llvm::MipsSubtarget::isFPXX ( ) const
inline

◆ isGP32bit()

bool llvm::MipsSubtarget::isGP32bit ( ) const
inline

Definition at line 295 of file MipsSubtarget.h.

Referenced by llvm::MipsRegisterInfo::canRealignStack().

◆ isGP64bit()

bool llvm::MipsSubtarget::isGP64bit ( ) const
inline

◆ isLittle()

bool llvm::MipsSubtarget::isLittle ( ) const
inline

◆ isNaN2008()

bool llvm::MipsSubtarget::isNaN2008 ( ) const
inline

Definition at line 292 of file MipsSubtarget.h.

Referenced by llvm::MipsAsmPrinter::emitStartOfAsmFile(), and MipsSubtarget().

◆ isPositionIndependent()

bool MipsSubtarget::isPositionIndependent ( ) const

Definition at line 224 of file MipsSubtarget.cpp.

References llvm::TargetMachine::isPositionIndependent().

Referenced by getUnconditionalBranch().

◆ isPTR32bit()

bool llvm::MipsSubtarget::isPTR32bit ( ) const
inline

Definition at line 298 of file MipsSubtarget.h.

◆ isPTR64bit()

bool llvm::MipsSubtarget::isPTR64bit ( ) const
inline

Definition at line 297 of file MipsSubtarget.h.

◆ isSingleFloat()

bool llvm::MipsSubtarget::isSingleFloat ( ) const
inline

◆ isTargetELF()

bool llvm::MipsSubtarget::isTargetELF ( ) const
inline

Definition at line 303 of file MipsSubtarget.h.

References llvm::Triple::isOSBinFormatELF().

◆ isTargetNaCl()

bool llvm::MipsSubtarget::isTargetNaCl ( ) const
inline

◆ isXRaySupported()

bool llvm::MipsSubtarget::isXRaySupported ( ) const
inlineoverride

Definition at line 359 of file MipsSubtarget.h.

◆ noOddSPReg()

bool llvm::MipsSubtarget::noOddSPReg ( ) const
inline

Definition at line 291 of file MipsSubtarget.h.

◆ os16()

bool llvm::MipsSubtarget::os16 ( ) const
inline

Definition at line 355 of file MipsSubtarget.h.

◆ ParseSubtargetFeatures()

void llvm::MipsSubtarget::ParseSubtargetFeatures ( StringRef  CPU,
StringRef  TuneCPU,
StringRef  FS 
)

ParseSubtargetFeatures - Parses features string setting specified subtarget options.

Definition of function is auto generated by tblgen.

Referenced by initializeSubtargetDependencies().

◆ setHelperClassesMips16()

void llvm::MipsSubtarget::setHelperClassesMips16 ( )

◆ setHelperClassesMipsSE()

void llvm::MipsSubtarget::setHelperClassesMipsSE ( )

◆ systemSupportsUnalignedAccess()

bool llvm::MipsSubtarget::systemSupportsUnalignedAccess ( ) const
inline

Does the system support unaligned memory access.

MIPS32r6/MIPS64r6 require full unaligned access support but does not specify which component of the system provides it. Hardware, software, and hybrid implementations are all valid.

Definition at line 378 of file MipsSubtarget.h.

References hasMips32r6().

Referenced by llvm::MipsSETargetLowering::allowsMisalignedMemoryAccesses(), isGprbTwoInstrUnalignedLoadOrStore(), llvm::MipsTargetLowering::lowerLOAD(), and llvm::MipsTargetLowering::lowerSTORE().

◆ useConstantIslands()

bool MipsSubtarget::useConstantIslands ( )
static

◆ useIndirectJumpsHazard()

bool llvm::MipsSubtarget::useIndirectJumpsHazard ( ) const
inline

Definition at line 331 of file MipsSubtarget.h.

References hasMips32r2().

Referenced by llvm::MipsInstrInfo::verifyInstruction().

◆ useLongCalls()

bool llvm::MipsSubtarget::useLongCalls ( ) const
inline

Definition at line 340 of file MipsSubtarget.h.

◆ useOddSPReg()

bool llvm::MipsSubtarget::useOddSPReg ( ) const
inline

Definition at line 290 of file MipsSubtarget.h.

Referenced by llvm::MipsAsmPrinter::emitStartOfAsmFile(), and MipsSubtarget().

◆ useSmallSection()

bool llvm::MipsSubtarget::useSmallSection ( ) const
inline

Definition at line 334 of file MipsSubtarget.h.

Referenced by llvm::MipsRegisterInfo::getReservedRegs().

◆ useSoftFloat()

bool llvm::MipsSubtarget::useSoftFloat ( ) const
inline

◆ useXGOT()

bool llvm::MipsSubtarget::useXGOT ( ) const
inline

Definition at line 342 of file MipsSubtarget.h.

Referenced by llvm::MipsTargetLowering::createFastISel().

Member Data Documentation

◆ CallLoweringInfo

std::unique_ptr<CallLowering> llvm::MipsSubtarget::CallLoweringInfo
protected

Definition at line 405 of file MipsSubtarget.h.

Referenced by getCallLowering(), and MipsSubtarget().

◆ InstSelector

std::unique_ptr<InstructionSelector> llvm::MipsSubtarget::InstSelector
protected

Definition at line 408 of file MipsSubtarget.h.

Referenced by getInstructionSelector(), and MipsSubtarget().

◆ Legalizer

std::unique_ptr<LegalizerInfo> llvm::MipsSubtarget::Legalizer
protected

Definition at line 406 of file MipsSubtarget.h.

◆ RegBankInfo

std::unique_ptr<RegisterBankInfo> llvm::MipsSubtarget::RegBankInfo
protected

Definition at line 407 of file MipsSubtarget.h.

Referenced by getRegBankInfo(), and MipsSubtarget().


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