LLVM API Documentation

Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes
llvm::final< T > Class Template Reference

Concrete instance of DWARFUnitSection, specialized for one Unit type. More...

#include <FunctionTargetTransformInfo.h>

Inheritance diagram for llvm::final< T >:
Inheritance graph
[legend]
Collaboration diagram for llvm::final< T >:
Collaboration graph
[legend]

List of all members.

Classes

struct  UnitOffsetComparator

Public Types

typedef llvm::SmallVectorImpl
< std::unique_ptr< UnitType > > 
UnitVector
typedef UnitVector::iterator iterator
typedef llvm::iterator_range
< typename
UnitVector::iterator
iterator_range

Public Member Functions

 FunctionTargetTransformInfo ()
void getAnalysisUsage (AnalysisUsage &AU) const override
void releaseMemory () override
bool runOnFunction (Function &F) override
void getUnrollingPreferences (Loop *L, TargetTransformInfo::UnrollingPreferences &UP) const
 format_object1 (const char *fmt, const T &val)
int snprint (char *Buffer, unsigned BufferSize) const override
 Call snprintf() for this object, on the given buffer and size.
 format_object2 (const char *fmt, const T1 &val1, const T2 &val2)
int snprint (char *Buffer, unsigned BufferSize) const override
 Call snprintf() for this object, on the given buffer and size.
 format_object3 (const char *fmt, const T1 &val1, const T2 &val2, const T3 &val3)
int snprint (char *Buffer, unsigned BufferSize) const override
 Call snprintf() for this object, on the given buffer and size.
 format_object4 (const char *fmt, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4)
int snprint (char *Buffer, unsigned BufferSize) const override
 Call snprintf() for this object, on the given buffer and size.
 format_object5 (const char *fmt, const T1 &val1, const T2 &val2, const T3 &val3, const T4 &val4, const T5 &val5)
int snprint (char *Buffer, unsigned BufferSize) const override
 Call snprintf() for this object, on the given buffer and size.
 format_object6 (const char *Fmt, const T1 &Val1, const T2 &Val2, const T3 &Val3, const T4 &Val4, const T5 &Val5, const T6 &Val6)
int snprint (char *Buffer, unsigned BufferSize) const override
 Call snprintf() for this object, on the given buffer and size.
UnitType * getUnitForOffset (uint32_t Offset) const
 X86ATTInstPrinter (const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI, const MCSubtargetInfo &STI)
void printRegName (raw_ostream &OS, unsigned RegNo) const override
 printRegName - Print the assembler register name.
void printInst (const MCInst *MI, raw_ostream &OS, StringRef Annot) override
bool printAliasInstr (const MCInst *MI, raw_ostream &OS)
void printCustomAliasOperand (const MCInst *MI, unsigned OpIdx, unsigned PrintMethodIdx, raw_ostream &O)
void printInstruction (const MCInst *MI, raw_ostream &OS)
void printOperand (const MCInst *MI, unsigned OpNo, raw_ostream &OS)
void printMemReference (const MCInst *MI, unsigned Op, raw_ostream &OS)
void printSSECC (const MCInst *MI, unsigned Op, raw_ostream &OS)
void printAVXCC (const MCInst *MI, unsigned Op, raw_ostream &OS)
void printPCRelImm (const MCInst *MI, unsigned OpNo, raw_ostream &OS)
void printSrcIdx (const MCInst *MI, unsigned OpNo, raw_ostream &OS)
void printDstIdx (const MCInst *MI, unsigned OpNo, raw_ostream &OS)
void printMemOffset (const MCInst *MI, unsigned OpNo, raw_ostream &OS)
void printRoundingControl (const MCInst *MI, unsigned Op, raw_ostream &OS)
void printopaquemem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi8mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi16mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi32mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi64mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi128mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi256mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi512mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf32mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf64mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf80mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf128mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf256mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf512mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx8 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx16 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx32 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx64 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx8 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx16 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx32 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx64 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemOffs8 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemOffs16 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemOffs32 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemOffs64 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
 X86IntelInstPrinter (const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI)
void printRegName (raw_ostream &OS, unsigned RegNo) const override
 printRegName - Print the assembler register name.
