LLVM 22.0.0git
llvm::MipsSubtarget Class Reference

#include "Target/Mips/MipsSubtarget.h"

Inheritance diagram for llvm::MipsSubtarget:
[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.
 ~MipsSubtarget () override
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 isTargetCOFF () 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 isTargetWindows () 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 37 of file MipsSubtarget.h.

Constructor & Destructor Documentation

◆ MipsSubtarget()

◆ ~MipsSubtarget()

MipsSubtarget::~MipsSubtarget ( )
overridedefault

Member Function Documentation

◆ allowMixed16_32()

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

Definition at line 353 of file MipsSubtarget.h.

References inMips16ModeDefault().

Referenced by enableLongBranchPass().

◆ disableMadd4()

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

Definition at line 326 of file MipsSubtarget.h.

◆ enableLongBranchPass()

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

Definition at line 345 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 233 of file MipsSubtarget.cpp.

◆ getABI()

const MipsABIInfo & MipsSubtarget::getABI ( ) const

Definition at line 287 of file MipsSubtarget.cpp.

Referenced by isABI_N32(), isABI_N64(), and isABI_O32().

◆ getCallLowering()

const CallLowering * MipsSubtarget::getCallLowering ( ) const
override

Definition at line 293 of file MipsSubtarget.cpp.

References CallLoweringInfo.

◆ getCriticalPathRCs()

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

Definition at line 235 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().

◆ getInstrInfo()

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

Definition at line 389 of file MipsSubtarget.h.

◆ 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 305 of file MipsSubtarget.cpp.

References InstSelector.

◆ getLegalizerInfo()

const LegalizerInfo * MipsSubtarget::getLegalizerInfo ( ) const
override

Definition at line 297 of file MipsSubtarget.cpp.

References Legalizer.

◆ getOptLevelToEnablePostRAScheduler()

CodeGenOptLevel MipsSubtarget::getOptLevelToEnablePostRAScheduler ( ) const
override

Definition at line 241 of file MipsSubtarget.cpp.

References llvm::Aggressive.

◆ getRegBankInfo()

const RegisterBankInfo * MipsSubtarget::getRegBankInfo ( ) const
override

Definition at line 301 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 280 of file MipsSubtarget.cpp.

◆ getSelectionDAGInfo()

const SelectionDAGTargetInfo * MipsSubtarget::getSelectionDAGInfo ( ) const
override

Definition at line 289 of file MipsSubtarget.cpp.

◆ getStackAlignment()

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

Definition at line 366 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 324 of file MipsSubtarget.h.

◆ hasCnMips()

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

Definition at line 283 of file MipsSubtarget.h.

Referenced by performANDCombine(), and performSHLCombine().

◆ 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 329 of file MipsSubtarget.h.

Referenced by MipsSubtarget().

◆ hasDSP()

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

Definition at line 321 of file MipsSubtarget.h.

Referenced by MipsSubtarget(), and performDSPShiftCombine().

◆ hasDSPR2()

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

Definition at line 322 of file MipsSubtarget.h.

Referenced by MipsSubtarget(), performSRACombine(), and performSRLCombine().

◆ hasDSPR3()

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

Definition at line 323 of file MipsSubtarget.h.

◆ hasEVA()

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

Definition at line 327 of file MipsSubtarget.h.

◆ hasExtractInsert()

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

Features related to the presence of specific instructions.

Definition at line 350 of file MipsSubtarget.h.

References hasMips32r2(), and inMips16Mode().

Referenced by performANDCombine(), and performORCombine().

◆ hasGINV()

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

Definition at line 331 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

Definition at line 257 of file MipsSubtarget.h.

References hasMips64().

Referenced by MipsSubtarget(), performADDCombine(), and performSUBCombine().

◆ hasMips32r2()

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

Definition at line 261 of file MipsSubtarget.h.

References hasMips64r2().

Referenced by hasExtractInsert(), hasMTHC1(), MipsSubtarget(), and useIndirectJumpsHazard().

◆ 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()

◆ 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

Definition at line 278 of file MipsSubtarget.h.

Referenced by hasMips32r2(), hasMips32r3(), MipsSubtarget(), and performORCombine().

◆ 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 328 of file MipsSubtarget.h.

◆ hasMTHC1()

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

Definition at line 351 of file MipsSubtarget.h.

References hasMips32r2().

◆ hasStandardEncoding()

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

Definition at line 337 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 305 of file MipsSubtarget.h.

◆ hasVirt()

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

Definition at line 330 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 318 of file MipsSubtarget.h.

References hasMips32r6(), and inMicroMipsMode().

◆ inMicroMipsMode()

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

◆ inMips16HardFloat()

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

Definition at line 314 of file MipsSubtarget.h.

References inMips16Mode().

Referenced by llvm::MipsCCState::getSpecialCallingConvForCallee().

◆ inMips16Mode()

◆ inMips16ModeDefault()

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

Definition at line 307 of file MipsSubtarget.h.

Referenced by allowMixed16_32().

◆ isABI_FPXX()

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

Definition at line 237 of file MipsSubtarget.h.

References isABI_O32().

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

◆ isABI_N32()

◆ isABI_N64()

◆ isABI_O32()

bool MipsSubtarget::isABI_O32 ( ) const

◆ isABICalls()

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

◆ isFP64bit()

◆ 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()

◆ isLittle()

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

Definition at line 286 of file MipsSubtarget.h.

Referenced by CC_MipsO32(), performDSPShiftCombine(), and performORCombine().

◆ 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 228 of file MipsSubtarget.cpp.

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

◆ isTargetCOFF()

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

Definition at line 303 of file MipsSubtarget.h.

◆ isTargetELF()

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

Definition at line 304 of file MipsSubtarget.h.

◆ isTargetWindows()

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

Definition at line 358 of file MipsSubtarget.h.

◆ isXRaySupported()

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

Definition at line 360 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 356 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 379 of file MipsSubtarget.h.

References hasMips32r6().

Referenced by isGprbTwoInstrUnalignedLoadOrStore().

◆ useConstantIslands()

bool MipsSubtarget::useConstantIslands ( )
static

Definition at line 274 of file MipsSubtarget.cpp.

References llvm::dbgs(), LLVM_DEBUG, and Mips16ConstantIslands.

◆ useIndirectJumpsHazard()

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

Definition at line 332 of file MipsSubtarget.h.

References hasMips32r2().

◆ useLongCalls()

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

Definition at line 341 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 335 of file MipsSubtarget.h.

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

◆ useSoftFloat()

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

Definition at line 339 of file MipsSubtarget.h.

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

◆ useXGOT()

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

Definition at line 343 of file MipsSubtarget.h.

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.

Referenced by getLegalizerInfo(), and MipsSubtarget().

◆ 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: