LLVM 22.0.0git
|
#include "Target/ARM/ARMSubtarget.h"
Public Types | |
enum | ARMLdStMultipleTiming { DoubleIssue , DoubleIssueCheckUnalignedAccess , SingleIssue , SingleIssuePlusExtras } |
What kind of timing do load multiple/store multiple instructions have. More... | |
enum | PushPopSplitVariation { NoSplit , SplitR7 , SplitR11WindowsSEH , SplitR11AAPCSSignRA } |
How the push and pop instructions of callee saved general-purpose registers should be split. More... |
Protected Types | |
enum | ARMProcFamilyEnum { Others } |
enum | ARMProcClassEnum { None , AClass , MClass , RClass } |
enum | ARMArchEnum |
Protected Attributes | |
ARMProcFamilyEnum | ARMProcFamily = Others |
ARMProcFamily - ARM processor family: Cortex-A8, Cortex-A9, and others. | |
ARMProcClassEnum | ARMProcClass = None |
ARMProcClass - ARM processor class: None, AClass, RClass or MClass. | |
ARMArchEnum | ARMArch = ARMv4t |
ARMArch - ARM architecture. | |
bool | UseMulOps = false |
UseMulOps - True if non-microcoded fused integer multiply-add and multiply-subtract instructions should be used. | |
bool | SupportsTailCall = false |
SupportsTailCall - True if the OS supports tail call. | |
bool | RestrictIT = false |
RestrictIT - If true, the subtarget disallows generation of complex IT blocks. | |
Align | stackAlignment = Align(4) |
stackAlignment - The minimum alignment known to hold of the stack frame on entry to the function and which must be maintained by every function. | |
std::string | CPUString |
CPUString - String name of used CPU. | |
unsigned | MaxInterleaveFactor = 1 |
unsigned | PartialUpdateClearance = 0 |
Clearance before partial register updates (in number of instructions) | |
ARMLdStMultipleTiming | LdStMultipleTiming = SingleIssue |
What kind of timing do load multiple/store multiple have (double issue, single issue etc). | |
int | PreISelOperandLatencyAdjustment = 2 |
The adjustment that we need to apply to get the operand latency from the operand cycle returned by the itinerary data for pre-ISel operands. | |
unsigned | PreferBranchLogAlignment = 0 |
What alignment is preferred for loop bodies and functions, in log2(bytes). | |
unsigned | MVEVectorCostFactor = 0 |
The cost factor for MVE instructions, representing the multiple beats an. | |
bool | OptMinSize = false |
OptMinSize - True if we're optimising for minimum code size, equal to the function attribute. | |
bool | IsLittle |
IsLittle - The target is Little Endian. | |
Triple | TargetTriple |
TargetTriple - What processor and OS we're targeting. | |
MCSchedModel | SchedModel |
SchedModel - Processor specific instruction costs. | |
InstrItineraryData | InstrItins |
Selected instruction itineraries (one entry per itinerary class.) | |
const TargetOptions & | Options |
Options passed via command line that could influence the target. | |
const ARMBaseTargetMachine & | TM |
Definition at line 48 of file ARMSubtarget.h.
|
protected |
Definition at line 63 of file ARMSubtarget.h.
What kind of timing do load multiple/store multiple instructions have.
Definition at line 71 of file ARMSubtarget.h.
|
protected |
Enumerator | |
---|---|
None | |
AClass | |
MClass | |
RClass |
Definition at line 56 of file ARMSubtarget.h.
|
protected |
Enumerator | |
---|---|
Others |
Definition at line 50 of file ARMSubtarget.h.
How the push and pop instructions of callee saved general-purpose registers should be split.
Enumerator | |
---|---|
NoSplit | All GPRs can be pushed in a single instruction. push {r0-r12, lr} vpush {d8-d15} |
SplitR7 | R7 and LR must be adjacent, because R7 is the frame pointer, and must point to a frame record consisting of the previous frame pointer and the return address. push {r0-r7, lr} push {r8-r12} vpush {d8-d15} Note that Thumb1 changes this layout when the frame pointer is R11, using a longer sequence of instructions because R11 can't be used by a Thumb1 push instruction. This doesn't currently have a separate enum value, and is handled entriely within Thumb1FrameLowering::emitPrologue. |
SplitR11WindowsSEH | When the stack frame size is not known (because of variable-sized objects or realignment), Windows SEH requires the callee-saved registers to be stored in three regions, with R11 and LR below the floating-point registers. push {r0-r10, r12} vpush {d8-d15} push {r11, lr} |
SplitR11AAPCSSignRA | When generating AAPCS-compilant frame chains, R11 is the frame pointer, and must be pushed adjacent to the return address (LR). Normally this isn't a problem, because the only register between them is r12, which is the intra-procedure-call scratch register, so doesn't need to be saved. However, when PACBTI is in use, r12 contains the authentication code, so does need to be saved. This means that we need a separate push for R11 and LR. push {r0-r10, r12} push {r11, lr} vpush {d8-d15} |
Definition at line 86 of file ARMSubtarget.h.
ARMSubtarget::ARMSubtarget | ( | const Triple & | TT, |
const std::string & | CPU, | ||
const std::string & | FS, | ||
const ARMBaseTargetMachine & | TM, | ||
bool | IsLittle, | ||
bool | MinSize = false ) |
This constructor initializes the data members to match that of the specified triple.
Definition at line 88 of file ARMSubtarget.cpp.
References CPUString, llvm::createARMInstructionSelector(), getRegisterInfo(), getTargetLowering(), IsLittle, isThumb(), isThumb1Only(), Options, OptMinSize, TargetTriple, TM, UseFusedMulOps, and UseMulOps.
Referenced by initializeSubtargetDependencies(), and ParseSubtargetFeatures().
|
inline |
Allow movt+movw for PIC global address calculation.
ELF does not have GOT relocations for movt+movw. ROPI does not use GOT.
Definition at line 482 of file ARMSubtarget.h.
References isROPI(), and isTargetELF().
|
inline |
Definition at line 401 of file ARMSubtarget.h.
Referenced by getDualLoadStoreAlignment().
|
override |
Returns true if machine pipeliner should be enabled.
Definition at line 359 of file ARMSubtarget.cpp.
References useMachinePipeliner().
Referenced by llvm::ARMBaseInstrInfo::analyzeBranch().
|
override |
Returns true if machine scheduler should be enabled.
Definition at line 340 of file ARMSubtarget.cpp.
References hasMinSize(), isMClass(), and useMachineScheduler().
Referenced by enablePostRAMachineScheduler(), and enablePostRAScheduler().
|
override |
True for some subtargets at > -O0.
Definition at line 377 of file ARMSubtarget.cpp.
References enableMachineScheduler(), and isThumb1Only().
|
override |
True for some subtargets at > -O0.
Definition at line 368 of file ARMSubtarget.cpp.
References enableMachineScheduler(), and isThumb1Only().
|
override |
Check whether this subtarget wants to use subregister liveness.
Definition at line 353 of file ARMSubtarget.cpp.
|
override |
Definition at line 118 of file ARMSubtarget.cpp.
|
inline |
Definition at line 405 of file ARMSubtarget.h.
References CPUString.
|
inline |
Definition at line 443 of file ARMSubtarget.h.
References allowsUnalignedMem().
Referenced by LowerSTORE().
|
inlineoverride |
Definition at line 243 of file ARMSubtarget.h.
Referenced by llvm::ThumbRegisterInfo::eliminateFrameIndex().
|
inline |
Definition at line 385 of file ARMSubtarget.h.
References isTargetDarwin(), isTargetWindows(), and isThumb().
Referenced by llvm::ARMBaseRegisterInfo::canRealignStack(), llvm::ARMAsmPrinter::emitInstruction(), llvm::ARMBaseRegisterInfo::getFrameRegister(), getPushPopSplitVariation(), llvm::ARMBaseRegisterInfo::getReservedRegs(), and llvm::ARMBaseRegisterInfo::isInlineAsmReadOnlyReg().
unsigned ARMSubtarget::getGPRAllocationOrder | ( | const MachineFunction & | MF | ) | const |
Definition at line 415 of file ARMSubtarget.cpp.
References llvm::MachineFunction::getFunction(), llvm::Function::hasMinSize(), isThumb1Only(), and isThumb2().
|
inlineoverride |
Definition at line 235 of file ARMSubtarget.h.
Referenced by llvm::ThumbRegisterInfo::eliminateFrameIndex(), emitThumb1LoadConstPool(), llvm::ARMCallLowering::lowerCall(), and llvm::ThumbRegisterInfo::resolveFrameIndex().
|
inlineoverride |
getInstrItins - Return the instruction itineraries based on subtarget selection.
Definition at line 433 of file ARMSubtarget.h.
References InstrItins.
|
override |
Definition at line 122 of file ARMSubtarget.cpp.
|
inline |
Definition at line 451 of file ARMSubtarget.h.
References LdStMultipleTiming.
|
override |
Definition at line 126 of file ARMSubtarget.cpp.
|
inline |
getMaxInlineSizeThreshold - Returns the maximum memset / memcpy size that still makes it profitable to inline the call.
Definition at line 213 of file ARMSubtarget.h.
Referenced by llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(), and shouldGenerateInlineTPLoop().
|
inline |
Definition at line 447 of file ARMSubtarget.h.
References MaxInterleaveFactor.
|
inline |
getMaxMemcpyTPInlineSizeThreshold - Returns the maximum size that still makes it profitable to inline a llvm.memcpy as a Tail Predicated loop.
This threshold should only be used for constant size inputs.
Definition at line 221 of file ARMSubtarget.h.
Referenced by shouldGenerateInlineTPLoop().
unsigned ARMSubtarget::getMispredictionPenalty | ( | ) | const |
Definition at line 336 of file ARMSubtarget.cpp.
References SchedModel.
|
inline |
Definition at line 491 of file ARMSubtarget.h.
References CostKind, MVEVectorCostFactor, and llvm::TargetTransformInfo::TCK_CodeSize.
|
inline |
Definition at line 449 of file ARMSubtarget.h.
References PartialUpdateClearance.
|
inline |
Definition at line 486 of file ARMSubtarget.h.
References PreferBranchLogAlignment.
|
inline |
Definition at line 455 of file ARMSubtarget.h.
References PreISelOperandLatencyAdjustment.
ARMSubtarget::PushPopSplitVariation ARMSubtarget::getPushPopSplitVariation | ( | const MachineFunction & | MF | ) | const |
Definition at line 458 of file ARMSubtarget.cpp.
References F, llvm::TargetOptions::FramePointerIsReserved(), llvm::MachineFunction::getFrameInfo(), getFramePointerReg(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getInfo(), llvm::TargetMachine::getMCAsmInfo(), getRegisterInfo(), llvm::MachineFunction::getTarget(), llvm::MachineFrameInfo::hasVarSizedObjects(), isThumb1Only(), NoSplit, llvm::TargetMachine::Options, llvm::ARMFunctionInfo::shouldSignReturnAddress(), SplitR11AAPCSSignRA, SplitR11WindowsSEH, SplitR7, and llvm::MCAsmInfo::usesWindowsCFI().
Referenced by llvm::ARMBaseRegisterInfo::getCalleeSavedRegs(), and getMaxFPOffset().
|
override |
Definition at line 130 of file ARMSubtarget.cpp.
Referenced by llvm::ARMCallLowering::lowerCall().
|
inlineoverride |
Definition at line 247 of file ARMSubtarget.h.
Referenced by ARMSubtarget(), llvm::Thumb1InstrInfo::copyPhysReg(), getPushPopSplitVariation(), insertSEH(), and llvm::ARMCallLowering::lowerCall().
|
inline |
Returns the correct return opcode for the current feature set.
Use BX if available to allow mixing thumb/arm code, but fall back to plain mov pc,lr on ARMv4.
Definition at line 471 of file ARMSubtarget.h.
References isThumb().
|
inlineoverride |
Definition at line 231 of file ARMSubtarget.h.
|
inline |
getStackAlignment - Returns the minimum alignment known to hold of the stack frame on entry to the function and which must be maintained by every function for this subtarget.
Definition at line 440 of file ARMSubtarget.h.
References stackAlignment.
|
inlineoverride |
Definition at line 239 of file ARMSubtarget.h.
Referenced by AlignBlocks(), ARMSubtarget(), llvm::ARMSelectionDAGInfo::EmitSpecializedLibcall(), llvm::ARMBaseRegisterInfo::getCalleeSavedRegs(), llvm::ARMBaseRegisterInfo::getCallPreservedMask(), and PerformXORCombine().
Definition at line 330 of file ARMSubtarget.h.
References TargetTriple.
|
inline |
Definition at line 309 of file ARMSubtarget.h.
References isThumb().
|
inline |
Definition at line 298 of file ARMSubtarget.h.
Referenced by isXRaySupported().
|
inline |
Definition at line 320 of file ARMSubtarget.h.
References isThumb().
Referenced by AddCombineTo64BitSMLAL16().
|
inline |
Definition at line 307 of file ARMSubtarget.h.
|
inline |
Return true if the CPU supports any kind of instruction fusion.
Definition at line 328 of file ARMSubtarget.h.
|
inline |
Definition at line 374 of file ARMSubtarget.h.
References OptMinSize.
Referenced by llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(), enableMachineScheduler(), and llvm::tryFoldSPUpdateIntoPushPop().
|
inline |
Definition at line 304 of file ARMSubtarget.h.
Referenced by llvm::ARMRegisterBankInfo::getInstrMapping(), llvm::ARMBaseRegisterInfo::getSjLjDispatchPreservedMask(), isLegalAddressImmediate(), and isLegalT2AddressImmediate().
|
inline |
Definition at line 305 of file ARMSubtarget.h.
|
inline |
Definition at line 306 of file ARMSubtarget.h.
Referenced by useFPVFMx().
|
override |
Definition at line 446 of file ARMSubtarget.cpp.
References llvm::MachineFunction::getFunction(), llvm::Function::hasMinSize(), and isThumb2().
ARMSubtarget & ARMSubtarget::initializeSubtargetDependencies | ( | StringRef | CPU, |
StringRef | FS ) |
initializeSubtargetDependencies - Initializes using a CPU and feature string so that we can use initializer lists for subtarget initialization.
Definition at line 73 of file ARMSubtarget.cpp.
References ARMSubtarget().
|
inline |
Definition at line 379 of file ARMSubtarget.h.
References AClass, and ARMProcClass.
|
inline |
|
inline |
These functions are obsolete, please consider adding subtarget features or properties instead of calling them.
Definition at line 283 of file ARMSubtarget.h.
References ARMProcFamily.
|
inline |
Definition at line 284 of file ARMSubtarget.h.
References ARMProcFamily.
Referenced by adjustDefLatency().
|
inline |
Definition at line 285 of file ARMSubtarget.h.
References ARMProcFamily.
Referenced by adjustDefLatency().
|
inline |
|
inline |
Definition at line 289 of file ARMSubtarget.h.
References ARMProcFamily.
|
inline |
Definition at line 290 of file ARMSubtarget.h.
References ARMProcFamily.
|
inline |
Definition at line 291 of file ARMSubtarget.h.
References ARMProcFamily.
|
inline |
Definition at line 292 of file ARMSubtarget.h.
References ARMProcFamily.
|
inline |
Definition at line 294 of file ARMSubtarget.h.
References ARMProcFamily.
bool ARMSubtarget::isGVIndirectSymbol | ( | const GlobalValue * | GV | ) | const |
True if the GV will be accessed via an indirect symbol.
Definition at line 318 of file ARMSubtarget.cpp.
References llvm::GlobalValue::hasCommonLinkage(), llvm::GlobalValue::isDeclarationForLinker(), isTargetMachO(), and TM.
bool ARMSubtarget::isGVInGOT | ( | const GlobalValue * | GV | ) | const |
Returns the constant pool modifier needed to access the GV.
Definition at line 332 of file ARMSubtarget.cpp.
References llvm::GlobalValue::isDSOLocal(), isTargetELF(), and TM.
|
inline |
|
inline |
Definition at line 293 of file ARMSubtarget.h.
References isCortexA15(), isCortexA9(), and isKrait().
Referenced by adjustDefLatency().
|
inline |
Definition at line 407 of file ARMSubtarget.h.
References IsLittle.
Referenced by PerformMVEVMULLCombine(), and PerformVMOVRRDCombine().
|
inline |
Definition at line 377 of file ARMSubtarget.h.
References ARMProcClass, and MClass.
Referenced by llvm::ARMFunctionInfo::ARMFunctionInfo(), enableMachineScheduler(), GetBranchTargetEnforcement(), llvm::ARMBaseRegisterInfo::getCalleeSavedRegs(), and LowerATOMIC_FENCE().
|
inline |
Definition at line 381 of file ARMSubtarget.h.
References isTargetMachO().
Referenced by llvm::ARMBaseRegisterInfo::getRegPressureLimit(), and llvm::ARMBaseRegisterInfo::getReservedRegs().
|
inline |
Definition at line 378 of file ARMSubtarget.h.
References ARMProcClass, and RClass.
|
inline |
Definition at line 361 of file ARMSubtarget.h.
bool ARMSubtarget::isROPI | ( | ) | const |
Definition at line 309 of file ARMSubtarget.cpp.
References llvm::Reloc::ROPI, llvm::Reloc::ROPI_RWPI, and TM.
Referenced by allowPositionIndependentMovt(), and promoteToConstantPool().
bool ARMSubtarget::isRWPI | ( | ) | const |
Definition at line 313 of file ARMSubtarget.cpp.
References llvm::Reloc::ROPI_RWPI, llvm::Reloc::RWPI, and TM.
|
inline |
Definition at line 288 of file ARMSubtarget.h.
References ARMProcFamily, and llvm::CallingConv::Swift.
Referenced by adjustDefLatency().
|
inline |
Definition at line 348 of file ARMSubtarget.h.
References TargetTriple.
Referenced by CC_ARM_AAPCS_Custom_Aggregate().
|
inline |
Definition at line 365 of file ARMSubtarget.h.
References TargetTriple.
|
inline |
Definition at line 344 of file ARMSubtarget.h.
References TargetTriple.
|
inline |
These properties are per-module, please use the TargetMachine TargetTriple.
Definition at line 335 of file ARMSubtarget.h.
References TargetTriple.
Referenced by llvm::ARMAsmPrinter::emitInstruction(), llvm::ARMBaseRegisterInfo::getCalleeSavedRegs(), llvm::ARMBaseRegisterInfo::getCallPreservedMask(), getFramePointerReg(), llvm::ARMBaseRegisterInfo::getThisReturnPreservedMask(), llvm::ARMBaseRegisterInfo::getTLSCallPreservedMask(), and useFPVFMx().
|
inline |
Definition at line 339 of file ARMSubtarget.h.
References TargetTriple.
|
inline |
Definition at line 356 of file ARMSubtarget.h.
References TargetTriple.
|
inline |
Definition at line 345 of file ARMSubtarget.h.
References TargetTriple.
Referenced by allowPositionIndependentMovt(), and isGVInGOT().
|
inline |
Definition at line 350 of file ARMSubtarget.h.
References TargetTriple.
|
inline |
Definition at line 336 of file ARMSubtarget.h.
References TargetTriple.
|
inline |
Definition at line 340 of file ARMSubtarget.h.
References TargetTriple.
Referenced by useFastISel().
|
inline |
Definition at line 346 of file ARMSubtarget.h.
References TargetTriple.
Referenced by isGVIndirectSymbol(), isR9Reserved(), and useFastISel().
|
inline |
Definition at line 352 of file ARMSubtarget.h.
References TargetTriple.
|
inline |
Definition at line 341 of file ARMSubtarget.h.
References TargetTriple.
|
inline |
Definition at line 338 of file ARMSubtarget.h.
References TargetTriple.
Referenced by useStride4VFPs().
|
inline |
Definition at line 337 of file ARMSubtarget.h.
References TargetTriple.
|
inline |
Definition at line 342 of file ARMSubtarget.h.
References TargetTriple.
Referenced by llvm::ARMAsmPrinter::emitInstruction(), getDivRemArgList(), getFramePointerReg(), isXRaySupported(), and useMovt().
|
inline |
Definition at line 375 of file ARMSubtarget.h.
References isThumb().
Referenced by ARMSubtarget(), attachMEMCPYScratchRegs(), llvm::ThumbRegisterInfo::eliminateFrameIndex(), llvm::ThumbRegisterInfo::emitLoadConstPool(), llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(), enablePostRAMachineScheduler(), enablePostRAScheduler(), getGPRAllocationOrder(), getPushPopSplitVariation(), llvm::ARMBaseRegisterInfo::getSjLjDispatchPreservedMask(), isLegalAddressImmediate(), LowerADDSUBSAT(), llvm::ARMCallLowering::lowerCall(), LowerPREFETCH(), LowerSTORE(), PerformAddcSubcCombine(), PerformADDECombine(), PerformAddeSubeCombine(), PerformANDCombine(), PerformMULCombine(), PerformORCombine(), PerformORCombineToBFI(), PerformXORCombine(), llvm::ThumbRegisterInfo::resolveFrameIndex(), llvm::ThumbRegisterInfo::rewriteFrameIndex(), useFastISel(), and llvm::ThumbRegisterInfo::useFPForScavengingIndex().
|
inline |
Definition at line 376 of file ARMSubtarget.h.
References isThumb().
Referenced by getGPRAllocationOrder(), ignoreCSRForAllocationOrder(), isLegalAddressImmediate(), LowerPREFETCH(), and PerformMinMaxToSatCombine().
|
override |
Definition at line 134 of file ARMSubtarget.cpp.
References hasARMOps(), and isTargetWindows().
ParseSubtargetFeatures - Parses features string setting specified subtarget options.
Definition of function is auto generated by tblgen.
References ARMSubtarget().
|
inline |
Definition at line 403 of file ARMSubtarget.h.
References RestrictIT.
|
inline |
Definition at line 399 of file ARMSubtarget.h.
References SupportsTailCall.
|
inlineoverride |
Enable use of alias analysis during code generation (during MI scheduling, DAGCombine, etc.).
Definition at line 429 of file ARMSubtarget.h.
|
override |
Definition at line 365 of file ARMSubtarget.cpp.
bool ARMSubtarget::useFastISel | ( | ) | const |
True if fast-isel is used.
Definition at line 401 of file ARMSubtarget.cpp.
References ForceFastISel, isTargetLinux(), isTargetMachO(), isThumb(), isThumb1Only(), and TM.
Referenced by llvm::ARM::createFastISel().
|
inline |
Definition at line 315 of file ARMSubtarget.h.
References hasVFP4Base(), and isTargetDarwin().
Referenced by useFPVFMx16(), and useFPVFMx64().
|
inline |
Definition at line 318 of file ARMSubtarget.h.
References useFPVFMx().
|
inline |
Definition at line 319 of file ARMSubtarget.h.
References useFPVFMx().
|
inline |
Definition at line 314 of file ARMSubtarget.h.
|
inline |
Definition at line 373 of file ARMSubtarget.h.
Referenced by enableMachinePipeliner().
|
inline |
Definition at line 372 of file ARMSubtarget.h.
Referenced by enableMachineScheduler().
bool ARMSubtarget::useMovt | ( | ) | const |
Definition at line 393 of file ARMSubtarget.cpp.
References isTargetWindows(), and OptMinSize.
Referenced by llvm::ConstantMaterializationCost().
|
inline |
Definition at line 313 of file ARMSubtarget.h.
References UseMulOps.
Referenced by AddCombineTo64bitMLAL().
|
inline |
Definition at line 300 of file ARMSubtarget.h.
bool ARMSubtarget::useStride4VFPs | ( | ) | const |
Definition at line 385 of file ARMSubtarget.cpp.
References isTargetWatchABI(), and OptMinSize.
|
protected |
ARMArch - ARM architecture.
Definition at line 139 of file ARMSubtarget.h.
|
protected |
ARMProcClass - ARM processor class: None, AClass, RClass or MClass.
Definition at line 136 of file ARMSubtarget.h.
Referenced by isAClass(), isMClass(), and isRClass().
|
protected |
ARMProcFamily - ARM processor family: Cortex-A8, Cortex-A9, and others.
Definition at line 133 of file ARMSubtarget.h.
Referenced by isCortexA15(), isCortexA5(), isCortexA7(), isCortexA8(), isCortexA9(), isCortexM3(), isCortexM55(), isCortexM7(), isCortexM85(), isCortexR5(), isKrait(), and isSwift().
|
protected |
CPUString - String name of used CPU.
Definition at line 159 of file ARMSubtarget.h.
Referenced by ARMSubtarget(), and getCPUString().
|
protected |
Selected instruction itineraries (one entry per itinerary class.)
Definition at line 196 of file ARMSubtarget.h.
Referenced by getInstrItineraryData().
|
protected |
IsLittle - The target is Little Endian.
Definition at line 187 of file ARMSubtarget.h.
Referenced by ARMSubtarget(), and isLittle().
|
protected |
What kind of timing do load multiple/store multiple have (double issue, single issue etc).
Definition at line 168 of file ARMSubtarget.h.
Referenced by getLdStMultipleTiming().
|
protected |
Definition at line 161 of file ARMSubtarget.h.
Referenced by getMaxInterleaveFactor().
|
protected |
The cost factor for MVE instructions, representing the multiple beats an.
Definition at line 180 of file ARMSubtarget.h.
Referenced by getMVEVectorCostFactor().
|
protected |
Options passed via command line that could influence the target.
Definition at line 199 of file ARMSubtarget.h.
Referenced by ARMSubtarget().
|
protected |
OptMinSize - True if we're optimising for minimum code size, equal to the function attribute.
Definition at line 184 of file ARMSubtarget.h.
Referenced by ARMSubtarget(), hasMinSize(), useMovt(), and useStride4VFPs().
|
protected |
Clearance before partial register updates (in number of instructions)
Definition at line 164 of file ARMSubtarget.h.
Referenced by getPartialUpdateClearance().
|
protected |
What alignment is preferred for loop bodies and functions, in log2(bytes).
Definition at line 175 of file ARMSubtarget.h.
Referenced by getPreferBranchLogAlignment().
|
protected |
The adjustment that we need to apply to get the operand latency from the operand cycle returned by the itinerary data for pre-ISel operands.
Definition at line 172 of file ARMSubtarget.h.
Referenced by getPreISelOperandLatencyAdjustment().
|
protected |
RestrictIT - If true, the subtarget disallows generation of complex IT blocks.
Definition at line 152 of file ARMSubtarget.h.
Referenced by restrictIT().
|
protected |
SchedModel - Processor specific instruction costs.
Definition at line 193 of file ARMSubtarget.h.
Referenced by getMispredictionPenalty().
stackAlignment - The minimum alignment known to hold of the stack frame on entry to the function and which must be maintained by every function.
Definition at line 156 of file ARMSubtarget.h.
Referenced by getStackAlignment().
|
protected |
SupportsTailCall - True if the OS supports tail call.
The dynamic linker must be able to synthesize call stubs for interworking between ARM and Thumb.
Definition at line 148 of file ARMSubtarget.h.
Referenced by supportsTailCall().
|
protected |
TargetTriple - What processor and OS we're targeting.
Definition at line 190 of file ARMSubtarget.h.
Referenced by ARMSubtarget(), getTargetTriple(), isTargetAEABI(), isTargetAndroid(), isTargetCOFF(), isTargetDarwin(), isTargetDriverKit(), isTargetEHABICompatible(), isTargetELF(), isTargetGNUAEABI(), isTargetIOS(), isTargetLinux(), isTargetMachO(), isTargetMuslAEABI(), isTargetNetBSD(), isTargetWatchABI(), isTargetWatchOS(), and isTargetWindows().
|
protected |
Definition at line 201 of file ARMSubtarget.h.
Referenced by ARMSubtarget(), isGVIndirectSymbol(), isGVInGOT(), isROPI(), isRWPI(), and useFastISel().
|
protected |
UseMulOps - True if non-microcoded fused integer multiply-add and multiply-subtract instructions should be used.
Definition at line 143 of file ARMSubtarget.h.
Referenced by ARMSubtarget(), and useMulOps().