LLVM 18.0.0git
|
#include "Target/X86/X86Subtarget.h"
Definition at line 53 of file X86Subtarget.h.
X86Subtarget::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.
Definition at line 336 of file X86Subtarget.cpp.
References llvm::createX86InstructionSelector(), getRegisterInfo(), getTargetLowering(), llvm::PICStyles::GOT, InstrInfo, is64Bit(), isPositionIndependent(), isTargetCOFF(), isTargetDarwin(), isTargetELF(), llvm::CodeModel::Large, llvm::PICStyles::None, llvm::PICStyles::RIPRel, setPICStyle(), llvm::PICStyles::StubPIC, and TM.
|
inline |
Definition at line 249 of file X86Subtarget.h.
References canExtendTo512DQ().
Referenced by lower1BitShuffle(), LowerMUL(), LowerMULH(), LowerMULO(), LowerShift(), and LowerShiftByScalarVariable().
|
inline |
Definition at line 246 of file X86Subtarget.h.
References getPreferVectorWidth(), and hasAVX512().
Referenced by canExtendTo512BW(), lower1BitShuffle(), LowerMULO(), LowerShift(), LowerShiftByScalarVariable(), LowerSIGN_EXTEND_Mask(), LowerTruncateVecI1(), LowerVectorCTLZ(), LowerVectorCTLZ_AVX512CDI(), LowerVectorCTPOP(), LowerZERO_EXTEND_Mask(), useAVX512Regs(), and useVPTERNLOG().
|
inline |
Definition at line 199 of file X86Subtarget.h.
References hasSSE1(), and is64Bit().
Referenced by llvm::X86InstrInfo::canInsertSelect(), combineCMov(), enableEarlyIfConversion(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 193 of file X86Subtarget.h.
References is64Bit().
Referenced by llvm::X86TargetLowering::ReplaceNodeResults(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 192 of file X86Subtarget.h.
Referenced by llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 228 of file X86Subtarget.h.
References is64Bit().
Classify a blockaddress reference for the current subtarget according to how we should reference it in a non-pcrel context.
Definition at line 59 of file X86Subtarget.cpp.
References classifyLocalReference().
|
override |
Definition at line 199 of file X86Subtarget.cpp.
References classifyGlobalFunctionReference(), and llvm::GlobalValue::getParent().
unsigned char X86Subtarget::classifyGlobalFunctionReference | ( | const GlobalValue * | GV, |
const Module & | M | ||
) | const |
Classify a global function reference for the current subtarget.
Definition at line 204 of file X86Subtarget.cpp.
References F, llvm::TargetMachine::getRelocationModel(), llvm::GlobalValue::hasDLLImportStorageClass(), is64Bit(), isTargetCOFF(), isTargetELF(), llvm::X86II::MO_COFFSTUB, llvm::X86II::MO_DLLIMPORT, llvm::X86II::MO_GOTPCREL, llvm::X86II::MO_NO_FLAG, llvm::X86II::MO_PLT, llvm::TargetMachine::shouldAssumeDSOLocal(), llvm::Reloc::Static, and llvm::CallingConv::X86_RegCall.
Referenced by classifyGlobalFunctionReference().
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 66 of file X86Subtarget.cpp.
References classifyGlobalReference(), and llvm::GlobalValue::getParent().
unsigned char X86Subtarget::classifyGlobalReference | ( | const GlobalValue * | GV, |
const Module & | M | ||
) | const |
Definition at line 137 of file X86Subtarget.cpp.
References classifyLocalReference(), llvm::GlobalValue::getAbsoluteSymbolRange(), llvm::TargetMachine::getCodeModel(), llvm::TargetMachine::getRelocationModel(), llvm::GlobalValue::hasDLLImportStorageClass(), is64Bit(), isOSWindows(), isPositionIndependent(), isTargetCOFF(), isTargetDarwin(), isTargetELF(), llvm::CodeModel::Large, llvm::X86II::MO_ABS8, llvm::X86II::MO_COFFSTUB, llvm::X86II::MO_DARWIN_NONLAZY, llvm::X86II::MO_DARWIN_NONLAZY_PIC_BASE, llvm::X86II::MO_DLLIMPORT, llvm::X86II::MO_GOT, llvm::X86II::MO_GOTPCREL, llvm::X86II::MO_GOTPCREL_NORELAX, llvm::X86II::MO_NO_FLAG, llvm::TargetMachine::shouldAssumeDSOLocal(), and llvm::Reloc::Static.
Referenced by classifyGlobalReference(), llvm::X86TargetLowering::isLegalAddressingMode(), and llvm::X86TargetLowering::LowerAsmOperandForConstraint().
unsigned char X86Subtarget::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.
Definition at line 71 of file X86Subtarget.cpp.
References llvm::TargetMachine::getCodeModel(), llvm::GlobalValue::hasCommonLinkage(), is64Bit(), llvm::GlobalValue::isDeclarationForLinker(), llvm::TargetMachine::isLargeData(), isPositionIndependent(), isTargetCOFF(), isTargetDarwin(), isTargetELF(), llvm::CodeModel::Kernel, llvm::CodeModel::Large, llvm_unreachable, llvm::CodeModel::Medium, llvm::X86II::MO_DARWIN_NONLAZY_PIC_BASE, llvm::X86II::MO_GOTOFF, llvm::X86II::MO_GOTPCREL_NORELAX, llvm::X86II::MO_NO_FLAG, llvm::X86II::MO_PIC_BASE_OFFSET, llvm::CodeModel::Small, and llvm::CodeModel::Tiny.
Referenced by classifyBlockAddressReference(), and classifyGlobalReference().
|
override |
Definition at line 386 of file X86Subtarget.cpp.
References canUseCMOV(), and X86EarlyIfConv.
|
inlineoverride |
If we are using indirect thunks, we need to expand indirectbr to avoid it lowering to an actual indirect jump.
Definition at line 423 of file X86Subtarget.h.
References useIndirectThunkBranches().
|
inlineoverride |
Enable the MachineScheduler pass for all X86 subtargets.
Definition at line 428 of file X86Subtarget.h.
|
inlineoverride |
Definition at line 435 of file X86Subtarget.h.
|
override |
Methods used by Global ISel.
Definition at line 370 of file X86Subtarget.cpp.
|
inlineoverride |
Definition at line 131 of file X86Subtarget.h.
Referenced by emitLockedStackOp(), ExpandMOVImmSExti8(), llvm::X86InstrInfo::foldMemoryOperandImpl(), llvm::X86TargetLowering::getRegisterByName(), llvm::X86InstrInfo::isFunctionSafeToOutlineFrom(), llvm::X86InstrInfo::loadRegFromStackSlot(), and llvm::X86InstrInfo::storeRegToStackSlot().
|
inlineoverride |
Definition at line 129 of file X86Subtarget.h.
References InstrInfo.
Referenced by llvm::X86TargetLowering::EmitInstrWithCustomInserter(), getRegisterInfo(), llvm::X86CallLowering::lowerCall(), llvm::X86AsmPrinter::runOnMachineFunction(), and llvm::X86LegalizerInfo::X86LegalizerInfo().
|
override |
Definition at line 374 of file X86Subtarget.cpp.
|
override |
Definition at line 378 of file X86Subtarget.cpp.
|
inline |
Returns the maximum memset / memcpy size that still makes it profitable to inline the call.
Definition at line 153 of file X86Subtarget.h.
Referenced by emitConstantSizeRepmov(), and llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset().
|
inline |
Definition at line 189 of file X86Subtarget.h.
|
override |
Definition at line 390 of file X86Subtarget.cpp.
References llvm::createX86MacroFusionDAGMutation().
|
inline |
Definition at line 239 of file X86Subtarget.h.
Referenced by canExtendTo512DQ(), llvm::X86TargetLowering::canMergeStoresTo(), combineConcatVectorOps(), llvm::X86TTIImpl::enableMemCmpExpansion(), llvm::X86TargetLowering::getOptimalMemOpType(), llvm::X86TTIImpl::getRegisterBitWidth(), and useLight256BitInstructions().
|
override |
Definition at line 382 of file X86Subtarget.cpp.
|
inlineoverride |
Definition at line 139 of file X86Subtarget.h.
References getInstrInfo(), and llvm::X86InstrInfo::getRegisterInfo().
Referenced by llvm::X86TargetLowering::EmitInstrWithCustomInserter(), expandXorFP(), getBroadcastOpcode(), getLoadStoreRegOpcode(), llvm::X86TargetLowering::getRegisterByName(), llvm::X86TargetLowering::getReturnAddressFrameIndex(), llvm::X86CallLowering::lowerCall(), X86Subtarget(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 240 of file X86Subtarget.h.
|
inlineoverride |
Definition at line 135 of file X86Subtarget.h.
|
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 149 of file X86Subtarget.h.
|
inlineoverride |
Definition at line 125 of file X86Subtarget.h.
Referenced by llvm::X86FrameLowering::canUseAsPrologue(), combineConcatVectorOps(), combineOrCmpEqZeroToCtlzSrl(), combineSIntToFP(), llvm::X86FrameLowering::emitPrologue(), llvm::X86FrameLowering::emitSPUpdate(), llvm::X86RegisterInfo::getCalleeSavedRegs(), llvm::X86RegisterInfo::getCallPreservedMask(), and X86Subtarget().
Definition at line 291 of file X86Subtarget.h.
Referenced by computeBytesPoppedByCalleeForSRet(), llvm::X86TargetLowering::getIRStackGuard(), llvm::X86TargetLowering::getSDagStackGuard(), llvm::X86TargetLowering::getSSPStackGuardCheck(), hasCalleePopSRet(), llvm::X86TargetLowering::insertSSPDeclarations(), swiftAsyncContextIsDynamicallySet(), llvm::X86TargetLowering::useStackGuardXorFP(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 144 of file X86Subtarget.h.
|
inline |
Definition at line 143 of file X86Subtarget.h.
|
inline |
Definition at line 213 of file X86Subtarget.h.
Referenced by combineFMA(), combineFneg(), combineShuffleToFMAddSub(), llvm::X86TargetLowering::getNegatedExpression(), isFMAddSubOrFMSubAdd(), llvm::X86TargetLowering::isFMAFasterThanFMulAndFAdd(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 206 of file X86Subtarget.h.
Referenced by llvm::X86TargetLowering::allowsMemoryAccess(), llvm::X86InstrInfo::breakPartialRegDependency(), combineAndShuffleNot(), combineBitcastvxi1(), combineCONCAT_VECTORS(), combineConcatVectorOps(), combineEXTRACT_SUBVECTOR(), combineLoad(), combinePredicateReduction(), combinePTESTCC(), combineSelect(), combineSetCCMOVMSK(), combineToHorizontalAddSub(), combineVectorSizedSetCCEquality(), combineX86ShuffleChain(), convertIntLogicToFPLogic(), llvm::X86InstrInfo::copyPhysReg(), CopyToFromAsymmetricReg(), createVariablePermute(), EltsFromConsecutiveLoads(), llvm::X86TTIImpl::enableMemCmpExpansion(), llvm::X86InstrInfo::expandPostRAPseudo(), llvm::X86TTIImpl::getArithmeticInstrCost(), llvm::X86TTIImpl::getArithmeticReductionCost(), llvm::X86RegisterInfo::getCalleeSavedRegs(), llvm::X86RegisterInfo::getCallPreservedMask(), llvm::X86TTIImpl::getCastInstrCost(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), getLoadStoreOpcodeForFP16(), getLoadStoreRegOpcode(), llvm::X86TTIImpl::getMaxInterleaveFactor(), llvm::X86TTIImpl::getMinMaxReductionCost(), llvm::X86TargetLowering::getOptimalMemOpType(), llvm::X86TargetLowering::getRegForInlineAsmConstraint(), llvm::X86TTIImpl::getRegisterBitWidth(), llvm::X86TTIImpl::getShuffleCost(), llvm::X86TargetLowering::getSingleConstraintMatchWeight(), isLegalConversion(), llvm::X86TTIImpl::isLegalMaskedLoad(), llvm::X86TTIImpl::isLegalNTStore(), LowerANY_EXTEND(), lowerBuildVectorAsBroadcast(), LowerEXTEND_VECTOR_INREG(), LowerShift(), lowerShuffleAsBlend(), lowerShuffleAsBroadcast(), lowerShuffleAsDecomposedShuffleMerge(), LowerToHorizontalOp(), lowerUINT_TO_FP_vXi32(), lowerV2F64Shuffle(), lowerV4F32Shuffle(), LowerVectorAllEqual(), LowerVSETCC(), LowerVSETCCWithSUBUS(), LowerZERO_EXTEND(), matchBinaryPermuteShuffle(), matchBinaryShuffle(), matchTruncateWithPACK(), matchUnaryPermuteShuffle(), matchUnaryShuffle(), llvm::X86::mayFoldLoad(), llvm::X86::mayFoldLoadIntoBroadcastFromMem(), llvm::X86TargetLowering::reduceSelectOfFPConstantLoads(), useVectorCast(), X86ChooseCmpOpcode(), llvm::X86LegalizerInfo::X86LegalizerInfo(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 207 of file X86Subtarget.h.
Referenced by llvm::X86TargetLowering::allowsMemoryAccess(), combineBitcastvxi1(), combineConcatVectorOps(), combineEXTRACT_SUBVECTOR(), combineSelect(), combineShuffleOfConcatUndef(), combineTargetShuffle(), combineToExtendBoolVectorInReg(), combineVSelectToBLENDV(), combineX86ShuffleChain(), combineX86ShufflesRecursively(), convertShiftLeftToScale(), EltsFromConsecutiveLoads(), expandFP_TO_UINT_SSE(), foldVectorXorShiftIntoCmp(), llvm::X86TTIImpl::getAddressComputationCost(), llvm::X86TTIImpl::getArithmeticInstrCost(), llvm::X86TTIImpl::getArithmeticReductionCost(), llvm::X86TTIImpl::getCastInstrCost(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::X86InstrInfo::getExecutionDomain(), llvm::X86InstrInfo::getExecutionDomainCustom(), llvm::X86TTIImpl::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), llvm::X86TTIImpl::getScalarizationOverhead(), llvm::X86TTIImpl::getShuffleCost(), hasInt256(), isHorizontalBinOp(), llvm::X86TTIImpl::isLegalNTLoad(), llvm::X86TargetLowering::isVectorClearMaskLegal(), llvm::X86TargetLowering::isVectorShiftByScalarCheap(), lower256BitShuffle(), lowerBuildVectorAsBroadcast(), LowerFunnelShift(), LowerMGATHER(), LowerRotate(), lowerShuffleAsBlend(), lowerShuffleAsBroadcast(), lowerShuffleAsByteRotateAndPermute(), lowerShuffleAsDecomposedShuffleMerge(), lowerShuffleAsLanePermuteAndPermute(), lowerShuffleAsLanePermuteAndShuffle(), lowerShuffleAsRepeatedMaskAndLanePermute(), lowerShuffleAsTruncBroadcast(), lowerShuffleWithPSHUFB(), lowerShuffleWithUndefHalf(), LowerToHorizontalOp(), lowerV16I16Shuffle(), lowerV2F64Shuffle(), lowerV2I64Shuffle(), lowerV2X128Shuffle(), lowerV32I8Shuffle(), lowerV4F32Shuffle(), lowerV4F64Shuffle(), lowerV4I32Shuffle(), lowerV4I64Shuffle(), lowerV8F32Shuffle(), lowerV8I16Shuffle(), lowerV8I32Shuffle(), matchBinaryPermuteShuffle(), matchBinaryShuffle(), matchUnaryPermuteShuffle(), llvm::X86InstrInfo::setExecutionDomain(), llvm::X86InstrInfo::setExecutionDomainCustom(), llvm::X86TargetLowering::shouldProduceAndByConstByHoistingConstFromShiftsLHSOfAnd(), SplitOpsAndApply(), and llvm::X86LegalizerInfo::X86LegalizerInfo().
|
inline |
Definition at line 208 of file X86Subtarget.h.
Referenced by llvm::X86TargetLowering::allowsMemoryAccess(), canCombineAsMaskOperation(), canExtendTo512DQ(), combineArithReduction(), combineBitcast(), combineBitcastvxi1(), combineCastedMaskArithmetic(), combineCompareEqual(), combineConcatVectorOps(), combineExtSetcc(), combineLoad(), combineMaskedLoad(), combineMulToPMADDWD(), combinePMULH(), combineSelect(), combineStore(), combineToExtendBoolVectorInReg(), combineTruncateWithSat(), combineVectorPack(), combineX86ShuffleChain(), commuteSelect(), llvm::X86TargetLowering::convertSelectOfConstantsToMath(), convertShiftLeftToScale(), CopyToFromAsymmetricReg(), EmitAVX512Test(), llvm::X86TTIImpl::enableMemCmpExpansion(), llvm::X86TTIImpl::forceScalarizeMaskedGather(), llvm::X86TTIImpl::getArithmeticInstrCost(), llvm::X86TTIImpl::getArithmeticReductionCost(), getAVX512Node(), getBroadcastOpcode(), llvm::X86RegisterInfo::getCalleeSavedRegs(), llvm::X86RegisterInfo::getCallPreservedMask(), llvm::X86TTIImpl::getCastInstrCost(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), llvm::X86RegisterInfo::getLargestLegalSuperClass(), getLoadStoreOpcodeForFP16(), getLoadStoreRegOpcode(), llvm::X86TTIImpl::getMaskedMemoryOpCost(), llvm::X86TTIImpl::getNumberOfRegisters(), llvm::X86TargetLowering::getNumRegistersForCallingConv(), llvm::X86TargetLowering::getOptimalMemOpType(), llvm::X86TargetLowering::getPreferredVectorAction(), llvm::X86RegisterInfo::getRegAllocationHints(), llvm::X86TargetLowering::getRegForInlineAsmConstraint(), llvm::X86TTIImpl::getRegisterBitWidth(), llvm::X86TargetLowering::getRegisterTypeForCallingConv(), llvm::X86TTIImpl::getReplicationShuffleCost(), llvm::X86RegisterInfo::getReservedRegs(), llvm::X86TTIImpl::getScalarizationOverhead(), llvm::X86TargetLowering::getSetCCResultType(), llvm::X86TTIImpl::getShuffleCost(), llvm::X86TargetLowering::getSingleConstraintMatchWeight(), llvm::X86TargetLowering::getVectorTypeBreakdownForCallingConv(), llvm::X86TTIImpl::isLegalMaskedExpandLoad(), llvm::X86TTIImpl::isLegalMaskedScatter(), llvm::X86TargetLowering::isLoadBitCastBeneficial(), lower1BitShuffle(), lower512BitShuffle(), LowerBITCAST(), LowerEXTEND_VECTOR_INREG(), LowerFunnelShift(), LowerLoad(), LowerMGATHER(), LowerMLOAD(), LowerMSCATTER(), LowerMSTORE(), LowerMULH(), LowerRotate(), LowerShift(), lowerShuffleAsBitRotate(), lowerShuffleAsVTRUNC(), lowerShuffleWithUndefHalf(), lowerShuffleWithVPMOV(), LowerStore(), lowerUINT_TO_FP_v2i32(), lowerUINT_TO_FP_vXi32(), lowerV16I16Shuffle(), lowerV2X128Shuffle(), lowerV32I8Shuffle(), lowerV8F32Shuffle(), lowerV8I32Shuffle(), LowerVSETCC(), matchBinaryPermuteShuffle(), matchBinaryShuffle(), matchShuffleAsBitRotate(), matchTruncateWithPACK(), matchUnaryPermuteShuffle(), matchUnaryShuffle(), llvm::X86TargetLowering::preferSextInRegOfTruncate(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::X86InstrInfo::setExecutionDomain(), llvm::X86TargetLowering::shouldFoldSelectWithIdentityConstant(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), supportedVectorShiftWithImm(), supportedVectorVarShift(), truncateAVX512SetCCNoBWI(), truncateVectorWithPACK(), useAVX512Regs(), useVectorCast(), X86ChooseCmpOpcode(), llvm::X86LegalizerInfo::X86LegalizerInfo(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Use clflush 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 284 of file X86Subtarget.h.
|
inline |
Definition at line 209 of file X86Subtarget.h.
References hasAVX2().
Referenced by combineConcatVectorOps(), combineHorizOpWithShuffle(), combineLoad(), combineLogicBlendIntoPBLENDV(), combinePMULH(), combinePredicateReduction(), combineSetCCMOVMSK(), combineSignExtendInReg(), convertShiftLeftToScale(), EltsFromConsecutiveLoads(), getPMOVMSKB(), LowerABD(), LowerABS(), LowerADDSAT_SUBSAT(), LowerAVG(), LowerAVXExtend(), LowerBITREVERSE(), lowerBuildVectorAsBroadcast(), LowerEXTEND_VECTOR_INREG(), LowerMINMAX(), LowerMUL(), LowerMULH(), LowerMULO(), LowerShift(), LowerShiftByScalarImmediate(), LowerSIGN_EXTEND(), LowerVectorCTLZ(), LowerVectorCTPOP(), LowerVSETCC(), matchBinaryShuffle(), matchUnaryShuffle(), supportedVectorShiftWithImm(), supportedVectorVarShift(), truncateVectorWithPACK(), and llvm::X86TargetLowering::X86TargetLowering().
|
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 289 of file X86Subtarget.h.
References hasSSE2(), and is64Bit().
Referenced by LowerATOMIC_FENCE().
|
inline |
Definition at line 210 of file X86Subtarget.h.
Referenced by llvm::X86TargetLowering::getRegForInlineAsmConstraint(), llvm::X86TargetLowering::getSingleConstraintMatchWeight(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 253 of file X86Subtarget.h.
Referenced by hasNoDomainDelayBlend(), hasNoDomainDelayMov(), and hasNoDomainDelayShuffle().
|
inline |
Definition at line 257 of file X86Subtarget.h.
References hasNoDomainDelay().
|
inline |
Definition at line 254 of file X86Subtarget.h.
References hasNoDomainDelay().
|
inline |
Definition at line 260 of file X86Subtarget.h.
References hasNoDomainDelay().
|
inline |
Definition at line 214 of file X86Subtarget.h.
References hasThreeDNow().
|
inline |
Definition at line 200 of file X86Subtarget.h.
Referenced by canUseCMOV(), combineAnd(), combineBitcast(), combineBitcastvxi1(), combineCMov(), combineFAndFNotToFAndn(), combineFMinNumFMaxNum(), combineOr(), combineSelect(), combineSetCC(), combineXor(), convertIntLogicToFPLogic(), createMMXBuildVector(), createSetFPEnvNodes(), get64BitArgumentXMMs(), llvm::X86TTIImpl::getArithmeticInstrCost(), llvm::X86TargetLowering::getByValTypeAlignment(), llvm::X86RegisterInfo::getCalleeSavedRegs(), llvm::X86RegisterInfo::getCallPreservedMask(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), llvm::X86TTIImpl::getNumberOfRegisters(), llvm::X86TargetLowering::getOptimalMemOpType(), llvm::X86TargetLowering::getRegForInlineAsmConstraint(), llvm::X86TTIImpl::getRegisterBitWidth(), llvm::X86TTIImpl::getShuffleCost(), llvm::X86TargetLowering::getSingleConstraintMatchWeight(), llvm::X86TargetLowering::hasAndNot(), hasSSEPrefetch(), llvm::X86TTIImpl::isLegalNTLoad(), llvm::X86TTIImpl::isLegalNTStore(), llvm::X86TargetLowering::isSafeMemOpType(), llvm::X86TargetLowering::isScalarFPTypeInSSEReg(), LowerATOMIC_STORE(), LowerStore(), llvm::X86TargetLowering::LowerXConstraint(), matchBinaryPermuteShuffle(), matchBinaryShuffle(), llvm::X86TargetLowering::ReplaceNodeResults(), X86ChooseCmpOpcode(), llvm::X86LegalizerInfo::X86LegalizerInfo(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 201 of file X86Subtarget.h.
Referenced by llvm::X86TargetLowering::allowsMemoryAccess(), combineAnd(), combineAndShuffleNot(), combineArithReduction(), combineBasicSADPattern(), combineBitcast(), combineBitcastvxi1(), combineCMov(), combineCompareEqual(), combineExtractWithShuffle(), combineFAndFNotToFAndn(), combineFMinNumFMaxNum(), combineLogicBlendIntoPBLENDV(), combineMOVMSK(), combineMulToPMADDWD(), combineMulToPMULDQ(), combineOr(), combinePMULH(), combinePredicateReduction(), combineSelect(), combineSetCC(), combineShiftToPMULH(), combineStore(), combineToExtendBoolVectorInReg(), combineTruncateWithSat(), combineVectorSizedSetCCEquality(), combineX86ShuffleChain(), combineXor(), llvm::X86InstrInfo::commuteInstructionImpl(), convertIntLogicToFPLogic(), detectAVGPattern(), EltsFromConsecutiveLoads(), llvm::X86TTIImpl::enableMemCmpExpansion(), llvm::X86InstrInfo::findCommutedOpIndices(), foldVectorXorShiftIntoCmp(), llvm::X86TTIImpl::getArithmeticInstrCost(), llvm::X86TTIImpl::getArithmeticReductionCost(), llvm::X86TTIImpl::getCastInstrCost(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), llvm::X86TTIImpl::getMinMaxReductionCost(), llvm::X86TargetLowering::getOptimalMemOpType(), llvm::X86TTIImpl::getScalarizationOverhead(), llvm::X86TTIImpl::getShuffleCost(), llvm::X86TargetLowering::getSingleConstraintMatchWeight(), llvm::X86TTIImpl::getVectorInstrCost(), getZeroVector(), llvm::X86TargetLowering::hasAndNot(), hasCLFLUSH(), hasMFence(), isLegalConversion(), llvm::X86TargetLowering::isSafeMemOpType(), llvm::X86TargetLowering::isScalarFPTypeInSSEReg(), LowerATOMIC_STORE(), LowerBITCAST(), LowerBuildVectorAsInsert(), LowerEXTEND_VECTOR_INREG(), lowerFPToIntToFP(), LowerMUL(), LowerMULH(), LowerShift(), LowerStore(), lowerV4F32Shuffle(), LowerVSETCC(), LowerVSETCCWithSUBUS(), lowerX86FPLogicOp(), matchBinaryPermuteShuffle(), matchBinaryShuffle(), matchPMADDWD(), matchPMADDWD_2(), matchTruncateWithPACK(), matchUnaryPermuteShuffle(), matchUnaryShuffle(), MatchVectorAllEqualTest(), materializeVectorConstant(), reduceVMULWidth(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::X86TargetLowering::ShouldShrinkFPConstant(), llvm::X86TargetLowering::shouldSinkOperands(), SplitOpsAndApply(), supportedVectorShiftWithImm(), truncateVectorWithPACK(), useVectorCast(), X86ChooseCmpOpcode(), llvm::X86LegalizerInfo::X86LegalizerInfo(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 202 of file X86Subtarget.h.
Referenced by combineArithReduction(), combineToHorizontalAddSub(), llvm::X86TTIImpl::getShuffleCost(), isAddSubOrSubAdd(), llvm::X86TTIImpl::isLegalAltInstr(), llvm::X86TTIImpl::isLegalBroadcastLoad(), lowerAddSubToHorizontalOp(), LowerBuildVectorv4x32(), lowerShuffleAsBitRotate(), lowerShuffleAsBroadcast(), LowerToHorizontalOp(), LowerUINT_TO_FP_i64(), lowerV4F32Shuffle(), and matchUnaryShuffle().
|
inline |
Definition at line 204 of file X86Subtarget.h.
Referenced by llvm::X86TargetLowering::allowsMemoryAccess(), llvm::X86TargetLowering::allowsMisalignedMemoryAccesses(), combineArithReduction(), combineEXTEND_VECTOR_INREG(), combineExtractWithShuffle(), combineLogicBlendIntoPBLENDV(), combineMinMaxReduction(), combineMulToPMADDWD(), combineMulToPMULDQ(), combineSetCCMOVMSK(), combineTruncateWithSat(), combineVectorSizedSetCCEquality(), combineVSelectToBLENDV(), combineX86ShuffleChain(), llvm::X86InstrInfo::commuteInstructionImpl(), convertShiftLeftToScale(), createVariablePermute(), llvm::X86InstrInfo::findCommutedOpIndices(), llvm::X86TTIImpl::getArithmeticInstrCost(), llvm::X86TTIImpl::getCastInstrCost(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), llvm::X86TTIImpl::getMinMaxReductionCost(), getPack(), llvm::X86TTIImpl::getScalarizationOverhead(), llvm::X86TTIImpl::getShuffleCost(), getTargetVShiftNode(), llvm::X86TTIImpl::getVectorInstrCost(), LowerABD(), LowerABS(), LowerBuildVectorAsInsert(), LowerBuildVectorv16i8(), LowerBuildVectorv4x32(), LowerBuildVectorv8i16(), LowerMUL(), LowerMULH(), LowerRotate(), LowerShift(), lowerShuffleAsBlend(), lowerShuffleAsSpecificZeroOrAnyExtend(), lowerShuffleWithPACK(), LowerTruncateVecPack(), lowerUINT_TO_FP_vXi32(), lowerV16I8Shuffle(), lowerV2F64Shuffle(), lowerV2I64Shuffle(), lowerV4F32Shuffle(), lowerV4I32Shuffle(), lowerV8I16Shuffle(), LowerVectorAllEqual(), LowerVSETCC(), matchBinaryPermuteShuffle(), matchBinaryShuffle(), matchShuffleWithPACK(), matchShuffleWithUNPCK(), matchTruncateWithPACK(), matchUnaryShuffle(), reduceVMULWidth(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::X86TargetLowering::shouldSinkOperands(), truncateVectorWithPACK(), llvm::X86LegalizerInfo::X86LegalizerInfo(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 205 of file X86Subtarget.h.
Referenced by llvm::X86TTIImpl::getArithmeticInstrCost(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), LowerShiftByScalarImmediate(), LowerVSETCC(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 221 of file X86Subtarget.h.
References hasSSE1(), and hasThreeDNow().
Referenced by llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 203 of file X86Subtarget.h.
Referenced by combineArithReduction(), combineToHorizontalAddSub(), combineX86ShuffleChain(), createVariablePermute(), detectPMADDUBSW(), llvm::X86TTIImpl::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), llvm::X86TTIImpl::getShuffleCost(), lowerAddSubToHorizontalOp(), LowerBITREVERSE(), lowerShuffleAsByteRotate(), lowerShuffleAsByteRotateAndPermute(), lowerShuffleAsByteShiftMask(), lowerShuffleAsSpecificZeroOrAnyExtend(), lowerShuffleWithPSHUFB(), LowerToHorizontalOp(), LowerTruncateVecPack(), lowerV16I8Shuffle(), lowerV2I64Shuffle(), lowerV4I32Shuffle(), lowerV8I16Shuffle(), LowerVectorCTLZ(), LowerVectorCTPOP(), matchBinaryPermuteShuffle(), matchTruncateWithPACK(), llvm::X86TargetLowering::ReplaceNodeResults(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 211 of file X86Subtarget.h.
Referenced by hasPrefetchW(), hasSSEPrefetch(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 212 of file X86Subtarget.h.
|
inline |
Definition at line 350 of file X86Subtarget.h.
References llvm::CallingConv::C, CC, llvm::CallingConv::Fast, llvm::CallingConv::Intel_OCL_BI, isTargetWin64(), llvm::CallingConv::Swift, llvm::CallingConv::SwiftTail, llvm::CallingConv::Tail, llvm::CallingConv::Win64, llvm::CallingConv::X86_64_SysV, llvm::CallingConv::X86_FastCall, llvm::CallingConv::X86_StdCall, llvm::CallingConv::X86_ThisCall, and llvm::CallingConv::X86_VectorCall.
Referenced by get64BitArgumentGPRs(), get64BitArgumentXMMs(), llvm::X86FrameLowering::has128ByteRedZone(), llvm::X86CallLowering::lowerCall(), and LowerVACOPY().
bool X86Subtarget::isLegalToCallImmediateAddr | ( | ) | const |
Return true if the subtarget allows calls to immediate address.
Definition at line 253 of file X86Subtarget.cpp.
References llvm::TargetMachine::getRelocationModel(), isTargetELF(), isTargetWin32(), and llvm::Reloc::Static.
|
inline |
Definition at line 335 of file X86Subtarget.h.
References llvm::Triple::isOSWindows().
Referenced by classifyGlobalReference(), llvm::X86TargetLowering::getStackProbeSymbolName(), llvm::X86TargetLowering::hasInlineStackProbe(), isTargetWin32(), isTargetWin64(), llvm::X86TargetLowering::preferredShiftLegalizationStrategy(), llvm::X86FrameLowering::restoreCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), and llvm::X86FrameLowering::stackProbeFunctionModifiesSP().
|
inline |
Definition at line 341 of file X86Subtarget.h.
References llvm::PICStyles::GOT.
Referenced by llvm::X86TargetLowering::getJumpTableEncoding(), llvm::X86TargetLowering::LowerAsmOperandForConstraint(), and llvm::X86TargetLowering::LowerCustomJumpTableEntry().
|
inline |
Definition at line 342 of file X86Subtarget.h.
References llvm::PICStyles::RIPRel.
Referenced by llvm::X86TargetLowering::getPICJumpTableRelocBaseExpr(), and llvm::X86AsmPrinter::PrintAsmOperand().
|
inline |
Definition at line 344 of file X86Subtarget.h.
References llvm::PICStyles::StubPIC.
Referenced by llvm::X86TargetLowering::LowerAsmOperandForConstraint().
bool X86Subtarget::isPositionIndependent | ( | ) | const |
Definition at line 395 of file X86Subtarget.cpp.
References llvm::TargetMachine::isPositionIndependent().
Referenced by classifyGlobalReference(), classifyLocalReference(), and X86Subtarget().
|
inline |
Is this x86_64 with the ILP32 programming model (x32 ABI)?
Definition at line 180 of file X86Subtarget.h.
References llvm::Triple::isOSNaCl(), and llvm::Triple::isX32().
Referenced by llvm::X86FrameLowering::determineCalleeSaves(), llvm::X86FrameLowering::emitCalleeSavedFrameMoves(), llvm::X86FrameLowering::emitCalleeSavedFrameMovesFullCFA(), llvm::X86FrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitPrologue(), getLeaOP(), llvm::X86RegisterInfo::getPtrSizedFrameRegister(), and llvm::X86RegisterInfo::getPtrSizedStackRegister().
|
inline |
Is this x86_64 with the LP64 programming model (standard AMD64, no x32)?
Definition at line 185 of file X86Subtarget.h.
References llvm::Triple::isOSNaCl(), and llvm::Triple::isX32().
Referenced by emitRepmovs(), llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(), llvm::X86TargetLowering::getExceptionPointerRegister(), llvm::X86TargetLowering::getExceptionSelectorRegister(), llvm::X86RegisterInfo::getPointerRegClass(), LowerVACOPY(), llvm::X86TargetLowering::reduceSelectOfFPConstantLoads(), and llvm::X86FrameLowering::X86FrameLowering().
|
inline |
Definition at line 306 of file X86Subtarget.h.
References llvm::Triple::isAndroid().
Referenced by llvm::X86TargetLowering::getSafeStackPointerLocation().
|
inline |
Definition at line 300 of file X86Subtarget.h.
References llvm::Triple::isOSBinFormatCOFF().
Referenced by classifyGlobalFunctionReference(), classifyGlobalReference(), classifyLocalReference(), llvm::X86AsmPrinter::runOnMachineFunction(), and X86Subtarget().
|
inline |
Definition at line 333 of file X86Subtarget.h.
References llvm::Triple::isOSCygMing().
Referenced by llvm::X86TargetLowering::getStackProbeSymbolName(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 293 of file X86Subtarget.h.
References llvm::Triple::isOSDarwin().
Referenced by llvm::X86FrameLowering::adjustForSegmentedStacks(), classifyGlobalReference(), classifyLocalReference(), llvm::X86TargetLowering::getIRStackGuard(), LowerFSINCOS(), X86Subtarget(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 295 of file X86Subtarget.h.
References llvm::Triple::isOSDragonFly().
Referenced by llvm::X86FrameLowering::adjustForSegmentedStacks().
|
inline |
Definition at line 299 of file X86Subtarget.h.
References llvm::Triple::isOSBinFormatELF().
Referenced by classifyGlobalFunctionReference(), classifyGlobalReference(), classifyLocalReference(), isLegalToCallImmediateAddr(), X86Subtarget(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 294 of file X86Subtarget.h.
References llvm::Triple::isOSFreeBSD().
Referenced by llvm::X86FrameLowering::adjustForSegmentedStacks().
|
inline |
Definition at line 311 of file X86Subtarget.h.
References llvm::Triple::isOSFuchsia().
Referenced by llvm::X86TargetLowering::getIRStackGuard(), and llvm::X86TargetLowering::getSafeStackPointerLocation().
|
inline |
Definition at line 305 of file X86Subtarget.h.
References llvm::Triple::isOSGlibc().
|
inline |
Definition at line 304 of file X86Subtarget.h.
References llvm::Triple::isOSKFreeBSD().
|
inline |
Definition at line 303 of file X86Subtarget.h.
References llvm::Triple::isOSLinux().
Referenced by llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::X86FrameLowering::adjustForSegmentedStacks(), and llvm::X86CallLowering::lowerCall().
|
inline |
Definition at line 301 of file X86Subtarget.h.
References llvm::Triple::isOSBinFormatMachO().
Referenced by llvm::X86TargetLowering::getStackProbeSymbolName(), llvm::X86TargetLowering::useLoadStackGuardNode(), and llvm::X86TargetLowering::useStackGuardXorFP().
|
inline |
Definition at line 310 of file X86Subtarget.h.
References llvm::Triple::isOSIAMCU().
Referenced by computeBytesPoppedByCalleeForSRet(), and hasCalleePopSRet().
|
inline |
Definition at line 307 of file X86Subtarget.h.
References llvm::Triple::isOSNaCl().
Referenced by isTargetNaCl32(), and isTargetNaCl64().
|
inline |
Definition at line 308 of file X86Subtarget.h.
References is64Bit(), and isTargetNaCl().
|
inline |
Definition at line 309 of file X86Subtarget.h.
References is64Bit(), and isTargetNaCl().
Referenced by llvm::X86FrameLowering::X86FrameLowering().
|
inline |
Definition at line 297 of file X86Subtarget.h.
References llvm::Triple::isPS().
Referenced by llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 296 of file X86Subtarget.h.
References llvm::Triple::isOSSolaris().
|
inline |
Definition at line 339 of file X86Subtarget.h.
References isOSWindows().
Referenced by llvm::X86FrameLowering::adjustForSegmentedStacks(), llvm::X86FrameLowering::emitPrologue(), isLegalToCallImmediateAddr(), llvm::X86FrameLowering::restoreWin32EHStackPointers(), and llvm::X86AsmPrinter::runOnMachineFunction().
|
inline |
Definition at line 337 of file X86Subtarget.h.
References isOSWindows().
Referenced by llvm::X86FrameLowering::adjustForSegmentedStacks(), llvm::X86InstrInfo::canMakeTailCallConditional(), llvm::X86FrameLowering::canUseAsEpilogue(), llvm::X86FrameLowering::getFrameIndexReferencePreferSP(), isCallingConvWin64(), llvm::X86TargetLowering::needsFixedCatchObjects(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::X86FrameLowering::stackProbeFunctionModifiesSP(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 317 of file X86Subtarget.h.
References llvm::Triple::isWindowsCoreCLREnvironment().
Referenced by llvm::X86FrameLowering::emitStackProbe().
|
inline |
Definition at line 321 of file X86Subtarget.h.
References llvm::Triple::isWindowsCygwinEnvironment().
|
inline |
Definition at line 325 of file X86Subtarget.h.
References llvm::Triple::isWindowsGNUEnvironment().
|
inline |
Definition at line 329 of file X86Subtarget.h.
References llvm::Triple::isWindowsItaniumEnvironment().
Referenced by llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 313 of file X86Subtarget.h.
References llvm::Triple::isWindowsMSVCEnvironment().
Referenced by llvm::X86FrameLowering::restoreWin32EHStackPointers(), and llvm::X86TargetLowering::X86TargetLowering().
|
inlineoverride |
Definition at line 279 of file X86Subtarget.h.
References is64Bit().
ParseSubtargetFeatures - Parses features string setting specified subtarget options.
Definition of function is auto generated by tblgen.
|
inline |
Definition at line 190 of file X86Subtarget.h.
Referenced by X86Subtarget().
|
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 399 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().
|
inline |
Definition at line 266 of file X86Subtarget.h.
References canExtendTo512DQ(), and hasAVX512().
Referenced by llvm::X86TTIImpl::areTypesABICompatible(), combineAndShuffleNot(), combineConcatVectorOps(), combineExtSetcc(), combineTruncateWithSat(), combineVectorSizedSetCCEquality(), combineX86ShuffleChain(), llvm::X86TTIImpl::getCastInstrCost(), llvm::X86TargetLowering::getVectorTypeBreakdownForCallingConv(), handleMaskRegisterForCallingConv(), isLegalConversion(), LowerVectorAllEqual(), SplitOpsAndApply(), supportedVectorShiftWithImm(), supportedVectorVarShift(), useBWIRegs(), and llvm::X86TargetLowering::X86TargetLowering().
|
inline |
Definition at line 275 of file X86Subtarget.h.
References useAVX512Regs().
Referenced by combineConcatVectorOps(), lower1BitShuffle(), LowerABD(), LowerFunnelShift(), LowerRotate(), and SplitOpsAndApply().
|
inline |
Definition at line 235 of file X86Subtarget.h.
Referenced by llvm::X86TargetLowering::areJTsAllowed(), and enableIndirectBrExpand().
|
inline |
Definition at line 232 of file X86Subtarget.h.
Referenced by llvm::X86FrameLowering::adjustForSegmentedStacks().
|
inline |
Definition at line 271 of file X86Subtarget.h.
References getPreferVectorWidth().
Referenced by llvm::X86TargetLowering::getOptimalMemOpType().