LLVM 20.0.0git
Classes | Public Types | Public Member Functions | Protected Attributes | List of all members
llvm::AArch64Subtarget Class Referencefinal

#include "Target/AArch64/AArch64Subtarget.h"

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

Public Types

enum  ARMProcFamilyEnum : uint8_t { Others }
 

Public Member Functions

 AArch64Subtarget (const Triple &TT, StringRef CPU, StringRef TuneCPU, StringRef FS, const TargetMachine &TM, bool LittleEndian, unsigned MinSVEVectorSizeInBitsOverride=0, unsigned MaxSVEVectorSizeInBitsOverride=0, bool IsStreaming=false, bool IsStreamingCompatible=false, bool HasMinSize=false)
 This constructor initializes the data members to match that of the specified triple.
 
const AArch64SelectionDAGInfogetSelectionDAGInfo () const override
 
const AArch64FrameLoweringgetFrameLowering () const override
 
const AArch64TargetLoweringgetTargetLowering () const override
 
const AArch64InstrInfogetInstrInfo () const override
 
const AArch64RegisterInfogetRegisterInfo () const override
 
const CallLoweringgetCallLowering () const override
 
const InlineAsmLoweringgetInlineAsmLowering () const override
 
InstructionSelectorgetInstructionSelector () const override
 
const LegalizerInfogetLegalizerInfo () const override
 
const RegisterBankInfogetRegBankInfo () const override
 
const TriplegetTargetTriple () const
 
bool enableMachineScheduler () const override
 
bool enablePostRAScheduler () const override
 
bool enableMachinePipeliner () const override
 
bool useDFAforSMS () const override
 
ARMProcFamilyEnum getProcFamily () const
 Returns ARM processor family.
 
bool isXRaySupported () const override
 
bool isStreaming () const
 Returns true if the function has a streaming body.
 
bool isStreamingCompatible () const
 Returns true if the function has a streaming-compatible body.
 
