diff options
Diffstat (limited to 'contrib/llvm/lib/Target/AArch64/AArch64Subtarget.cpp')
-rw-r--r-- | contrib/llvm/lib/Target/AArch64/AArch64Subtarget.cpp | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/contrib/llvm/lib/Target/AArch64/AArch64Subtarget.cpp b/contrib/llvm/lib/Target/AArch64/AArch64Subtarget.cpp index 7dd8ccb..03e0132 100644 --- a/contrib/llvm/lib/Target/AArch64/AArch64Subtarget.cpp +++ b/contrib/llvm/lib/Target/AArch64/AArch64Subtarget.cpp @@ -36,7 +36,8 @@ UseAddressTopByteIgnored("aarch64-use-tbi", cl::desc("Assume that top byte of " "an address is ignored"), cl::init(false), cl::Hidden); AArch64Subtarget & -AArch64Subtarget::initializeSubtargetDependencies(StringRef FS) { +AArch64Subtarget::initializeSubtargetDependencies(StringRef FS, + StringRef CPUString) { // Determine default and user-specified characteristics if (CPUString.empty()) @@ -63,9 +64,15 @@ void AArch64Subtarget::initializeProperties() { MaxInterleaveFactor = 4; break; case ExynosM1: + MaxInterleaveFactor = 4; + MaxJumpTableSize = 8; PrefFunctionAlignment = 4; PrefLoopAlignment = 3; break; + case Falkor: + MaxInterleaveFactor = 4; + VectorInsertExtractBaseCost = 2; + break; case Kryo: MaxInterleaveFactor = 4; VectorInsertExtractBaseCost = 2; @@ -89,8 +96,8 @@ AArch64Subtarget::AArch64Subtarget(const Triple &TT, const std::string &CPU, const std::string &FS, const TargetMachine &TM, bool LittleEndian) : AArch64GenSubtargetInfo(TT, CPU, FS), ReserveX18(TT.isOSDarwin()), - IsLittle(LittleEndian), CPUString(CPU), TargetTriple(TT), FrameLowering(), - InstrInfo(initializeSubtargetDependencies(FS)), TSInfo(), + IsLittle(LittleEndian), TargetTriple(TT), FrameLowering(), + InstrInfo(initializeSubtargetDependencies(FS, CPU)), TSInfo(), TLInfo(TM, *this), GISel() {} const CallLowering *AArch64Subtarget::getCallLowering() const { @@ -98,6 +105,16 @@ const CallLowering *AArch64Subtarget::getCallLowering() const { return GISel->getCallLowering(); } +const InstructionSelector *AArch64Subtarget::getInstructionSelector() const { + assert(GISel && "Access to GlobalISel APIs not set"); + return GISel->getInstructionSelector(); +} + +const LegalizerInfo *AArch64Subtarget::getLegalizerInfo() const { + assert(GISel && "Access to GlobalISel APIs not set"); + return GISel->getLegalizerInfo(); +} + const RegisterBankInfo *AArch64Subtarget::getRegBankInfo() const { assert(GISel && "Access to GlobalISel APIs not set"); return GISel->getRegBankInfo(); |