LLVM  14.0.0git
Public Member Functions | List of all members
llvm::X86Subtarget Class Referencefinal

#include "Target/X86/X86Subtarget.h"

Inheritance diagram for llvm::X86Subtarget:
Inheritance graph
[legend]
Collaboration diagram for llvm::X86Subtarget:
Collaboration graph
[legend]

Public Member Functions

 X86Subtarget (const Triple &TT, StringRef CPU, StringRef TuneCPU, StringRef FS, const X86TargetMachine &TM, MaybeAlign StackAlignOverride, unsigned PreferVectorWidthOverride, unsigned RequiredVectorWidth)
 This constructor initializes the data members to match that of the specified triple. More...
 
const X86TargetLoweringgetTargetLowering () const override
 
const X86InstrInfogetInstrInfo () const override
 
const X86FrameLoweringgetFrameLowering () const override
 
const X86SelectionDAGInfogetSelectionDAGInfo () const override
 
const X86RegisterInfogetRegisterInfo () const override
 
unsigned getTileConfigSize () const
 
Align getTileConfigAlignment () const
 
Align getStackAlignment () const
 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. More...
 
unsigned getMaxInlineSizeThreshold () const
 Returns the maximum memset / memcpy size that still makes it profitable to inline the call. More...
 
void ParseSubtargetFeatures (StringRef CPU, StringRef TuneCPU, StringRef FS)
 ParseSubtargetFeatures - Parses features string setting specified subtarget options. More...
 
const CallLoweringgetCallLowering () const override
 Methods used by Global ISel. More...
 
InstructionSelectorgetInstructionSelector () const override
 
const LegalizerInfogetLegalizerInfo () const override
 
const RegisterBankInfogetRegBankInfo () const override
 
bool is64Bit () const
 Is this x86_64? (disregarding specific ABI / programming model) More...
 
bool is32Bit () const
 
bool is16Bit () const
 
bool isTarget64BitILP32 () const
 Is this x86_64 with the ILP32 programming model (x32 ABI)? More...
 
bool isTarget64BitLP64 () const
 Is this x86_64 with the LP64 programming model (standard AMD64, no x32)? More...
 
PICStyles::Style getPICStyle () const
 
void setPICStyle (PICStyles::Style Style)
 
bool hasX87 () const
 
bool hasCmpxchg8b () const
 
bool hasNOPL () const
 
bool hasCMov () const
 
bool hasSSE1 () const
 
bool hasSSE2 () const
 
bool hasSSE3 () const
 
bool hasSSSE3 () const
 
bool hasSSE41 () const
 
bool hasSSE42 () const
 
bool hasAVX () const
 
bool hasAVX2 () const
 
bool hasAVX512 () const
 
bool hasInt256 () const
 
bool hasSSE4A () const
 
bool hasMMX () const
 
bool has3DNow () const
 
bool has3DNowA () const
 
bool hasPOPCNT () const
 
bool hasAES () const
 
bool hasVAES () const
 
bool hasFXSR () const
 
bool hasXSAVE () const
 
bool hasXSAVEOPT () const
 
bool hasXSAVEC () const
 
bool hasXSAVES () const
 
bool hasPCLMUL () const
 
bool hasVPCLMULQDQ () const
 
bool hasGFNI () const
 
bool hasFMA () const
 
bool hasFMA4 () const
 
bool hasAnyFMA () const
 
bool hasXOP () const
 
bool hasTBM () const
 
bool hasLWP () const
 
bool hasMOVBE () const
 
bool hasRDRAND () const
 
bool hasF16C () const
 
bool hasFSGSBase () const
 
bool hasLZCNT () const
 
bool hasBMI () const
 
bool hasBMI2 () const
 
bool hasVBMI () const
 
bool hasVBMI2 () const
 
bool hasIFMA () const
 
bool hasRTM () const
 
bool hasADX () const
 
bool hasSHA () const
 
bool hasPRFCHW () const
 
bool hasPREFETCHWT1 () const
 
bool hasPrefetchW () const
 
bool hasSSEPrefetch () const
 
bool hasRDSEED () const
 
bool hasLAHFSAHF () const
 
bool hasMWAITX () const
 
bool hasCLZERO () const
 
bool hasCLDEMOTE () const
 
bool hasMOVDIRI () const
 
bool hasMOVDIR64B () const
 
bool hasPTWRITE () const
 
bool isSHLDSlow () const
 
bool isPMULLDSlow () const
 
bool isPMADDWDSlow () const
 
bool isUnalignedMem16Slow () const
 
bool isUnalignedMem32Slow () const
 
bool hasSSEUnalignedMem () const
 
bool hasCmpxchg16b () const
 
bool useLeaForSP () const
 
bool hasPOPCNTFalseDeps () const
 
bool hasLZCNTFalseDeps () const
 
bool hasFastVariableCrossLaneShuffle () const
 
bool hasFastVariablePerLaneShuffle () const
 
bool insertVZEROUPPER () const
 
bool hasFastGather () const
 
bool hasFastScalarFSQRT () const
 
bool hasFastVectorFSQRT () const
 
bool hasFastLZCNT () const
 
bool hasFastSHLDRotate () const
 
bool hasFastBEXTR () const
 
bool hasFastHorizontalOps () const
 
bool hasFastScalarShiftMasks () const
 
bool hasFastVectorShiftMasks () const
 
bool hasFastMOVBE () const
 
bool hasMacroFusion () const
 
bool hasBranchFusion () const
 
bool hasERMSB () const
 
bool hasFSRM () const
 
bool hasSlowDivide32 () const
 
bool hasSlowDivide64 () const
 
bool padShortFunctions () const
 
bool slowTwoMemOps () const
 
bool LEAusesAG () const
 
bool slowLEA () const
 
bool slow3OpsLEA () const
 
bool slowIncDec () const
 
bool hasCDI () const
 
bool hasVPOPCNTDQ () const
 
bool hasPFI () const
 
bool hasERI () const
 
bool hasDQI () const
 
bool hasBWI () const
 
bool hasVLX () const
 
bool hasFP16 () const
 
bool hasPKU () const
 
bool hasVNNI () const
 
bool hasBF16 () const
 
bool hasVP2INTERSECT () const
 
bool hasBITALG () const
 
bool hasSHSTK () const
 
bool hasCLFLUSHOPT () const
 
bool hasCLWB () const
 
bool hasWBNOINVD () const
 
bool hasRDPID () const
 
bool hasWAITPKG () const
 
bool hasPCONFIG () const
 
bool hasSGX () const
 
bool hasINVPCID () const
 
bool hasENQCMD () const
 
bool hasKL () const
 
bool hasWIDEKL () const
 
bool hasHRESET () const
 
bool hasSERIALIZE () const
 
bool hasTSXLDTRK () const
 
bool hasUINTR () const
 
bool hasCRC32 () const
 
bool useRetpolineIndirectCalls () const
 
bool useRetpolineIndirectBranches () const
 
bool hasAVXVNNI () const
 
bool hasAMXTILE () const
 
bool hasAMXBF16 () const
 
bool hasAMXINT8 () const
 
bool useRetpolineExternalThunk () const
 
bool useIndirectThunkCalls () const
 
bool useIndirectThunkBranches () const
 
bool preferMaskRegisters () const
 
bool useSLMArithCosts () const
 
bool useGLMDivSqrtCosts () const
 
bool useLVIControlFlowIntegrity () const
 
bool allowTaggedGlobals () const
 
bool useLVILoadHardening () const
 
bool useSpeculativeExecutionSideEffectSuppression () const
 
unsigned getPreferVectorWidth () const
 
unsigned getRequiredVectorWidth () const
 
bool canExtendTo512DQ () const
 
bool canExtendTo512BW () const
 
bool useAVX512Regs () const
 
bool useBWIRegs () const
 
bool isXRaySupported () const override
 
bool isAtom () const
 TODO: to be removed later and replaced with suitable properties. More...
 
bool useSoftFloat () const
 
bool useAA () const override
 
bool hasMFence () const
 Use mfence if we have SSE2 or we're on x86-64 (even if we asked for no-sse2). More...
 
const TriplegetTargetTriple () const
 
bool isTargetDarwin () const
 
bool isTargetFreeBSD () const
 
bool isTargetDragonFly () const
 
bool isTargetSolaris () const
 
bool isTargetPS4 () const
 
bool isTargetELF () const
 
