23 #define DEBUG_TYPE "aarch64-subtarget"
25 #define GET_SUBTARGETINFO_CTOR
26 #define GET_SUBTARGETINFO_TARGET_DESC
27 #include "AArch64GenSubtargetInfo.inc"
39 AArch64Subtarget::initializeSubtargetDependencies(
StringRef FS,
43 if (CPUString.
empty())
44 CPUString =
"generic";
47 initializeProperties();
52 void AArch64Subtarget::initializeProperties() {
96 const std::string &FS,
99 IsLittle(LittleEndian), TargetTriple(TT), FrameLowering(),
100 InstrInfo(initializeSubtargetDependencies(FS, CPU)), TSInfo(),
101 TLInfo(TM, *this), GISel() {}
104 assert(
GISel &&
"Access to GlobalISel APIs not set");
105 return GISel->getCallLowering();
109 assert(
GISel &&
"Access to GlobalISel APIs not set");
110 return GISel->getInstructionSelector();
114 assert(
GISel &&
"Access to GlobalISel APIs not set");
115 return GISel->getLegalizerInfo();
119 assert(
GISel &&
"Access to GlobalISel APIs not set");
120 return GISel->getRegBankInfo();
158 unsigned NumRegionInstrs)
const {
178 unsigned Major, Minor, Micro;
186 std::unique_ptr<PBQPRAConstraint>
188 return balanceFPOps() ? llvm::make_unique<A57ChainingConstraint>() :
nullptr;
uint16_t PrefetchDistance
const InstructionSelector * getInstructionSelector() const override
bool DisableLatencySchedHeuristic
const CallLowering * getCallLowering() const override
void overrideSchedPolicy(MachineSchedPolicy &Policy, unsigned NumRegionInstrs) const override
Holds all the information related to register banks.
bool balanceFPOps() const
uint8_t VectorInsertExtractBaseCost
MO_GOT - This flag indicates that a symbol operand represents the address of the GOT entry for the sy...
bool enableEarlyIfConversion() const override
bool isiOS() const
Is this an iOS triple.
initializer< Ty > init(const Ty &Val)
CodeModel::Model getCodeModel() const
Returns the code model.
unsigned MaxPrefetchIterationsAhead
unsigned PrefLoopAlignment
bool isTargetMachO() const
unsigned PrefFunctionAlignment
void getiOSVersion(unsigned &Major, unsigned &Minor, unsigned &Micro) const
getiOSVersion - Parse the version number as with getOSVersion.
uint16_t MinPrefetchStride
bool shouldAssumeDSOLocal(const Module &M, const GlobalValue *GV) const
unsigned char ClassifyGlobalReference(const GlobalValue *GV, const TargetMachine &TM) const
ClassifyGlobalReference - Find the target operand flags that describe how a global value should be re...
Triple - Helper class for working with autoconf configuration names.
bool hasExternalWeakLinkage() const
void ParseSubtargetFeatures(StringRef CPU, StringRef FS)
ParseSubtargetFeatures - Parses features string setting specified subtarget options.
const char * getBZeroEntry() const
This function returns the name of a function which has an interface like the non-standard bzero funct...
LLVM_NODISCARD LLVM_ATTRIBUTE_ALWAYS_INLINE bool empty() const
empty - Check if the string is empty.
static cl::opt< bool > UseAddressTopByteIgnored("aarch64-use-tbi", cl::desc("Assume that top byte of ""an address is ignored"), cl::init(false), cl::Hidden)
bool isTargetDarwin() const
Provides the logic to select generic machine instructions.
Define a generic scheduling policy for targets that don't provide their own MachineSchedStrategy.
std::unique_ptr< PBQPRAConstraint > getCustomPBQPConstraints() const override
AArch64Subtarget(const Triple &TT, const std::string &CPU, const std::string &FS, const TargetMachine &TM, bool LittleEndian)
This constructor initializes the data members to match that of the specified triple.
const LegalizerInfo * getLegalizerInfo() const override
unsigned MaxJumpTableSize
bool supportsAddressTopByteIgnored() const
CPU has TBI (top byte of addresses is ignored during HW address translation) and OS enables it...
uint8_t MaxInterleaveFactor
Triple TargetTriple
TargetTriple - What processor and OS we're targeting.
ARMProcFamilyEnum ARMProcFamily
ARMProcFamily - ARM processor family: Cortex-A53, Cortex-A57, and others.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
Module * getParent()
Get the module that this global value is contained inside of...
const RegisterBankInfo * getRegBankInfo() const override
Primary interface to the complete machine description for the target machine.
StringRef - Represent a constant reference to a string, i.e.
bool DisableLatencyHeuristic
std::unique_ptr< GISelAccessor > GISel
Gather the accessor points to GlobalISel-related APIs.
static cl::opt< bool > EnableEarlyIfConvert("aarch64-early-ifcvt", cl::desc("Enable the early if ""converter pass"), cl::init(true), cl::Hidden)