bool isNeonAvailable () const
 Returns true if the target has NEON and the function at runtime is known to have NEON enabled (e.g.
 
bool isSVEAvailable () const
 Returns true if the target has SVE and can use the full range of SVE instructions, for example because it knows the function is known not to be in streaming-SVE mode or when the target has FEAT_FA64 enabled.
 
bool isSVEorStreamingSVEAvailable () const
 Returns true if the target has access to either the full range of SVE instructions, or the streaming-compatible subset of SVE instructions.
 
unsigned getMinVectorRegisterBitWidth () const
 
bool isXRegisterReserved (size_t i) const
 
bool isXRegisterReservedForRA (size_t i) const
 
unsigned getNumXRegisterReserved () const
 
bool isLRReservedForRA () const
 
bool isXRegCustomCalleeSaved (size_t i) const
 
bool hasCustomCallingConv () const
 
bool hasFusion () const
 Return true if the CPU supports any kind of instruction fusion.
 
unsigned getMaxInterleaveFactor () const
 
unsigned getVectorInsertExtractBaseCost () const
 
unsigned getCacheLineSize () const override
 
unsigned getScatterOverhead () const
 
unsigned getGatherOverhead () const
 
unsigned getPrefetchDistance () const override
 
unsigned getMinPrefetchStride (unsigned NumMemAccesses, unsigned NumStridedMemAccesses, unsigned NumPrefetches, bool HasCall) const override
 
unsigned getMaxPrefetchIterationsAhead () const override
 
Align getPrefFunctionAlignment () const
 
Align getPrefLoopAlignment () const
 
unsigned getMaxBytesForLoopAlignment () const
 
unsigned getMaximumJumpTableSize () const
 
unsigned getMinimumJumpTableEntries () const
 
bool supportsAddressTopByteIgnored () const
 CPU has TBI (top byte of addresses is ignored during HW address translation) and OS enables it.
 
bool isLittleEndian () const
 
bool isTargetDarwin () const
 
bool isTargetIOS () const
 
bool isTargetLinux () const
 
bool isTargetWindows () const
 
bool isTargetAndroid () const
 
bool isTargetFuchsia () const
 
bool isWindowsArm64EC () const
 
bool isTargetCOFF () const
 
bool isTargetELF () const
 
bool isTargetMachO () const
 
bool isTargetILP32 () const
 
bool useAA () const override
 
bool addrSinkUsingGEPs () const override
 
bool useSmallAddressing () const
 
void ParseSubtargetFeatures (StringRef CPU, StringRef TuneCPU, StringRef FS)
 ParseSubtargetFeatures - Parses features string setting specified subtarget options.
 
unsigned ClassifyGlobalReference (const GlobalValue *GV, const TargetMachine &TM) const
 ClassifyGlobalReference - Find the target operand flags that describe how a global value should be referenced for the current subtarget.
 
unsigned classifyGlobalFunctionReference (const GlobalValue *GV, const TargetMachine &TM) const
 
unsigned char classifyGlobalFunctionReference (const GlobalValue *GV) const override
 This function is design to compatible with the function def in other targets and escape build error about the virtual function def in base class TargetSubtargetInfo.
 
void overrideSchedPolicy (MachineSchedPolicy &Policy, unsigned NumRegionInstrs) const override
 
void adjustSchedDependency (SUnit *Def, int DefOpIdx, SUnit *Use, int UseOpIdx, SDep &Dep, const TargetSchedModel *SchedModel) const override
 
bool enableEarlyIfConversion () const override
 
std::unique_ptr< PBQPRAConstraintgetCustomPBQPConstraints () const override
 
bool isCallingConvWin64 (CallingConv::ID CC, bool IsVarArg) const
 
bool swiftAsyncContextIsDynamicallySet () const
 Return whether FrameLowering should always set the "extended frame present" bit in FP, or set it based on a symbol in the runtime.
 
void mirFileLoaded (MachineFunction &MF) const override
 
unsigned getMaxSVEVectorSizeInBits () const
 
unsigned getMinSVEVectorSizeInBits () const
 
bool useSVEForFixedLengthVectors () const
 
bool useSVEForFixedLengthVectors (EVT VT) const
 
unsigned getVScaleForTuning () const
 
TailFoldingOpts getSVETailFoldingDefaultOpts () const
 
const chargetChkStkName () const
 
const chargetSecurityCheckCookieName () const
 
AArch64PAuth::AuthCheckMethod getAuthenticatedLRCheckMethod (const MachineFunction &MF) const
 Choose a method of checking LR before performing a tail call.
 
std::optional< uint16_tgetPtrAuthBlockAddressDiscriminatorIfEnabled (const Function &ParentFn) const
 Compute the integer discriminator for a given BlockAddress constant, if blockaddress signing is enabled, or std::nullopt otherwise.
 
const PseudoSourceValuegetAddressCheckPSV () const
 

Protected Attributes

ARMProcFamilyEnum ARMProcFamily = Others
 ARMProcFamily - ARM processor family: Cortex-A53, Cortex-A57, and others.
 
unsigned MinVectorRegisterBitWidth = 64
 
uint8_t MaxInterleaveFactor = 2
 
uint8_t VectorInsertExtractBaseCost = 2
 
uint16_t CacheLineSize = 0
 
unsigned ScatterOverhead = 10
 
unsigned GatherOverhead = 10
 
uint16_t PrefetchDistance = 0
 
uint16_t MinPrefetchStride = 1
 
unsigned MaxPrefetchIterationsAhead = UINT_MAX
 
Align PrefFunctionAlignment
 
Align PrefLoopAlignment
 
unsigned MaxBytesForLoopAlignment = 0
 
unsigned MinimumJumpTableEntries = 4
 
unsigned MaxJumpTableSize = 0
 
BitVector ReserveXRegister
 
BitVector ReserveXRegisterForRA
 
BitVector CustomCallSavedXRegs
 
bool IsLittle
 
bool IsStreaming
 
bool IsStreamingCompatible
 
unsigned MinSVEVectorSizeInBits
 
unsigned MaxSVEVectorSizeInBits
 
unsigned VScaleForTuning = 2
 
TailFoldingOpts DefaultSVETFOpts = TailFoldingOpts::Disabled
 
Triple TargetTriple
 TargetTriple - What processor and OS we're targeting.
 
AArch64FrameLowering FrameLowering
 
AArch64InstrInfo InstrInfo
 
AArch64SelectionDAGInfo TSInfo
 
AArch64TargetLowering TLInfo
 
std::unique_ptr< CallLoweringCallLoweringInfo
 GlobalISel related APIs.
 
std::unique_ptr< InlineAsmLoweringInlineAsmLoweringInfo
 
std::unique_ptr< InstructionSelectorInstSelector
 
std::unique_ptr< LegalizerInfoLegalizer
 
std::unique_ptr< RegisterBankInfoRegBankInfo
 

Detailed Description

Definition at line 38 of file AArch64Subtarget.h.

Member Enumeration Documentation

◆ ARMProcFamilyEnum

Enumerator
Others 

Definition at line 40 of file AArch64Subtarget.h.

Constructor & Destructor Documentation

◆ AArch64Subtarget()

AArch64Subtarget::AArch64Subtarget ( const Triple TT,
StringRef  CPU,
StringRef  TuneCPU,
StringRef  FS,
const TargetMachine TM,
bool  LittleEndian,
unsigned  MinSVEVectorSizeInBitsOverride = 0,
unsigned  MaxSVEVectorSizeInBitsOverride = 0,
bool  IsStreaming = false,
bool  IsStreamingCompatible = false,
bool  HasMinSize = false 
)

Member Function Documentation

◆ addrSinkUsingGEPs()

bool llvm::AArch64Subtarget::addrSinkUsingGEPs ( ) const
inlineoverride

Definition at line 282 of file AArch64Subtarget.h.

References isTargetILP32(), and useAA().

◆ adjustSchedDependency()

void AArch64Subtarget::adjustSchedDependency ( SUnit Def,
int  DefOpIdx,
SUnit Use,
int  UseOpIdx,
SDep Dep,
const TargetSchedModel SchedModel 
) const
override

◆ classifyGlobalFunctionReference() [1/2]

unsigned char llvm::AArch64Subtarget::classifyGlobalFunctionReference ( const GlobalValue GV) const
inlineoverride

This function is design to compatible with the function def in other targets and escape build error about the virtual function def in base class TargetSubtargetInfo.

Updeate me if AArch64 target need to use it.

Definition at line 316 of file AArch64Subtarget.h.

◆ classifyGlobalFunctionReference() [2/2]

unsigned AArch64Subtarget::classifyGlobalFunctionReference ( const GlobalValue GV,
const TargetMachine TM 
) const

◆ ClassifyGlobalReference()

unsigned AArch64Subtarget::ClassifyGlobalReference ( const GlobalValue GV,
const TargetMachine TM 
) const

◆ enableEarlyIfConversion()

bool AArch64Subtarget::enableEarlyIfConversion ( ) const
override

Definition at line 524 of file AArch64Subtarget.cpp.

References EnableEarlyIfConvert.

◆ enableMachinePipeliner()

bool AArch64Subtarget::enableMachinePipeliner ( ) const
override

Definition at line 597 of file AArch64Subtarget.cpp.

◆ enableMachineScheduler()

bool llvm::AArch64Subtarget::enableMachineScheduler ( ) const
inlineoverride

Definition at line 153 of file AArch64Subtarget.h.

◆ enablePostRAScheduler()

bool llvm::AArch64Subtarget::enablePostRAScheduler ( ) const
inlineoverride

Definition at line 154 of file AArch64Subtarget.h.

◆ getAddressCheckPSV()

const PseudoSourceValue * llvm::AArch64Subtarget::getAddressCheckPSV ( ) const
inline

Definition at line 434 of file AArch64Subtarget.h.

◆ getAuthenticatedLRCheckMethod()

AArch64PAuth::AuthCheckMethod AArch64Subtarget::getAuthenticatedLRCheckMethod ( const MachineFunction MF) const

Choose a method of checking LR before performing a tail call.

Definition at line 571 of file AArch64Subtarget.cpp.

References AuthenticatedLRCheckMethod, llvm::MachineFunction::getFunction(), llvm::Function::hasFnAttribute(), llvm::AArch64PAuth::HighBitsNoTBI, and llvm::AArch64PAuth::None.

◆ getCacheLineSize()

unsigned llvm::AArch64Subtarget::getCacheLineSize ( ) const
inlineoverride

Definition at line 230 of file AArch64Subtarget.h.

References CacheLineSize.

◆ getCallLowering()

const CallLowering * AArch64Subtarget::getCallLowering ( ) const
override

Definition at line 374 of file AArch64Subtarget.cpp.

References CallLoweringInfo.

◆ getChkStkName()

const char * llvm::AArch64Subtarget::getChkStkName ( ) const
inline

Definition at line 408 of file AArch64Subtarget.h.

References isWindowsArm64EC().

Referenced by llvm::AArch64FrameLowering::emitPrologue().

◆ getCustomPBQPConstraints()

std::unique_ptr< PBQPRAConstraint > AArch64Subtarget::getCustomPBQPConstraints ( ) const
override

Definition at line 542 of file AArch64Subtarget.cpp.

◆ getFrameLowering()

const AArch64FrameLowering * llvm::AArch64Subtarget::getFrameLowering ( ) const
inlineoverride

Definition at line 137 of file AArch64Subtarget.h.

References FrameLowering.

Referenced by llvm::AArch64FunctionInfo::AArch64FunctionInfo().

◆ getGatherOverhead()

unsigned llvm::AArch64Subtarget::getGatherOverhead ( ) const
inline

Definition at line 232 of file AArch64Subtarget.h.

References GatherOverhead.

◆ getInlineAsmLowering()

const InlineAsmLowering * AArch64Subtarget::getInlineAsmLowering ( ) const
override

Definition at line 378 of file AArch64Subtarget.cpp.

References InlineAsmLoweringInfo.

◆ getInstrInfo()

const AArch64InstrInfo * llvm::AArch64Subtarget::getInstrInfo ( ) const
inlineoverride

◆ getInstructionSelector()

InstructionSelector * AArch64Subtarget::getInstructionSelector ( ) const
override

Definition at line 382 of file AArch64Subtarget.cpp.

References InstSelector.

◆ getLegalizerInfo()

const LegalizerInfo * AArch64Subtarget::getLegalizerInfo ( ) const
override

Definition at line 386 of file AArch64Subtarget.cpp.

◆ getMaxBytesForLoopAlignment()

unsigned llvm::AArch64Subtarget::getMaxBytesForLoopAlignment ( ) const
inline

◆ getMaximumJumpTableSize()

unsigned llvm::AArch64Subtarget::getMaximumJumpTableSize ( ) const
inline

Definition at line 252 of file AArch64Subtarget.h.

References MaxJumpTableSize.

Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering().

◆ getMaxInterleaveFactor()

unsigned llvm::AArch64Subtarget::getMaxInterleaveFactor ( ) const
inline

Definition at line 228 of file AArch64Subtarget.h.

References MaxInterleaveFactor.

Referenced by llvm::AArch64TTIImpl::getMaxInterleaveFactor().

◆ getMaxPrefetchIterationsAhead()

unsigned llvm::AArch64Subtarget::getMaxPrefetchIterationsAhead ( ) const
inlineoverride

Definition at line 240 of file AArch64Subtarget.h.

References MaxPrefetchIterationsAhead.

◆ getMaxSVEVectorSizeInBits()

unsigned llvm::AArch64Subtarget::getMaxSVEVectorSizeInBits ( ) const
inline

◆ getMinimumJumpTableEntries()

unsigned llvm::AArch64Subtarget::getMinimumJumpTableEntries ( ) const
inline

Definition at line 253 of file AArch64Subtarget.h.

References MinimumJumpTableEntries.

◆ getMinPrefetchStride()

unsigned llvm::AArch64Subtarget::getMinPrefetchStride ( unsigned  NumMemAccesses,
unsigned  NumStridedMemAccesses,
unsigned  NumPrefetches,
bool  HasCall 
) const
inlineoverride

Definition at line 234 of file AArch64Subtarget.h.

References MinPrefetchStride.

◆ getMinSVEVectorSizeInBits()

unsigned llvm::AArch64Subtarget::getMinSVEVectorSizeInBits ( ) const
inline

◆ getMinVectorRegisterBitWidth()

unsigned llvm::AArch64Subtarget::getMinVectorRegisterBitWidth ( ) const
inline

◆ getNumXRegisterReserved()

unsigned llvm::AArch64Subtarget::getNumXRegisterReserved ( ) const
inline

◆ getPrefetchDistance()

unsigned llvm::AArch64Subtarget::getPrefetchDistance ( ) const
inlineoverride

Definition at line 233 of file AArch64Subtarget.h.

References PrefetchDistance.

◆ getPrefFunctionAlignment()

Align llvm::AArch64Subtarget::getPrefFunctionAlignment ( ) const
inline

◆ getPrefLoopAlignment()

Align llvm::AArch64Subtarget::getPrefLoopAlignment ( ) const
inline

Definition at line 246 of file AArch64Subtarget.h.

References PrefLoopAlignment.

Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering().

◆ getProcFamily()

ARMProcFamilyEnum llvm::AArch64Subtarget::getProcFamily ( ) const
inline

Returns ARM processor family.

Avoid this function! CPU specifics should be kept local to this class and preferably modeled with SubtargetFeatures or properties in initializeProperties().

Definition at line 163 of file AArch64Subtarget.h.

References ARMProcFamily.

Referenced by llvm::AArch64TargetLowering::getTargetMMOFlags(), and llvm::AArch64TTIImpl::getUnrollingPreferences().

◆ getPtrAuthBlockAddressDiscriminatorIfEnabled()

std::optional< uint16_t > AArch64Subtarget::getPtrAuthBlockAddressDiscriminatorIfEnabled ( const Function ParentFn) const

Compute the integer discriminator for a given BlockAddress constant, if blockaddress signing is enabled, or std::nullopt otherwise.

Blockaddress signing is controlled by the function attribute "ptrauth-indirect-gotos" on the parent function. Note that this assumes the discriminator is independent of the indirect goto branch site itself, i.e., it's the same for all BlockAddresses in a function.

Definition at line 587 of file AArch64Subtarget.cpp.

References llvm::Value::getName(), llvm::getPointerAuthStableSipHash(), and llvm::Function::hasFnAttribute().

◆ getRegBankInfo()

const RegisterBankInfo * AArch64Subtarget::getRegBankInfo ( ) const
override

Definition at line 390 of file AArch64Subtarget.cpp.

References RegBankInfo.

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

◆ getRegisterInfo()

const AArch64RegisterInfo * llvm::AArch64Subtarget::getRegisterInfo ( ) const
inlineoverride

◆ getScatterOverhead()

unsigned llvm::AArch64Subtarget::getScatterOverhead ( ) const
inline

Definition at line 231 of file AArch64Subtarget.h.

References ScatterOverhead.

◆ getSecurityCheckCookieName()

const char * llvm::AArch64Subtarget::getSecurityCheckCookieName ( ) const
inline

◆ getSelectionDAGInfo()

const AArch64SelectionDAGInfo * llvm::AArch64Subtarget::getSelectionDAGInfo ( ) const
inlineoverride

Definition at line 134 of file AArch64Subtarget.h.

References TSInfo.

◆ getSVETailFoldingDefaultOpts()

TailFoldingOpts llvm::AArch64Subtarget::getSVETailFoldingDefaultOpts ( ) const
inline

Definition at line 404 of file AArch64Subtarget.h.

References DefaultSVETFOpts.

Referenced by llvm::AArch64TTIImpl::preferPredicateOverEpilogue().

◆ getTargetLowering()

const AArch64TargetLowering * llvm::AArch64Subtarget::getTargetLowering ( ) const
inlineoverride

◆ getTargetTriple()

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

◆ getVectorInsertExtractBaseCost()

unsigned AArch64Subtarget::getVectorInsertExtractBaseCost ( ) const

◆ getVScaleForTuning()

unsigned llvm::AArch64Subtarget::getVScaleForTuning ( ) const
inline

Definition at line 402 of file AArch64Subtarget.h.

References VScaleForTuning.

◆ hasCustomCallingConv()

bool llvm::AArch64Subtarget::hasCustomCallingConv ( ) const
inline

◆ hasFusion()

bool llvm::AArch64Subtarget::hasFusion ( ) const
inline

Return true if the CPU supports any kind of instruction fusion.

Definition at line 222 of file AArch64Subtarget.h.

◆ isCallingConvWin64()

bool llvm::AArch64Subtarget::isCallingConvWin64 ( CallingConv::ID  CC,
bool  IsVarArg 
) const
inline

◆ isLittleEndian()

bool llvm::AArch64Subtarget::isLittleEndian ( ) const
inline

◆ isLRReservedForRA()

bool llvm::AArch64Subtarget::isLRReservedForRA ( ) const
inline

Definition at line 215 of file AArch64Subtarget.h.

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

◆ isNeonAvailable()

bool llvm::AArch64Subtarget::isNeonAvailable ( ) const
inline

◆ isStreaming()

bool llvm::AArch64Subtarget::isStreaming ( ) const
inline

Returns true if the function has a streaming body.

Definition at line 170 of file AArch64Subtarget.h.

References IsStreaming.

Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering(), isNeonAvailable(), isSVEAvailable(), and isSVEorStreamingSVEAvailable().

◆ isStreamingCompatible()

bool llvm::AArch64Subtarget::isStreamingCompatible ( ) const
inline

Returns true if the function has a streaming-compatible body.

Definition at line 173 of file AArch64Subtarget.h.

References IsStreamingCompatible.

Referenced by isNeonAvailable(), and isSVEAvailable().

◆ isSVEAvailable()

bool llvm::AArch64Subtarget::isSVEAvailable ( ) const
inline

Returns true if the target has SVE and can use the full range of SVE instructions, for example because it knows the function is known not to be in streaming-SVE mode or when the target has FEAT_FA64 enabled.

Definition at line 186 of file AArch64Subtarget.h.

References isStreaming(), and isStreamingCompatible().

Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering(), llvm::AArch64TTIImpl::enableScalableVectorization(), getMinVectorRegisterBitWidth(), and llvm::AArch64TTIImpl::getRegisterBitWidth().

◆ isSVEorStreamingSVEAvailable()

bool llvm::AArch64Subtarget::isSVEorStreamingSVEAvailable ( ) const
inline

◆ isTargetAndroid()

bool llvm::AArch64Subtarget::isTargetAndroid ( ) const
inline

◆ isTargetCOFF()

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

Definition at line 271 of file AArch64Subtarget.h.

References llvm::Triple::isOSBinFormatCOFF(), and TargetTriple.

◆ isTargetDarwin()

bool llvm::AArch64Subtarget::isTargetDarwin ( ) const
inline

◆ isTargetELF()

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

Definition at line 272 of file AArch64Subtarget.h.

References llvm::Triple::isOSBinFormatELF(), and TargetTriple.

◆ isTargetFuchsia()

bool llvm::AArch64Subtarget::isTargetFuchsia ( ) const
inline

◆ isTargetILP32()

bool llvm::AArch64Subtarget::isTargetILP32 ( ) const
inline

◆ isTargetIOS()

bool llvm::AArch64Subtarget::isTargetIOS ( ) const
inline

Definition at line 264 of file AArch64Subtarget.h.

References llvm::Triple::isiOS(), and TargetTriple.

◆ isTargetLinux()

bool llvm::AArch64Subtarget::isTargetLinux ( ) const
inline

◆ isTargetMachO()

bool llvm::AArch64Subtarget::isTargetMachO ( ) const
inline

◆ isTargetWindows()

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

◆ isWindowsArm64EC()

bool llvm::AArch64Subtarget::isWindowsArm64EC ( ) const
inline

◆ isXRaySupported()

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

Definition at line 167 of file AArch64Subtarget.h.

◆ isXRegCustomCalleeSaved()

bool llvm::AArch64Subtarget::isXRegCustomCalleeSaved ( size_t  i) const
inline

◆ isXRegisterReserved()

bool llvm::AArch64Subtarget::isXRegisterReserved ( size_t  i) const
inline

◆ isXRegisterReservedForRA()

bool llvm::AArch64Subtarget::isXRegisterReservedForRA ( size_t  i) const
inline

Definition at line 208 of file AArch64Subtarget.h.

References ReserveXRegisterForRA.

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

◆ mirFileLoaded()

void AArch64Subtarget::mirFileLoaded ( MachineFunction MF) const
override

◆ overrideSchedPolicy()

void AArch64Subtarget::overrideSchedPolicy ( MachineSchedPolicy Policy,
unsigned  NumRegionInstrs 
) const
override

◆ ParseSubtargetFeatures()

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

ParseSubtargetFeatures - Parses features string setting specified subtarget options.

Definition of function is auto generated by tblgen.

◆ supportsAddressTopByteIgnored()

bool AArch64Subtarget::supportsAddressTopByteIgnored ( ) const

CPU has TBI (top byte of addresses is ignored during HW address translation) and OS enables it.

Definition at line 528 of file AArch64Subtarget.cpp.

References llvm::Triple::getiOSVersion(), llvm::Triple::isDriverKit(), llvm::Triple::isiOS(), TargetTriple, and UseAddressTopByteIgnored.

Referenced by performLOADCombine(), and performSTORECombine().

◆ swiftAsyncContextIsDynamicallySet()

bool llvm::AArch64Subtarget::swiftAsyncContextIsDynamicallySet ( ) const
inline

Return whether FrameLowering should always set the "extended frame present" bit in FP, or set it based on a symbol in the runtime.

Definition at line 348 of file AArch64Subtarget.h.

References llvm::Triple::Darwin, getTargetTriple(), llvm::Triple::IOS, llvm::Triple::MacOSX, llvm::Triple::TvOS, and llvm::Triple::WatchOS.

Referenced by llvm::AArch64FrameLowering::emitPrologue().

◆ useAA()

bool AArch64Subtarget::useAA ( ) const
override

Definition at line 556 of file AArch64Subtarget.cpp.

References UseAA.

Referenced by addrSinkUsingGEPs().

◆ useDFAforSMS()

bool llvm::AArch64Subtarget::useDFAforSMS ( ) const
inlineoverride

Definition at line 157 of file AArch64Subtarget.h.

◆ useSmallAddressing()

bool llvm::AArch64Subtarget::useSmallAddressing ( ) const
inline

◆ useSVEForFixedLengthVectors() [1/2]

bool llvm::AArch64Subtarget::useSVEForFixedLengthVectors ( ) const
inline

◆ useSVEForFixedLengthVectors() [2/2]

bool llvm::AArch64Subtarget::useSVEForFixedLengthVectors ( EVT  VT) const
inline

Member Data Documentation

◆ ARMProcFamily

ARMProcFamilyEnum llvm::AArch64Subtarget::ARMProcFamily = Others
protected

ARMProcFamily - ARM processor family: Cortex-A53, Cortex-A57, and others.

Definition at line 49 of file AArch64Subtarget.h.

Referenced by getProcFamily().

◆ CacheLineSize

uint16_t llvm::AArch64Subtarget::CacheLineSize = 0
protected

Definition at line 61 of file AArch64Subtarget.h.

Referenced by getCacheLineSize().

◆ CallLoweringInfo

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

GlobalISel related APIs.

Definition at line 101 of file AArch64Subtarget.h.

Referenced by AArch64Subtarget(), and getCallLowering().

◆ CustomCallSavedXRegs

BitVector llvm::AArch64Subtarget::CustomCallSavedXRegs
protected

Definition at line 81 of file AArch64Subtarget.h.

Referenced by hasCustomCallingConv(), and isXRegCustomCalleeSaved().

◆ DefaultSVETFOpts

TailFoldingOpts llvm::AArch64Subtarget::DefaultSVETFOpts = TailFoldingOpts::Disabled
protected

Definition at line 90 of file AArch64Subtarget.h.

Referenced by getSVETailFoldingDefaultOpts().

◆ FrameLowering

AArch64FrameLowering llvm::AArch64Subtarget::FrameLowering
protected

Definition at line 95 of file AArch64Subtarget.h.

Referenced by getFrameLowering().

◆ GatherOverhead

unsigned llvm::AArch64Subtarget::GatherOverhead = 10
protected

Definition at line 64 of file AArch64Subtarget.h.

Referenced by getGatherOverhead().

◆ InlineAsmLoweringInfo

std::unique_ptr<InlineAsmLowering> llvm::AArch64Subtarget::InlineAsmLoweringInfo
protected

Definition at line 102 of file AArch64Subtarget.h.

Referenced by AArch64Subtarget(), and getInlineAsmLowering().

◆ InstrInfo

AArch64InstrInfo llvm::AArch64Subtarget::InstrInfo
protected

Definition at line 96 of file AArch64Subtarget.h.

Referenced by getInstrInfo().

◆ InstSelector

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

Definition at line 103 of file AArch64Subtarget.h.

Referenced by AArch64Subtarget(), and getInstructionSelector().

◆ IsLittle

bool llvm::AArch64Subtarget::IsLittle
protected

Definition at line 83 of file AArch64Subtarget.h.

Referenced by isLittleEndian().

◆ IsStreaming

bool llvm::AArch64Subtarget::IsStreaming
protected

Definition at line 85 of file AArch64Subtarget.h.

Referenced by isStreaming().

◆ IsStreamingCompatible

bool llvm::AArch64Subtarget::IsStreamingCompatible
protected

Definition at line 86 of file AArch64Subtarget.h.

Referenced by isStreamingCompatible().

◆ Legalizer

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

Definition at line 104 of file AArch64Subtarget.h.

◆ MaxBytesForLoopAlignment

unsigned llvm::AArch64Subtarget::MaxBytesForLoopAlignment = 0
protected

Definition at line 70 of file AArch64Subtarget.h.

Referenced by getMaxBytesForLoopAlignment().

◆ MaxInterleaveFactor

uint8_t llvm::AArch64Subtarget::MaxInterleaveFactor = 2
protected

Definition at line 59 of file AArch64Subtarget.h.

Referenced by getMaxInterleaveFactor().

◆ MaxJumpTableSize

unsigned llvm::AArch64Subtarget::MaxJumpTableSize = 0
protected

Definition at line 72 of file AArch64Subtarget.h.

Referenced by getMaximumJumpTableSize().

◆ MaxPrefetchIterationsAhead

unsigned llvm::AArch64Subtarget::MaxPrefetchIterationsAhead = UINT_MAX
protected

Definition at line 67 of file AArch64Subtarget.h.

Referenced by getMaxPrefetchIterationsAhead().

◆ MaxSVEVectorSizeInBits

unsigned llvm::AArch64Subtarget::MaxSVEVectorSizeInBits
protected

Definition at line 88 of file AArch64Subtarget.h.

Referenced by getMaxSVEVectorSizeInBits().

◆ MinimumJumpTableEntries

unsigned llvm::AArch64Subtarget::MinimumJumpTableEntries = 4
protected

Definition at line 71 of file AArch64Subtarget.h.

Referenced by getMinimumJumpTableEntries().

◆ MinPrefetchStride

uint16_t llvm::AArch64Subtarget::MinPrefetchStride = 1
protected

Definition at line 66 of file AArch64Subtarget.h.

Referenced by getMinPrefetchStride().

◆ MinSVEVectorSizeInBits

unsigned llvm::AArch64Subtarget::MinSVEVectorSizeInBits
protected

Definition at line 87 of file AArch64Subtarget.h.

Referenced by getMinSVEVectorSizeInBits().

◆ MinVectorRegisterBitWidth

unsigned llvm::AArch64Subtarget::MinVectorRegisterBitWidth = 64
protected

Definition at line 52 of file AArch64Subtarget.h.

Referenced by getMinVectorRegisterBitWidth().

◆ PrefetchDistance

uint16_t llvm::AArch64Subtarget::PrefetchDistance = 0
protected

Definition at line 65 of file AArch64Subtarget.h.

Referenced by getPrefetchDistance().

◆ PrefFunctionAlignment

Align llvm::AArch64Subtarget::PrefFunctionAlignment
protected

Definition at line 68 of file AArch64Subtarget.h.

Referenced by getPrefFunctionAlignment().

◆ PrefLoopAlignment

Align llvm::AArch64Subtarget::PrefLoopAlignment
protected

Definition at line 69 of file AArch64Subtarget.h.

Referenced by getPrefLoopAlignment().

◆ RegBankInfo

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

Definition at line 105 of file AArch64Subtarget.h.

Referenced by AArch64Subtarget(), and getRegBankInfo().

◆ ReserveXRegister

BitVector llvm::AArch64Subtarget::ReserveXRegister
protected

◆ ReserveXRegisterForRA

BitVector llvm::AArch64Subtarget::ReserveXRegisterForRA
protected

◆ ScatterOverhead

unsigned llvm::AArch64Subtarget::ScatterOverhead = 10
protected

Definition at line 63 of file AArch64Subtarget.h.

Referenced by getScatterOverhead().

◆ TargetTriple

Triple llvm::AArch64Subtarget::TargetTriple
protected

◆ TLInfo

AArch64TargetLowering llvm::AArch64Subtarget::TLInfo
protected

Definition at line 98 of file AArch64Subtarget.h.

Referenced by getTargetLowering(), and useSmallAddressing().

◆ TSInfo

AArch64SelectionDAGInfo llvm::AArch64Subtarget::TSInfo
protected

Definition at line 97 of file AArch64Subtarget.h.

Referenced by getSelectionDAGInfo().

◆ VectorInsertExtractBaseCost

uint8_t llvm::AArch64Subtarget::VectorInsertExtractBaseCost = 2
protected

Definition at line 60 of file AArch64Subtarget.h.

Referenced by getVectorInsertExtractBaseCost().

◆ VScaleForTuning

unsigned llvm::AArch64Subtarget::VScaleForTuning = 2
protected

Definition at line 89 of file AArch64Subtarget.h.

Referenced by getVScaleForTuning().


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