LLVM
15.0.0git
|
#include "Target/AArch64/AArch64Subtarget.h"
Public Types | |
enum | ARMProcFamilyEnum : uint8_t { Others, A64FX, Ampere1, AppleA7, AppleA10, AppleA11, AppleA12, AppleA13, AppleA14, Carmel, CortexA35, CortexA53, CortexA55, CortexA510, CortexA57, CortexA65, CortexA72, CortexA73, CortexA75, CortexA76, CortexA77, CortexA78, CortexA78C, CortexA710, CortexR82, CortexX1, CortexX1C, CortexX2, ExynosM3, Falkor, Kryo, NeoverseE1, NeoverseN1, NeoverseN2, Neoverse512TVB, NeoverseV1, Saphira, ThunderX2T99, ThunderX, ThunderXT81, ThunderXT83, ThunderXT88, ThunderX3T110, TSV110 } |
Definition at line 38 of file AArch64Subtarget.h.
enum llvm::AArch64Subtarget::ARMProcFamilyEnum : uint8_t |
Definition at line 40 of file AArch64Subtarget.h.
AArch64Subtarget::AArch64Subtarget | ( | const Triple & | TT, |
const std::string & | CPU, | ||
const std::string & | TuneCPU, | ||
const std::string & | FS, | ||
const TargetMachine & | TM, | ||
bool | LittleEndian, | ||
unsigned | MinSVEVectorSizeInBitsOverride = 0 , |
||
unsigned | MaxSVEVectorSizeInBitsOverride = 0 |
||
) |
This constructor initializes the data members to match that of the specified triple.
Definition at line 260 of file AArch64Subtarget.cpp.
References CallLoweringInfo, llvm::createAArch64InstructionSelector(), getRegisterInfo(), getTargetLowering(), InlineAsmLoweringInfo, InstSelector, llvm::AArch64::isX18ReservedByDefault(), RegBankInfo, ReserveXRegister, llvm::BitVector::set(), and TM.
|
inlineoverride |
Definition at line 260 of file AArch64Subtarget.h.
References isTargetILP32(), and useAA().
unsigned AArch64Subtarget::classifyGlobalFunctionReference | ( | const GlobalValue * | GV, |
const TargetMachine & | TM | ||
) | const |
Definition at line 347 of file AArch64Subtarget.cpp.
References ClassifyGlobalReference(), F, llvm::GlobalValue::getParent(), getTargetTriple(), llvm::GlobalValue::hasInternalLinkage(), isTargetMachO(), llvm::CodeModel::Large, llvm::AArch64II::MO_GOT, llvm::AArch64II::MO_NO_FLAG, TM, and UseNonLazyBind.
unsigned AArch64Subtarget::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.
Find the target operand flags that describe how a global value should be referenced for the current subtarget.
Definition at line 315 of file AArch64Subtarget.cpp.
References llvm::GlobalValue::getParent(), getTargetTriple(), llvm::GlobalValue::getValueType(), llvm::GlobalValue::hasDLLImportStorageClass(), llvm::GlobalValue::hasExternalWeakLinkage(), isTargetMachO(), llvm::CodeModel::Large, llvm::AArch64II::MO_COFFSTUB, llvm::AArch64II::MO_DLLIMPORT, llvm::AArch64II::MO_GOT, llvm::AArch64II::MO_NC, llvm::AArch64II::MO_NO_FLAG, llvm::AArch64II::MO_TAGGED, llvm::CodeModel::Tiny, TM, and useSmallAddressing().
Referenced by classifyGlobalFunctionReference(), llvm::AArch64InstrInfo::expandPostRAPseudo(), matchFoldGlobalOffset(), and performGlobalAddressCombine().
|
override |
Definition at line 380 of file AArch64Subtarget.cpp.
References EnableEarlyIfConvert.
|
inlineoverride |
Definition at line 181 of file AArch64Subtarget.h.
|
inlineoverride |
Definition at line 182 of file AArch64Subtarget.h.
|
inlineoverride |
Definition at line 214 of file AArch64Subtarget.h.
References CacheLineSize.
|
override |
Definition at line 292 of file AArch64Subtarget.cpp.
References CallLoweringInfo.
|
override |
Definition at line 398 of file AArch64Subtarget.cpp.
|
inlineoverride |
Definition at line 165 of file AArch64Subtarget.h.
References FrameLowering.
|
override |
Definition at line 296 of file AArch64Subtarget.cpp.
References InlineAsmLoweringInfo.
|
inlineoverride |
Definition at line 171 of file AArch64Subtarget.h.
References InstrInfo.
Referenced by llvm::AArch64FrameLowering::emitEpilogue(), llvm::AArch64TargetLowering::EmitF128CSEL(), llvm::AArch64TargetLowering::EmitFill(), llvm::AArch64TargetLowering::EmitInsertVectorToTile(), llvm::AArch64FrameLowering::emitPrologue(), llvm::AArch64TargetLowering::EmitTileLoad(), llvm::AArch64TargetLowering::EmitZero(), getRegisterInfo(), InsertReturnAddressAuth(), llvm::AArch64CallLowering::lowerCall(), and signOutlinedFunction().
|
override |
Definition at line 300 of file AArch64Subtarget.cpp.
References InstSelector.
|
override |
Definition at line 304 of file AArch64Subtarget.cpp.
|
inline |
Definition at line 230 of file AArch64Subtarget.h.
References MaxBytesForLoopAlignment.
Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering().
|
inline |
Definition at line 234 of file AArch64Subtarget.h.
References MaxJumpTableSize.
Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering().
|
inline |
Definition at line 212 of file AArch64Subtarget.h.
References MaxInterleaveFactor.
|
inlineoverride |
Definition at line 222 of file AArch64Subtarget.h.
References MaxPrefetchIterationsAhead.
|
inline |
Definition at line 339 of file AArch64Subtarget.h.
References assert(), and MaxSVEVectorSizeInBits.
Referenced by findMoreOptimalIndexType(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), and llvm::AArch64TargetLowering::lowerInterleavedStore().
|
inlineoverride |
Definition at line 216 of file AArch64Subtarget.h.
References MinPrefetchStride.
|
inline |
Definition at line 344 of file AArch64Subtarget.h.
References assert(), and MinSVEVectorSizeInBits.
Referenced by llvm::AArch64TargetLowering::getNumInterleavedAccesses(), getPredicateForFixedLengthVector(), isAllActivePredicate(), llvm::AArch64TargetLowering::isLegalInterleavedAccessType(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), llvm::AArch64TargetLowering::lowerInterleavedStore(), performFPExtendCombine(), performSTORECombine(), and useSVEForFixedLengthVectors().
|
inline |
Definition at line 194 of file AArch64Subtarget.h.
References MinVectorRegisterBitWidth.
|
inline |
Definition at line 199 of file AArch64Subtarget.h.
References llvm::BitVector::count(), and ReserveXRegister.
Referenced by llvm::AArch64RegisterInfo::getRegPressureLimit().
|
inlineoverride |
Definition at line 215 of file AArch64Subtarget.h.
References PrefetchDistance.
|
inline |
Definition at line 225 of file AArch64Subtarget.h.
References PrefFunctionLogAlignment.
Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering().
|
inline |
Definition at line 228 of file AArch64Subtarget.h.
References PrefLoopLogAlignment.
Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering().
|
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 188 of file AArch64Subtarget.h.
References ARMProcFamily.
Referenced by llvm::AArch64TargetLowering::getTargetMMOFlags().
|
override |
Definition at line 308 of file AArch64Subtarget.cpp.
References RegBankInfo.
Referenced by llvm::AArch64CallLowering::lowerCall().
|
inlineoverride |
Definition at line 172 of file AArch64Subtarget.h.
References getInstrInfo(), and llvm::AArch64InstrInfo::getRegisterInfo().
Referenced by AArch64Subtarget(), llvm::AArch64TargetLowering::AArch64TargetLowering(), llvm::AArch64FrameLowering::canUseAsPrologue(), llvm::AArch64FrameLowering::emitEpilogue(), llvm::AArch64FrameLowering::emitPrologue(), llvm::AArch64InstrInfo::expandPostRAPseudo(), findScratchNonCalleeSaveRegister(), InsertSEH(), llvm::AArch64CallLowering::lowerCall(), and llvm::AArch64CallLowering::lowerFormalArguments().
|
inlineoverride |
Definition at line 162 of file AArch64Subtarget.h.
References TSInfo.
|
inlineoverride |
Definition at line 168 of file AArch64Subtarget.h.
References TLInfo.
Referenced by AArch64Subtarget(), llvm::AArch64FrameLowering::canUseRedZone(), finishStackBlock(), llvm::AArch64RegisterInfo::getCalleeSavedRegs(), llvm::AArch64RegisterInfo::getCallPreservedMask(), llvm::AArch64RegisterInfo::getDarwinCalleeSavedRegs(), llvm::AArch64RegisterInfo::getDarwinCallPreservedMask(), and produceCompactUnwindFrame().
Definition at line 180 of file AArch64Subtarget.h.
References TargetTriple.
Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering(), classifyGlobalFunctionReference(), ClassifyGlobalReference(), llvm::AArch64TargetLowering::getSDagStackGuard(), llvm::AArch64TargetLowering::getSSPStackGuardCheck(), llvm::AArch64TargetLowering::insertSSPDeclarations(), and swiftAsyncContextIsDynamicallySet().
unsigned AArch64Subtarget::getVectorInsertExtractBaseCost | ( | ) | const |
Definition at line 59 of file AArch64Subtarget.cpp.
References OverrideVectorInsertExtractBaseCost, and VectorInsertExtractBaseCost.
|
inline |
Definition at line 354 of file AArch64Subtarget.h.
References VScaleForTuning.
|
inline |
Definition at line 203 of file AArch64Subtarget.h.
References llvm::BitVector::any(), and CustomCallSavedXRegs.
Referenced by llvm::AArch64CallLowering::lowerCall(), and llvm::AArch64CallLowering::lowerFormalArguments().
|
inline |
Return true if the CPU supports any kind of instruction fusion.
Definition at line 206 of file AArch64Subtarget.h.
|
inline |
Definition at line 297 of file AArch64Subtarget.h.
References llvm::CallingConv::C, llvm::CallingConv::Fast, isTargetWindows(), llvm::CallingConv::Swift, and llvm::CallingConv::Win64.
Referenced by analyzeCallOperands(), llvm::AArch64FrameLowering::emitEpilogue(), llvm::AArch64FrameLowering::emitPrologue(), and llvm::AArch64RegisterInfo::isArgumentRegister().
|
inline |
Definition at line 240 of file AArch64Subtarget.h.
References IsLittle.
|
inline |
Definition at line 246 of file AArch64Subtarget.h.
References llvm::Triple::isAndroid(), and TargetTriple.
Referenced by llvm::AArch64TargetLowering::getIRStackGuard(), llvm::AArch64TargetLowering::getSafeStackPointerLocation(), and llvm::AArch64TargetLowering::useLoadStackGuardNode().
|
inline |
Definition at line 249 of file AArch64Subtarget.h.
References llvm::Triple::isOSBinFormatCOFF(), and TargetTriple.
|
inline |
Definition at line 242 of file AArch64Subtarget.h.
References llvm::Triple::isOSDarwin(), and TargetTriple.
Referenced by CC_AArch64_Custom_Block(), llvm::AArch64TargetLowering::CCAssignFnForCall(), llvm::AArch64RegisterInfo::getCalleeSavedRegs(), llvm::AArch64RegisterInfo::getCallPreservedMask(), llvm::AArch64RegisterInfo::getDarwinCalleeSavedRegs(), llvm::AArch64RegisterInfo::getDarwinCallPreservedMask(), llvm::AArch64RegisterInfo::getThisReturnPreservedMask(), llvm::AArch64TargetLowering::getVaListSizeInBits(), llvm::AArch64RegisterInfo::isArgumentRegister(), llvm::AArch64LegalizerInfo::legalizeIntrinsic(), llvm::AArch64CallLowering::lowerFormalArguments(), and llvm::AArch64TargetLowering::shouldExpandShift().
|
inline |
Definition at line 250 of file AArch64Subtarget.h.
References llvm::Triple::isOSBinFormatELF(), and TargetTriple.
|
inline |
Definition at line 247 of file AArch64Subtarget.h.
References llvm::Triple::isOSFuchsia(), and TargetTriple.
Referenced by llvm::AArch64TargetLowering::getIRStackGuard(), llvm::AArch64TargetLowering::getSafeStackPointerLocation(), and llvm::AArch64TargetLowering::useLoadStackGuardNode().
|
inline |
Definition at line 253 of file AArch64Subtarget.h.
References llvm::Triple::getEnvironment(), llvm::Triple::GNUILP32, llvm::Triple::isArch32Bit(), and TargetTriple.
Referenced by addrSinkUsingGEPs(), CC_AArch64_Custom_Block(), llvm::AArch64TargetLowering::CCAssignFnForCall(), llvm::AArch64TargetLowering::computeKnownBitsForTargetNode(), llvm::AArch64FrameLowering::emitPrologue(), llvm::AArch64InstrInfo::expandPostRAPseudo(), llvm::AArch64RegisterInfo::isArgumentRegister(), llvm::AArch64LegalizerInfo::legalizeIntrinsic(), and llvm::AArch64CallLowering::lowerFormalArguments().
|
inline |
Definition at line 243 of file AArch64Subtarget.h.
References llvm::Triple::isiOS(), and TargetTriple.
|
inline |
Definition at line 244 of file AArch64Subtarget.h.
References llvm::Triple::isOSLinux(), and TargetTriple.
Referenced by llvm::AArch64RegisterInfo::getCustomEHPadPreservedMask().
|
inline |
Definition at line 251 of file AArch64Subtarget.h.
References llvm::Triple::isOSBinFormatMachO(), and TargetTriple.
Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering(), CC_AArch64_Custom_Block(), classifyGlobalFunctionReference(), ClassifyGlobalReference(), and produceCompactUnwindFrame().
|
inline |
Definition at line 245 of file AArch64Subtarget.h.
References llvm::Triple::isOSWindows(), and TargetTriple.
Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering(), llvm::AArch64TargetLowering::CCAssignFnForCall(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::AArch64RegisterInfo::getCalleeSavedRegs(), llvm::AArch64TargetLowering::getVaListSizeInBits(), llvm::AArch64RegisterInfo::isArgumentRegister(), isCallingConvWin64(), llvm::AArch64LegalizerInfo::legalizeIntrinsic(), llvm::AArch64TargetLowering::shouldExpandShift(), and windowsRequiresStackProbe().
|
inlineoverride |
Definition at line 192 of file AArch64Subtarget.h.
|
inline |
Definition at line 200 of file AArch64Subtarget.h.
References CustomCallSavedXRegs, and i.
Referenced by llvm::AArch64RegisterInfo::UpdateCustomCalleeSavedRegs(), and llvm::AArch64RegisterInfo::UpdateCustomCallPreservedMask().
|
inline |
Definition at line 198 of file AArch64Subtarget.h.
References i, and ReserveXRegister.
Referenced by llvm::AArch64RegisterInfo::getReservedRegs(), and needsShadowCallStackPrologueEpilogue().
|
override |
Definition at line 402 of file AArch64Subtarget.cpp.
References llvm::MachineFrameInfo::computeMaxCallFrameSize(), llvm::MachineFunction::getFrameInfo(), and llvm::MachineFrameInfo::isMaxCallFrameSizeComputed().
|
override |
Definition at line 368 of file AArch64Subtarget.cpp.
References llvm::MachineSchedPolicy::DisableLatencyHeuristic, llvm::MachineSchedPolicy::OnlyBottomUp, and llvm::MachineSchedPolicy::OnlyTopDown.
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.
bool AArch64Subtarget::supportsAddressTopByteIgnored | ( | ) | const |
CPU has TBI (top byte of addresses is ignored during HW address translation) and OS enables it.
Definition at line 384 of file AArch64Subtarget.cpp.
References llvm::Triple::getiOSVersion(), llvm::Triple::isDriverKit(), llvm::Triple::isiOS(), TargetTriple, and UseAddressTopByteIgnored.
Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering(), and performSTORECombine().
|
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 312 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().
|
override |
Definition at line 412 of file AArch64Subtarget.cpp.
References UseAA.
Referenced by addrSinkUsingGEPs().
|
inline |
Definition at line 266 of file AArch64Subtarget.h.
References llvm::TargetMachine::getCodeModel(), llvm::TargetLoweringBase::getTargetMachine(), llvm::CodeModel::Kernel, llvm::CodeModel::Small, and TLInfo.
Referenced by ClassifyGlobalReference().
|
inline |
Definition at line 349 of file AArch64Subtarget.h.
References getMinSVEVectorSizeInBits().
Referenced by llvm::AArch64TargetLowering::AArch64TargetLowering(), llvm::AArch64TargetLowering::isLegalInterleavedAccessType(), llvm::AArch64TargetLowering::mergeStoresAfterLegalization(), performFPExtendCombine(), and performSTORECombine().
|
protected |
ARMProcFamily - ARM processor family: Cortex-A53, Cortex-A57, and others.
Definition at line 89 of file AArch64Subtarget.h.
Referenced by getProcFamily().
|
protected |
Definition at line 101 of file AArch64Subtarget.h.
Referenced by getCacheLineSize().
|
protected |
GlobalISel related APIs.
Definition at line 131 of file AArch64Subtarget.h.
Referenced by AArch64Subtarget(), and getCallLowering().
|
protected |
Definition at line 114 of file AArch64Subtarget.h.
Referenced by hasCustomCallingConv(), and isXRegCustomCalleeSaved().
|
protected |
Definition at line 125 of file AArch64Subtarget.h.
Referenced by getFrameLowering().
|
protected |
Definition at line 132 of file AArch64Subtarget.h.
Referenced by AArch64Subtarget(), and getInlineAsmLowering().
|
protected |
Definition at line 126 of file AArch64Subtarget.h.
Referenced by getInstrInfo().
|
protected |
Definition at line 133 of file AArch64Subtarget.h.
Referenced by AArch64Subtarget(), and getInstructionSelector().
|
protected |
Definition at line 116 of file AArch64Subtarget.h.
Referenced by isLittleEndian().
|
protected |
Definition at line 134 of file AArch64Subtarget.h.
|
protected |
Definition at line 107 of file AArch64Subtarget.h.
Referenced by getMaxBytesForLoopAlignment().
|
protected |
Definition at line 99 of file AArch64Subtarget.h.
Referenced by getMaxInterleaveFactor().
|
protected |
Definition at line 108 of file AArch64Subtarget.h.
Referenced by getMaximumJumpTableSize().
|
protected |
Definition at line 104 of file AArch64Subtarget.h.
Referenced by getMaxPrefetchIterationsAhead().
|
protected |
Definition at line 119 of file AArch64Subtarget.h.
Referenced by getMaxSVEVectorSizeInBits().
|
protected |
Definition at line 103 of file AArch64Subtarget.h.
Referenced by getMinPrefetchStride().
|
protected |
Definition at line 118 of file AArch64Subtarget.h.
Referenced by getMinSVEVectorSizeInBits().
|
protected |
Definition at line 92 of file AArch64Subtarget.h.
Referenced by getMinVectorRegisterBitWidth().
|
protected |
Definition at line 102 of file AArch64Subtarget.h.
Referenced by getPrefetchDistance().
|
protected |
Definition at line 105 of file AArch64Subtarget.h.
Referenced by getPrefFunctionLogAlignment().
|
protected |
Definition at line 106 of file AArch64Subtarget.h.
Referenced by getPrefLoopLogAlignment().
|
protected |
Definition at line 135 of file AArch64Subtarget.h.
Referenced by AArch64Subtarget(), and getRegBankInfo().
|
protected |
Definition at line 111 of file AArch64Subtarget.h.
Referenced by AArch64Subtarget(), getNumXRegisterReserved(), and isXRegisterReserved().
|
protected |
TargetTriple - What processor and OS we're targeting.
Definition at line 123 of file AArch64Subtarget.h.
Referenced by getTargetTriple(), isTargetAndroid(), isTargetCOFF(), isTargetDarwin(), isTargetELF(), isTargetFuchsia(), isTargetILP32(), isTargetIOS(), isTargetLinux(), isTargetMachO(), isTargetWindows(), and supportsAddressTopByteIgnored().
|
protected |
Definition at line 128 of file AArch64Subtarget.h.
Referenced by getTargetLowering(), and useSmallAddressing().
|
protected |
Definition at line 127 of file AArch64Subtarget.h.
Referenced by getSelectionDAGInfo().
|
protected |
Definition at line 100 of file AArch64Subtarget.h.
Referenced by getVectorInsertExtractBaseCost().
|
protected |
Definition at line 120 of file AArch64Subtarget.h.
Referenced by getVScaleForTuning().