14 #ifndef ARMSUBTARGET_H
15 #define ARMSUBTARGET_H
23 #define GET_SUBTARGETINFO_HEADER
24 #include "ARMGenSubtargetInfo.inc"
222 ARMSubtarget(
const std::string &TT,
const std::string &CPU,
239 void initializeEnvironment();
347 RegClassVector& CriticalPathRCs)
const;
364 #endif // ARMSUBTARGET_H
bool avoidCPSRPartialUpdate() const
Triple TargetTriple
TargetTriple - What processor and OS we're targeting.
bool avoidMOVsShifterOperand() const
unsigned getMispredictionPenalty() const
const std::string & getCPUString() const
const MCSchedModel * SchedModel
SchedModel - Processor specific instruction costs.
bool hasT2ExtractPack() const
bool HasHardwareDivideInARM
HasHardwareDivideInARM - True if subtarget supports [su]div in ARM mode.
bool isThumb1Only() const
bool isR9Reserved() const
bool isTargetAEABI() const
bool isTargetDarwin() const
bool HasThumb2
HasThumb2 - True if Thumb2 instructions are supported.
bool UnsafeFPMath
Target machine allowed unsafe FP math (such as use of NEON fp)
bool hasMPExtension() const
bool isFPBrccSlow() const
bool isOSLinux() const
Tests whether the OS is Linux.
const Triple & getTargetTriple() const
bool isOSNaCl() const
Tests whether the OS is NaCl (Native Client)
const InstrItineraryData & getInstrItineraryData() const
bool NoARM
NoARM - True if subtarget does not support ARM mode execution.
bool prefers32BitThumb() const
bool hasAnyDataBarrier() const
virtual void resetSubtargetFeatures(const MachineFunction *MF)
Reset the features for the ARM target.
bool isiOS() const
Is this an iOS triple.
bool AvoidMOVsShifterOperand
bool HasCRC
HasCRC - if true, processor supports CRC instructions.
ARMSubtarget(const std::string &TT, const std::string &CPU, const std::string &FS, const TargetOptions &Options)
ARMProcFamilyEnum ARMProcFamily
ARMProcFamily - ARM processor family: Cortex-A8, Cortex-A9, and others.
bool supportsTailCall() const
bool hasVirtualization() const
bool HasCrypto
HasCrypto - if true, processor supports Cryptography extensions.
enum llvm::ARMSubtarget::@174 TargetABI
bool hasVMLxForwarding() const
bool useNEONForSinglePrecisionFP() const
unsigned getStackAlignment() const
bool HasTrustZone
HasTrustZone - if true, processor supports TrustZone security extensions.
bool isOSDarwin() const
isOSDarwin - Is this a "Darwin" OS (OS X or iOS).
bool InThumbMode
InThumbMode - True if compiling for Thumb, false for ARM.
bool isTargetNaCl() const
void ParseSubtargetFeatures(StringRef CPU, StringRef FS)
bool GVIsIndirectSymbol(const GlobalValue *GV, Reloc::Model RelocM) const
GVIsIndirectSymbol - true if the GV will be accessed via an indirect symbol.
bool enablePostRAScheduler(CodeGenOpt::Level OptLevel, TargetSubtargetInfo::AntiDepBreakMode &Mode, RegClassVector &CriticalPathRCs) const
enablePostRAScheduler - True at 'More' optimization.
ARMProcClassEnum ARMProcClass
ARMProcClass - ARM processor class: None, AClass, RClass or MClass.
bool UseNaClTrap
NaCl TRAP instruction is generated instead of the regular TRAP.
unsigned getMaxInlineSizeThreshold() const
const TargetOptions & Options
Options passed via command line that could influence the target.
bool IsR9Reserved
IsR9Reserved - True if R9 is a not available as general purpose register.
bool isTargetLinux() const
InstrItineraryData InstrItins
Selected instruction itineraries (one entry per itinerary class.)
bool UseNEONForSinglePrecisionFP
bool PostRAScheduler
PostRAScheduler - True if using post-register-allocation scheduler.
bool allowsUnalignedMem() const
EnvironmentType getEnvironment() const
getEnvironment - Get the parsed environment type of this triple.
bool hasTrustZone() const
bool SlowFPBrcc
SlowFPBrcc - True if floating point compare + branch is slow.
bool AvoidCPSRPartialUpdate
bool hasDataBarrier() const
std::string CPUString
CPUString - String name of used CPU.
bool hasDivideInARMMode() const
bool hasThumb2DSP() const
bool HasHardwareDivide
HasHardwareDivide - True if subtarget supports [su]div.