void printInst (const MCInst *MI, raw_ostream &OS, StringRef Annot) override
void printInstruction (const MCInst *MI, raw_ostream &O)
void printOperand (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemReference (const MCInst *MI, unsigned Op, raw_ostream &O)
void printSSECC (const MCInst *MI, unsigned Op, raw_ostream &O)
void printAVXCC (const MCInst *MI, unsigned Op, raw_ostream &O)
void printPCRelImm (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemOffset (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printRoundingControl (const MCInst *MI, unsigned Op, raw_ostream &OS)
void printopaquemem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi8mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi16mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi32mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi64mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi128mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi256mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi512mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf32mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf64mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf80mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf128mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf256mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf512mem (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx8 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx16 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx32 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx64 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx8 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx16 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx32 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx64 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemOffs8 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemOffs16 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemOffs32 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemOffs64 (const MCInst *MI, unsigned OpNo, raw_ostream &O)
 X86InstrInfo (X86Subtarget &STI)
const X86RegisterInfogetRegisterInfo () const
bool isCoalescableExtInstr (const MachineInstr &MI, unsigned &SrcReg, unsigned &DstReg, unsigned &SubIdx) const override
unsigned isLoadFromStackSlot (const MachineInstr *MI, int &FrameIndex) const override
unsigned isLoadFromStackSlotPostFE (const MachineInstr *MI, int &FrameIndex) const override
unsigned isStoreToStackSlot (const MachineInstr *MI, int &FrameIndex) const override
unsigned isStoreToStackSlotPostFE (const MachineInstr *MI, int &FrameIndex) const override
bool isReallyTriviallyReMaterializable (const MachineInstr *MI, AliasAnalysis *AA) const override
void reMaterialize (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, unsigned DestReg, unsigned SubIdx, const MachineInstr *Orig, const TargetRegisterInfo &TRI) const override
bool classifyLEAReg (MachineInstr *MI, const MachineOperand &Src, unsigned LEAOpcode, bool AllowSP, unsigned &NewSrc, bool &isKill, bool &isUndef, MachineOperand &ImplicitOp) const
MachineInstrconvertToThreeAddress (MachineFunction::iterator &MFI, MachineBasicBlock::iterator &MBBI, LiveVariables *LV) const override
MachineInstrcommuteInstruction (MachineInstr *MI, bool NewMI) const override
bool findCommutedOpIndices (MachineInstr *MI, unsigned &SrcOpIdx1, unsigned &SrcOpIdx2) const override
bool isUnpredicatedTerminator (const MachineInstr *MI) const override
bool AnalyzeBranch (MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify) const override
unsigned RemoveBranch (MachineBasicBlock &MBB) const override
unsigned InsertBranch (MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, const SmallVectorImpl< MachineOperand > &Cond, DebugLoc DL) const override
bool canInsertSelect (const MachineBasicBlock &, const SmallVectorImpl< MachineOperand > &Cond, unsigned, unsigned, int &, int &, int &) const override
void insertSelect (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, DebugLoc DL, unsigned DstReg, const SmallVectorImpl< MachineOperand > &Cond, unsigned TrueReg, unsigned FalseReg) const override
void copyPhysReg (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, DebugLoc DL, unsigned DestReg, unsigned SrcReg, bool KillSrc) const override
void storeRegToStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, unsigned SrcReg, bool isKill, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const override
void storeRegToAddr (MachineFunction &MF, unsigned SrcReg, bool isKill, SmallVectorImpl< MachineOperand > &Addr, const TargetRegisterClass *RC, MachineInstr::mmo_iterator MMOBegin, MachineInstr::mmo_iterator MMOEnd, SmallVectorImpl< MachineInstr * > &NewMIs) const
void loadRegFromStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, unsigned DestReg, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const override
void loadRegFromAddr (MachineFunction &MF, unsigned DestReg, SmallVectorImpl< MachineOperand > &Addr, const TargetRegisterClass *RC, MachineInstr::mmo_iterator MMOBegin, MachineInstr::mmo_iterator MMOEnd, SmallVectorImpl< MachineInstr * > &NewMIs) const
bool expandPostRAPseudo (MachineBasicBlock::iterator MI) const override
MachineInstrfoldMemoryOperandImpl (MachineFunction &MF, MachineInstr *MI, const SmallVectorImpl< unsigned > &Ops, int FrameIndex) const override
MachineInstrfoldMemoryOperandImpl (MachineFunction &MF, MachineInstr *MI, const SmallVectorImpl< unsigned > &Ops, MachineInstr *LoadMI) const override
bool canFoldMemoryOperand (const MachineInstr *, const SmallVectorImpl< unsigned > &) const override
bool unfoldMemoryOperand (MachineFunction &MF, MachineInstr *MI, unsigned Reg, bool UnfoldLoad, bool UnfoldStore, SmallVectorImpl< MachineInstr * > &NewMIs) const override
bool unfoldMemoryOperand (SelectionDAG &DAG, SDNode *N, SmallVectorImpl< SDNode * > &NewNodes) const override
unsigned getOpcodeAfterMemoryUnfold (unsigned Opc, bool UnfoldLoad, bool UnfoldStore, unsigned *LoadRegIndex=nullptr) const override
bool areLoadsFromSameBasePtr (SDNode *Load1, SDNode *Load2, int64_t &Offset1, int64_t &Offset2) const override
bool shouldScheduleLoadsNear (SDNode *Load1, SDNode *Load2, int64_t Offset1, int64_t Offset2, unsigned NumLoads) const override
bool shouldScheduleAdjacent (MachineInstr *First, MachineInstr *Second) const override
void getNoopForMachoTarget (MCInst &NopInst) const override
bool ReverseBranchCondition (SmallVectorImpl< MachineOperand > &Cond) const override
bool isSafeToMoveRegClassDefs (const TargetRegisterClass *RC) const override
bool isSafeToClobberEFLAGS (MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const
unsigned getGlobalBaseReg (MachineFunction *MF) const
std::pair< uint16_t, uint16_t > getExecutionDomain (const MachineInstr *MI) const override
void setExecutionDomain (MachineInstr *MI, unsigned Domain) const override
unsigned getPartialRegUpdateClearance (const MachineInstr *MI, unsigned OpNum, const TargetRegisterInfo *TRI) const override
unsigned getUndefRegClearance (const MachineInstr *MI, unsigned &OpNum, const TargetRegisterInfo *TRI) const override
void breakPartialRegDependency (MachineBasicBlock::iterator MI, unsigned OpNum, const TargetRegisterInfo *TRI) const override
MachineInstrfoldMemoryOperandImpl (MachineFunction &MF, MachineInstr *MI, unsigned OpNum, const SmallVectorImpl< MachineOperand > &MOs, unsigned Size, unsigned Alignment) const
void getUnconditionalBranch (MCInst &Branch, const MCSymbolRefExpr *BranchTarget) const override
void getTrap (MCInst &MI) const override
bool isHighLatencyDef (int opc) const override
bool hasHighOperandLatency (const InstrItineraryData *ItinData, const MachineRegisterInfo *MRI, const MachineInstr *DefMI, unsigned DefIdx, const MachineInstr *UseMI, unsigned UseIdx) const override
bool analyzeCompare (const MachineInstr *MI, unsigned &SrcReg, unsigned &SrcReg2, int &CmpMask, int &CmpValue) const override
bool optimizeCompareInstr (MachineInstr *CmpInstr, unsigned SrcReg, unsigned SrcReg2, int CmpMask, int CmpValue, const MachineRegisterInfo *MRI) const override
MachineInstroptimizeLoadInstr (MachineInstr *MI, const MachineRegisterInfo *MRI, unsigned &FoldAsLoadDefReg, MachineInstr *&DefMI) const override
 X86TargetLowering (X86TargetMachine &TM)
unsigned getJumpTableEncoding () const override
MVT getScalarShiftAmountTy (EVT LHSTy) const override
const MCExprLowerCustomJumpTableEntry (const MachineJumpTableInfo *MJTI, const MachineBasicBlock *MBB, unsigned uid, MCContext &Ctx) const override
SDValue getPICJumpTableRelocBase (SDValue Table, SelectionDAG &DAG) const override
const MCExprgetPICJumpTableRelocBaseExpr (const MachineFunction *MF, unsigned JTI, MCContext &Ctx) const override
unsigned getByValTypeAlignment (Type *Ty) const override
EVT getOptimalMemOpType (uint64_t Size, unsigned DstAlign, unsigned SrcAlign, bool IsMemset, bool ZeroMemset, bool MemcpyStrSrc, MachineFunction &MF) const override
bool isSafeMemOpType (MVT VT) const override
bool allowsMisalignedMemoryAccesses (EVT VT, unsigned AS, unsigned Align, bool *Fast) const override
SDValue LowerOperation (SDValue Op, SelectionDAG &DAG) const override
void ReplaceNodeResults (SDNode *N, SmallVectorImpl< SDValue > &Results, SelectionDAG &DAG) const override
SDValue PerformDAGCombine (SDNode *N, DAGCombinerInfo &DCI) const override
bool isTypeDesirableForOp (unsigned Opc, EVT VT) const override
bool IsDesirableToPromoteOp (SDValue Op, EVT &PVT) const override
MachineBasicBlockEmitInstrWithCustomInserter (MachineInstr *MI, MachineBasicBlock *MBB) const override
const char * getTargetNodeName (unsigned Opcode) const override
EVT getSetCCResultType (LLVMContext &Context, EVT VT) const override
 getSetCCResultType - Return the value type to use for ISD::SETCC.
void computeKnownBitsForTargetNode (const SDValue Op, APInt &KnownZero, APInt &KnownOne, const SelectionDAG &DAG, unsigned Depth=0) const override
unsigned ComputeNumSignBitsForTargetNode (SDValue Op, const SelectionDAG &DAG, unsigned Depth) const override
bool isGAPlusOffset (SDNode *N, const GlobalValue *&GA, int64_t &Offset) const override
SDValue getReturnAddressFrameIndex (SelectionDAG &DAG) const
bool ExpandInlineAsm (CallInst *CI) const override
ConstraintType getConstraintType (const std::string &Constraint) const override
 Given a constraint, return the type of constraint it is for this target.
ConstraintWeight getSingleConstraintMatchWeight (AsmOperandInfo &info, const char *constraint) const override
const char * LowerXConstraint (EVT ConstraintVT) const override
void LowerAsmOperandForConstraint (SDValue Op, std::string &Constraint, std::vector< SDValue > &Ops, SelectionDAG &DAG) const override
std::pair< unsigned, const
TargetRegisterClass * > 
getRegForInlineAsmConstraint (const std::string &Constraint, MVT VT) const override
bool isLegalAddressingMode (const AddrMode &AM, Type *Ty) const override
bool isLegalICmpImmediate (int64_t Imm) const override
bool isLegalAddImmediate (int64_t Imm) const override
int getScalingFactorCost (const AddrMode &AM, Type *Ty) const override
 Return the cost of the scaling factor used in the addressing mode represented by AM for this target, for a load/store of the specified type. If the AM is supported, the return value must be >= 0. If the AM is not supported, it returns a negative value.
bool isVectorShiftByScalarCheap (Type *Ty) const override
bool isTruncateFree (Type *Ty1, Type *Ty2) const override
bool isTruncateFree (EVT VT1, EVT VT2) const override
bool allowTruncateForTailCall (Type *Ty1, Type *Ty2) const override
bool isZExtFree (Type *Ty1, Type *Ty2) const override
bool isZExtFree (EVT VT1, EVT VT2) const override
bool isZExtFree (SDValue Val, EVT VT2) const override
bool isFMAFasterThanFMulAndFAdd (EVT VT) const override
bool isNarrowingProfitable (EVT VT1, EVT VT2) const override
bool isFPImmLegal (const APFloat &Imm, EVT VT) const override
bool isShuffleMaskLegal (const SmallVectorImpl< int > &Mask, EVT VT) const override
bool isVectorClearMaskLegal (const SmallVectorImpl< int > &Mask, EVT VT) const override
bool ShouldShrinkFPConstant (EVT VT) const override
const X86SubtargetgetSubtarget () const
bool isScalarFPTypeInSSEReg (EVT VT) const
bool isTargetFTOL () const
bool isIntegerTypeFTOL (EVT VT) const
bool shouldConvertConstantLoadToIntImm (const APInt &Imm, Type *Ty) const override
 Returns true if it is beneficial to convert a load of a constant to just the constant itself.
const char * getClearCacheBuiltinName () const override
 Intel processors have a unified instruction and data cache.
unsigned getRegisterByName (const char *RegName, EVT VT) const override
FastISelcreateFastISel (FunctionLoweringInfo &funcInfo, const TargetLibraryInfo *libInfo) const override
bool getStackCookieLocation (unsigned &AddressSpace, unsigned &Offset) const override
SDValue BuildFILD (SDValue Op, EVT SrcVT, SDValue Chain, SDValue StackSlot, SelectionDAG &DAG) const
bool isNoopAddrSpaceCast (unsigned SrcAS, unsigned DestAS) const override
 Returns true if a cast between SrcAS and DestAS is a noop.
void resetOperationActions () override
 Reset the operation actions based on target options.
bool useLoadStackGuardNode () const override
LegalizeTypeAction getPreferredVectorAction (EVT VT) const override
 Customize the preferred legalization strategy for certain types.
 X86RegisterInfo (const X86Subtarget &STI)
int getSEHRegNum (unsigned i) const
bool trackLivenessAfterRegAlloc (const MachineFunction &MF) const override
const TargetRegisterClassgetMatchingSuperRegClass (const TargetRegisterClass *A, const TargetRegisterClass *B, unsigned Idx) const override
const TargetRegisterClassgetSubClassWithSubReg (const TargetRegisterClass *RC, unsigned Idx) const override
const TargetRegisterClassgetLargestLegalSuperClass (const TargetRegisterClass *RC) const override
const TargetRegisterClassgetPointerRegClass (const MachineFunction &MF, unsigned Kind=0) const override
const TargetRegisterClassgetCrossCopyRegClass (const TargetRegisterClass *RC) const override
unsigned getRegPressureLimit (const TargetRegisterClass *RC, MachineFunction &MF) const override
const MCPhysReggetCalleeSavedRegs (const MachineFunction *MF) const override
const uint32_t * getCallPreservedMask (CallingConv::ID) const override
const uint32_t * getNoPreservedMask () const
BitVector getReservedRegs (const MachineFunction &MF) const override
bool hasBasePointer (const MachineFunction &MF) const
bool canRealignStack (const MachineFunction &MF) const
bool needsStackRealignment (const MachineFunction &MF) const override
bool hasReservedSpillSlot (const MachineFunction &MF, unsigned Reg, int &FrameIdx) const override
void eliminateFrameIndex (MachineBasicBlock::iterator MI, int SPAdj, unsigned FIOperandNum, RegScavenger *RS=nullptr) const override
unsigned getFrameRegister (const MachineFunction &MF) const override
unsigned getStackRegister () const
unsigned getBaseRegister () const
unsigned getSlotSize () const
 X86Subtarget (const std::string &TT, const std::string &CPU, const std::string &FS, X86TargetMachine &TM, unsigned StackAlignOverride)
const X86TargetLoweringgetTargetLowering () const override
const X86InstrInfogetInstrInfo () const override
const DataLayoutgetDataLayout () const override
const X86FrameLoweringgetFrameLowering () const override
const X86SelectionDAGInfogetSelectionDAGInfo () const override
const X86RegisterInfogetRegisterInfo () const override
unsigned getStackAlignment () const
unsigned getMaxInlineSizeThreshold () const
void ParseSubtargetFeatures (StringRef CPU, StringRef FS)
bool is64Bit () const
 Is this x86_64? (disregarding specific ABI / programming model)
bool is32Bit () const
bool is16Bit () const
bool isTarget64BitILP32 () const
 Is this x86_64 with the ILP32 programming model (x32 ABI)?
bool isTarget64BitLP64 () const
 Is this x86_64 with the LP64 programming model (standard AMD64, no x32)?
PICStyles::Style getPICStyle () const
void setPICStyle (PICStyles::Style Style)
bool hasCMov () const
bool hasMMX () 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 hasFp256 () const
bool hasInt256 () const
bool hasSSE4A () const
bool has3DNow () const
bool has3DNowA () const
bool hasPOPCNT () const
bool hasAES () const
bool hasPCLMUL () const
bool hasFMA () const
bool hasFMA4 () const
bool hasXOP () const
bool hasTBM () const
bool hasMOVBE () const
bool hasRDRAND () const
bool hasF16C () const
bool hasFSGSBase () const
bool hasLZCNT () const
bool hasBMI () const
bool hasBMI2 () const
bool hasRTM () const
bool hasHLE () const
bool hasADX () const
bool hasSHA () const
bool hasSGX () const
bool hasPRFCHW () const
bool hasRDSEED () const
bool hasSMAP () const
bool isBTMemSlow () const
bool isSHLDSlow () const
bool isUnalignedMemAccessFast () const
bool hasVectorUAMem () const
bool hasCmpxchg16b () const
bool useLeaForSP () const
bool hasSlowDivide () const
bool padShortFunctions () const
bool callRegIndirect () const
bool LEAusesAG () const
bool slowLEA () const
bool slowIncDec () const
bool hasCDI () const
bool hasPFI () const
bool hasERI () const
bool hasDQI () const
bool hasBWI () const
bool hasVLX () const
bool isAtom () const
bool isSLM () const
const TriplegetTargetTriple () const
bool isTargetDarwin () const
bool isTargetFreeBSD () const
bool isTargetSolaris () const
bool isTargetELF () const
bool isTargetCOFF () const
bool isTargetMacho () const
bool isTargetLinux () const
bool isTargetNaCl () const
bool isTargetNaCl32 () const
bool isTargetNaCl64 () const
bool isTargetWindowsMSVC () const
bool isTargetKnownWindowsMSVC () const
bool isTargetWindowsCygwin () const
bool isTargetWindowsGNU () const
bool isTargetCygMing () const
bool isOSWindows () const
bool isTargetWin64 () const
bool isTargetWin32 () const
bool isPICStyleSet () const
bool isPICStyleGOT () const
bool isPICStyleRIPRel () const
bool isPICStyleStubPIC () const
bool isPICStyleStubNoDynamic () const
bool isPICStyleStubAny () const
bool isCallingConvWin64 (CallingConv::ID CC) const
unsigned char ClassifyGlobalReference (const GlobalValue *GV, const TargetMachine &TM) const
unsigned char ClassifyBlockAddressReference () const
bool IsLegalToCallImmediateAddr (const TargetMachine &TM) const
const char * getBZeroEntry () const
bool hasSinCos () const
bool enableMachineScheduler () const override
 Enable the MachineScheduler pass for all X86 subtargets.
bool enableEarlyIfConversion () const override
const InstrItineraryDatagetInstrItineraryData () const override
AntiDepBreakMode getAntiDepBreakMode () const override
 X86TargetMachine (const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
const X86SubtargetgetSubtargetImpl () const override
void addAnalysisPasses (PassManagerBase &PM) override
 Register X86 analysis passes with a pass manager.
TargetPassConfigcreatePassConfig (PassManagerBase &PM) override

Static Public Member Functions

static const char * getRegisterName (unsigned RegNo)
static const char * getRegisterName (unsigned RegNo)
static bool isX86_64ExtendedReg (const MachineOperand &MO)

Public Attributes

const X86SubtargetSubtarget

Static Public Attributes

static char ID

Protected Types

enum  X86SSEEnum {
  NoMMXSSE, MMX, SSE1, SSE2,
  SSE3, SSSE3, SSE41, SSE42,
  AVX, AVX2, AVX512F
}
enum  X863DNowEnum { NoThreeDNow, ThreeDNow, ThreeDNowA }
enum  X86ProcFamilyEnum { Others, IntelAtom, IntelSLM }

Protected Member Functions

std::pair< const
TargetRegisterClass *, uint8_t > 
findRepresentativeClass (MVT VT) const override

Protected Attributes

X86ProcFamilyEnum X86ProcFamily
 X86ProcFamily - X86 processor family: Intel Atom, and others.
PICStyles::Style PICStyle
X86SSEEnum X86SSELevel
X863DNowEnum X863DNowLevel
bool HasCMov
bool HasX86_64
bool HasPOPCNT
 HasPOPCNT - True if the processor supports POPCNT.
bool HasSSE4A
 HasSSE4A - True if the processor supports SSE4A instructions.
bool HasAES
 HasAES - Target has AES instructions.
bool HasPCLMUL
 HasPCLMUL - Target has carry-less multiplication.
bool HasFMA
 HasFMA - Target has 3-operand fused multiply-add.
bool HasFMA4
 HasFMA4 - Target has 4-operand fused multiply-add.
bool HasXOP
 HasXOP - Target has XOP instructions.
bool HasTBM
 HasTBM - Target has TBM instructions.
bool HasMOVBE
 HasMOVBE - True if the processor has the MOVBE instruction.
bool HasRDRAND
 HasRDRAND - True if the processor has the RDRAND instruction.
bool HasF16C
 HasF16C - Processor has 16-bit floating point conversion instructions.
bool HasFSGSBase
 HasFSGSBase - Processor has FS/GS base insturctions.
bool HasLZCNT
 HasLZCNT - Processor has LZCNT instruction.
bool HasBMI
 HasBMI - Processor has BMI1 instructions.
bool HasBMI2
 HasBMI2 - Processor has BMI2 instructions.
bool HasRTM
 HasRTM - Processor has RTM instructions.
bool HasHLE
 HasHLE - Processor has HLE.
bool HasADX
 HasADX - Processor has ADX instructions.
bool HasSHA
 HasSHA - Processor has SHA instructions.
bool HasSGX
 HasSGX - Processor has SGX instructions.
bool HasPRFCHW
 HasPRFCHW - Processor has PRFCHW instructions.
bool HasRDSEED
 HasRDSEED - Processor has RDSEED instructions.
bool HasSMAP
 HasSMAP - Processor has SMAP instructions.
bool IsBTMemSlow
 IsBTMemSlow - True if BT (bit test) of memory instructions are slow.
bool IsSHLDSlow
 IsSHLDSlow - True if SHLD instructions are slow.
bool IsUAMemFast
 IsUAMemFast - True if unaligned memory access is fast.
bool HasVectorUAMem
bool HasCmpxchg16b
bool UseLeaForSP
bool HasSlowDivide
bool PadShortFunctions
bool CallRegIndirect
bool LEAUsesAG
bool SlowLEA
 SlowLEA - True if the LEA instruction with certain arguments is slow.
bool SlowIncDec
 SlowIncDec - True if INC and DEC instructions are slow when writing to flags.
bool HasPFI
 Processor has AVX-512 PreFetch Instructions.
bool HasERI
 Processor has AVX-512 Exponential and Reciprocal Instructions.
bool HasCDI
 Processor has AVX-512 Conflict Detection Instructions.
bool HasDQI
 Processor has AVX-512 Doubleword and Quadword instructions.
bool HasBWI
 Processor has AVX-512 Byte and Word instructions.
bool HasVLX
 Processor has AVX-512 Vector Length eXtenstions.
unsigned stackAlignment
unsigned MaxInlineSizeThreshold
Triple TargetTriple
 TargetTriple - What processor and OS we're targeting.
InstrItineraryData InstrItins
 Instruction itineraries for scheduling.

Detailed Description

template<typename T>
class llvm::final< T >

Concrete instance of DWARFUnitSection, specialized for one Unit type.

These are templated helper classes used by the format function that capture the object to be formated and the format string. When actually printed, this synthesizes the string into a temporary buffer provided and returns whether or not it is big enough.

Definition at line 23 of file FunctionTargetTransformInfo.h.


Member Typedef Documentation

template<typename T >
typedef UnitVector::iterator llvm::final< T >::iterator

Reimplemented from llvm::SmallVectorImpl< std::unique_ptr< UnitType > >.

Definition at line 65 of file DWARFUnit.h.

template<typename T >
typedef llvm::iterator_range<typename UnitVector::iterator> llvm::final< T >::iterator_range

Definition at line 66 of file DWARFUnit.h.

template<typename T >
typedef llvm::SmallVectorImpl<std::unique_ptr<UnitType> > llvm::final< T >::UnitVector

Definition at line 64 of file DWARFUnit.h.


Member Enumeration Documentation

template<typename T >
enum llvm::final::X863DNowEnum [protected]
Enumerator:
NoThreeDNow 
ThreeDNow 
ThreeDNowA 

Definition at line 53 of file X86Subtarget.h.

template<typename T >
enum llvm::final::X86ProcFamilyEnum [protected]
Enumerator:
Others 
IntelAtom 
IntelSLM 

Definition at line 57 of file X86Subtarget.h.

template<typename T >
enum llvm::final::X86SSEEnum [protected]
Enumerator:
NoMMXSSE 
MMX 
SSE1 
SSE2 
SSE3 
SSSE3 
SSE41 
SSE42 
AVX 
AVX2 
AVX512F 

Definition at line 49 of file X86Subtarget.h.


Member Function Documentation

template<typename T >
void llvm::final< T >::addAnalysisPasses ( PassManagerBase &  PM) [override, virtual]

Register X86 analysis passes with a pass manager.

Reimplemented from llvm::LLVMTargetMachine.

template<typename T >
bool llvm::final< T >::allowsMisalignedMemoryAccesses ( EVT  VT,
unsigned  AS,
unsigned  Align,
bool Fast 
) const [override, virtual]

allowsMisalignedMemoryAccesses - Returns true if the target allows unaligned memory accesses. of the specified type. Returns whether it is "fast" by reference in the second argument.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::allowTruncateForTailCall ( Type ,
Type  
) const [override, virtual]

Return true if a truncation from Ty1 to Ty2 is permitted when deciding whether a call is in tail position. Typically this means that both results would be assigned to the same register or stack slot, but it could mean the target performs adequate checks of its own before proceeding with the tail call.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::AnalyzeBranch ( MachineBasicBlock MBB,
MachineBasicBlock *&  TBB,
MachineBasicBlock *&  FBB,
SmallVectorImpl< MachineOperand > &  Cond,
bool  AllowModify 
) const [override]
template<typename T >
bool llvm::final< T >::analyzeCompare ( const MachineInstr MI,
unsigned SrcReg,
unsigned SrcReg2,
int CmpMask,
int CmpValue 
) const [override]

analyzeCompare - For a comparison instruction, return the source registers in SrcReg and SrcReg2 if having two register operands, and the value it compares against in CmpValue. Return true if the comparison instruction can be analyzed.

template<typename T >
bool llvm::final< T >::areLoadsFromSameBasePtr ( SDNode Load1,
SDNode Load2,
int64_t &  Offset1,
int64_t &  Offset2 
) const [override]

areLoadsFromSameBasePtr - This is used by the pre-regalloc scheduler to determine if two loads are loading from the same base address. It should only return true if the base pointers are the same and the only differences between the two addresses are the offset. It also returns the offsets by reference.

template<typename T >
void llvm::final< T >::breakPartialRegDependency ( MachineBasicBlock::iterator  MI,
unsigned  OpNum,
const TargetRegisterInfo TRI 
) const [override]
template<typename T >
SDValue llvm::final< T >::BuildFILD ( SDValue  Op,
EVT  SrcVT,
SDValue  Chain,
SDValue  StackSlot,
SelectionDAG DAG 
) const
template<typename T >
bool llvm::final< T >::callRegIndirect ( ) const [inline]

Definition at line 368 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::canFoldMemoryOperand ( const MachineInstr ,
const SmallVectorImpl< unsigned > &   
) const [override]

canFoldMemoryOperand - Returns true if the specified load / store is folding is possible.

template<typename T >
bool llvm::final< T >::canInsertSelect ( const MachineBasicBlock ,
const SmallVectorImpl< MachineOperand > &  Cond,
unsigned  ,
unsigned  ,
int ,
int ,
int  
) const [override]
template<typename T >
bool llvm::final< T >::canRealignStack ( const MachineFunction MF) const
template<typename T >
unsigned char llvm::final< T >::ClassifyBlockAddressReference ( ) const

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

template<typename T >
unsigned char llvm::final< T >::ClassifyGlobalReference ( const GlobalValue GV,
const TargetMachine TM 
) const

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

template<typename T >
bool llvm::final< T >::classifyLEAReg ( MachineInstr MI,
const MachineOperand Src,
unsigned  LEAOpcode,
bool  AllowSP,
unsigned NewSrc,
bool isKill,
bool isUndef,
MachineOperand ImplicitOp 
) const

Given an operand within a MachineInstr, insert preceding code to put it into the right format for a particular kind of LEA instruction. This may involve using an appropriate super-register instead (with an implicit use of the original) or creating a new virtual register and inserting COPY instructions to get the data into the right class.

Reference parameters are set to indicate how caller should add this operand to the LEA instruction.

template<typename T >
MachineInstr* llvm::final< T >::commuteInstruction ( MachineInstr MI,
bool  NewMI 
) const [override]

commuteInstruction - We have a few instructions that must be hacked on to commute them.

template<typename T >
void llvm::final< T >::computeKnownBitsForTargetNode ( const SDValue  Op,
APInt KnownZero,
APInt KnownOne,
const SelectionDAG DAG,
unsigned  Depth = 0 
) const [override, virtual]

computeKnownBitsForTargetNode - Determine which of the bits specified in Mask are known to be either zero or one and return them in the KnownZero/KnownOne bitsets.

Reimplemented from llvm::TargetLowering.

template<typename T >
unsigned llvm::final< T >::ComputeNumSignBitsForTargetNode ( SDValue  Op,
const SelectionDAG DAG,
unsigned  Depth 
) const [override, virtual]

This method can be implemented by targets that want to expose additional information about sign bits to the DAG Combiner.

ComputeNumSignBitsForTargetNode - This method can be implemented by targets that want to expose additional information about sign bits to the DAG Combiner.

Reimplemented from llvm::TargetLowering.

template<typename T >
MachineInstr* llvm::final< T >::convertToThreeAddress ( MachineFunction::iterator MFI,
MachineBasicBlock::iterator MBBI,
LiveVariables LV 
) const [override]

convertToThreeAddress - This method must be implemented by targets that set the M_CONVERTIBLE_TO_3_ADDR flag. When this flag is set, the target may be able to convert a two-address instruction into a true three-address instruction on demand. This allows the X86 target (for example) to convert ADD and SHL instructions into LEA instructions if they would require register copies due to two-addressness.

This method returns a null pointer if the transformation cannot be performed, otherwise it returns the new instruction.

template<typename T >
void llvm::final< T >::copyPhysReg ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MI,
DebugLoc  DL,
unsigned  DestReg,
unsigned  SrcReg,
bool  KillSrc 
) const [override]
template<typename T >
FastISel* llvm::final< T >::createFastISel ( FunctionLoweringInfo funcInfo,
const TargetLibraryInfo libInfo 
) const [override, virtual]

createFastISel - This method returns a target specific FastISel object, or null if the target does not support "fast" ISel.

Reimplemented from llvm::TargetLowering.

template<typename T >
TargetPassConfig* llvm::final< T >::createPassConfig ( PassManagerBase &  PM) [override, virtual]

createPassConfig - Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of CodeGen passes.

createPassConfig - Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of CodeGen passes.

Targets may override this to extend TargetPassConfig.

Reimplemented from llvm::LLVMTargetMachine.

template<typename T >
void llvm::final< T >::eliminateFrameIndex ( MachineBasicBlock::iterator  MI,
int  SPAdj,
unsigned  FIOperandNum,
RegScavenger RS = nullptr 
) const [override]
template<typename T >
MachineBasicBlock* llvm::final< T >::EmitInstrWithCustomInserter ( MachineInstr MI,
MachineBasicBlock MBB 
) const [override, virtual]

This method should be implemented by targets that mark instructions with the 'usesCustomInserter' flag. These instructions are special in various ways, which require special support to insert. The specified MachineInstr is created but not inserted into any basic blocks, and this method is called to expand it into a sequence of instructions, potentially also creating new basic blocks and control flow.

Reimplemented from llvm::TargetLowering.

template<typename T >
bool llvm::final< T >::enableEarlyIfConversion ( ) const [override]
template<typename T >
bool llvm::final< T >::enableMachineScheduler ( ) const [inline, override]

Enable the MachineScheduler pass for all X86 subtargets.

Definition at line 477 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::ExpandInlineAsm ( CallInst ) const [override, virtual]

This hook allows the target to expand an inline asm call to be explicit llvm code if it wants to. This is useful for turning simple inline asms into LLVM intrinsics, which gives the compiler more information about the behavior of the code.

Reimplemented from llvm::TargetLowering.

template<typename T >
bool llvm::final< T >::expandPostRAPseudo ( MachineBasicBlock::iterator  MI) const [override]
template<typename T >
bool llvm::final< T >::findCommutedOpIndices ( MachineInstr MI,
unsigned SrcOpIdx1,
unsigned SrcOpIdx2 
) const [override]
template<typename T >
std::pair<const TargetRegisterClass*, uint8_t> llvm::final< T >::findRepresentativeClass ( MVT  VT) const [override, protected, virtual]

Return the largest legal super-reg register class of the register class for the specified type and its associated "cost".

findRepresentativeClass - Return the largest legal super-reg register class of the register class for the specified type and its associated "cost".

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
MachineInstr* llvm::final< T >::foldMemoryOperandImpl ( MachineFunction MF,
MachineInstr MI,
const SmallVectorImpl< unsigned > &  Ops,
int  FrameIndex 
) const [override]

foldMemoryOperand - If this target supports it, fold a load or store of the specified stack slot into the specified machine instruction for the specified operand(s). If this is possible, the target should perform the folding and return true, otherwise it should return false. If it folds the instruction, it is likely that the MachineInstruction the iterator references has been changed.

template<typename T >
MachineInstr* llvm::final< T >::foldMemoryOperandImpl ( MachineFunction MF,
MachineInstr MI,
const SmallVectorImpl< unsigned > &  Ops,
MachineInstr LoadMI 
) const [override]

foldMemoryOperand - Same as the previous version except it allows folding of any load and store from / to any address, not just from a specific stack slot.

template<typename T >
MachineInstr* llvm::final< T >::foldMemoryOperandImpl ( MachineFunction MF,
MachineInstr MI,
unsigned  OpNum,
const SmallVectorImpl< MachineOperand > &  MOs,
unsigned  Size,
unsigned  Alignment 
) const
template<typename T >
llvm::final< T >::format_object1 ( const char *  fmt,
const T val 
) [inline]

Definition at line 85 of file Format.h.

template<typename T >
llvm::final< T >::format_object2 ( const char *  fmt,
const T1 val1,
const T2 &  val2 
) [inline]

Definition at line 99 of file Format.h.

template<typename T >
llvm::final< T >::format_object3 ( const char *  fmt,
const T1 val1,
const T2 &  val2,
const T3 &  val3 
) [inline]

Definition at line 114 of file Format.h.

template<typename T >
llvm::final< T >::format_object4 ( const char *  fmt,
const T1 val1,
const T2 &  val2,
const T3 &  val3,
const T4 &  val4 
) [inline]

Definition at line 130 of file Format.h.

template<typename T >
llvm::final< T >::format_object5 ( const char *  fmt,
const T1 val1,
const T2 &  val2,
const T3 &  val3,
const T4 &  val4,
const T5 &  val5 
) [inline]

Definition at line 148 of file Format.h.

template<typename T >
llvm::final< T >::format_object6 ( const char *  Fmt,
const T1 Val1,
const T2 &  Val2,
const T3 &  Val3,
const T4 &  Val4,
const T5 &  Val5,
const T6 &  Val6 
) [inline]

Definition at line 169 of file Format.h.

template<typename T >
llvm::final< T >::FunctionTargetTransformInfo ( )
template<typename T >
void llvm::final< T >::getAnalysisUsage ( AnalysisUsage ) const [override, virtual]

getAnalysisUsage - This function should be overriden by passes that need analysis information to do their job. If a pass specifies that it uses a particular analysis result to this function, it can then use the getAnalysis<AnalysisType>() function, below.

Reimplemented from llvm::Pass.

template<typename T >
AntiDepBreakMode llvm::final< T >::getAntiDepBreakMode ( ) const [inline, override]

Definition at line 487 of file X86Subtarget.h.

References llvm::TargetSubtargetInfo::ANTIDEP_CRITICAL.

template<typename T >
unsigned llvm::final< T >::getBaseRegister ( ) const [inline]

Definition at line 126 of file X86RegisterInfo.h.

template<typename T >
unsigned llvm::final< T >::getByValTypeAlignment ( Type Ty) const [override, virtual]

getByValTypeAlignment - Return the desired alignment for ByVal aggregate function arguments in the caller parameter area. For X86, aggregates that contains are placed at 16-byte boundaries while the rest are at 4-byte boundaries.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
const char* llvm::final< T >::getBZeroEntry ( ) const

This function returns the name of a function which has an interface like the non-standard bzero function, if such a function exists on the current subtarget and it is considered prefereable over memset with zero passed as the second argument. Otherwise it returns null.

template<typename T >
const MCPhysReg* llvm::final< T >::getCalleeSavedRegs ( const MachineFunction MF) const [override]

getCalleeSavedRegs - Return a null-terminated list of all of the callee-save registers on this target.

template<typename T >
const uint32_t* llvm::final< T >::getCallPreservedMask ( CallingConv::ID  ) const [override]
template<typename T >
const char* llvm::final< T >::getClearCacheBuiltinName ( ) const [inline, override, virtual]

Intel processors have a unified instruction and data cache.

Reimplemented from llvm::TargetLowering.

Definition at line 789 of file X86ISelLowering.h.

template<typename T >
ConstraintType llvm::final< T >::getConstraintType ( const std::string &  Constraint) const [override, virtual]

Given a constraint, return the type of constraint it is for this target.

Reimplemented from llvm::TargetLowering.

template<typename T >
const TargetRegisterClass* llvm::final< T >::getCrossCopyRegClass ( const TargetRegisterClass RC) const [override]

getCrossCopyRegClass - Returns a legal register class to copy a register in the specified class to or from. Returns NULL if it is possible to copy between a two registers of the specified class.

template<typename T >
const DataLayout* llvm::final< T >::getDataLayout ( ) const [inline, override]

Reimplemented from llvm::TargetLoweringBase.

Definition at line 262 of file X86Subtarget.h.

template<typename T >
std::pair<uint16_t, uint16_t> llvm::final< T >::getExecutionDomain ( const MachineInstr MI) const [override]
template<typename T >
const X86FrameLowering* llvm::final< T >::getFrameLowering ( ) const [inline, override]

Definition at line 263 of file X86Subtarget.h.

template<typename T >
unsigned llvm::final< T >::getFrameRegister ( const MachineFunction MF) const [override]
template<typename T >
unsigned llvm::final< T >::getGlobalBaseReg ( MachineFunction MF) const

getGlobalBaseReg - Return a virtual register initialized with the the global base register value. Output instructions required to initialize the register in the function entry block, if necessary.

template<typename T >
const X86InstrInfo* llvm::final< T >::getInstrInfo ( ) const [inline, override]

Definition at line 261 of file X86Subtarget.h.

template<typename T >
const InstrItineraryData* llvm::final< T >::getInstrItineraryData ( ) const [inline, override]

getInstrItins = Return the instruction itineraries based on the subtarget selection.

Definition at line 483 of file X86Subtarget.h.

template<typename T >
unsigned llvm::final< T >::getJumpTableEncoding ( ) const [override, virtual]

Return the entry encoding for a jump table in the current function. The returned value is a member of the MachineJumpTableInfo::JTEntryKind enum.

getJumpTableEncoding - Return the entry encoding for a jump table in the current function. The returned value is a member of the MachineJumpTableInfo::JTEntryKind enum.

Reimplemented from llvm::TargetLowering.

template<typename T >
const TargetRegisterClass* llvm::final< T >::getLargestLegalSuperClass ( const TargetRegisterClass RC) const [override]
template<typename T >
const TargetRegisterClass* llvm::final< T >::getMatchingSuperRegClass ( const TargetRegisterClass A,
const TargetRegisterClass B,
unsigned  Idx 
) const [override]

getMatchingSuperRegClass - Return a subclass of the specified register class A so that each register in it has a sub-register of the specified sub-register index which is in the specified register class B.

template<typename T >
unsigned llvm::final< T >::getMaxInlineSizeThreshold ( ) const [inline]

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

Definition at line 280 of file X86Subtarget.h.

template<typename T >
void llvm::final< T >::getNoopForMachoTarget ( MCInst NopInst) const [override]
template<typename T >
const uint32_t* llvm::final< T >::getNoPreservedMask ( ) const
template<typename T >
unsigned llvm::final< T >::getOpcodeAfterMemoryUnfold ( unsigned  Opc,
bool  UnfoldLoad,
bool  UnfoldStore,
unsigned LoadRegIndex = nullptr 
) const [override]

getOpcodeAfterMemoryUnfold - Returns the opcode of the would be new instruction after load / store are unfolded from an instruction of the specified opcode. It returns zero if the specified unfolding is not possible. If LoadRegIndex is non-null, it is filled in with the operand index of the operand which will hold the register holding the loaded value.

template<typename T >
EVT llvm::final< T >::getOptimalMemOpType ( uint64_t  Size,
unsigned  DstAlign,
unsigned  SrcAlign,
bool  IsMemset,
bool  ZeroMemset,
bool  MemcpyStrSrc,
MachineFunction MF 
) const [override, virtual]

getOptimalMemOpType - Returns the target specific optimal type for load and store operations as a result of memset, memcpy, and memmove lowering. If DstAlign is zero that means it's safe to destination alignment can satisfy any constraint. Similarly if SrcAlign is zero it means there isn't a need to check it against alignment requirement, probably because the source does not need to be loaded. If 'IsMemset' is true, that means it's expanding a memset. If 'ZeroMemset' is true, that means it's a memset of zero. 'MemcpyStrSrc' indicates whether the memcpy source is constant so it does not need to be loaded. It returns EVT::Other if the type should be determined using generic target-independent logic.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
unsigned llvm::final< T >::getPartialRegUpdateClearance ( const MachineInstr MI,
unsigned  OpNum,
const TargetRegisterInfo TRI 
) const [override]
template<typename T >
SDValue llvm::final< T >::getPICJumpTableRelocBase ( SDValue  Table,
SelectionDAG DAG 
) const [override, virtual]

getPICJumpTableRelocaBase - Returns relocation base for the given PIC jumptable.

Reimplemented from llvm::TargetLowering.

template<typename T >
const MCExpr* llvm::final< T >::getPICJumpTableRelocBaseExpr ( const MachineFunction MF,
unsigned  JTI,
MCContext Ctx 
) const [override, virtual]

This returns the relocation base for the given PIC jumptable, the same as getPICJumpTableRelocBase, but as an MCExpr.

getPICJumpTableRelocBaseExpr - This returns the relocation base for the given PIC jumptable, the same as getPICJumpTableRelocBase, but as an MCExpr.

Reimplemented from llvm::TargetLowering.

template<typename T >
PICStyles::Style llvm::final< T >::getPICStyle ( ) const [inline]

Definition at line 318 of file X86Subtarget.h.

template<typename T >
const TargetRegisterClass* llvm::final< T >::getPointerRegClass ( const MachineFunction MF,
unsigned  Kind = 0 
) const [override]

getPointerRegClass - Returns a TargetRegisterClass used for pointer values.

template<typename T >
LegalizeTypeAction llvm::final< T >::getPreferredVectorAction ( EVT  VT) const [override, virtual]

Customize the preferred legalization strategy for certain types.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
std::pair<unsigned, const TargetRegisterClass*> llvm::final< T >::getRegForInlineAsmConstraint ( const std::string &  Constraint,
MVT  VT 
) const [override, virtual]

getRegForInlineAsmConstraint - Given a physical register constraint (e.g. {edx}), return the register number and the register class for the register. This should only be used for C_Register constraints. On error, this returns a register number of 0.

Reimplemented from llvm::TargetLowering.

template<typename T >
unsigned llvm::final< T >::getRegisterByName ( const char *  RegName,
EVT  VT 
) const [override, virtual]

Return the register ID of the name passed in. Used by named register global variables extension. There is no target-independent behaviour so the default action is to bail.

Reimplemented from llvm::TargetLowering.

template<typename T >
const X86RegisterInfo& llvm::final< T >::getRegisterInfo ( ) const [inline]

getRegisterInfo - TargetInstrInfo is a superset of MRegister info. As such, whenever a client has an instance of instruction info, it should always be able to get register info as well (through this method).

Definition at line 175 of file X86InstrInfo.h.

template<typename T >
const X86RegisterInfo* llvm::final< T >::getRegisterInfo ( ) const [inline, override]

Definition at line 269 of file X86Subtarget.h.

template<typename T >
static const char* llvm::final< T >::getRegisterName ( unsigned  RegNo) [static]
template<typename T >
static const char* llvm::final< T >::getRegisterName ( unsigned  RegNo) [static]
template<typename T >
unsigned llvm::final< T >::getRegPressureLimit ( const TargetRegisterClass RC,
MachineFunction MF 
) const [override]
template<typename T >
BitVector llvm::final< T >::getReservedRegs ( const MachineFunction MF) const [override]

getReservedRegs - Returns a bitset indexed by physical register number indicating if a register is a special register that has particular uses and should be considered unavailable at all times, e.g. SP, RA. This is used by register scavenger to determine what registers are free.

template<typename T >
SDValue llvm::final< T >::getReturnAddressFrameIndex ( SelectionDAG DAG) const
template<typename T >
MVT llvm::final< T >::getScalarShiftAmountTy ( EVT  LHSTy) const [inline, override, virtual]

Reimplemented from llvm::TargetLoweringBase.

Definition at line 540 of file X86ISelLowering.h.

References llvm::MVT::i8.

template<typename T >
int llvm::final< T >::getScalingFactorCost ( const AddrMode AM,
Type Ty 
) const [override, virtual]

Return the cost of the scaling factor used in the addressing mode represented by AM for this target, for a load/store of the specified type. If the AM is supported, the return value must be >= 0. If the AM is not supported, it returns a negative value.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
int llvm::final< T >::getSEHRegNum ( unsigned  i) const
template<typename T >
const X86SelectionDAGInfo* llvm::final< T >::getSelectionDAGInfo ( ) const [inline, override]

Definition at line 266 of file X86Subtarget.h.

template<typename T >
EVT llvm::final< T >::getSetCCResultType ( LLVMContext Context,
EVT  VT 
) const [override, virtual]

getSetCCResultType - Return the value type to use for ISD::SETCC.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
ConstraintWeight llvm::final< T >::getSingleConstraintMatchWeight ( AsmOperandInfo info,
const char *  constraint 
) const [override, virtual]

Examine constraint string and operand type and determine a weight value. The operand object must already have been set up with the operand type.

Reimplemented from llvm::TargetLowering.

template<typename T >
unsigned llvm::final< T >::getSlotSize ( ) const [inline]

Definition at line 128 of file X86RegisterInfo.h.

template<typename T >
unsigned llvm::final< T >::getStackAlignment ( ) const [inline]

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

template<typename T >
bool llvm::final< T >::getStackCookieLocation ( unsigned AddressSpace,
unsigned Offset 
) const [override, virtual]

getStackCookieLocation - Return true if the target stores stack protector cookies at a fixed offset in some non-standard address space, and populates the address space and offset as appropriate.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
unsigned llvm::final< T >::getStackRegister ( ) const [inline]

Definition at line 125 of file X86RegisterInfo.h.

template<typename T >
const TargetRegisterClass* llvm::final< T >::getSubClassWithSubReg ( const TargetRegisterClass RC,
unsigned  Idx 
) const [override]
template<typename T >
const X86Subtarget* llvm::final< T >::getSubtarget ( ) const [inline]

getSubtarget - This method returns a pointer to the specified type of TargetSubtargetInfo. In debug builds, it verifies that the object being returned is of the correct type.

Reimplemented from llvm::TargetMachine.

Definition at line 762 of file X86ISelLowering.h.

template<typename T >
const X86Subtarget* llvm::final< T >::getSubtargetImpl ( ) const [inline, override, virtual]

getSubtargetImpl - virtual method implemented by subclasses that returns a reference to that target's TargetSubtargetInfo-derived member variable.

Reimplemented from llvm::TargetMachine.

Definition at line 34 of file X86TargetMachine.h.

template<typename T >
const X86TargetLowering* llvm::final< T >::getTargetLowering ( ) const [inline, override]

Definition at line 258 of file X86Subtarget.h.

template<typename T >
const char* llvm::final< T >::getTargetNodeName ( unsigned  Opcode) const [override, virtual]

getTargetNodeName - This method returns the name of a target specific DAG node.

Reimplemented from llvm::TargetLowering.

template<typename T >
const Triple& llvm::final< T >::getTargetTriple ( ) const [inline]

Reimplemented from llvm::TargetMachine.

Definition at line 382 of file X86Subtarget.h.

template<typename T >
void llvm::final< T >::getTrap ( MCInst MI) const [override]
template<typename T >
void llvm::final< T >::getUnconditionalBranch ( MCInst Branch,
const MCSymbolRefExpr BranchTarget 
) const [override]
template<typename T >
unsigned llvm::final< T >::getUndefRegClearance ( const MachineInstr MI,
unsigned OpNum,
const TargetRegisterInfo TRI 
) const [override]
template<typename T >
UnitType* llvm::final< T >::getUnitForOffset ( uint32_t  Offset) const [inline, virtual]

Returns the Unit that contains the given section offset in the same section this Unit originated from.

Implements llvm::DWARFUnitSectionBase.

Definition at line 68 of file DWARFUnit.h.

References llvm::sys::path::begin(), and llvm::sys::path::end().

template<typename T >
void llvm::final< T >::getUnrollingPreferences ( Loop L,
TargetTransformInfo::UnrollingPreferences UP 
) const [inline]

Definition at line 43 of file FunctionTargetTransformInfo.h.

template<typename T >
bool llvm::final< T >::has3DNow ( ) const [inline]

Definition at line 335 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::has3DNowA ( ) const [inline]

Definition at line 336 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasADX ( ) const [inline]

Definition at line 354 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasAES ( ) const [inline]

Definition at line 338 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasAVX ( ) const [inline]

Definition at line 329 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasAVX2 ( ) const [inline]

Definition at line 330 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasAVX512 ( ) const [inline]

Definition at line 331 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasBasePointer ( const MachineFunction MF) const
template<typename T >
bool llvm::final< T >::hasBMI ( ) const [inline]

Definition at line 350 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasBMI2 ( ) const [inline]

Definition at line 351 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasBWI ( ) const [inline]

Definition at line 376 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasCDI ( ) const [inline]

Definition at line 372 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasCMov ( ) const [inline]

Definition at line 321 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasCmpxchg16b ( ) const [inline]

Definition at line 364 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasDQI ( ) const [inline]

Definition at line 375 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasERI ( ) const [inline]

Definition at line 374 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasF16C ( ) const [inline]

Definition at line 347 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasFMA ( ) const [inline]

Definition at line 340 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasFMA4 ( ) const [inline]

Definition at line 342 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasFp256 ( ) const [inline]

Definition at line 332 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasFSGSBase ( ) const [inline]

Definition at line 348 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasHighOperandLatency ( const InstrItineraryData ItinData,
const MachineRegisterInfo MRI,
const MachineInstr DefMI,
unsigned  DefIdx,
const MachineInstr UseMI,
unsigned  UseIdx 
) const [override]
template<typename T >
bool llvm::final< T >::hasHLE ( ) const [inline]

Definition at line 353 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasInt256 ( ) const [inline]

Definition at line 333 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasLZCNT ( ) const [inline]

Definition at line 349 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasMMX ( ) const [inline]

Definition at line 322 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasMOVBE ( ) const [inline]

Definition at line 345 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasPCLMUL ( ) const [inline]

Definition at line 339 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasPFI ( ) const [inline]

Definition at line 373 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasPOPCNT ( ) const [inline]

Definition at line 337 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasPRFCHW ( ) const [inline]

Definition at line 357 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasRDRAND ( ) const [inline]

Definition at line 346 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasRDSEED ( ) const [inline]

Definition at line 358 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasReservedSpillSlot ( const MachineFunction MF,
unsigned  Reg,
int FrameIdx 
) const [override]
template<typename T >
bool llvm::final< T >::hasRTM ( ) const [inline]

Definition at line 352 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasSGX ( ) const [inline]

Definition at line 356 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasSHA ( ) const [inline]

Definition at line 355 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasSinCos ( ) const

This function returns true if the target has sincos() routine in its compiler runtime or math libraries.

template<typename T >
bool llvm::final< T >::hasSlowDivide ( ) const [inline]

Definition at line 366 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasSMAP ( ) const [inline]

Definition at line 359 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasSSE1 ( ) const [inline]

Definition at line 323 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasSSE2 ( ) const [inline]

Definition at line 324 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasSSE3 ( ) const [inline]

Definition at line 325 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasSSE41 ( ) const [inline]

Definition at line 327 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasSSE42 ( ) const [inline]

Definition at line 328 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasSSE4A ( ) const [inline]

Definition at line 334 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasSSSE3 ( ) const [inline]

Definition at line 326 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasTBM ( ) const [inline]

Definition at line 344 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasVectorUAMem ( ) const [inline]

Definition at line 363 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasVLX ( ) const [inline]

Definition at line 377 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::hasXOP ( ) const [inline]

Definition at line 343 of file X86Subtarget.h.

template<typename T >
unsigned llvm::final< T >::InsertBranch ( MachineBasicBlock MBB,
MachineBasicBlock TBB,
MachineBasicBlock FBB,
const SmallVectorImpl< MachineOperand > &  Cond,
DebugLoc  DL 
) const [override]
template<typename T >
void llvm::final< T >::insertSelect ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MI,
DebugLoc  DL,
unsigned  DstReg,
const SmallVectorImpl< MachineOperand > &  Cond,
unsigned  TrueReg,
unsigned  FalseReg 
) const [override]
template<typename T >
bool llvm::final< T >::is16Bit ( ) const [inline]

Definition at line 302 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::is32Bit ( ) const [inline]

Definition at line 298 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::is64Bit ( ) const [inline]

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

Definition at line 294 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isAtom ( ) const [inline]

Definition at line 379 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isBTMemSlow ( ) const [inline]

Definition at line 360 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isCallingConvWin64 ( CallingConv::ID  CC) const [inline]
template<typename T >
bool llvm::final< T >::isCoalescableExtInstr ( const MachineInstr MI,
unsigned SrcReg,
unsigned DstReg,
unsigned SubIdx 
) const [override]

isCoalescableExtInstr - Return true if the instruction is a "coalescable" extension instruction. That is, it's like a copy where it's legal for the source to overlap the destination. e.g. X86::MOVSX64rr32. If this returns true, then it's expected the pre-extension value is available as a subreg of the result register. This also returns the sub-register index in SubIdx.

template<typename T >
bool llvm::final< T >::IsDesirableToPromoteOp ( SDValue  Op,
EVT PVT 
) const [override, virtual]

isTypeDesirable - Return true if the target has native support for the specified value type and it is 'desirable' to use the type. e.g. On x86 i16 is legal, but undesirable since i16 instruction encodings are longer and some i16 instructions are slow.

Reimplemented from llvm::TargetLowering.

template<typename T >
bool llvm::final< T >::isFMAFasterThanFMulAndFAdd ( EVT  VT) const [override, virtual]

isFMAFasterThanFMulAndFAdd - Return true if an FMA operation is faster than a pair of fmul and fadd instructions. fmuladd intrinsics will be expanded to FMAs when this method returns true, otherwise fmuladd is expanded to fmul + fadd.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isFPImmLegal ( const APFloat Imm,
EVT  VT 
) const [override, virtual]

isFPImmLegal - Returns true if the target can instruction select the specified FP immediate natively. If false, the legalizer will materialize the FP immediate as a load from a constant pool.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isGAPlusOffset ( SDNode N,
const GlobalValue *&  GA,
int64_t &  Offset 
) const [override, virtual]

Returns true (and the GlobalValue and the offset) if the node is a GlobalAddress + offset.

isGAPlusOffset - Returns true (and the GlobalValue and the offset) if the node is a GlobalAddress + offset.

Reimplemented from llvm::TargetLowering.

template<typename T >
bool llvm::final< T >::isHighLatencyDef ( int  opc) const [override]
template<typename T >
bool llvm::final< T >::isIntegerTypeFTOL ( EVT  VT) const [inline]

isIntegerTypeFTOL - Return true if the MSVC _ftol2 routine should be used for fptoui to the given type.

Definition at line 779 of file X86ISelLowering.h.

References llvm::MVT::i64.

template<typename T >
bool llvm::final< T >::isLegalAddImmediate ( int64_t  Imm) const [override, virtual]

isLegalAddImmediate - Return true if the specified immediate is legal add immediate, that is the target has add instructions which can add a register and the immediate without having to materialize the immediate into a register.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isLegalAddressingMode ( const AddrMode AM,
Type Ty 
) const [override, virtual]

isLegalAddressingMode - Return true if the addressing mode represented by AM is legal for this target, for a load/store of the specified type.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isLegalICmpImmediate ( int64_t  Imm) const [override, virtual]

isLegalICmpImmediate - Return true if the specified immediate is legal icmp immediate, that is the target has icmp instructions which can compare a register against the immediate without having to materialize the immediate into a register.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::IsLegalToCallImmediateAddr ( const TargetMachine TM) const

IsLegalToCallImmediateAddr - Return true if the subtarget allows calls to immediate address.

template<typename T >
unsigned llvm::final< T >::isLoadFromStackSlot ( const MachineInstr MI,
int FrameIndex 
) const [override]
template<typename T >
unsigned llvm::final< T >::isLoadFromStackSlotPostFE ( const MachineInstr MI,
int FrameIndex 
) const [override]

isLoadFromStackSlotPostFE - Check for post-frame ptr elimination stack locations as well. This uses a heuristic so it isn't reliable for correctness.

template<typename T >
bool llvm::final< T >::isNarrowingProfitable ( EVT  VT1,
EVT  VT2 
) const [override, virtual]

isNarrowingProfitable - Return true if it's profitable to narrow operations of type VT1 to VT2. e.g. on x86, it's profitable to narrow from i32 to i8 but not from i32 to i16.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isNoopAddrSpaceCast ( unsigned  SrcAS,
unsigned  DestAS 
) const [override, virtual]

Returns true if a cast between SrcAS and DestAS is a noop.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isOSWindows ( ) const [inline]

Definition at line 419 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isPICStyleGOT ( ) const [inline]

Definition at line 430 of file X86Subtarget.h.

References llvm::ARMCP::GOT.

template<typename T >
bool llvm::final< T >::isPICStyleRIPRel ( ) const [inline]

Definition at line 431 of file X86Subtarget.h.

References llvm::PICStyles::RIPRel.

template<typename T >
bool llvm::final< T >::isPICStyleSet ( ) const [inline]

Definition at line 429 of file X86Subtarget.h.

References llvm::None.

template<typename T >
bool llvm::final< T >::isPICStyleStubAny ( ) const [inline]

Definition at line 440 of file X86Subtarget.h.

References llvm::PICStyles::StubDynamicNoPIC, and llvm::PICStyles::StubPIC.

template<typename T >
bool llvm::final< T >::isPICStyleStubNoDynamic ( ) const [inline]

Definition at line 437 of file X86Subtarget.h.

References llvm::PICStyles::StubDynamicNoPIC.

template<typename T >
bool llvm::final< T >::isPICStyleStubPIC ( ) const [inline]

Definition at line 433 of file X86Subtarget.h.

References llvm::PICStyles::StubPIC.

template<typename T >
bool llvm::final< T >::isReallyTriviallyReMaterializable ( const MachineInstr MI,
AliasAnalysis AA 
) const [override]
template<typename T >
bool llvm::final< T >::isSafeMemOpType ( MVT  VT) const [override, virtual]

isSafeMemOpType - Returns true if it's safe to use load / store of the specified type to expand memcpy / memset inline. This is mostly true for all types except for some special cases. For example, on X86 targets without SSE2 f64 load / store are done with fldl / fstpl which also does type conversion. Note the specified type doesn't have to be legal as the hook is used before type legalization.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isSafeToClobberEFLAGS ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  I 
) const

isSafeToClobberEFLAGS - Return true if it's safe insert an instruction tha would clobber the EFLAGS condition register. Note the result may be conservative. If it cannot definitely determine the safety after visiting a few instructions in each direction it assumes it's not safe.

template<typename T >
bool llvm::final< T >::isSafeToMoveRegClassDefs ( const TargetRegisterClass RC) const [override]

isSafeToMoveRegClassDefs - Return true if it's safe to move a machine instruction that defines the specified register class.

template<typename T >
bool llvm::final< T >::isScalarFPTypeInSSEReg ( EVT  VT) const [inline]

isScalarFPTypeInSSEReg - Return true if the specified scalar FP type is computed in an SSE register, not on the X87 floating point stack.

Definition at line 768 of file X86ISelLowering.h.

References llvm::MVT::f32, and llvm::MVT::f64.

template<typename T >
bool llvm::final< T >::isSHLDSlow ( ) const [inline]

Definition at line 361 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isShuffleMaskLegal ( const SmallVectorImpl< int > &  Mask,
EVT  VT 
) const [override, virtual]

isShuffleMaskLegal - Targets can use this to indicate that they only support *some* VECTOR_SHUFFLE operations, those with specific masks. By default, if a target supports the VECTOR_SHUFFLE node, all mask values are assumed to be legal.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isSLM ( ) const [inline]

Definition at line 380 of file X86Subtarget.h.

template<typename T >
unsigned llvm::final< T >::isStoreToStackSlot ( const MachineInstr MI,
int FrameIndex 
) const [override]
template<typename T >
unsigned llvm::final< T >::isStoreToStackSlotPostFE ( const MachineInstr MI,
int FrameIndex 
) const [override]

isStoreToStackSlotPostFE - Check for post-frame ptr elimination stack locations as well. This uses a heuristic so it isn't reliable for correctness.

template<typename T >
bool llvm::final< T >::isTarget64BitILP32 ( ) const [inline]

Is this x86_64 with the ILP32 programming model (x32 ABI)?

Definition at line 307 of file X86Subtarget.h.

References llvm::Triple::GNUX32, and llvm::Triple::NaCl.

template<typename T >
bool llvm::final< T >::isTarget64BitLP64 ( ) const [inline]

Is this x86_64 with the LP64 programming model (standard AMD64, no x32)?

Definition at line 313 of file X86Subtarget.h.

References llvm::Triple::GNUX32, and llvm::Triple::NaCl.

template<typename T >
bool llvm::final< T >::isTargetCOFF ( ) const [inline]

Definition at line 393 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetCygMing ( ) const [inline]

Definition at line 417 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetDarwin ( ) const [inline]

Definition at line 384 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetELF ( ) const [inline]

Definition at line 392 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetFreeBSD ( ) const [inline]

Definition at line 385 of file X86Subtarget.h.

References llvm::Triple::FreeBSD.

template<typename T >
bool llvm::final< T >::isTargetFTOL ( ) const

isTargetFTOL - Return true if the target uses the MSVC _ftol2 routine for fptoui.

template<typename T >
bool llvm::final< T >::isTargetKnownWindowsMSVC ( ) const [inline]

Definition at line 405 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetLinux ( ) const [inline]

Definition at line 396 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetMacho ( ) const [inline]

Definition at line 394 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetNaCl ( ) const [inline]

Definition at line 397 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetNaCl32 ( ) const [inline]

Definition at line 398 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetNaCl64 ( ) const [inline]

Definition at line 399 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetSolaris ( ) const [inline]

Definition at line 388 of file X86Subtarget.h.

References llvm::Triple::Solaris.

template<typename T >
bool llvm::final< T >::isTargetWin32 ( ) const [inline]

Definition at line 425 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetWin64 ( ) const [inline]

Definition at line 421 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetWindowsCygwin ( ) const [inline]

Definition at line 409 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetWindowsGNU ( ) const [inline]

Definition at line 413 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTargetWindowsMSVC ( ) const [inline]

Definition at line 401 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isTruncateFree ( Type Ty1,
Type Ty2 
) const [override, virtual]

isTruncateFree - Return true if it's free to truncate a value of type Ty1 to type Ty2. e.g. On x86 it's free to truncate a i32 value in register EAX to i16 by referencing its sub-register AX.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isTruncateFree ( EVT  VT1,
EVT  VT2 
) const [override, virtual]

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isTypeDesirableForOp ( unsigned  Opc,
EVT  VT 
) const [override, virtual]

isTypeDesirableForOp - Return true if the target has native support for the specified value type and it is 'desirable' to use the type for the given node type. e.g. On x86 i16 is legal, but undesirable since i16 instruction encodings are longer and some i16 instructions are slow.

Reimplemented from llvm::TargetLowering.

template<typename T >
bool llvm::final< T >::isUnalignedMemAccessFast ( ) const [inline]

Definition at line 362 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::isUnpredicatedTerminator ( const MachineInstr MI) const [override]
template<typename T >
bool llvm::final< T >::isVectorClearMaskLegal ( const SmallVectorImpl< int > &  Mask,
EVT  VT 
) const [override, virtual]

isVectorClearMaskLegal - Similar to isShuffleMaskLegal. This is used by Targets can use this to indicate if there is a suitable VECTOR_SHUFFLE that can be used to replace a VAND with a constant pool entry.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isVectorShiftByScalarCheap ( Type Ty) const [override, virtual]

Return true if it's significantly cheaper to shift a vector by a uniform scalar than by an amount which will vary across each lane. On x86, for example, there is a "psllw" instruction for the former case, but no simple instruction for a general "a << b" operation on vectors.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
static bool llvm::final< T >::isX86_64ExtendedReg ( const MachineOperand MO) [inline, static]
template<typename T >
bool llvm::final< T >::isZExtFree ( Type Ty1,
Type Ty2 
) const [override, virtual]

isZExtFree - Return true if any actual instruction that defines a value of type Ty1 implicit zero-extends the value to Ty2 in the result register. This does not necessarily include registers defined in unknown ways, such as incoming arguments, or copies from unknown virtual registers. Also, if isTruncateFree(Ty2, Ty1) is true, this does not necessarily apply to truncate instructions. e.g. on x86-64, all instructions that define 32-bit values implicit zero-extend the result out to 64 bits.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isZExtFree ( EVT  VT1,
EVT  VT2 
) const [override, virtual]

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::isZExtFree ( SDValue  Val,
EVT  VT2 
) const [override, virtual]

Return true if zero-extending the specific node Val to type VT2 is free (either because it's implicitly zero-extended such as ARM ldrb / ldrh or because it's folded such as X86 zero-extending loads).

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::LEAusesAG ( ) const [inline]

Definition at line 369 of file X86Subtarget.h.

template<typename T >
void llvm::final< T >::loadRegFromAddr ( MachineFunction MF,
unsigned  DestReg,
SmallVectorImpl< MachineOperand > &  Addr,
const TargetRegisterClass RC,
MachineInstr::mmo_iterator  MMOBegin,
MachineInstr::mmo_iterator  MMOEnd,
SmallVectorImpl< MachineInstr * > &  NewMIs 
) const
template<typename T >
void llvm::final< T >::loadRegFromStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MI,
unsigned  DestReg,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI 
) const [override]
template<typename T >
void llvm::final< T >::LowerAsmOperandForConstraint ( SDValue  Op,
std::string &  Constraint,
std::vector< SDValue > &  Ops,
SelectionDAG DAG 
) const [override, virtual]

LowerAsmOperandForConstraint - Lower the specified operand into the Ops vector. If it is invalid, don't add anything to Ops. If hasMemory is true it means one of the asm constraint of the inline asm instruction being processed is 'm'.

Reimplemented from llvm::TargetLowering.

template<typename T >
const MCExpr* llvm::final< T >::LowerCustomJumpTableEntry ( const MachineJumpTableInfo MJTI,
const MachineBasicBlock MBB,
unsigned  uid,
MCContext Ctx 
) const [override, virtual]

Reimplemented from llvm::TargetLowering.

template<typename T >
SDValue llvm::final< T >::LowerOperation ( SDValue  Op,
SelectionDAG DAG 
) const [override, virtual]

LowerOperation - Provide custom lowering hooks for some operations.

Reimplemented from llvm::TargetLowering.

template<typename T >
const char* llvm::final< T >::LowerXConstraint ( EVT  ConstraintVT) const [override, virtual]

Try to replace an X constraint, which matches anything, with another that has more specific requirements based on the type of the corresponding operand. This returns null if there is no replacement to make.

LowerXConstraint - try to replace an X constraint, which matches anything, with another that has more specific requirements based on the type of the corresponding operand.

Reimplemented from llvm::TargetLowering.

template<typename T >
bool llvm::final< T >::needsStackRealignment ( const MachineFunction MF) const [override]
template<typename T >
bool llvm::final< T >::optimizeCompareInstr ( MachineInstr CmpInstr,
unsigned  SrcReg,
unsigned  SrcReg2,
int  CmpMask,
int  CmpValue,
const MachineRegisterInfo MRI 
) const [override]

optimizeCompareInstr - Check if there exists an earlier instruction that operates on the same source operands and sets flags in the same way as Compare; remove Compare if possible.

template<typename T >
MachineInstr* llvm::final< T >::optimizeLoadInstr ( MachineInstr MI,
const MachineRegisterInfo MRI,
unsigned FoldAsLoadDefReg,
MachineInstr *&  DefMI 
) const [override]

optimizeLoadInstr - Try to remove the load by folding it to a register operand at the use. We fold the load instructions if and only if the def and use are in the same BB. We only look at one load and see whether it can be folded into MI. FoldAsLoadDefReg is the virtual register defined by the load we are trying to fold. DefMI returns the machine instruction that defines FoldAsLoadDefReg, and the function returns the machine instruction generated due to folding.

template<typename T >
bool llvm::final< T >::padShortFunctions ( ) const [inline]

Definition at line 367 of file X86Subtarget.h.

template<typename T >
void llvm::final< T >::ParseSubtargetFeatures ( StringRef  CPU,
StringRef  FS 
)

ParseSubtargetFeatures - Parses features string setting specified subtarget options. Definition of function is auto generated by tblgen.

template<typename T >
SDValue llvm::final< T >::PerformDAGCombine ( SDNode N,
DAGCombinerInfo DCI 
) const [override, virtual]

This method will be invoked for all target nodes and for any target-independent nodes that the target has registered with invoke it for.

The semantics are as follows: Return Value: SDValue.Val == 0 - No change was made SDValue.Val == N - N was replaced, is dead, and is already handled. otherwise - N should be replaced by the returned Operand.

In addition, methods provided by DAGCombinerInfo may be used to perform more complex transformations.

Reimplemented from llvm::TargetLowering.

template<typename T >
bool llvm::final< T >::printAliasInstr ( const MCInst MI,
raw_ostream OS 
)
template<typename T >
void llvm::final< T >::printAVXCC ( const MCInst MI,
unsigned  Op,
raw_ostream O 
)
template<typename T >
void llvm::final< T >::printAVXCC ( const MCInst MI,
unsigned  Op,
raw_ostream OS 
)
template<typename T >
void llvm::final< T >::printCustomAliasOperand ( const MCInst MI,
unsigned  OpIdx,
unsigned  PrintMethodIdx,
raw_ostream O 
)
template<typename T >
void llvm::final< T >::printDstIdx ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
)
template<typename T >
void llvm::final< T >::printDstIdx ( const MCInst MI,
unsigned  OpNo,
raw_ostream OS 
)
template<typename T >
void llvm::final< T >::printDstIdx16 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 115 of file X86ATTInstPrinter.h.

template<typename T >
void llvm::final< T >::printDstIdx16 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 126 of file X86IntelInstPrinter.h.

template<typename T >
void llvm::final< T >::printDstIdx32 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 118 of file X86ATTInstPrinter.h.

template<typename T >
void llvm::final< T >::printDstIdx32 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 130 of file X86IntelInstPrinter.h.

template<typename T >
void llvm::final< T >::printDstIdx64 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 121 of file X86ATTInstPrinter.h.

template<typename T >
void llvm::final< T >::printDstIdx64 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 134 of file X86IntelInstPrinter.h.

template<typename T >
void llvm::final< T >::printDstIdx8 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 112 of file X86ATTInstPrinter.h.

template<typename T >
void llvm::final< T >::printDstIdx8 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 122 of file X86IntelInstPrinter.h.

template<typename T >
void llvm::final< T >::printf128mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 90 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printf128mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 92 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printf256mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 93 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printf256mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 96 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printf32mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 80 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printf32mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 81 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printf512mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 96 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printf512mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 100 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printf64mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 84 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printf64mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 84 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printf80mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 87 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printf80mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 88 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi128mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 68 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi128mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 72 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi16mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 56 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi16mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 63 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi256mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 72 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi256mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 75 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi32mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 60 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi32mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 66 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi512mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 76 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi512mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 78 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi64mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 64 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi64mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 69 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi8mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 52 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printi8mem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 60 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printInst ( const MCInst MI,
raw_ostream OS,
StringRef  Annot 
) [override, virtual]

printInst - Print the specified MCInst to the specified raw_ostream.

Implements llvm::MCInstPrinter.

template<typename T >
void llvm::final< T >::printInst ( const MCInst MI,
raw_ostream OS,
StringRef  Annot 
) [override, virtual]

printInst - Print the specified MCInst to the specified raw_ostream.

Implements llvm::MCInstPrinter.

template<typename T >
void llvm::final< T >::printInstruction ( const MCInst MI,
raw_ostream O 
)
template<typename T >
void llvm::final< T >::printInstruction ( const MCInst MI,
raw_ostream OS 
)
template<typename T >
void llvm::final< T >::printMemOffs16 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 127 of file X86ATTInstPrinter.h.

template<typename T >
void llvm::final< T >::printMemOffs16 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 142 of file X86IntelInstPrinter.h.

template<typename T >
void llvm::final< T >::printMemOffs32 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 130 of file X86ATTInstPrinter.h.

template<typename T >
void llvm::final< T >::printMemOffs32 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 146 of file X86IntelInstPrinter.h.

template<typename T >
void llvm::final< T >::printMemOffs64 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 133 of file X86ATTInstPrinter.h.

template<typename T >
void llvm::final< T >::printMemOffs64 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 150 of file X86IntelInstPrinter.h.

template<typename T >
void llvm::final< T >::printMemOffs8 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 124 of file X86ATTInstPrinter.h.

template<typename T >
void llvm::final< T >::printMemOffs8 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 138 of file X86IntelInstPrinter.h.

template<typename T >
void llvm::final< T >::printMemOffset ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
)
template<typename T >
void llvm::final< T >::printMemOffset ( const MCInst MI,
unsigned  OpNo,
raw_ostream OS 
)
template<typename T >
void llvm::final< T >::printMemReference ( const MCInst MI,
unsigned  Op,
raw_ostream O 
)
template<typename T >
void llvm::final< T >::printMemReference ( const MCInst MI,
unsigned  Op,
raw_ostream OS 
)
template<typename T >
void llvm::final< T >::printopaquemem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 47 of file X86IntelInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printopaquemem ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 56 of file X86ATTInstPrinter.h.