bool isTargetCOFF () const
 
bool isTargetMachO () const
 
bool isTargetLinux () const
 
bool isTargetKFreeBSD () const
 
bool isTargetGlibc () const
 
bool isTargetAndroid () const
 
bool isTargetNaCl () const
 
bool isTargetNaCl32 () const
 
bool isTargetNaCl64 () const
 
bool isTargetMCU () const
 
bool isTargetFuchsia () const
 
bool isTargetWindowsMSVC () const
 
bool isTargetWindowsCoreCLR () const
 
bool isTargetWindowsCygwin () const
 
bool isTargetWindowsGNU () const
 
bool isTargetWindowsItanium () const
 
bool isTargetCygMing () const
 
bool isOSWindows () const
 
bool isTargetWin64 () const
 
bool isTargetWin32 () const
 
bool isPICStyleGOT () const
 
bool isPICStyleRIPRel () const
 
bool isPICStyleStubPIC () const
 
bool isPositionIndependent () const
 
bool isCallingConvWin64 (CallingConv::ID CC) const
 
unsigned char classifyLocalReference (const GlobalValue *GV) const
 Classify a global variable reference for the current subtarget according to how we should reference it in a non-pcrel context. More...
 
unsigned char classifyGlobalReference (const GlobalValue *GV, const Module &M) const
 
unsigned char classifyGlobalReference (const GlobalValue *GV) const
 Classify a global variable reference for the current subtarget according to how we should reference it in a non-pcrel context. More...
 
unsigned char classifyGlobalFunctionReference (const GlobalValue *GV, const Module &M) const
 Classify a global function reference for the current subtarget. More...
 
unsigned char classifyGlobalFunctionReference (const GlobalValue *GV) const
 
unsigned char classifyBlockAddressReference () const
 Classify a blockaddress reference for the current subtarget according to how we should reference it in a non-pcrel context. More...
 
bool isLegalToCallImmediateAddr () const
 Return true if the subtarget allows calls to immediate address. More...
 
bool swiftAsyncContextIsDynamicallySet () const
 Return whether FrameLowering should always set the "extended frame present" bit in FP, or set it based on a symbol in the runtime. More...
 
bool enableIndirectBrExpand () const override
 If we are using indirect thunks, we need to expand indirectbr to avoid it lowering to an actual indirect jump. More...
 
bool enableMachineScheduler () const override
 Enable the MachineScheduler pass for all X86 subtargets. More...
 
bool enableEarlyIfConversion () const override
 
void getPostRAMutations (std::vector< std::unique_ptr< ScheduleDAGMutation >> &Mutations) const override
 
AntiDepBreakMode getAntiDepBreakMode () const override
 
bool enableAdvancedRASplitCost () const override
 

Detailed Description

Definition at line 52 of file X86Subtarget.h.

Constructor & Destructor Documentation

◆ X86Subtarget()

X86Subtarget::X86Subtarget ( const Triple TT,
StringRef  CPU,
StringRef  TuneCPU,
StringRef  FS,
const X86TargetMachine TM,
MaybeAlign  StackAlignOverride,
unsigned  PreferVectorWidthOverride,
unsigned  RequiredVectorWidth 
)

Member Function Documentation

◆ allowTaggedGlobals()

bool llvm::X86Subtarget::allowTaggedGlobals ( ) const
inline

Definition at line 805 of file X86Subtarget.h.

◆ canExtendTo512BW()

bool llvm::X86Subtarget::canExtendTo512BW ( ) const
inline

◆ canExtendTo512DQ()

bool llvm::X86Subtarget::canExtendTo512DQ ( ) const
inline

◆ classifyBlockAddressReference()

unsigned char X86Subtarget::classifyBlockAddressReference ( ) const

Classify a blockaddress reference for the current subtarget according to how we should reference it in a non-pcrel context.

Definition at line 57 of file X86Subtarget.cpp.

References classifyLocalReference().

◆ classifyGlobalFunctionReference() [1/2]

unsigned char X86Subtarget::classifyGlobalFunctionReference ( const GlobalValue GV) const

◆ classifyGlobalFunctionReference() [2/2]

unsigned char X86Subtarget::classifyGlobalFunctionReference ( const GlobalValue GV,
const Module M 
) const

◆ classifyGlobalReference() [1/2]

unsigned char X86Subtarget::classifyGlobalReference ( const GlobalValue GV) const

Classify a global variable reference for the current subtarget according to how we should reference it in a non-pcrel context.

Definition at line 64 of file X86Subtarget.cpp.

References classifyGlobalReference(), and llvm::GlobalValue::getParent().

◆ classifyGlobalReference() [2/2]

unsigned char X86Subtarget::classifyGlobalReference ( const GlobalValue GV,
const Module M 
) const

◆ classifyLocalReference()

unsigned char X86Subtarget::classifyLocalReference ( const GlobalValue GV) const

◆ enableAdvancedRASplitCost()

bool llvm::X86Subtarget::enableAdvancedRASplitCost ( ) const
inlineoverride

Definition at line 995 of file X86Subtarget.h.

◆ enableEarlyIfConversion()

bool X86Subtarget::enableEarlyIfConversion ( ) const
override

Definition at line 354 of file X86Subtarget.cpp.

References hasCMov(), and X86EarlyIfConv.

◆ enableIndirectBrExpand()

bool llvm::X86Subtarget::enableIndirectBrExpand ( ) const
inlineoverride

If we are using indirect thunks, we need to expand indirectbr to avoid it lowering to an actual indirect jump.

Definition at line 979 of file X86Subtarget.h.

References useIndirectThunkBranches().

◆ enableMachineScheduler()

bool llvm::X86Subtarget::enableMachineScheduler ( ) const
inlineoverride

Enable the MachineScheduler pass for all X86 subtargets.

Definition at line 984 of file X86Subtarget.h.

◆ getAntiDepBreakMode()

AntiDepBreakMode llvm::X86Subtarget::getAntiDepBreakMode ( ) const
inlineoverride

Definition at line 991 of file X86Subtarget.h.

◆ getCallLowering()

const CallLowering * X86Subtarget::getCallLowering ( ) const
override

Methods used by Global ISel.

Definition at line 338 of file X86Subtarget.cpp.

◆ getFrameLowering()

const X86FrameLowering* llvm::X86Subtarget::getFrameLowering ( ) const
inlineoverride

◆ getInstrInfo()

const X86InstrInfo* llvm::X86Subtarget::getInstrInfo ( ) const
inlineoverride

◆ getInstructionSelector()

InstructionSelector * X86Subtarget::getInstructionSelector ( ) const
override

Definition at line 342 of file X86Subtarget.cpp.

◆ getLegalizerInfo()

const LegalizerInfo * X86Subtarget::getLegalizerInfo ( ) const
override

Definition at line 346 of file X86Subtarget.cpp.

◆ getMaxInlineSizeThreshold()

unsigned llvm::X86Subtarget::getMaxInlineSizeThreshold ( ) const
inline

Returns the maximum memset / memcpy size that still makes it profitable to inline the call.

Definition at line 590 of file X86Subtarget.h.

Referenced by emitConstantSizeRepmov(), and llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset().

◆ getPICStyle()

PICStyles::Style llvm::X86Subtarget::getPICStyle ( ) const
inline

Definition at line 634 of file X86Subtarget.h.

◆ getPostRAMutations()

void X86Subtarget::getPostRAMutations ( std::vector< std::unique_ptr< ScheduleDAGMutation >> &  Mutations) const
override

Definition at line 358 of file X86Subtarget.cpp.

References llvm::createX86MacroFusionDAGMutation().

◆ getPreferVectorWidth()

unsigned llvm::X86Subtarget::getPreferVectorWidth ( ) const
inline

◆ getRegBankInfo()

const RegisterBankInfo * X86Subtarget::getRegBankInfo ( ) const
override

Definition at line 350 of file X86Subtarget.cpp.

◆ getRegisterInfo()

const X86RegisterInfo* llvm::X86Subtarget::getRegisterInfo ( ) const
inlineoverride

◆ getRequiredVectorWidth()

unsigned llvm::X86Subtarget::getRequiredVectorWidth ( ) const
inline

Definition at line 812 of file X86Subtarget.h.

◆ getSelectionDAGInfo()

const X86SelectionDAGInfo* llvm::X86Subtarget::getSelectionDAGInfo ( ) const
inlineoverride

