LLVM  8.0.1
Enumerations | Functions
llvm::X86 Namespace Reference

Define some predicates that are used for node matching. More...

Enumerations

enum  ProcessorVendors : unsigned { VENDOR_DUMMY, VENDOR_OTHER }
 
enum  ProcessorTypes : unsigned { CPU_TYPE_DUMMY, CPU_TYPE_MAX }
 
enum  ProcessorSubtypes : unsigned { CPU_SUBTYPE_DUMMY, CPU_SUBTYPE_MAX }
 
enum  ProcessorFeatures
 
enum  {
  BX_SI = 500, BX_DI = 501, BP_SI = 502, BP_DI = 503,
  sib = 504, sib64 = 505
}
 
enum  {
  AddrBaseReg = 0, AddrScaleAmt = 1, AddrIndexReg = 2, AddrDisp = 3,
  AddrSegmentReg = 4, AddrNumOperands = 5
}
 
enum  STATIC_ROUNDING {
  TO_NEAREST_INT = 0, TO_NEG_INF = 1, TO_POS_INF = 2, TO_ZERO = 3,
  CUR_DIRECTION = 4
}
 AVX512 static rounding constants. More...
 
enum  IPREFIXES {
  IP_NO_PREFIX = 0, IP_HAS_OP_SIZE = 1, IP_HAS_AD_SIZE = 2, IP_HAS_REPEAT_NE = 4,
  IP_HAS_REPEAT = 8, IP_HAS_LOCK = 16, NO_SCHED_INFO = 32, IP_HAS_NOTRACK = 64
}
 The constants to describe instr prefixes if there are. More...
 
enum  Fixups {
  reloc_riprel_4byte = FirstTargetFixupKind, reloc_riprel_4byte_movq_load, reloc_riprel_4byte_relax, reloc_riprel_4byte_relax_rex,
  reloc_signed_4byte, reloc_signed_4byte_relax, reloc_global_offset_table, reloc_global_offset_table8,
  reloc_branch_4byte_pcrel, LastTargetFixupKind, NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
}
 
enum  AsmComments { AC_EVEX_2_VEX = MachineInstr::TAsmComments }
 
enum  CondCode {
  COND_A = 0, COND_AE = 1, COND_B = 2, COND_BE = 3,
  COND_E = 4, COND_G = 5, COND_GE = 6, COND_L = 7,
  COND_LE = 8, COND_NE = 9, COND_NO = 10, COND_NP = 11,
  COND_NS = 12, COND_O = 13, COND_P = 14, COND_S = 15,
  LAST_VALID_COND = COND_S, COND_NE_OR_P, COND_E_AND_NP, COND_INVALID
}
 

Functions

unsigned GetCondBranchFromCond (CondCode CC)
 
std::pair< CondCode, boolgetX86ConditionCode (CmpInst::Predicate Predicate)
 Return a pair of condition code for the given predicate and whether the instruction operands should be swaped to match the condition code. More...
 
unsigned getSETFromCond (CondCode CC, bool HasMemoryOperand=false)
 Return a set opcode for the given condition and whether it has a memory operand. More...
 
unsigned getCMovFromCond (CondCode CC, unsigned RegBytes, bool HasMemoryOperand=false)
 Return a cmov opcode for the given condition, register size in bytes, and operand type. More...
 
CondCode getCondFromBranchOpc (unsigned Opc)
 
CondCode getCondFromSETOpc (unsigned Opc)
 Return condition code of a SET opcode. More...
 
CondCode getCondFromCMovOpc (unsigned Opc)
 Return condition code of a CMov opcode. More...
 
CondCode GetOppositeBranchCondition (CondCode CC)
 GetOppositeBranchCondition - Return the inverse of the specified cond, e.g. More...
 
unsigned getVPCMPImmForCond (ISD::CondCode CC)
 Get the VPCMP immediate for the given condition. More...
 
unsigned getSwappedVPCMPImm (unsigned Imm)
 Get the VPCMP immediate if the opcodes are swapped. More...
 
unsigned getSwappedVPCOMImm (unsigned Imm)
 Get the VPCOM immediate if the opcodes are swapped. More...
 
bool isZeroNode (SDValue Elt)
 Returns true if Elt is a constant zero or floating point constant +0.0. More...
 
bool isOffsetSuitableForCodeModel (int64_t Offset, CodeModel::Model M, bool hasSymbolicDisplacement=true)
 Returns true of the given offset can be fit into displacement field of the instruction. More...
 
bool isCalleePop (CallingConv::ID CallingConv, bool is64Bit, bool IsVarArg, bool GuaranteeTCO)
 Determines whether the callee is required to pop its own arguments. More...
 
FastISelcreateFastISel (FunctionLoweringInfo &funcInfo, const TargetLibraryInfo *libInfo)
 

Detailed Description

