14 #ifndef X86SUBTARGET_H
15 #define X86SUBTARGET_H
22 #define GET_SUBTARGETINFO_HEADER
23 #include "X86GenSubtargetInfo.inc"
45 NoMMXSSE,
MMX,
SSE1,
SSE2,
SSE3,
SSSE3,
SSE41,
SSE42,
AVX,
AVX2,
AVX512F
203 unsigned StackAlignOverride;
212 X86Subtarget(
const std::string &TT,
const std::string &CPU,
213 const std::string &
FS,
214 unsigned StackAlignOverride,
bool is64Bit);
236 void initializeEnvironment();
399 RegClassVector& CriticalPathRCs)
const;
OSType getOS() const
getOS - Get the parsed operating system type of this triple.
void ParseSubtargetFeatures(StringRef CPU, StringRef FS)
unsigned getMaxInlineSizeThreshold() const
bool HasPRFCHW
HasPRFCHW - Processor has PRFCHW instructions.
bool postRAScheduler() const
bool HasTBM
HasTBM - Target has TBM instructions.
The C convention as specified in the x86-64 supplement to the System V ABI, used on most non-Windows ...
bool HasBMI2
HasBMI2 - Processor has BMI2 instructions.
bool isTargetCygMing() const
bool HasCDI
Processor has AVX-512 Conflict Detection Instructions.
bool HasAES
HasAES - Target has AES instructions.
void setPICStyle(PICStyles::Style Style)
bool enableMachineScheduler() const LLVM_OVERRIDE
Enable the MachineScheduler pass for all X86 subtargets.
bool HasERI
Processor has AVX-512 Exponential and Reciprocal Instructions.
unsigned char ClassifyGlobalReference(const GlobalValue *GV, const TargetMachine &TM) const
X86Subtarget(const std::string &TT, const std::string &CPU, const std::string &FS, unsigned StackAlignOverride, bool is64Bit)
unsigned MaxInlineSizeThreshold
bool HasRDRAND
HasRDRAND - True if the processor has the RDRAND instruction.
bool hasCmpxchg16b() const
bool isOSWindows() const
Tests whether the OS is Windows.
bool isOSCygMing() const
Tests for either Cygwin or MinGW OS.
bool HasFMA
HasFMA - Target has 3-operand fused multiply-add.
bool isTargetNaCl64() const
bool isTargetSolaris() const
PICStyles::Style getPICStyle() const
bool isTargetDarwin() const
bool HasPOPCNT
HasPOPCNT - True if the processor supports POPCNT.
bool hasVectorUAMem() const
const Triple & getTargetTriple() const
unsigned getStackAlignment() const
ID
LLVM Calling Convention Representation.
bool HasPFI
Processor has AVX-512 PreFetch Instructions.
const InstrItineraryData & getInstrItineraryData() const
bool isOSLinux() const
Tests whether the OS is Linux.
bool isEnvironmentMachO() const
Tests whether the environment is MachO.
bool isOSNaCl() const
Tests whether the OS is NaCl (Native Client)
bool is64Bit() const
Is this x86_64? (disregarding specific ABI / programming model)
bool isPICStyleRIPRel() const
bool isPICStyleStubAny() const
X863DNowEnum X863DNowLevel
bool HasSSE4A
HasSSE4A - True if the processor supports SSE4A instructions.
bool HasLZCNT
HasLZCNT - Processor has LZCNT instruction.
bool HasF16C
HasF16C - Processor has 16-bit floating point conversion instructions.
virtual void resetSubtargetFeatures(const MachineFunction *MF)
Reset the features for the X86 target.
unsigned char ClassifyBlockAddressReference() const
bool isCallingConvWin64(CallingConv::ID CC) const
bool isTargetCOFF() const
bool isPICStyleStubPIC() const
bool IsBTMemSlow
IsBTMemSlow - True if BT (bit test) of memory instructions are slow.
bool HasADX
HasADX - Processor has ADX instructions.
bool isTargetWin32() const
bool isTargetCygwin() const
bool IsLegalToCallImmediateAddr(const TargetMachine &TM) const
PICStyles::Style PICStyle
bool HasXOP
HasXOP - Target has XOP instructions.
bool isPICStyleStubNoDynamic() const
bool isOSBinFormatCOFF() const
Tests whether the OS uses the COFF binary format.
bool isPICStyleGOT() const
InstrItineraryData InstrItins
Instruction itineraries for scheduling.
bool isPICStyleSet() const
bool HasFSGSBase
HasFSGSBase - Processor has FS/GS base insturctions.
bool isTargetWindows() const
bool isOSDarwin() const
isOSDarwin - Is this a "Darwin" OS (OS X or iOS).
X86ProcFamilyEnum X86ProcFamily
X86ProcFamily - X86 processor family: Intel Atom, and others.
bool PostRAScheduler
PostRAScheduler - True if using post-register-allocation scheduler.
bool isTarget64BitILP32() const
Is this x86_64 with the ILP32 programming model (x32 ABI)?
bool isTargetMingw() const
bool HasSHA
HasSHA - Processor has SHA instructions.
bool hasSlowDivide() const
bool HasBMI
HasBMI - Processor has BMI1 instructions.
bool isTargetLinux() const
bool HasHLE
HasHLE - Processor has HLE.
bool isUnalignedMemAccessFast() const
bool HasPCLMUL
HasPCLMUL - Target has carry-less multiplication.
bool isOSBinFormatELF() const
Tests whether the OS uses the ELF binary format.
bool isTarget64BitLP64() const
Is this x86_64 with the LP64 programming model (standard AMD64, no x32)?
EnvironmentType getEnvironment() const
getEnvironment - Get the parsed environment type of this triple.
The C convention as implemented on Windows/x86-64. This convention differs from the more common X86_6...
void AutoDetectSubtargetFeatures()
bool isTargetWin64() const
bool HasFMA4
HasFMA4 - Target has 4-operand fused multiply-add.
bool HasRTM
HasRTM - Processor has RTM instructions.
bool isTargetFreeBSD() const
const char * getBZeroEntry() const
bool padShortFunctions() const
bool callRegIndirect() const
bool HasRDSEED
HasRDSEED - Processor has RDSEED instructions.
bool isTargetNaCl32() const
bool enablePostRAScheduler(CodeGenOpt::Level OptLevel, TargetSubtargetInfo::AntiDepBreakMode &Mode, RegClassVector &CriticalPathRCs) const
enablePostRAScheduler - run for Atom optimization.
Triple TargetTriple
TargetTriple - What processor and OS we're targeting.
bool IsUAMemFast
IsUAMemFast - True if unaligned memory access is fast.
bool HasMOVBE
HasMOVBE - True if the processor has the MOVBE instruction.
bool isTargetEnvMacho() const
bool isTargetNaCl() const