References printMemReference().

template<typename T >
void llvm::final< T >::printOperand ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
)
template<typename T >
void llvm::final< T >::printOperand ( const MCInst MI,
unsigned  OpNo,
raw_ostream OS 
)
template<typename T >
void llvm::final< T >::printPCRelImm ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
)
template<typename T >
void llvm::final< T >::printPCRelImm ( const MCInst MI,
unsigned  OpNo,
raw_ostream OS 
)
template<typename T >
void llvm::final< T >::printRegName ( raw_ostream OS,
unsigned  RegNo 
) const [override, virtual]

printRegName - Print the assembler register name.

Reimplemented from llvm::MCInstPrinter.

template<typename T >
void llvm::final< T >::printRegName ( raw_ostream OS,
unsigned  RegNo 
) const [override, virtual]

printRegName - Print the assembler register name.

Reimplemented from llvm::MCInstPrinter.

template<typename T >
void llvm::final< T >::printRoundingControl ( const MCInst MI,
unsigned  Op,
raw_ostream OS 
)
template<typename T >
void llvm::final< T >::printRoundingControl ( const MCInst MI,
unsigned  Op,
raw_ostream OS 
)
template<typename T >
void llvm::final< T >::printSrcIdx ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
)
template<typename T >
void llvm::final< T >::printSrcIdx ( const MCInst MI,
unsigned  OpNo,
raw_ostream OS 
)
template<typename T >
void llvm::final< T >::printSrcIdx16 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 103 of file X86ATTInstPrinter.h.