Definition at line 572 of file X86Subtarget.h.

◆ getStackAlignment()

Align llvm::X86Subtarget::getStackAlignment ( ) const
inline

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 586 of file X86Subtarget.h.

◆ getTargetLowering()

const X86TargetLowering* llvm::X86Subtarget::getTargetLowering ( ) const
inlineoverride

◆ getTargetTriple()

const Triple& llvm::X86Subtarget::getTargetTriple ( ) const
inline

◆ getTileConfigAlignment()

Align llvm::X86Subtarget::getTileConfigAlignment ( ) const
inline

Definition at line 581 of file X86Subtarget.h.

◆ getTileConfigSize()

unsigned llvm::X86Subtarget::getTileConfigSize ( ) const
inline

Definition at line 580 of file X86Subtarget.h.

◆ has3DNow()

bool llvm::X86Subtarget::has3DNow ( ) const
inline

◆ has3DNowA()

bool llvm::X86Subtarget::has3DNowA ( ) const
inline

Definition at line 656 of file X86Subtarget.h.

◆ hasADX()

bool llvm::X86Subtarget::hasADX ( ) const
inline

Definition at line 687 of file X86Subtarget.h.

◆ hasAES()

bool llvm::X86Subtarget::hasAES ( ) const
inline

Definition at line 658 of file X86Subtarget.h.

◆ hasAMXBF16()

bool llvm::X86Subtarget::hasAMXBF16 ( ) const
inline

Definition at line 787 of file X86Subtarget.h.

◆ hasAMXINT8()

bool llvm::X86Subtarget::hasAMXINT8 ( ) const
inline

Definition at line 788 of file X86Subtarget.h.

◆ hasAMXTILE()

bool llvm::X86Subtarget::hasAMXTILE ( ) const
inline

Definition at line 786 of file X86Subtarget.h.

Referenced by llvm::X86TargetLowering::X86TargetLowering().

◆ hasAnyFMA()

bool llvm::X86Subtarget::hasAnyFMA ( ) const
inline

◆ hasAVX()

bool llvm::X86Subtarget::hasAVX ( ) const
inline

Definition at line 649 of file X86Subtarget.h.

Referenced by llvm::X86InstrInfo::breakPartialRegDependency(), combineBitcastvxi1(), combineConcatVectorOps(), combineConcatVectors(), combineExtractSubvector(), combineLoad(), combinePredicateReduction(), combineSelect(), combineToHorizontalAddSub(), combineVectorSizedSetCCEquality(), combineX86ShuffleChain(), convertIntLogicToFPLogic(), llvm::X86InstrInfo::copyPhysReg(), CopyToFromAsymmetricReg(), createVariablePermute(), EltsFromConsecutiveLoads(), llvm::X86TTIImpl::enableMemCmpExpansion(), llvm::X86InstrInfo::expandPostRAPseudo(), llvm::X86RegisterInfo::getCalleeSavedRegs(), llvm::X86RegisterInfo::getCallPreservedMask(), getLoadStoreRegOpcode(), llvm::X86TTIImpl::getMaxInterleaveFactor(), llvm::X86TargetLowering::getOptimalMemOpType(), llvm::X86TargetLowering::getRegForInlineAsmConstraint(), llvm::X86TTIImpl::getRegisterBitWidth(), llvm::X86TargetLowering::getSingleConstraintMatchWeight(), llvm::X86TTIImpl::isLegalMaskedLoad(), llvm::X86TTIImpl::isLegalNTStore(), LowerANY_EXTEND(), lowerBuildVectorAsBroadcast(), LowerEXTEND_VECTOR_INREG(), LowerShift(), lowerShuffleAsBlend(), lowerShuffleAsBroadcast(), LowerToHorizontalOp(), lowerUINT_TO_FP_vXi32(), lowerV2F64Shuffle(), lowerV4F32Shuffle(), LowerVectorAllZero(), LowerVSETCC(), LowerVSETCCWithSUBUS(), LowerZERO_EXTEND(), matchBinaryPermuteShuffle(), matchBinaryShuffle(), matchUnaryPermuteShuffle(), matchUnaryShuffle(), llvm::X86TargetLowering::reduceSelectOfFPConstantLoads(), useVectorCast(), X86ChooseCmpOpcode(), and llvm::X86TargetLowering::X86TargetLowering().

◆ hasAVX2()

bool llvm::X86Subtarget::hasAVX2 ( ) const
inline

Definition at line 650 of file X86Subtarget.h.