Define some predicates that are used for node matching.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
BX_SI 
BX_DI 
BP_SI 
BP_DI 
sib 
sib64 

Definition at line 114 of file X86Disassembler.cpp.

◆ anonymous enum

anonymous enum
Enumerator
AddrBaseReg 
AddrScaleAmt 
AddrIndexReg 
AddrDisp 
AddrSegmentReg 

AddrSegmentReg - The operand # of the segment in the memory operand.

AddrNumOperands 

AddrNumOperands - Total number of operands in a memory reference.

Definition at line 32 of file X86BaseInfo.h.

◆ AsmComments

Enumerator
AC_EVEX_2_VEX 

Definition at line 34 of file X86InstrInfo.h.

◆ CondCode

Enumerator
COND_A 
COND_AE 
COND_B 
COND_BE 
COND_E 
COND_G 
COND_GE 
COND_L 
COND_LE 
COND_NE 
COND_NO 
COND_NP 
COND_NS 
COND_O 
COND_P 
COND_S 
LAST_VALID_COND 
COND_NE_OR_P 
COND_E_AND_NP 
COND_INVALID 

Definition at line 41 of file X86InstrInfo.h.

◆ Fixups

Enumerator
reloc_riprel_4byte 
reloc_riprel_4byte_movq_load 
reloc_riprel_4byte_relax 
reloc_riprel_4byte_relax_rex 
reloc_signed_4byte 
reloc_signed_4byte_relax 
reloc_global_offset_table 
reloc_global_offset_table8 
reloc_branch_4byte_pcrel 
LastTargetFixupKind 
NumTargetFixupKinds 

Definition at line 17 of file X86FixupKinds.h.

◆ IPREFIXES

The constants to describe instr prefixes if there are.

Enumerator
IP_NO_PREFIX 
IP_HAS_OP_SIZE 
IP_HAS_AD_SIZE 
IP_HAS_REPEAT_NE 
IP_HAS_REPEAT 
IP_HAS_LOCK 
NO_SCHED_INFO 
IP_HAS_NOTRACK 

Definition at line 56 of file X86BaseInfo.h.

◆ ProcessorFeatures

Definition at line 69 of file TargetParser.h.

◆ ProcessorSubtypes

Enumerator
CPU_SUBTYPE_DUMMY 
CPU_SUBTYPE_MAX 

Definition at line 59 of file TargetParser.h.

◆ ProcessorTypes

Enumerator
CPU_TYPE_DUMMY 
CPU_TYPE_MAX 

Definition at line 49 of file TargetParser.h.

◆ ProcessorVendors

Enumerator
VENDOR_DUMMY 
VENDOR_OTHER 

Definition at line 39 of file TargetParser.h.

◆ STATIC_ROUNDING

AVX512 static rounding constants.

These need to match the values in avx512fintrin.h.

Enumerator
TO_NEAREST_INT 
TO_NEG_INF 
TO_POS_INF 
TO_ZERO 
CUR_DIRECTION 

Definition at line 47 of file X86BaseInfo.h.

Function Documentation

◆ createFastISel()

FastISel * llvm::X86::createFastISel ( FunctionLoweringInfo funcInfo,
const TargetLibraryInfo libInfo 
)

◆ getCMovFromCond()

unsigned llvm::X86::getCMovFromCond ( CondCode  CC,
unsigned  RegBytes,
bool  HasMemoryOperand = false 
)

Return a cmov opcode for the given condition, register size in bytes, and operand type.

Definition at line 2324 of file X86InstrInfo.cpp.

References assert(), and llvm_unreachable.

Referenced by getRegClassForUnfoldedLoad(), hasVulnerableLoad(), llvm::X86InstrInfo::insertSelect(), isEFLAGSLive(), llvm::X86InstrInfo::optimizeCompareInstr(), and X86ChooseCmpImmediateOpcode().

◆ GetCondBranchFromCond()

unsigned llvm::X86::GetCondBranchFromCond ( X86::CondCode  CC)

◆ getCondFromBranchOpc()

X86::CondCode llvm::X86::getCondFromBranchOpc ( unsigned  Opc)

◆ getCondFromCMovOpc()

X86::CondCode llvm::X86::getCondFromCMovOpc ( unsigned  Opc)

Return condition code of a CMov opcode.

Definition at line 2138 of file X86InstrInfo.cpp.

References COND_A, COND_AE, COND_B, COND_BE, COND_E, COND_G, COND_GE, COND_INVALID, COND_L, COND_LE, COND_NE, COND_NO, COND_NP, COND_NS, COND_O, COND_P, and COND_S.

Referenced by getCondFromOpc(), llvm::X86InstrInfo::optimizeCompareInstr(), and packCmovGroup().

◆ getCondFromSETOpc()

X86::CondCode llvm::X86::getCondFromSETOpc ( unsigned  Opc)

Return condition code of a SET opcode.

Definition at line 2115 of file X86InstrInfo.cpp.

References COND_A, COND_AE, COND_B, COND_BE, COND_E, COND_G, COND_GE, COND_INVALID, COND_L, COND_LE, COND_NE, COND_NO, COND_NP, COND_NS, COND_O, COND_P, and COND_S.

Referenced by getCondFromOpc(), and llvm::X86InstrInfo::optimizeCompareInstr().

◆ GetOppositeBranchCondition()

X86::CondCode llvm::X86::GetOppositeBranchCondition ( X86::CondCode  CC)

GetOppositeBranchCondition - Return the inverse of the specified cond, e.g.

Return the inverse of the specified condition, e.g.

turning COND_E to COND_NE.

Definition at line 2216 of file X86InstrInfo.cpp.

References COND_A, COND_AE, COND_B, COND_BE, COND_E, COND_E_AND_NP, COND_G, COND_GE, COND_L, COND_LE, COND_NE, COND_NE_OR_P, COND_NO, COND_NP, COND_NS, COND_O, COND_P, COND_S, and llvm_unreachable.

Referenced by checkBoolTestSetCCCombine(), combineCMov(), createPHIsForCMOVsInSinkBB(), EmitKORTEST(), foldXor1SetCC(), hasVulnerableLoad(), isXor1OfSetCC(), and packCmovGroup().

◆ getSETFromCond()

unsigned llvm::X86::getSETFromCond ( CondCode  CC,
bool  HasMemoryOperand = false 
)

Return a set opcode for the given condition and whether it has a memory operand.

Return a set opcode for the given condition and whether it has memory operand.

Definition at line 2298 of file X86InstrInfo.cpp.

References assert(), and LAST_VALID_COND.

Referenced by canTurnIntoCOPY(), llvm::X86InstrInfo::optimizeCompareInstr(), and X86ChooseCmpImmediateOpcode().

◆ getSwappedVPCMPImm()

unsigned llvm::X86::getSwappedVPCMPImm ( unsigned  Imm)

Get the VPCMP immediate if the opcodes are swapped.

Definition at line 2389 of file X86InstrInfo.cpp.

References llvm_unreachable.

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

◆ getSwappedVPCOMImm()

unsigned llvm::X86::getSwappedVPCOMImm ( unsigned  Imm)

Get the VPCOM immediate if the opcodes are swapped.

Definition at line 2407 of file X86InstrInfo.cpp.

References llvm_unreachable.

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

◆ getVPCMPImmForCond()

unsigned llvm::X86::getVPCMPImmForCond ( ISD::CondCode  CC)

◆ getX86ConditionCode()

std::pair< X86::CondCode, bool > llvm::X86::getX86ConditionCode ( CmpInst::Predicate  Predicate)

◆ isCalleePop()

bool llvm::X86::isCalleePop ( CallingConv::ID  CallingConv,
bool  is64Bit,
bool  IsVarArg,
bool  GuaranteeTCO 
)

Determines whether the callee is required to pop its own arguments.

Callee pop is necessary to support tail calls.

Definition at line 4630 of file X86ISelLowering.cpp.

References is64Bit(), shouldGuaranteeTCO(), llvm::CallingConv::X86_FastCall, llvm::CallingConv::X86_StdCall, llvm::CallingConv::X86_ThisCall, and llvm::CallingConv::X86_VectorCall.

Referenced by computeBytesPoppedByCalleeForSRet(), getMOVL(), isSortedByValueNo(), and MatchingStackOffset().

◆ isOffsetSuitableForCodeModel()

bool llvm::X86::isOffsetSuitableForCodeModel ( int64_t  Offset,
CodeModel::Model  M,
bool  hasSymbolicDisplacement = true 
)

Returns true of the given offset can be fit into displacement field of the instruction.

Definition at line 4598 of file X86ISelLowering.cpp.

References llvm::isInt< 32 >(), llvm::CodeModel::Kernel, and llvm::CodeModel::Small.

Referenced by isDispSafeForFrameIndex(), llvm::X86TargetLowering::isLegalAddressingMode(), and LowerEXTRACT_SUBVECTOR().

◆ isZeroNode()

bool llvm::X86::isZeroNode ( SDValue  Elt)

Returns true if Elt is a constant zero or floating point constant +0.0.

Returns true if Elt is a constant zero or a floating point constant +0.0.

Definition at line 5215 of file X86ISelLowering.cpp.

References llvm::isNullConstant(), and llvm::isNullFPConstant().

Referenced by combineADC(), combineAddOrSubToADCOrSBB(), computeZeroableShuffleElements(), EltsFromConsecutiveLoads(), getFauxShuffleMask(), getMaskNode(), InsertBitToMaskVector(), LowerBUILD_VECTORAsVariablePermute(), LowerBuildVectorv4x32(), LowerSCALAR_TO_VECTOR(), and setTargetShuffleZeroElements().