template<typename T >
void llvm::final< T >::printSrcIdx16 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 110 of file X86IntelInstPrinter.h.

template<typename T >
void llvm::final< T >::printSrcIdx32 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 106 of file X86ATTInstPrinter.h.

template<typename T >
void llvm::final< T >::printSrcIdx32 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 114 of file X86IntelInstPrinter.h.

template<typename T >
void llvm::final< T >::printSrcIdx64 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 109 of file X86ATTInstPrinter.h.

template<typename T >
void llvm::final< T >::printSrcIdx64 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 118 of file X86IntelInstPrinter.h.

template<typename T >
void llvm::final< T >::printSrcIdx8 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 100 of file X86ATTInstPrinter.h.

template<typename T >
void llvm::final< T >::printSrcIdx8 ( const MCInst MI,
unsigned  OpNo,
raw_ostream O 
) [inline]

Definition at line 106 of file X86IntelInstPrinter.h.

template<typename T >
void llvm::final< T >::printSSECC ( const MCInst MI,
unsigned  Op,
raw_ostream O 
)
template<typename T >
void llvm::final< T >::printSSECC ( const MCInst MI,
unsigned  Op,
raw_ostream OS 
)
template<typename T >
void llvm::final< T >::releaseMemory ( ) [override, virtual]

releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memory when it is no longer needed. The default behavior of passes is to hold onto memory for the entire duration of their lifetime (which is the entire compile time). For pipelined passes, this is not a big deal because that memory gets recycled every time the pass is invoked on another program unit. For IP passes, it is more important to free memory when it is unused.

Optionally implement this function to release pass memory when it is no longer used.

Reimplemented from llvm::Pass.

template<typename T >
void llvm::final< T >::reMaterialize ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MI,
unsigned  DestReg,
unsigned  SubIdx,
const MachineInstr Orig,
const TargetRegisterInfo TRI 
) const [override]
template<typename T >
unsigned llvm::final< T >::RemoveBranch ( MachineBasicBlock MBB) const [override]
template<typename T >
void llvm::final< T >::ReplaceNodeResults ( SDNode N,
SmallVectorImpl< SDValue > &  Results,
SelectionDAG DAG 
) const [override, virtual]

ReplaceNodeResults - Replace the results of node with an illegal result type with new values built out of custom code.

Reimplemented from llvm::TargetLowering.

template<typename T >
void llvm::final< T >::resetOperationActions ( ) [override, virtual]

Reset the operation actions based on target options.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::ReverseBranchCondition ( SmallVectorImpl< MachineOperand > &  Cond) const [override]
template<typename T >
bool llvm::final< T >::runOnFunction ( Function F) [override, virtual]

runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass.

Implements llvm::FunctionPass.

template<typename T >
void llvm::final< T >::setExecutionDomain ( MachineInstr MI,
unsigned  Domain 
) const [override]
template<typename T >
void llvm::final< T >::setPICStyle ( PICStyles::Style  Style) [inline]

Definition at line 319 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::shouldConvertConstantLoadToIntImm ( const APInt Imm,
Type Ty 
) const [override, virtual]

Returns true if it is beneficial to convert a load of a constant to just the constant itself.

Reimplemented from llvm::TargetLoweringBase.

template<typename T >
bool llvm::final< T >::shouldScheduleAdjacent ( MachineInstr First,
MachineInstr Second 
) const [override]
template<typename T >
bool llvm::final< T >::shouldScheduleLoadsNear ( SDNode Load1,
SDNode Load2,
int64_t  Offset1,
int64_t  Offset2,
unsigned  NumLoads 
) const [override]

shouldScheduleLoadsNear - This is a used by the pre-regalloc scheduler to determine (in conjunction with areLoadsFromSameBasePtr) if two loads should be scheduled togther. On some targets if two loads are loading from addresses in the same cache line, it's better if they are scheduled together. This function takes two integers that represent the load offsets from the common base address. It returns true if it decides it's desirable to schedule the two loads together. "NumLoads" is the number of loads that have already been scheduled after Load1.

template<typename T >
bool llvm::final< T >::ShouldShrinkFPConstant ( EVT  VT) const [inline, override, virtual]

ShouldShrinkFPConstant - If true, then instruction selection should seek to shrink the FP constant of the specified type to a smaller type in order to save space and / or reduce runtime.

Reimplemented from llvm::TargetLoweringBase.

Definition at line 755 of file X86ISelLowering.h.

References llvm::MVT::f80.

template<typename T >
bool llvm::final< T >::slowIncDec ( ) const [inline]

Definition at line 371 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::slowLEA ( ) const [inline]

Definition at line 370 of file X86Subtarget.h.

template<typename T >
int llvm::final< T >::snprint ( char *  Buffer,
unsigned  BufferSize 
) const [inline, override, virtual]

Call snprintf() for this object, on the given buffer and size.

Implements llvm::format_object_base.

Definition at line 89 of file Format.h.

References llvm::LibFunc::snprintf.

template<typename T >
int llvm::final< T >::snprint ( char *  Buffer,
unsigned  BufferSize 
) const [inline, override, virtual]

Call snprintf() for this object, on the given buffer and size.

Implements llvm::format_object_base.

Definition at line 103 of file Format.h.

References llvm::LibFunc::snprintf.

template<typename T >
int llvm::final< T >::snprint ( char *  Buffer,
unsigned  BufferSize 
) const [inline, override, virtual]

Call snprintf() for this object, on the given buffer and size.

Implements llvm::format_object_base.

Definition at line 118 of file Format.h.

References llvm::LibFunc::snprintf.

template<typename T >
int llvm::final< T >::snprint ( char *  Buffer,
unsigned  BufferSize 
) const [inline, override, virtual]

Call snprintf() for this object, on the given buffer and size.

Implements llvm::format_object_base.

Definition at line 135 of file Format.h.

References llvm::LibFunc::snprintf.

template<typename T >
int llvm::final< T >::snprint ( char *  Buffer,
unsigned  BufferSize 
) const [inline, override, virtual]

Call snprintf() for this object, on the given buffer and size.

Implements llvm::format_object_base.

Definition at line 154 of file Format.h.

References llvm::LibFunc::snprintf.

template<typename T >
int llvm::final< T >::snprint ( char *  Buffer,
unsigned  BufferSize 
) const [inline, override, virtual]

Call snprintf() for this object, on the given buffer and size.

Implements llvm::format_object_base.

Definition at line 174 of file Format.h.

References llvm::LibFunc::snprintf.

template<typename T >
void llvm::final< T >::storeRegToAddr ( MachineFunction MF,
unsigned  SrcReg,
bool  isKill,
SmallVectorImpl< MachineOperand > &  Addr,
const TargetRegisterClass RC,
MachineInstr::mmo_iterator  MMOBegin,
MachineInstr::mmo_iterator  MMOEnd,
SmallVectorImpl< MachineInstr * > &  NewMIs 
) const
template<typename T >
void llvm::final< T >::storeRegToStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MI,
unsigned  SrcReg,
bool  isKill,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI 
) const [override]
template<typename T >
bool llvm::final< T >::trackLivenessAfterRegAlloc ( const MachineFunction MF) const [override]

Code Generation virtual methods...

template<typename T >
bool llvm::final< T >::unfoldMemoryOperand ( MachineFunction MF,
MachineInstr MI,
unsigned  Reg,
bool  UnfoldLoad,
bool  UnfoldStore,
SmallVectorImpl< MachineInstr * > &  NewMIs 
) const [override]

unfoldMemoryOperand - Separate a single instruction which folded a load or a store or a load and a store into two or more instruction. If this is possible, returns true as well as the new instructions by reference.

template<typename T >
bool llvm::final< T >::unfoldMemoryOperand ( SelectionDAG DAG,
SDNode N,
SmallVectorImpl< SDNode * > &  NewNodes 
) const [override]
template<typename T >
bool llvm::final< T >::useLeaForSP ( ) const [inline]

Definition at line 365 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::useLoadStackGuardNode ( ) const [override, virtual]

If this function returns true, SelectionDAGBuilder emits a LOAD_STACK_GUARD node when it is lowering Intrinsic::stackprotector.

Reimplemented from llvm::TargetLowering.

template<typename T >
llvm::final< T >::X86ATTInstPrinter ( const MCAsmInfo MAI,
const MCInstrInfo MII,
const MCRegisterInfo MRI,
const MCSubtargetInfo STI 
) [inline]

Definition at line 26 of file X86ATTInstPrinter.h.

References llvm::MCSubtargetInfo::getFeatureBits().

template<typename T >
llvm::final< T >::X86InstrInfo ( X86Subtarget STI) [explicit]
template<typename T >
llvm::final< T >::X86IntelInstPrinter ( const MCAsmInfo MAI,
const MCInstrInfo MII,
const MCRegisterInfo MRI 
) [inline]

Definition at line 26 of file X86IntelInstPrinter.h.

template<typename T >
llvm::final< T >::X86RegisterInfo ( const X86Subtarget STI)
template<typename T >
llvm::final< T >::X86Subtarget ( const std::string &  TT,
const std::string &  CPU,
const std::string &  FS,
X86TargetMachine TM,
unsigned  StackAlignOverride 
)

This constructor initializes the data members to match that of the specified triple.

template<typename T >
llvm::final< T >::X86TargetLowering ( X86TargetMachine TM) [explicit]
template<typename T >
llvm::final< T >::X86TargetMachine ( const Target T,
StringRef  TT,
StringRef  CPU,
StringRef  FS,
const TargetOptions Options,
Reloc::Model  RM,
CodeModel::Model  CM,
CodeGenOpt::Level  OL 
)

Member Data Documentation

template<typename T >
bool llvm::final< T >::CallRegIndirect [protected]

CallRegIndirect - True if the Calls with memory reference should be converted to a register-based indirect call.

Definition at line 184 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasADX [protected]

HasADX - Processor has ADX instructions.

Definition at line 136 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasAES [protected]

HasAES - Target has AES instructions.

Definition at line 91 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasBMI [protected]

HasBMI - Processor has BMI1 instructions.

Definition at line 124 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasBMI2 [protected]

HasBMI2 - Processor has BMI2 instructions.

Definition at line 127 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasBWI [protected]

Processor has AVX-512 Byte and Word instructions.

Definition at line 208 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasCDI [protected]

Processor has AVX-512 Conflict Detection Instructions.

Definition at line 202 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasCMov [protected]

HasCMov - True if this processor has conditional move instructions (generally pentium pro+).

Definition at line 78 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasCmpxchg16b [protected]

HasCmpxchg16b - True if this processor has the CMPXCHG16B instruction; this is true for most x86-64 chips, but not the first AMD chips.

Definition at line 168 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasDQI [protected]

Processor has AVX-512 Doubleword and Quadword instructions.

Definition at line 205 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasERI [protected]

Processor has AVX-512 Exponential and Reciprocal Instructions.

Definition at line 199 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasF16C [protected]

HasF16C - Processor has 16-bit floating point conversion instructions.

Definition at line 115 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasFMA [protected]

HasFMA - Target has 3-operand fused multiply-add.

Definition at line 97 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasFMA4 [protected]

HasFMA4 - Target has 4-operand fused multiply-add.

Definition at line 100 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasFSGSBase [protected]

HasFSGSBase - Processor has FS/GS base insturctions.

Definition at line 118 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasHLE [protected]

HasHLE - Processor has HLE.

Definition at line 133 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasLZCNT [protected]

HasLZCNT - Processor has LZCNT instruction.

Definition at line 121 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasMOVBE [protected]

HasMOVBE - True if the processor has the MOVBE instruction.

Definition at line 109 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasPCLMUL [protected]

HasPCLMUL - Target has carry-less multiplication.

Definition at line 94 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasPFI [protected]

Processor has AVX-512 PreFetch Instructions.

Definition at line 196 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasPOPCNT [protected]

HasPOPCNT - True if the processor supports POPCNT.

Definition at line 85 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasPRFCHW [protected]

HasPRFCHW - Processor has PRFCHW instructions.

Definition at line 145 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasRDRAND [protected]

HasRDRAND - True if the processor has the RDRAND instruction.

Definition at line 112 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasRDSEED [protected]

HasRDSEED - Processor has RDSEED instructions.

Definition at line 148 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasRTM [protected]

HasRTM - Processor has RTM instructions.

Definition at line 130 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasSGX [protected]

HasSGX - Processor has SGX instructions.

Definition at line 142 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasSHA [protected]

HasSHA - Processor has SHA instructions.

Definition at line 139 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasSlowDivide [protected]

HasSlowDivide - True if smaller divides are significantly faster than full divides and should be used when possible.

Definition at line 176 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasSMAP [protected]

HasSMAP - Processor has SMAP instructions.

Definition at line 151 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasSSE4A [protected]

HasSSE4A - True if the processor supports SSE4A instructions.

Definition at line 88 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasTBM [protected]

HasTBM - Target has TBM instructions.

Definition at line 106 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasVectorUAMem [protected]

HasVectorUAMem - True if SIMD operations can have unaligned memory operands. This may require setting a feature bit in the processor.

Definition at line 164 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasVLX [protected]

Processor has AVX-512 Vector Length eXtenstions.

Definition at line 211 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasX86_64 [protected]

HasX86_64 - True if the processor supports X86-64 instructions.

Definition at line 82 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::HasXOP [protected]

HasXOP - Target has XOP instructions.

Definition at line 103 of file X86Subtarget.h.

template<typename T >
char llvm::final< T >::ID [static]

Definition at line 33 of file FunctionTargetTransformInfo.h.

template<typename T >
InstrItineraryData llvm::final< T >::InstrItins [protected]

Instruction itineraries for scheduling.

Definition at line 225 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::IsBTMemSlow [protected]

IsBTMemSlow - True if BT (bit test) of memory instructions are slow.

Definition at line 154 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::IsSHLDSlow [protected]

IsSHLDSlow - True if SHLD instructions are slow.

Definition at line 157 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::IsUAMemFast [protected]

IsUAMemFast - True if unaligned memory access is fast.

Definition at line 160 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::LEAUsesAG [protected]

LEAUsesAG - True if the LEA instruction inputs have to be ready at address generation (AG) time.

Definition at line 187 of file X86Subtarget.h.

template<typename T >
unsigned llvm::final< T >::MaxInlineSizeThreshold [protected]

Max. memset / memcpy size that is turned into rep/movs, rep/stos ops.

Definition at line 219 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::PadShortFunctions [protected]

PadShortFunctions - True if the short functions should be padded to prevent a stall when returning too early.

Definition at line 180 of file X86Subtarget.h.

template<typename T >
PICStyles::Style llvm::final< T >::PICStyle [protected]

PICStyle - Which PIC style to use

Definition at line 66 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::SlowIncDec [protected]

SlowIncDec - True if INC and DEC instructions are slow when writing to flags.

Definition at line 193 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::SlowLEA [protected]

SlowLEA - True if the LEA instruction with certain arguments is slow.

Definition at line 190 of file X86Subtarget.h.

template<typename T >
unsigned llvm::final< T >::stackAlignment [protected]

stackAlignment - The minimum alignment known to hold of the stack frame on entry to the function and which must be maintained by every function.

Definition at line 215 of file X86Subtarget.h.

template<typename T >
const X86Subtarget& llvm::final< T >::Subtarget

Definition at line 29 of file X86RegisterInfo.h.

template<typename T >
Triple llvm::final< T >::TargetTriple [protected]

TargetTriple - What processor and OS we're targeting.

Reimplemented from llvm::TargetMachine.

Definition at line 222 of file X86Subtarget.h.

template<typename T >
bool llvm::final< T >::UseLeaForSP [protected]

UseLeaForSP - True if the LEA instruction should be used for adjusting the stack pointer. This is an optimization for Intel Atom processors.

Definition at line 172 of file X86Subtarget.h.

template<typename T >
X863DNowEnum llvm::final< T >::X863DNowLevel [protected]

X863DNowLevel - 3DNow or 3DNow Athlon, or none supported.

Definition at line 74 of file X86Subtarget.h.

template<typename T >
X86ProcFamilyEnum llvm::final< T >::X86ProcFamily [protected]

X86ProcFamily - X86 processor family: Intel Atom, and others.

Definition at line 62 of file X86Subtarget.h.

template<typename T >
X86SSEEnum llvm::final< T >::X86SSELevel [protected]

X86SSELevel - MMX, SSE1, SSE2, SSE3, SSSE3, SSE41, SSE42, or none supported.

Definition at line 70 of file X86Subtarget.h.


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