Referenced by combineBitcastvxi1(), combineConcatVectorOps(), combineExtractSubvector(), combineSelect(), combineShuffleOfConcatUndef(), combineTargetShuffle(), combineToExtendBoolVectorInReg(), combineVSelectToBLENDV(), combineX86ShuffleChain(), convertShiftLeftToScale(), EltsFromConsecutiveLoads(), expandFP_TO_UINT_SSE(), foldVectorXorShiftIntoCmp(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::X86InstrInfo::getExecutionDomain(), llvm::X86InstrInfo::getExecutionDomainCustom(), llvm::X86TTIImpl::getTypeBasedIntrinsicInstrCost(), hasInt256(), isHorizontalBinOp(), llvm::X86TTIImpl::isLegalNTLoad(), llvm::X86TargetLowering::isVectorClearMaskLegal(), llvm::X86TargetLowering::isVectorShiftByScalarCheap(), lower256BitShuffle(), lowerBuildVectorAsBroadcast(), LowerMGATHER(), LowerRotate(), lowerShuffleAsBlend(), lowerShuffleAsBroadcast(), lowerShuffleAsByteRotateAndPermute(), lowerShuffleAsLanePermuteAndPermute(), lowerShuffleAsLanePermuteAndShuffle(), lowerShuffleAsRepeatedMaskAndLanePermute(), lowerShuffleAsTruncBroadcast(), lowerShuffleWithPSHUFB(), lowerShuffleWithUndefHalf(), LowerToHorizontalOp(), lowerV16I16Shuffle(), lowerV2F64Shuffle(), lowerV2I64Shuffle(), lowerV2X128Shuffle(), lowerV32I8Shuffle(), lowerV4F32Shuffle(), lowerV4F64Shuffle(), lowerV4I32Shuffle(), lowerV4I64Shuffle(), lowerV8F32Shuffle(), lowerV8I32Shuffle(), matchBinaryPermuteShuffle(), matchBinaryShuffle(), matchUnaryPermuteShuffle(), llvm::X86InstrInfo::setExecutionDomain(), llvm::X86InstrInfo::setExecutionDomainCustom(), llvm::X86TargetLowering::shouldProduceAndByConstByHoistingConstFromShiftsLHSOfAnd(), and SplitOpsAndApply().

◆ hasAVX512()

bool llvm::X86Subtarget::hasAVX512 ( ) const
inline

Definition at line 651 of file X86Subtarget.h.

Referenced by canExtendTo512DQ(), combineBitcast(), combineBitcastvxi1(), combineCastedMaskArithmetic(), combineCompareEqual(), combineConcatVectorOps(), combineExtSetcc(), combineLoad(), combineMaskedLoad(), combineSelect(), combineSetCC(), combineStore(), combineToExtendBoolVectorInReg(), combineTruncateWithSat(), combineVectorPack(), combineVectorSignBitsTruncation(), combineVectorTruncation(), combineX86ShuffleChain(), llvm::X86TargetLowering::convertSelectOfConstantsToMath(), convertShiftLeftToScale(), CopyToFromAsymmetricReg(), EmitAVX512Test(), llvm::X86TTIImpl::enableMemCmpExpansion(), getBroadcastOpcode(), llvm::X86RegisterInfo::getCalleeSavedRegs(), llvm::X86RegisterInfo::getCallPreservedMask(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), llvm::X86RegisterInfo::getLargestLegalSuperClass(), getLoadStoreRegOpcode(), llvm::X86TTIImpl::getMaskedMemoryOpCost(), llvm::X86TTIImpl::getNumberOfRegisters(), llvm::X86TargetLowering::getNumRegistersForCallingConv(), llvm::X86TargetLowering::getOptimalMemOpType(), llvm::X86TargetLowering::getPreferredVectorAction(), llvm::X86TargetLowering::getRegForInlineAsmConstraint(), llvm::X86TTIImpl::getRegisterBitWidth(), llvm::X86TargetLowering::getRegisterTypeForCallingConv(), llvm::X86RegisterInfo::getReservedRegs(), llvm::X86TargetLowering::getSetCCResultType(), llvm::X86TargetLowering::getSingleConstraintMatchWeight(), llvm::X86TargetLowering::getVectorTypeBreakdownForCallingConv(), llvm::X86TTIImpl::isLegalMaskedExpandLoad(), llvm::X86TTIImpl::isLegalMaskedGather(), llvm::X86TTIImpl::isLegalMaskedScatter(), llvm::X86TargetLowering::isLoadBitCastBeneficial(), lower1BitShuffle(), lower512BitShuffle(), LowerBITCAST(), LowerEXTEND_VECTOR_INREG(), LowerLoad(), LowerMGATHER(), LowerMLOAD(), LowerMSCATTER(), LowerMSTORE(), LowerMULH(), LowerRotate(), LowerShift(), lowerShuffleAsBitRotate(), lowerShuffleAsVTRUNC(), lowerShuffleWithUndefHalf(), lowerShuffleWithVPMOV(), LowerStore(), lowerUINT_TO_FP_v2i32(), lowerUINT_TO_FP_vXi32(), lowerV2X128Shuffle(), lowerV8F32Shuffle(), lowerV8I32Shuffle(), LowerVSETCC(), matchBinaryPermuteShuffle(), matchBinaryShuffle(), matchShuffleAsBitRotate(), matchUnaryPermuteShuffle(), matchUnaryShuffle(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::X86InstrInfo::setExecutionDomain(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), SupportedVectorShiftWithImm(), SupportedVectorVarShift(), useAVX512Regs(), useVectorCast(), useVPTERNLOG(), X86ChooseCmpOpcode(), and llvm::X86TargetLowering::X86TargetLowering().

◆ hasAVXVNNI()

bool llvm::X86Subtarget::hasAVXVNNI ( ) const
inline

Definition at line 785 of file X86Subtarget.h.

◆ hasBF16()

bool llvm::X86Subtarget::hasBF16 ( ) const
inline

Definition at line 761 of file X86Subtarget.h.

◆ hasBITALG()

bool llvm::X86Subtarget::hasBITALG ( ) const
inline

Definition at line 763 of file X86Subtarget.h.

Referenced by llvm::X86TargetLowering::X86TargetLowering().

◆ hasBMI()

bool llvm::X86Subtarget::hasBMI ( ) const
inline

◆ hasBMI2()

bool llvm::X86Subtarget::hasBMI2 ( ) const
inline

Definition at line 682 of file X86Subtarget.h.

Referenced by hasBZHI().

◆ hasBranchFusion()

bool llvm::X86Subtarget::hasBranchFusion ( ) const
inline

Definition at line 740 of file X86Subtarget.h.

Referenced by llvm::X86TTIImpl::canMacroFuseCmp().

◆ hasBWI()

bool llvm::X86Subtarget::hasBWI ( ) const
inline

Definition at line 756 of file X86Subtarget.h.

Referenced by llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), canExtendTo512BW(), combineBitcast(), combineBitcastToBoolVector(), combineBitcastvxi1(), combineMulToPMADDWD(), combineScalarAndWithMaskSetcc(), combineSelect(), combineSetCC(), combineStore(), combineTruncateWithSat(), combineVectorSizedSetCCEquality(), combineX86ShuffleChain(), llvm::X86InstrInfo::copyPhysReg(), CopyToFromAsymmetricReg(), createVariablePermute(), EmitAVX512Test(), ExtractBitFromMaskVector(), llvm::X86TTIImpl::getCastInstrCost(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCost(), getLoadStoreRegOpcode(), getMaskNode(), llvm::X86TTIImpl::getMinMaxCost(), llvm::X86TTIImpl::getMinMaxReductionCost(), llvm::X86TargetLowering::getOptimalMemOpType(), llvm::X86TargetLowering::getPreferredVectorAction(), llvm::X86TargetLowering::getRegForInlineAsmConstraint(), llvm::X86TargetLowering::getSetCCResultType(), llvm::X86TTIImpl::getTypeBasedIntrinsicInstrCost(), getv64i1Argument(), llvm::X86TargetLowering::getVectorTypeBreakdownForCallingConv(), getZeroVector(), handleMaskRegisterForCallingConv(), llvm::X86TTIImpl::isLegalMaskedLoad(), llvm::X86TargetLowering::isVectorShiftByScalarCheap(), lower1BitShuffle(), lower512BitShuffle(), LowerABS(), LowerAVXExtend(), LowerBITCAST(), LowerBITREVERSE(), LowerMLOAD(), LowerMSTORE(), LowerMUL(), LowerMULH(), LowerMULO(), LowerScalarImmediateShift(), LowerShift(), lowerShuffleAsBlend(), lowerShuffleAsByteRotate(), lowerShuffleAsByteRotateAndPermute(), lowerShuffleAsVTRUNC(), lowerShuffleWithPSHUFB(), lowerShuffleWithVPMOV(), LowerSIGN_EXTEND(), LowerSIGN_EXTEND_Mask(), LowerStore(), LowerTruncateVecI1(), lowerV16I16Shuffle(), lowerV16I32Shuffle(), lowerV32I16Shuffle(), lowerV64I8Shuffle(), lowerV8I64Shuffle(), LowerVectorCTLZ(), LowerVectorCTPOP(), LowerVSETCC(), LowerZERO_EXTEND_Mask(), matchBinaryPermuteShuffle(), matchBinaryShuffle(), matchShuffleAsShift(), matchShuffleAsVTRUNC(), matchUnaryPermuteShuffle(), Passv64i1ArgInRegs(), llvm::X86FrameLowering::restoreCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), SupportedVectorShiftWithImm(), SupportedVectorVarShift(), useBWIRegs(), and llvm::X86TargetLowering::X86TargetLowering().

◆ hasCDI()

bool llvm::X86Subtarget::hasCDI ( ) const
inline

◆ hasCLDEMOTE()

bool llvm::X86Subtarget::hasCLDEMOTE ( ) const
inline

Definition at line 708 of file X86Subtarget.h.

◆ hasCLFLUSHOPT()

bool llvm::X86Subtarget::hasCLFLUSHOPT ( ) const
inline

Definition at line 765 of file X86Subtarget.h.

◆ hasCLWB()

bool llvm::X86Subtarget::hasCLWB ( ) const
inline

Definition at line 766 of file X86Subtarget.h.

◆ hasCLZERO()

bool llvm::X86Subtarget::hasCLZERO ( ) const
inline

Definition at line 707 of file X86Subtarget.h.

◆ hasCMov()

bool llvm::X86Subtarget::hasCMov ( ) const
inline

◆ hasCmpxchg16b()

bool llvm::X86Subtarget::hasCmpxchg16b ( ) const
inline

◆ hasCmpxchg8b()

bool llvm::X86Subtarget::hasCmpxchg8b ( ) const
inline

Definition at line 638 of file X86Subtarget.h.

Referenced by llvm::X86TargetLowering::X86TargetLowering().

◆ hasCRC32()

bool llvm::X86Subtarget::hasCRC32 ( ) const
inline

Definition at line 780 of file X86Subtarget.h.

◆ hasDQI()

bool llvm::X86Subtarget::hasDQI ( ) const
inline

◆ hasENQCMD()

bool llvm::X86Subtarget::hasENQCMD ( ) const
inline

Definition at line 773 of file X86Subtarget.h.

◆ hasERI()

bool llvm::X86Subtarget::hasERI ( ) const
inline

Definition at line 754 of file X86Subtarget.h.

◆ hasERMSB()

bool llvm::X86Subtarget::hasERMSB ( ) const
inline

Definition at line 741 of file X86Subtarget.h.

Referenced by emitConstantSizeRepmov().

◆ hasF16C()

bool llvm::X86Subtarget::hasF16C ( ) const
inline

◆ hasFastBEXTR()

bool llvm::X86Subtarget::hasFastBEXTR ( ) const
inline

Definition at line 734 of file X86Subtarget.h.

Referenced by foldMaskedShiftToBEXTR().

◆ hasFastGather()

bool llvm::X86Subtarget::hasFastGather ( ) const
inline

Definition at line 729 of file X86Subtarget.h.

◆ hasFastHorizontalOps()

bool llvm::X86Subtarget::hasFastHorizontalOps ( ) const
inline

Definition at line 735 of file X86Subtarget.h.

Referenced by shouldUseHorizontalOp().

◆ hasFastLZCNT()

bool llvm::X86Subtarget::hasFastLZCNT ( ) const
inline

Definition at line 732 of file X86Subtarget.h.

Referenced by llvm::X86TargetLowering::isCtlzFast().

◆ hasFastMOVBE()

bool llvm::X86Subtarget::hasFastMOVBE ( ) const
inline

Definition at line 738 of file X86Subtarget.h.

◆ hasFastScalarFSQRT()

bool llvm::X86Subtarget::hasFastScalarFSQRT ( ) const
inline

Definition at line 730 of file X86Subtarget.h.

◆ hasFastScalarShiftMasks()

bool llvm::X86Subtarget::hasFastScalarShiftMasks ( ) const
inline

◆ hasFastSHLDRotate()

bool llvm::X86Subtarget::hasFastSHLDRotate ( ) const
inline

Definition at line 733 of file X86Subtarget.h.

◆ hasFastVariableCrossLaneShuffle()

bool llvm::X86Subtarget::hasFastVariableCrossLaneShuffle ( ) const
inline

◆ hasFastVariablePerLaneShuffle()

bool llvm::X86Subtarget::hasFastVariablePerLaneShuffle ( ) const
inline

Definition at line 725 of file X86Subtarget.h.

Referenced by combineX86ShuffleChain().

◆ hasFastVectorFSQRT()

bool llvm::X86Subtarget::hasFastVectorFSQRT ( ) const
inline

Definition at line 731 of file X86Subtarget.h.

◆ hasFastVectorShiftMasks()

bool llvm::X86Subtarget::hasFastVectorShiftMasks ( ) const
inline

◆ hasFMA()

bool llvm::X86Subtarget::hasFMA ( ) const
inline

Definition at line 670 of file X86Subtarget.h.

Referenced by hasAnyFMA().

◆ hasFMA4()

bool llvm::X86Subtarget::hasFMA4 ( ) const
inline

Definition at line 671 of file X86Subtarget.h.

Referenced by hasAnyFMA().

◆ hasFP16()

bool llvm::X86Subtarget::hasFP16 ( ) const
inline

◆ hasFSGSBase()

bool llvm::X86Subtarget::hasFSGSBase ( ) const
inline

Definition at line 679 of file X86Subtarget.h.

◆ hasFSRM()

bool llvm::X86Subtarget::hasFSRM ( ) const
inline

Definition at line 742 of file X86Subtarget.h.

Referenced by llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy().

◆ hasFXSR()

bool llvm::X86Subtarget::hasFXSR ( ) const
inline

Definition at line 660 of file X86Subtarget.h.

◆ hasGFNI()

bool llvm::X86Subtarget::hasGFNI ( ) const
inline

◆ hasHRESET()

bool llvm::X86Subtarget::hasHRESET ( ) const
inline

Definition at line 776 of file X86Subtarget.h.

◆ hasIFMA()

bool llvm::X86Subtarget::hasIFMA ( ) const
inline

Definition at line 685 of file X86Subtarget.h.

◆ hasInt256()

bool llvm::X86Subtarget::hasInt256 ( ) const
inline

◆ hasINVPCID()

bool llvm::X86Subtarget::hasINVPCID ( ) const
inline

Definition at line 772 of file X86Subtarget.h.

◆ hasKL()

bool llvm::X86Subtarget::hasKL ( ) const
inline

Definition at line 774 of file X86Subtarget.h.

◆ hasLAHFSAHF()

bool llvm::X86Subtarget::hasLAHFSAHF ( ) const
inline

Definition at line 705 of file X86Subtarget.h.

References is64Bit().

◆ hasLWP()

bool llvm::X86Subtarget::hasLWP ( ) const
inline

Definition at line 675 of file X86Subtarget.h.

◆ hasLZCNT()

bool llvm::X86Subtarget::hasLZCNT ( ) const
inline

◆ hasLZCNTFalseDeps()

bool llvm::X86Subtarget::hasLZCNTFalseDeps ( ) const
inline

Definition at line 721 of file X86Subtarget.h.

Referenced by hasPartialRegUpdate().

◆ hasMacroFusion()

bool llvm::X86Subtarget::hasMacroFusion ( ) const
inline

Definition at line 739 of file X86Subtarget.h.

Referenced by llvm::X86TTIImpl::canMacroFuseCmp().

◆ hasMFence()

bool llvm::X86Subtarget::hasMFence ( ) const
inline

Use mfence if we have SSE2 or we're on x86-64 (even if we asked for no-sse2).

There isn't any reason to disable it if the target processor supports it.

Definition at line 845 of file X86Subtarget.h.

References hasSSE2(), and is64Bit().

Referenced by LowerATOMIC_FENCE().

◆ hasMMX()

bool llvm::X86Subtarget::hasMMX ( ) const
inline

◆ hasMOVBE()

bool llvm::X86Subtarget::hasMOVBE ( ) const
inline

Definition at line 676 of file X86Subtarget.h.

Referenced by llvm::X86TargetLowering::X86TargetLowering().

◆ hasMOVDIR64B()

bool llvm::X86Subtarget::hasMOVDIR64B ( ) const
inline

Definition at line 710 of file X86Subtarget.h.

◆ hasMOVDIRI()

bool llvm::X86Subtarget::hasMOVDIRI ( ) const
inline

Definition at line 709 of file X86Subtarget.h.

◆ hasMWAITX()

bool llvm::X86Subtarget::hasMWAITX ( ) const
inline

Definition at line 706 of file X86Subtarget.h.

◆ hasNOPL()

bool llvm::X86Subtarget::hasNOPL ( ) const
inline

Definition at line 639 of file X86Subtarget.h.

◆ hasPCLMUL()

bool llvm::X86Subtarget::hasPCLMUL ( ) const
inline

Definition at line 665 of file X86Subtarget.h.

◆ hasPCONFIG()

bool llvm::X86Subtarget::hasPCONFIG ( ) const
inline

Definition at line 770 of file X86Subtarget.h.

◆ hasPFI()

bool llvm::X86Subtarget::hasPFI ( ) const
inline

Definition at line 753 of file X86Subtarget.h.

◆ hasPKU()

bool llvm::X86Subtarget::hasPKU ( ) const
inline

Definition at line 759 of file X86Subtarget.h.

◆ hasPOPCNT()

bool llvm::X86Subtarget::hasPOPCNT ( ) const
inline

◆ hasPOPCNTFalseDeps()

bool llvm::X86Subtarget::hasPOPCNTFalseDeps ( ) const
inline

Definition at line 720 of file X86Subtarget.h.

Referenced by hasPartialRegUpdate().

◆ hasPrefetchW()

bool llvm::X86Subtarget::hasPrefetchW ( ) const
inline

Definition at line 691 of file X86Subtarget.h.

References has3DNow(), hasPREFETCHWT1(), and hasPRFCHW().

◆ hasPREFETCHWT1()

bool llvm::X86Subtarget::hasPREFETCHWT1 ( ) const
inline

Definition at line 690 of file X86Subtarget.h.

Referenced by hasPrefetchW(), and hasSSEPrefetch().

◆ hasPRFCHW()

bool llvm::X86Subtarget::hasPRFCHW ( ) const
inline

Definition at line 689 of file X86Subtarget.h.

Referenced by hasPrefetchW(), and hasSSEPrefetch().

◆ hasPTWRITE()

bool llvm::X86Subtarget::hasPTWRITE ( ) const
inline

Definition at line 711 of file X86Subtarget.h.

◆ hasRDPID()

bool llvm::X86Subtarget::hasRDPID ( ) const
inline

Definition at line 768 of file X86Subtarget.h.

◆ hasRDRAND()

bool llvm::X86Subtarget::hasRDRAND ( ) const
inline

Definition at line 677 of file X86Subtarget.h.

◆ hasRDSEED()

bool llvm::X86Subtarget::hasRDSEED ( ) const
inline

Definition at line 704 of file X86Subtarget.h.

◆ hasRTM()

bool llvm::X86Subtarget::hasRTM ( ) const
inline

Definition at line 686 of file X86Subtarget.h.

◆ hasSERIALIZE()

bool llvm::X86Subtarget::hasSERIALIZE ( ) const
inline

Definition at line 777 of file X86Subtarget.h.

◆ hasSGX()

bool llvm::X86Subtarget::hasSGX ( ) const
inline

Definition at line 771 of file X86Subtarget.h.

◆ hasSHA()

bool llvm::X86Subtarget::hasSHA ( ) const
inline

Definition at line 688 of file X86Subtarget.h.

◆ hasSHSTK()

bool llvm::X86Subtarget::hasSHSTK ( ) const
inline

Definition at line 764 of file X86Subtarget.h.

◆ hasSlowDivide32()

bool llvm::X86Subtarget::hasSlowDivide32 ( ) const
inline

Definition at line 743 of file X86Subtarget.h.

Referenced by llvm::X86TargetLowering::X86TargetLowering().

◆ hasSlowDivide64()

bool llvm::X86Subtarget::hasSlowDivide64 ( ) const
inline

Definition at line 744 of file X86Subtarget.h.

Referenced by llvm::X86TargetLowering::X86TargetLowering().

◆ hasSSE1()

bool llvm::X86Subtarget::hasSSE1 ( ) const
inline

◆ hasSSE2()

bool llvm::X86Subtarget::hasSSE2 ( ) const
inline

Definition at line 644 of file X86Subtarget.h.

Referenced by combineAnd(), combineArithReduction(), combineBasicSADPattern(), combineBitcast(), combineBitcastvxi1(), combineCMov(), combineCompareEqual(), combineExtractWithShuffle(), combineFAndFNotToFAndn(), combineFMinNumFMaxNum(), combineLogicBlendIntoPBLENDV(), combineMOVMSK(), combineMulToPMADDWD(), combineMulToPMULDQ(), combineOr(), combinePMULH(), combinePredicateReduction(), combineSelect(), combineSetCC(), combineShiftToPMULH(), combineStore(), combineToExtendBoolVectorInReg(), combineTruncateWithSat(), combineVectorSignBitsTruncation(), combineVectorSizedSetCCEquality(), combineVectorTruncation(), combineX86ShuffleChain(), combineXor(), llvm::X86InstrInfo::commuteInstructionImpl(), convertIntLogicToFPLogic(), detectAVGPattern(), EltsFromConsecutiveLoads(), llvm::X86TTIImpl::enableMemCmpExpansion(), llvm::X86InstrInfo::findCommutedOpIndices(), foldVectorXorShiftIntoCmp(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::X86TargetLowering::getOptimalMemOpType(), llvm::X86TTIImpl::getScalarizationOverhead(), llvm::X86TTIImpl::getShuffleCost(), llvm::X86TargetLowering::getSingleConstraintMatchWeight(), getZeroVector(), llvm::X86TargetLowering::hasAndNot(), hasMFence(), LowerBITCAST(), LowerBuildVectorAsInsert(), LowerEXTEND_VECTOR_INREG(), lowerFPToIntToFP(), LowerMUL(), LowerMULH(), LowerShift(), LowerStore(), lowerV4F32Shuffle(), LowerVSETCC(), LowerVSETCCWithSUBUS(), lowerX86FPLogicOp(), matchBinaryPermuteShuffle(), matchBinaryShuffle(), matchPMADDWD(), matchPMADDWD_2(), matchUnaryPermuteShuffle(), matchUnaryShuffle(), MatchVectorAllZeroTest(), materializeVectorConstant(), reduceVMULWidth(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::X86TargetLowering::shouldSinkOperands(), SplitOpsAndApply(), SupportedVectorShiftWithImm(), truncateVectorWithPACK(), useVectorCast(), X86ChooseCmpOpcode(), and llvm::X86TargetLowering::X86TargetLowering().

◆ hasSSE3()

bool llvm::X86Subtarget::hasSSE3 ( ) const
inline

◆ hasSSE41()

bool llvm::X86Subtarget::hasSSE41 ( ) const
inline

Definition at line 647 of file X86Subtarget.h.

Referenced by llvm::X86TargetLowering::allowsMisalignedMemoryAccesses(), combineArithReduction(), combineEXTEND_VECTOR_INREG(), combineExtractWithShuffle(), combineLogicBlendIntoPBLENDV(), combineMinMaxReduction(), combineMulToPMADDWD(), combineMulToPMULDQ(), combinePredicateReduction(), combineSetCCMOVMSK(), combineTruncateWithSat(), combineVectorSignBitsTruncation(), combineVectorSizedSetCCEquality(), combineVectorTruncation(), combineVSelectToBLENDV(), combineX86ShuffleChain(), llvm::X86InstrInfo::commuteInstructionImpl(), convertShiftLeftToScale(), createVariablePermute(), llvm::X86InstrInfo::findCommutedOpIndices(), llvm::X86TTIImpl::getArithmeticInstrCost(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::X86TTIImpl::getScalarizationOverhead(), getTargetVShiftNode(), LowerABS(), LowerBuildVectorAsInsert(), LowerBuildVectorv16i8(), LowerBuildVectorv4x32(), LowerBuildVectorv8i16(), LowerMUL(), LowerMULH(), LowerRotate(), LowerShift(), lowerShuffleAsBlend(), lowerShuffleAsSpecificZeroOrAnyExtend(), lowerShuffleWithPACK(), lowerUINT_TO_FP_vXi32(), lowerV16I8Shuffle(), lowerV2F64Shuffle(), lowerV2I64Shuffle(), lowerV4F32Shuffle(), lowerV4I32Shuffle(), lowerV8I16Shuffle(), LowerVectorAllZero(), LowerVSETCC(), matchBinaryPermuteShuffle(), matchBinaryShuffle(), matchShuffleWithPACK(), matchShuffleWithUNPCK(), matchUnaryShuffle(), reduceVMULWidth(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::X86TargetLowering::shouldSinkOperands(), truncateVectorWithPACK(), and llvm::X86TargetLowering::X86TargetLowering().

◆ hasSSE42()

bool llvm::X86Subtarget::hasSSE42 ( ) const
inline

◆ hasSSE4A()

bool llvm::X86Subtarget::hasSSE4A ( ) const
inline

◆ hasSSEPrefetch()

bool llvm::X86Subtarget::hasSSEPrefetch ( ) const
inline

◆ hasSSEUnalignedMem()

bool llvm::X86Subtarget::hasSSEUnalignedMem ( ) const
inline

Definition at line 717 of file X86Subtarget.h.

◆ hasSSSE3()

bool llvm::X86Subtarget::hasSSSE3 ( ) const
inline

◆ hasTBM()

bool llvm::X86Subtarget::hasTBM ( ) const
inline

Definition at line 674 of file X86Subtarget.h.

Referenced by foldMaskedShiftToBEXTR().

◆ hasTSXLDTRK()

bool llvm::X86Subtarget::hasTSXLDTRK ( ) const
inline

Definition at line 778 of file X86Subtarget.h.

◆ hasUINTR()

bool llvm::X86Subtarget::hasUINTR ( ) const
inline

Definition at line 779 of file X86Subtarget.h.

◆ hasVAES()

bool llvm::X86Subtarget::hasVAES ( ) const
inline

Definition at line 659 of file X86Subtarget.h.

◆ hasVBMI()

bool llvm::X86Subtarget::hasVBMI ( ) const
inline

◆ hasVBMI2()

bool llvm::X86Subtarget::hasVBMI2 ( ) const
inline

◆ hasVLX()

bool llvm::X86Subtarget::hasVLX ( ) const
inline

◆ hasVNNI()

bool llvm::X86Subtarget::hasVNNI ( ) const
inline

Definition at line 760 of file X86Subtarget.h.

◆ hasVP2INTERSECT()

bool llvm::X86Subtarget::hasVP2INTERSECT ( ) const
inline

Definition at line 762 of file X86Subtarget.h.

◆ hasVPCLMULQDQ()

bool llvm::X86Subtarget::hasVPCLMULQDQ ( ) const
inline

Definition at line 666 of file X86Subtarget.h.

◆ hasVPOPCNTDQ()

bool llvm::X86Subtarget::hasVPOPCNTDQ ( ) const
inline

Definition at line 752 of file X86Subtarget.h.

Referenced by LowerVectorCTPOP(), and llvm::X86TargetLowering::X86TargetLowering().

◆ hasWAITPKG()

bool llvm::X86Subtarget::hasWAITPKG ( ) const
inline

Definition at line 769 of file X86Subtarget.h.

◆ hasWBNOINVD()

bool llvm::X86Subtarget::hasWBNOINVD ( ) const
inline

Definition at line 767 of file X86Subtarget.h.

◆ hasWIDEKL()

bool llvm::X86Subtarget::hasWIDEKL ( ) const
inline

Definition at line 775 of file X86Subtarget.h.

◆ hasX87()

bool llvm::X86Subtarget::hasX87 ( ) const
inline

◆ hasXOP()

bool llvm::X86Subtarget::hasXOP ( ) const
inline

◆ hasXSAVE()

bool llvm::X86Subtarget::hasXSAVE ( ) const
inline

Definition at line 661 of file X86Subtarget.h.

◆ hasXSAVEC()

bool llvm::X86Subtarget::hasXSAVEC ( ) const
inline

Definition at line 663 of file X86Subtarget.h.

◆ hasXSAVEOPT()

bool llvm::X86Subtarget::hasXSAVEOPT ( ) const
inline

Definition at line 662 of file X86Subtarget.h.

◆ hasXSAVES()

bool llvm::X86Subtarget::hasXSAVES ( ) const
inline

Definition at line 664 of file X86Subtarget.h.

◆ insertVZEROUPPER()

bool llvm::X86Subtarget::insertVZEROUPPER ( ) const
inline

Definition at line 728 of file X86Subtarget.h.

◆ is16Bit()

bool llvm::X86Subtarget::is16Bit ( ) const
inline

◆ is32Bit()

bool llvm::X86Subtarget::is32Bit ( ) const
inline

◆ is64Bit()

bool llvm::X86Subtarget::is64Bit ( ) const
inline

Is this x86_64? (disregarding specific ABI / programming model)

Definition at line 612 of file X86Subtarget.h.

Referenced by llvm::X86TargetLowering::canMergeStoresTo(), classifyGlobalFunctionReference(), classifyGlobalReference(), classifyLocalReference(), combineAnd(), combineCompareEqual(), combineSelect(), combineSIntToFP(), combineStore(), computeBytesPoppedByCalleeForSRet(), llvm::X86InstrInfo::convertToThreeAddress(), llvm::X86InstrInfo::copyPhysReg(), llvm::X86TargetLowering::EmitInstrWithCustomInserter(), emitLockedStackOp(), emitNop(), llvm::X86TargetLowering::emitStackGuardXorFP(), llvm::X86TTIImpl::enableMemCmpExpansion(), expandIntrinsicWChainHelper(), ExpandMOVImmSExti8(), llvm::X86TargetLowering::findRepresentativeClass(), llvm::X86InstrInfo::foldMemoryOperandImpl(), get64BitArgumentGPRs(), get64BitArgumentXMMs(), llvm::X86TargetLowering::getByValTypeAlignment(), llvm::X86InstrInfo::getGlobalBaseReg(), getIndirectThunkSymbol(), llvm::X86TargetLowering::getIRStackGuard(), getLoadStoreRegOpcode(), llvm::X86TTIImpl::getNumberOfRegisters(), llvm::X86TargetLowering::getOptimalMemOpType(), getOptimalRepmovsType(), llvm::X86TargetLowering::getPICJumpTableRelocBase(), llvm::X86TargetLowering::getRegForInlineAsmConstraint(), llvm::X86TTIImpl::getRegisterBitWidth(), getRetOpcode(), llvm::X86TargetLowering::getSafeStackPointerLocation(), llvm::X86TargetLowering::getStackProbeSymbolName(), hasBZHI(), hasCMov(), hasCmpxchg16b(), hasLAHFSAHF(), hasMFence(), insert1BitVector(), llvm::X86InstrInfo::isCoalescableExtInstr(), llvm::X86TargetLowering::isLegalAddressingMode(), isTargetNaCl32(), isTargetNaCl64(), isXRaySupported(), llvm::X86TargetLowering::isZExtFree(), llvm::X86TargetLowering::LowerAsmOperandForConstraint(), LowerBITCAST(), LowerBUILD_VECTORvXi1(), llvm::X86CallLowering::lowerCall(), LowerCMP_SWAP(), LowerFSINCOS(), LowerI64IntToFP16(), LowerI64IntToFP_AVX512DQ(), lowerShuffleAsBitMask(), LowerStore(), LowerVACOPY(), llvm::X86TargetLowering::markLibCallAttributes(), llvm::X86FrameLowering::processFunctionBeforeFrameFinalized(), recoverFramePointer(), reduceMaskedLoadToScalarLoad(), reduceMaskedStoreToScalarStore(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::X86FrameLowering::restoreCalleeSavedRegisters(), llvm::X86TargetLowering::shouldConvertPhiType(), llvm::X86TargetLowering::shouldFoldMaskToVariableShiftPair(), llvm::X86InstrInfo::shouldScheduleLoadsNear(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), llvm::X86TargetLowering::supportSwiftError(), llvm::X86TargetLowering::useLoadStackGuardNode(), llvm::X86FrameLowering::X86FrameLowering(), X86Subtarget(), and llvm::X86TargetLowering::X86TargetLowering().

◆ isAtom()

bool llvm::X86Subtarget::isAtom ( ) const
inline

TODO: to be removed later and replaced with suitable properties.

Definition at line 838 of file X86Subtarget.h.

Referenced by EmitCmp(), llvm::X86TTIImpl::enableInterleavedAccessVectorization(), llvm::X86TTIImpl::getMaxInterleaveFactor(), and llvm::X86TargetLowering::X86TargetLowering().

◆ isCallingConvWin64()

bool llvm::X86Subtarget::isCallingConvWin64 ( CallingConv::ID  CC) const
inline

◆ isLegalToCallImmediateAddr()

bool X86Subtarget::isLegalToCallImmediateAddr ( ) const

Return true if the subtarget allows calls to immediate address.

Definition at line 241 of file X86Subtarget.cpp.

References llvm::TargetMachine::getRelocationModel(), isTargetELF(), isTargetWin32(), and llvm::Reloc::Static.

◆ isOSWindows()

bool llvm::X86Subtarget::isOSWindows ( ) const
inline

◆ isPICStyleGOT()

bool llvm::X86Subtarget::isPICStyleGOT ( ) const
inline

◆ isPICStyleRIPRel()

bool llvm::X86Subtarget::isPICStyleRIPRel ( ) const
inline

◆ isPICStyleStubPIC()

bool llvm::X86Subtarget::isPICStyleStubPIC ( ) const
inline

◆ isPMADDWDSlow()

bool llvm::X86Subtarget::isPMADDWDSlow ( ) const
inline

Definition at line 714 of file X86Subtarget.h.

Referenced by combineMulToPMADDWD().

◆ isPMULLDSlow()

bool llvm::X86Subtarget::isPMULLDSlow ( ) const
inline

◆ isPositionIndependent()

bool X86Subtarget::isPositionIndependent ( ) const

◆ isSHLDSlow()

bool llvm::X86Subtarget::isSHLDSlow ( ) const
inline

Definition at line 712 of file X86Subtarget.h.

Referenced by LowerFunnelShift(), and llvm::X86TargetLowering::X86TargetLowering().

◆ isTarget64BitILP32()

bool llvm::X86Subtarget::isTarget64BitILP32 ( ) const
inline

◆ isTarget64BitLP64()

bool llvm::X86Subtarget::isTarget64BitLP64 ( ) const
inline

◆ isTargetAndroid()

bool llvm::X86Subtarget::isTargetAndroid ( ) const
inline

◆ isTargetCOFF()

bool llvm::X86Subtarget::isTargetCOFF ( ) const
inline

◆ isTargetCygMing()

bool llvm::X86Subtarget::isTargetCygMing ( ) const
inline

◆ isTargetDarwin()

bool llvm::X86Subtarget::isTargetDarwin ( ) const
inline

◆ isTargetDragonFly()

bool llvm::X86Subtarget::isTargetDragonFly ( ) const
inline

◆ isTargetELF()

bool llvm::X86Subtarget::isTargetELF ( ) const
inline

◆ isTargetFreeBSD()

bool llvm::X86Subtarget::isTargetFreeBSD ( ) const
inline

◆ isTargetFuchsia()

bool llvm::X86Subtarget::isTargetFuchsia ( ) const
inline

◆ isTargetGlibc()

bool llvm::X86Subtarget::isTargetGlibc ( ) const
inline

Definition at line 861 of file X86Subtarget.h.

References llvm::Triple::isOSGlibc().

◆ isTargetKFreeBSD()

bool llvm::X86Subtarget::isTargetKFreeBSD ( ) const
inline

Definition at line 860 of file X86Subtarget.h.

References llvm::Triple::isOSKFreeBSD().

◆ isTargetLinux()

bool llvm::X86Subtarget::isTargetLinux ( ) const
inline

◆ isTargetMachO()

bool llvm::X86Subtarget::isTargetMachO ( ) const
inline

◆ isTargetMCU()

bool llvm::X86Subtarget::isTargetMCU ( ) const
inline

Definition at line 866 of file X86Subtarget.h.

References llvm::Triple::isOSIAMCU().

Referenced by computeBytesPoppedByCalleeForSRet(), and hasCalleePopSRet().

◆ isTargetNaCl()

bool llvm::X86Subtarget::isTargetNaCl ( ) const
inline

Definition at line 863 of file X86Subtarget.h.

References llvm::Triple::isOSNaCl().

Referenced by isTargetNaCl32(), and isTargetNaCl64().

◆ isTargetNaCl32()

bool llvm::X86Subtarget::isTargetNaCl32 ( ) const
inline

Definition at line 864 of file X86Subtarget.h.

References is64Bit(), and isTargetNaCl().

◆ isTargetNaCl64()

bool llvm::X86Subtarget::isTargetNaCl64 ( ) const
inline

Definition at line 865 of file X86Subtarget.h.

References is64Bit(), and isTargetNaCl().

Referenced by llvm::X86FrameLowering::X86FrameLowering().

◆ isTargetPS4()

bool llvm::X86Subtarget::isTargetPS4 ( ) const
inline

Definition at line 853 of file X86Subtarget.h.

References llvm::Triple::isPS4CPU().

◆ isTargetSolaris()

bool llvm::X86Subtarget::isTargetSolaris ( ) const
inline

Definition at line 852 of file X86Subtarget.h.

References llvm::Triple::isOSSolaris().

◆ isTargetWin32()

bool llvm::X86Subtarget::isTargetWin32 ( ) const
inline

◆ isTargetWin64()

bool llvm::X86Subtarget::isTargetWin64 ( ) const
inline

◆ isTargetWindowsCoreCLR()

bool llvm::X86Subtarget::isTargetWindowsCoreCLR ( ) const
inline

◆ isTargetWindowsCygwin()

bool llvm::X86Subtarget::isTargetWindowsCygwin ( ) const
inline

Definition at line 877 of file X86Subtarget.h.

References llvm::Triple::isWindowsCygwinEnvironment().

◆ isTargetWindowsGNU()

bool llvm::X86Subtarget::isTargetWindowsGNU ( ) const
inline

Definition at line 881 of file X86Subtarget.h.

References llvm::Triple::isWindowsGNUEnvironment().

◆ isTargetWindowsItanium()

bool llvm::X86Subtarget::isTargetWindowsItanium ( ) const
inline

◆ isTargetWindowsMSVC()

bool llvm::X86Subtarget::isTargetWindowsMSVC ( ) const
inline

◆ isUnalignedMem16Slow()

bool llvm::X86Subtarget::isUnalignedMem16Slow ( ) const
inline

◆ isUnalignedMem32Slow()

bool llvm::X86Subtarget::isUnalignedMem32Slow ( ) const
inline

◆ isXRaySupported()

bool llvm::X86Subtarget::isXRaySupported ( ) const
inlineoverride

Definition at line 835 of file X86Subtarget.h.

References is64Bit().

◆ LEAusesAG()

bool llvm::X86Subtarget::LEAusesAG ( ) const
inline

Definition at line 747 of file X86Subtarget.h.

◆ padShortFunctions()

bool llvm::X86Subtarget::padShortFunctions ( ) const
inline

Definition at line 745 of file X86Subtarget.h.

◆ ParseSubtargetFeatures()

void llvm::X86Subtarget::ParseSubtargetFeatures ( StringRef  CPU,
StringRef  TuneCPU,
StringRef  FS 
)

ParseSubtargetFeatures - Parses features string setting specified subtarget options.

Definition of function is auto generated by tblgen.

◆ preferMaskRegisters()

bool llvm::X86Subtarget::preferMaskRegisters ( ) const
inline

Definition at line 801 of file X86Subtarget.h.

Referenced by combineVectorSizedSetCCEquality().

◆ setPICStyle()

void llvm::X86Subtarget::setPICStyle ( PICStyles::Style  Style)
inline

Definition at line 635 of file X86Subtarget.h.

Referenced by X86Subtarget().

◆ slow3OpsLEA()

bool llvm::X86Subtarget::slow3OpsLEA ( ) const
inline

Definition at line 749 of file X86Subtarget.h.

◆ slowIncDec()

bool llvm::X86Subtarget::slowIncDec ( ) const
inline

Definition at line 750 of file X86Subtarget.h.

◆ slowLEA()

bool llvm::X86Subtarget::slowLEA ( ) const
inline

Definition at line 748 of file X86Subtarget.h.

Referenced by combineMul().

◆ slowTwoMemOps()

bool llvm::X86Subtarget::slowTwoMemOps ( ) const
inline

Definition at line 746 of file X86Subtarget.h.

Referenced by llvm::X86InstrInfo::foldMemoryOperandImpl().

◆ swiftAsyncContextIsDynamicallySet()

bool llvm::X86Subtarget::swiftAsyncContextIsDynamicallySet ( ) const
inline

Return whether FrameLowering should always set the "extended frame present" bit in FP, or set it based on a symbol in the runtime.

Definition at line 954 of file X86Subtarget.h.

References llvm::Triple::Darwin, getTargetTriple(), llvm::Triple::IOS, llvm::Triple::MacOSX, llvm::Triple::TvOS, and llvm::Triple::WatchOS.

Referenced by llvm::X86FrameLowering::emitPrologue().

◆ useAA()

bool llvm::X86Subtarget::useAA ( ) const
inlineoverride

Definition at line 840 of file X86Subtarget.h.

◆ useAVX512Regs()

bool llvm::X86Subtarget::useAVX512Regs ( ) const
inline

◆ useBWIRegs()

bool llvm::X86Subtarget::useBWIRegs ( ) const
inline

◆ useGLMDivSqrtCosts()

bool llvm::X86Subtarget::useGLMDivSqrtCosts ( ) const
inline

Definition at line 803 of file X86Subtarget.h.

Referenced by llvm::X86TTIImpl::getArithmeticInstrCost().

◆ useIndirectThunkBranches()

bool llvm::X86Subtarget::useIndirectThunkBranches ( ) const
inline

◆ useIndirectThunkCalls()

bool llvm::X86Subtarget::useIndirectThunkCalls ( ) const
inline

◆ useLeaForSP()

bool llvm::X86Subtarget::useLeaForSP ( ) const
inline

Definition at line 719 of file X86Subtarget.h.

◆ useLVIControlFlowIntegrity()

bool llvm::X86Subtarget::useLVIControlFlowIntegrity ( ) const
inline

◆ useLVILoadHardening()

bool llvm::X86Subtarget::useLVILoadHardening ( ) const
inline

Definition at line 806 of file X86Subtarget.h.

◆ useRetpolineExternalThunk()

bool llvm::X86Subtarget::useRetpolineExternalThunk ( ) const
inline

Definition at line 789 of file X86Subtarget.h.

Referenced by getIndirectThunkSymbol().

◆ useRetpolineIndirectBranches()

bool llvm::X86Subtarget::useRetpolineIndirectBranches ( ) const
inline

Definition at line 782 of file X86Subtarget.h.

Referenced by getIndirectThunkSymbol(), and useIndirectThunkBranches().

◆ useRetpolineIndirectCalls()

bool llvm::X86Subtarget::useRetpolineIndirectCalls ( ) const
inline

Definition at line 781 of file X86Subtarget.h.

Referenced by getIndirectThunkSymbol(), and useIndirectThunkCalls().

◆ useSLMArithCosts()

bool llvm::X86Subtarget::useSLMArithCosts ( ) const
inline

◆ useSoftFloat()

bool llvm::X86Subtarget::useSoftFloat ( ) const
inline

◆ useSpeculativeExecutionSideEffectSuppression()

bool llvm::X86Subtarget::useSpeculativeExecutionSideEffectSuppression ( ) const
inline

Definition at line 807 of file X86Subtarget.h.


The documentation for this class was generated from the following files: