LLVM API Documentation
#include <MipsISelLowering.h>
Classes | |
struct | ByValArgInfo |
ByValArgInfo - Byval argument information. More... | |
struct | LTStr |
class | MipsCC |
Public Member Functions | |
MipsTargetLowering (MipsTargetMachine &TM) | |
virtual MVT | getScalarShiftAmountTy (EVT LHSTy) const |
virtual void | LowerOperationWrapper (SDNode *N, SmallVectorImpl< SDValue > &Results, SelectionDAG &DAG) const |
virtual SDValue | LowerOperation (SDValue Op, SelectionDAG &DAG) const |
LowerOperation - Provide custom lowering hooks for some operations. More... | |
virtual void | ReplaceNodeResults (SDNode *N, SmallVectorImpl< SDValue > &Results, SelectionDAG &DAG) const |
virtual const char * | getTargetNodeName (unsigned Opcode) const |
getTargetNodeName - This method returns the name of a target specific More... | |
EVT | getSetCCResultType (LLVMContext &Context, EVT VT) const |
getSetCCResultType - get the ISD::SETCC result ValueType More... | |
virtual SDValue | PerformDAGCombine (SDNode *N, DAGCombinerInfo &DCI) const |
virtual MachineBasicBlock * | EmitInstrWithCustomInserter (MachineInstr *MI, MachineBasicBlock *MBB) const |
![]() | |
TargetLowering (const TargetMachine &TM, const TargetLoweringObjectFile *TLOF) | |
NOTE: The constructor takes ownership of TLOF. More... | |
virtual bool | getPreIndexedAddressParts (SDNode *, SDValue &, SDValue &, ISD::MemIndexedMode &, SelectionDAG &) const |
virtual bool | getPostIndexedAddressParts (SDNode *, SDNode *, SDValue &, SDValue &, ISD::MemIndexedMode &, SelectionDAG &) const |
virtual const MCExpr * | LowerCustomJumpTableEntry (const MachineJumpTableInfo *, const MachineBasicBlock *, unsigned, MCContext &) const |
virtual SDValue | getPICJumpTableRelocBase (SDValue Table, SelectionDAG &DAG) const |
Returns relocation base for the given PIC jumptable. More... | |
virtual const MCExpr * | getPICJumpTableRelocBaseExpr (const MachineFunction *MF, unsigned JTI, MCContext &Ctx) const |
bool | isInTailCallPosition (SelectionDAG &DAG, SDNode *Node, SDValue &Chain) const |
void | softenSetCCOperands (SelectionDAG &DAG, EVT VT, SDValue &NewLHS, SDValue &NewRHS, ISD::CondCode &CCCode, SDLoc DL) const |
std::pair< SDValue, SDValue > | makeLibCall (SelectionDAG &DAG, RTLIB::Libcall LC, EVT RetVT, const SDValue *Ops, unsigned NumOps, bool isSigned, SDLoc dl, bool doesNotReturn=false, bool isReturnValueUsed=true) const |
Returns a pair of (return value, chain). More... | |
bool | SimplifyDemandedBits (SDValue Op, const APInt &DemandedMask, APInt &KnownZero, APInt &KnownOne, TargetLoweringOpt &TLO, unsigned Depth=0) const |
virtual void | computeMaskedBitsForTargetNode (const SDValue Op, APInt &KnownZero, APInt &KnownOne, const SelectionDAG &DAG, unsigned Depth=0) const |
virtual unsigned | ComputeNumSignBitsForTargetNode (SDValue Op, unsigned Depth=0) const |
SDValue | SimplifySetCC (EVT VT, SDValue N0, SDValue N1, ISD::CondCode Cond, bool foldBooleans, DAGCombinerInfo &DCI, SDLoc dl) const |
virtual bool | isGAPlusOffset (SDNode *N, const GlobalValue *&GA, int64_t &Offset) const |
virtual bool | isTypeDesirableForOp (unsigned, EVT VT) const |
virtual bool | isDesirableToTransformToIntegerOp (unsigned, EVT) const |
virtual bool | IsDesirableToPromoteOp (SDValue, EVT &) const |
std::pair< SDValue, SDValue > | LowerCallTo (CallLoweringInfo &CLI) const |
virtual void | HandleByVal (CCState *, unsigned &, unsigned) const |
Target-specific cleanup for formal ByVal parameters. More... | |
virtual bool | isUsedByReturnOnly (SDNode *, SDValue &) const |
virtual bool | mayBeEmittedAsTailCall (CallInst *) const |
virtual MVT | getTypeForExtArgOrReturn (MVT VT, ISD::NodeType) const |
virtual const uint16_t * | getScratchRegisters (CallingConv::ID CC) const |
virtual FastISel * | createFastISel (FunctionLoweringInfo &, const TargetLibraryInfo *) const |
virtual bool | ExpandInlineAsm (CallInst *) const |
virtual AsmOperandInfoVector | ParseConstraints (ImmutableCallSite CS) const |
virtual ConstraintWeight | getMultipleConstraintMatchWeight (AsmOperandInfo &info, int maIndex) const |
virtual void | ComputeConstraintToUse (AsmOperandInfo &OpInfo, SDValue Op, SelectionDAG *DAG=0) const |
virtual const char * | LowerXConstraint (EVT ConstraintVT) const |
SDValue | BuildExactSDIV (SDValue Op1, SDValue Op2, SDLoc dl, SelectionDAG &DAG) const |
Given an exact SDIV by a constant, create a multiplication with the multiplicative inverse of the constant. More... | |
SDValue | BuildSDIV (SDNode *N, SelectionDAG &DAG, bool IsAfterLegalization, std::vector< SDNode * > *Created) const |
Given an ISD::SDIV node expressing a divide by constant, return a DAG expression to select that will generate the same value by multiplying by a magic number. See: http://the.wall.riscom.net/books/proc/ppc/cwg/code2.html More... | |
SDValue | BuildUDIV (SDNode *N, SelectionDAG &DAG, bool IsAfterLegalization, std::vector< SDNode * > *Created) const |
Given an ISD::UDIV node expressing a divide by constant, return a DAG expression to select that will generate the same value by multiplying by a magic number. See: http://the.wall.riscom.net/books/proc/ppc/cwg/code2.html More... | |
virtual void | AdjustInstrPostInstrSelection (MachineInstr *MI, SDNode *Node) const |
![]() | |
TargetLoweringBase (const TargetMachine &TM, const TargetLoweringObjectFile *TLOF) | |
NOTE: The constructor takes ownership of TLOF. More... | |
virtual | ~TargetLoweringBase () |
const TargetMachine & | getTargetMachine () const |
const DataLayout * | getDataLayout () const |
const TargetLoweringObjectFile & | getObjFileLowering () const |
bool | isBigEndian () const |
bool | isLittleEndian () const |
virtual MVT | getPointerTy (uint32_t=0) const |
unsigned | getPointerSizeInBits (uint32_t AS=0) const |
unsigned | getPointerTypeSizeInBits (Type *Ty) const |
EVT | getShiftAmountTy (EVT LHSTy) const |
virtual MVT | getVectorIdxTy () const |
bool | isSelectExpensive () const |
Return true if the select operation is expensive for this target. More... | |
virtual bool | isSelectSupported (SelectSupportKind) const |
virtual bool | shouldSplitVectorElementType (EVT) const |
bool | isIntDivCheap () const |
bool | isSlowDivBypassed () const |
Returns true if target has indicated at least one type should be bypassed. More... | |
const DenseMap< unsigned int, unsigned int > & | getBypassSlowDivWidths () const |
bool | isPow2DivCheap () const |
Return true if pow2 div is cheaper than a chain of srl/add/sra. More... | |
bool | isJumpExpensive () const |
bool | isPredictableSelectExpensive () const |
virtual bool | isLoadBitCastBeneficial (EVT, EVT) const |
virtual MVT::SimpleValueType | getCmpLibcallReturnType () const |
BooleanContent | getBooleanContents (bool isVec) const |
Sched::Preference | getSchedulingPreference () const |
Return target scheduling preference. More... | |
virtual Sched::Preference | getSchedulingPreference (SDNode *) const |
virtual const TargetRegisterClass * | getRegClassFor (MVT VT) const |
virtual const TargetRegisterClass * | getRepRegClassFor (MVT VT) const |
virtual uint8_t | getRepRegClassCostFor (MVT VT) const |
bool | isTypeLegal (EVT VT) const |
const ValueTypeActionImpl & | getValueTypeActions () const |
LegalizeTypeAction | getTypeAction (LLVMContext &Context, EVT VT) const |
LegalizeTypeAction | getTypeAction (MVT VT) const |
EVT | getTypeToTransformTo (LLVMContext &Context, EVT VT) const |
EVT | getTypeToExpandTo (LLVMContext &Context, EVT VT) const |
unsigned | getVectorTypeBreakdown (LLVMContext &Context, EVT VT, EVT &IntermediateVT, unsigned &NumIntermediates, MVT &RegisterVT) const |
virtual bool | getTgtMemIntrinsic (IntrinsicInfo &, const CallInst &, unsigned) const |
virtual bool | isShuffleMaskLegal (const SmallVectorImpl< int > &, EVT) const |
virtual bool | canOpTrap (unsigned Op, EVT VT) const |
virtual bool | isVectorClearMaskLegal (const SmallVectorImpl< int > &, EVT) const |
LegalizeAction | getOperationAction (unsigned Op, EVT VT) const |
bool | isOperationLegalOrCustom (unsigned Op, EVT VT) const |
bool | isOperationLegalOrPromote (unsigned Op, EVT VT) const |
bool | isOperationExpand (unsigned Op, EVT VT) const |
bool | isOperationLegal (unsigned Op, EVT VT) const |
Return true if the specified operation is legal on this target. More... | |
LegalizeAction | getLoadExtAction (unsigned ExtType, MVT VT) const |
bool | isLoadExtLegal (unsigned ExtType, EVT VT) const |
Return true if the specified load with extension is legal on this target. More... | |
LegalizeAction | getTruncStoreAction (MVT ValVT, MVT MemVT) const |
bool | isTruncStoreLegal (EVT ValVT, EVT MemVT) const |
LegalizeAction | getIndexedLoadAction (unsigned IdxMode, MVT VT) const |
bool | isIndexedLoadLegal (unsigned IdxMode, EVT VT) const |
Return true if the specified indexed load is legal on this target. More... | |
LegalizeAction | getIndexedStoreAction (unsigned IdxMode, MVT VT) const |
bool | isIndexedStoreLegal (unsigned IdxMode, EVT VT) const |
Return true if the specified indexed load is legal on this target. More... | |
LegalizeAction | getCondCodeAction (ISD::CondCode CC, MVT VT) const |
bool | isCondCodeLegal (ISD::CondCode CC, MVT VT) const |
Return true if the specified condition code is legal on this target. More... | |
MVT | getTypeToPromoteTo (unsigned Op, MVT VT) const |
EVT | getValueType (Type *Ty, bool AllowUnknown=false) const |
MVT | getSimpleValueType (Type *Ty, bool AllowUnknown=false) const |
Return the MVT corresponding to this LLVM type. See getValueType. More... | |
virtual unsigned | getByValTypeAlignment (Type *Ty) const |
MVT | getRegisterType (MVT VT) const |
Return the type of registers that this ValueType will eventually require. More... | |
MVT | getRegisterType (LLVMContext &Context, EVT VT) const |
Return the type of registers that this ValueType will eventually require. More... | |
unsigned | getNumRegisters (LLVMContext &Context, EVT VT) const |
virtual bool | ShouldShrinkFPConstant (EVT) const |
bool | hasTargetDAGCombine (ISD::NodeType NT) const |
unsigned | getMaxStoresPerMemset (bool OptSize) const |
Get maximum # of store operations permitted for llvm.memset. More... | |
unsigned | getMaxStoresPerMemcpy (bool OptSize) const |
Get maximum # of store operations permitted for llvm.memcpy. More... | |
unsigned | getMaxStoresPerMemmove (bool OptSize) const |
Get maximum # of store operations permitted for llvm.memmove. More... | |
virtual bool | allowsUnalignedMemoryAccesses (EVT, bool *=0) const |
Determine if the target supports unaligned memory accesses. More... | |
virtual bool | isSafeMemOpType (MVT) const |
bool | usesUnderscoreSetJmp () const |
Determine if we should use _setjmp or setjmp to implement llvm.setjmp. More... | |
bool | usesUnderscoreLongJmp () const |
Determine if we should use _longjmp or longjmp to implement llvm.longjmp. More... | |
bool | supportJumpTables () const |
Return whether the target can generate code for jump tables. More... | |
int | getMinimumJumpTableEntries () const |
unsigned | getStackPointerRegisterToSaveRestore () const |
unsigned | getExceptionPointerRegister () const |
unsigned | getExceptionSelectorRegister () const |
unsigned | getJumpBufSize () const |
unsigned | getJumpBufAlignment () const |
unsigned | getMinStackArgumentAlignment () const |
Return the minimum stack alignment of an argument. More... | |
unsigned | getMinFunctionAlignment () const |
Return the minimum function alignment. More... | |
unsigned | getPrefFunctionAlignment () const |
Return the preferred function alignment. More... | |
unsigned | getPrefLoopAlignment () const |
Return the preferred loop alignment. More... | |
bool | getInsertFencesForAtomic () const |
virtual bool | getStackCookieLocation (unsigned &, unsigned &) const |
virtual unsigned | getMaximalGlobalOffset () const |
virtual bool | isNoopAddrSpaceCast (unsigned SrcAS, unsigned DestAS) const |
Returns true if a cast between SrcAS and DestAS is a noop. More... | |
virtual void | resetOperationActions () |
Reset the operation actions based on target options. More... | |
virtual bool | GetAddrModeArguments (IntrinsicInst *, SmallVectorImpl< Value * > &, Type *&) const |
virtual int | getScalingFactorCost (const AddrMode &AM, Type *Ty) const |
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. More... | |
virtual bool | isLegalICmpImmediate (int64_t) const |
virtual bool | isLegalAddImmediate (int64_t) const |
virtual bool | isTruncateFree (Type *, Type *) const |
virtual bool | allowTruncateForTailCall (Type *, Type *) const |
virtual bool | isTruncateFree (EVT, EVT) const |
virtual bool | isZExtFree (Type *, Type *) const |
virtual bool | isZExtFree (EVT, EVT) const |
virtual bool | hasPairedLoad (Type *, unsigned &) const |
virtual bool | hasPairedLoad (EVT, unsigned &) const |
virtual bool | isZExtFree (SDValue Val, EVT VT2) const |
virtual bool | isFNegFree (EVT VT) const |
virtual bool | isFAbsFree (EVT VT) const |
virtual bool | isFMAFasterThanFMulAndFAdd (EVT) const |
virtual bool | isNarrowingProfitable (EVT, EVT) const |
void | setLibcallName (RTLIB::Libcall Call, const char *Name) |
Rename the default libcall routine name for the specified libcall. More... | |
const char * | getLibcallName (RTLIB::Libcall Call) const |
Get the libcall routine name for the specified libcall. More... | |
void | setCmpLibcallCC (RTLIB::Libcall Call, ISD::CondCode CC) |
ISD::CondCode | getCmpLibcallCC (RTLIB::Libcall Call) const |
void | setLibcallCallingConv (RTLIB::Libcall Call, CallingConv::ID CC) |
Set the CallingConv that should be used for the specified libcall. More... | |
CallingConv::ID | getLibcallCallingConv (RTLIB::Libcall Call) const |
Get the CallingConv that should be used for the specified libcall. More... | |
LegalizeKind | getTypeConversion (LLVMContext &Context, EVT VT) const |
int | InstructionOpcodeToISD (unsigned Opcode) const |
Get the ISD node that corresponds to the Instruction class opcode. More... | |
std::pair< unsigned, MVT > | getTypeLegalizationCost (Type *Ty) const |
Estimate the cost of type-legalization and the legalized type. More... | |
Static Public Member Functions | |
static const MipsTargetLowering * | create (MipsTargetMachine &TM) |
![]() | |
static ISD::NodeType | getExtendForContent (BooleanContent Content) |
Protected Member Functions | |
SDValue | getGlobalReg (SelectionDAG &DAG, EVT Ty) const |
template<class NodeTy > | |
SDValue | getAddrLocal (NodeTy *N, EVT Ty, SelectionDAG &DAG, bool HasMips64) const |
template<class NodeTy > | |
SDValue | getAddrGlobal (NodeTy *N, EVT Ty, SelectionDAG &DAG, unsigned Flag, SDValue Chain, const MachinePointerInfo &PtrInfo) const |
template<class NodeTy > | |
SDValue | getAddrGlobalLargeGOT (NodeTy *N, EVT Ty, SelectionDAG &DAG, unsigned HiFlag, unsigned LoFlag, SDValue Chain, const MachinePointerInfo &PtrInfo) const |
template<class NodeTy > | |
SDValue | getAddrNonPIC (NodeTy *N, EVT Ty, SelectionDAG &DAG) const |
virtual void | getOpndList (SmallVectorImpl< SDValue > &Ops, std::deque< std::pair< unsigned, SDValue > > &RegsToPass, bool IsPICCall, bool GlobalOrExternal, bool InternalLinkage, CallLoweringInfo &CLI, SDValue Callee, SDValue Chain) const |
SDValue | lowerLOAD (SDValue Op, SelectionDAG &DAG) const |
SDValue | lowerSTORE (SDValue Op, SelectionDAG &DAG) const |
![]() | |
void | initActions () |
Initialize all of the actions to default values. More... | |
void | setBooleanContents (BooleanContent Ty) |
void | setBooleanVectorContents (BooleanContent Ty) |
void | setSchedulingPreference (Sched::Preference Pref) |
Specify the target scheduling preference. More... | |
void | setUseUnderscoreSetJmp (bool Val) |
void | setUseUnderscoreLongJmp (bool Val) |
void | setSupportJumpTables (bool Val) |
Indicate whether the target can generate code for jump tables. More... | |
void | setMinimumJumpTableEntries (int Val) |
void | setStackPointerRegisterToSaveRestore (unsigned R) |
void | setExceptionPointerRegister (unsigned R) |
void | setExceptionSelectorRegister (unsigned R) |
void | setSelectIsExpensive (bool isExpensive=true) |
void | setJumpIsExpensive (bool isExpensive=true) |
void | setIntDivIsCheap (bool isCheap=true) |
void | addBypassSlowDiv (unsigned int SlowBitWidth, unsigned int FastBitWidth) |
Tells the code generator which bitwidths to bypass. More... | |
void | setPow2DivIsCheap (bool isCheap=true) |
void | addRegisterClass (MVT VT, const TargetRegisterClass *RC) |
void | clearRegisterClasses () |
Remove all register classes. More... | |
void | clearOperationActions () |
Remove all operation actions. More... | |
virtual std::pair< const TargetRegisterClass *, uint8_t > | findRepresentativeClass (MVT VT) const |
void | computeRegisterProperties () |
void | setOperationAction (unsigned Op, MVT VT, LegalizeAction Action) |
void | setLoadExtAction (unsigned ExtType, MVT VT, LegalizeAction Action) |
void | setTruncStoreAction (MVT ValVT, MVT MemVT, LegalizeAction Action) |
void | setIndexedLoadAction (unsigned IdxMode, MVT VT, LegalizeAction Action) |
void | setIndexedStoreAction (unsigned IdxMode, MVT VT, LegalizeAction Action) |
void | setCondCodeAction (ISD::CondCode CC, MVT VT, LegalizeAction Action) |
void | AddPromotedToType (unsigned Opc, MVT OrigVT, MVT DestVT) |
void | setTargetDAGCombine (ISD::NodeType NT) |
void | setJumpBufSize (unsigned Size) |
Set the target's required jmp_buf buffer size (in bytes); default is 200. More... | |
void | setJumpBufAlignment (unsigned Align) |
void | setMinFunctionAlignment (unsigned Align) |
Set the target's minimum function alignment (in log2(bytes)) More... | |
void | setPrefFunctionAlignment (unsigned Align) |
void | setPrefLoopAlignment (unsigned Align) |
void | setMinStackArgumentAlignment (unsigned Align) |
Set the minimum stack alignment of an argument (in log2(bytes)). More... | |
void | setInsertFencesForAtomic (bool fence) |
bool | isLegalRC (const TargetRegisterClass *RC) const |
Protected Attributes | |
const MipsSubtarget * | Subtarget |
bool | HasMips64 |
bool | IsN64 |
bool | IsO32 |
![]() | |
unsigned | MaxStoresPerMemset |
Specify maximum number of store instructions per memset call. More... | |
unsigned | MaxStoresPerMemsetOptSize |
unsigned | MaxStoresPerMemcpy |
Specify maximum bytes of store instructions per memcpy call. More... | |
unsigned | MaxStoresPerMemcpyOptSize |
unsigned | MaxStoresPerMemmove |
Specify maximum bytes of store instructions per memmove call. More... | |
unsigned | MaxStoresPerMemmoveOptSize |
bool | PredictableSelectIsExpensive |
Definition at line 211 of file MipsISelLowering.h.
|
explicit |
Definition at line 205 of file MipsISelLowering.cpp.
References llvm::ISD::ADD, llvm::TargetLoweringBase::AddPromotedToType(), llvm::ISD::AND, llvm::ISD::ATOMIC_LOAD, llvm::ISD::ATOMIC_STORE, llvm::ISD::BlockAddress, llvm::ISD::BR_CC, llvm::ISD::BR_JT, llvm::ISD::BRCOND, llvm::ISD::BSWAP, llvm::ISD::ConstantPool, llvm::ISD::CTLZ, llvm::ISD::CTLZ_ZERO_UNDEF, llvm::ISD::CTPOP, llvm::ISD::CTTZ, llvm::ISD::CTTZ_ZERO_UNDEF, llvm::TargetLoweringBase::Custom, llvm::ISD::DYNAMIC_STACKALLOC, llvm::ISD::EH_RETURN, llvm::TargetLoweringBase::Expand, llvm::ISD::EXTLOAD, llvm::MVT::f32, llvm::MVT::f64, llvm::ISD::FABS, llvm::ISD::FCOPYSIGN, llvm::ISD::FCOS, llvm::ISD::FEXP, llvm::ISD::FLOG, llvm::ISD::FLOG10, llvm::ISD::FLOG2, llvm::ISD::FMA, llvm::ISD::FNEG, llvm::ISD::FP_TO_SINT, llvm::ISD::FP_TO_UINT, llvm::ISD::FPOW, llvm::ISD::FPOWI, llvm::ISD::FREM, llvm::ISD::FSIN, llvm::ISD::FSINCOS, llvm::ISD::GlobalAddress, llvm::ISD::GlobalTLSAddress, llvm::MipsSubtarget::hasBitCount(), llvm::MipsSubtarget::hasMips32r2(), HasMips64, llvm::MipsSubtarget::hasMips64r2(), llvm::MipsSubtarget::hasSEInReg(), llvm::MipsSubtarget::hasSwap(), llvm::MVT::i1, llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i64, llvm::MVT::i8, IsN64, llvm::ISD::JumpTable, llvm::TargetLoweringBase::Legal, llvm::ISD::LOAD, llvm::TargetLoweringBase::MaxStoresPerMemcpy, llvm::TargetOptions::NoNaNsFPMath, llvm::TargetMachine::Options, llvm::ISD::OR, llvm::MVT::Other, llvm::TargetLoweringBase::Promote, llvm::ISD::ROTL, llvm::ISD::ROTR, llvm::ISD::SDIV, llvm::ISD::SDIVREM, llvm::ISD::SELECT, llvm::ISD::SELECT_CC, llvm::TargetLoweringBase::setBooleanContents(), llvm::TargetLoweringBase::setBooleanVectorContents(), llvm::ISD::SETCC, llvm::TargetLoweringBase::setExceptionPointerRegister(), llvm::TargetLoweringBase::setExceptionSelectorRegister(), llvm::TargetLoweringBase::setInsertFencesForAtomic(), llvm::TargetLoweringBase::setLoadExtAction(), llvm::TargetLoweringBase::setMinFunctionAlignment(), llvm::TargetLoweringBase::setOperationAction(), llvm::TargetLoweringBase::setStackPointerRegisterToSaveRestore(), llvm::TargetLoweringBase::setTargetDAGCombine(), llvm::TargetLoweringBase::setTruncStoreAction(), llvm::ISD::SEXTLOAD, llvm::ISD::SHL_PARTS, llvm::ISD::SIGN_EXTEND_INREG, llvm::ISD::SRA_PARTS, llvm::ISD::SREM, llvm::ISD::SRL_PARTS, llvm::ISD::STACKRESTORE, llvm::ISD::STACKSAVE, llvm::ISD::STORE, Subtarget, llvm::ISD::TRAP, llvm::ISD::UDIV, llvm::ISD::UDIVREM, llvm::ISD::UINT_TO_FP, llvm::ISD::UREM, llvm::ISD::VAARG, llvm::ISD::VACOPY, llvm::ISD::VAEND, llvm::ISD::VASTART, llvm::TargetLoweringBase::ZeroOrNegativeOneBooleanContent, llvm::TargetLoweringBase::ZeroOrOneBooleanContent, and llvm::ISD::ZEXTLOAD.
|
static |
Definition at line 397 of file MipsISelLowering.cpp.
References llvm::createMips16TargetLowering(), llvm::createMipsSETargetLowering(), llvm::MipsTargetMachine::getSubtargetImpl(), and llvm::MipsSubtarget::inMips16Mode().
Referenced by llvm::MipsTargetMachine::setHelperClassesMips16(), and llvm::MipsTargetMachine::setHelperClassesMipsSE().
|
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.
Reimplemented in llvm::MipsSETargetLowering, and llvm::Mips16TargetLowering.
Definition at line 787 of file MipsISelLowering.cpp.
References AND, expandPseudoDIV(), llvm::MachineInstr::getOpcode(), llvm::TargetLoweringBase::getTargetMachine(), llvm_unreachable, OR, and XOR.
Referenced by llvm::Mips16TargetLowering::EmitInstrWithCustomInserter(), and llvm::MipsSETargetLowering::EmitInstrWithCustomInserter().
|
inlineprotected |
Definition at line 278 of file MipsISelLowering.h.
References getGlobalReg(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getNode(), and llvm::MipsISD::Wrapper.
|
inlineprotected |
Definition at line 292 of file MipsISelLowering.h.
References llvm::ISD::ADD, getGlobalReg(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getNode(), llvm::MipsISD::Hi, and llvm::MipsISD::Wrapper.
|
inlineprotected |
Definition at line 258 of file MipsISelLowering.h.
References llvm::ISD::ADD, llvm::SelectionDAG::getEntryNode(), getGlobalReg(), llvm::MachinePointerInfo::getGOT(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getNode(), llvm::ARMCP::GOT, llvm::MipsISD::Lo, llvm::SPII::Load, llvm::MipsII::MO_ABS_LO, llvm::MipsII::MO_GOT, llvm::MipsII::MO_GOT_OFST, llvm::MipsII::MO_GOT_PAGE, and llvm::MipsISD::Wrapper.
|
inlineprotected |
Definition at line 311 of file MipsISelLowering.h.
References llvm::ISD::ADD, llvm::SelectionDAG::getNode(), llvm::MipsISD::Hi, llvm::MipsISD::Lo, llvm::MipsII::MO_ABS_HI, and llvm::MipsII::MO_ABS_LO.
|
protected |
Definition at line 79 of file MipsISelLowering.cpp.
References llvm::MipsFunctionInfo::getGlobalBaseReg(), llvm::MachineFunction::getInfo(), llvm::SelectionDAG::getMachineFunction(), and llvm::SelectionDAG::getRegister().
Referenced by getAddrGlobal(), getAddrGlobalLargeGOT(), getAddrLocal(), and getOpndList().
|
protectedvirtual |
This function fills Ops, which is the list of operands that will later be used when a function call node is created. It also generates copyToReg nodes to set up argument registers.
Definition at line 2247 of file MipsISelLowering.cpp.
References llvm::TargetLowering::CallLoweringInfo::CallConv, llvm::TargetLowering::CallLoweringInfo::Callee, llvm::TargetLowering::CallLoweringInfo::DAG, llvm::TargetLowering::CallLoweringInfo::DL, F(), G, llvm::TargetRegisterInfo::getCallPreservedMask(), llvm::SelectionDAG::getCopyToReg(), getGlobalReg(), llvm::MipsRegisterInfo::getMips16RetHelperMask(), llvm::SDValue::getNode(), llvm::SelectionDAG::getRegister(), llvm::TargetMachine::getRegisterInfo(), llvm::SelectionDAG::getRegisterMask(), llvm::TargetLoweringBase::getTargetMachine(), llvm::SDValue::getValue(), llvm::Function::hasFnAttribute(), llvm::MVT::i32, llvm::MVT::i64, llvm::MipsSubtarget::inMips16HardFloat(), IsN64, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), and Subtarget.
Reimplemented from llvm::TargetLoweringBase.
Definition at line 217 of file MipsISelLowering.h.
References llvm::MVT::i32.
Referenced by performMULCombine().
|
virtual |
getSetCCResultType - get the ISD::SETCC result ValueType
Reimplemented from llvm::TargetLoweringBase.
Definition at line 404 of file MipsISelLowering.cpp.
References llvm::EVT::changeVectorElementTypeToInteger(), llvm::MVT::i32, and llvm::EVT::isVector().
|
virtual |
getTargetNodeName - This method returns the name of a target specific
Reimplemented from llvm::TargetLowering.
Definition at line 115 of file MipsISelLowering.cpp.
References llvm::MipsISD::BuildPairF64, llvm::MipsISD::CMovFP_F, llvm::MipsISD::CMovFP_T, llvm::MipsISD::DivRem, llvm::MipsISD::DivRem16, llvm::MipsISD::DivRemU, llvm::MipsISD::DivRemU16, llvm::MipsISD::EH_RETURN, llvm::MipsISD::Ext, llvm::MipsISD::EXTP, llvm::MipsISD::EXTPDP, llvm::MipsISD::EXTR_R_W, llvm::MipsISD::EXTR_RS_W, llvm::MipsISD::EXTR_S_H, llvm::MipsISD::EXTR_W, llvm::MipsISD::ExtractElementF64, llvm::MipsISD::FPBrcond, llvm::MipsISD::FPCmp, llvm::MipsISD::GPRel, llvm::MipsISD::Hi, llvm::MipsISD::ILVEV, llvm::MipsISD::ILVL, llvm::MipsISD::ILVOD, llvm::MipsISD::ILVR, llvm::MipsISD::Ins, llvm::MipsISD::JmpLink, llvm::MipsISD::LDL, llvm::MipsISD::LDR, llvm::MipsISD::Lo, llvm::MipsISD::LWL, llvm::MipsISD::LWR, llvm::MipsISD::MAdd, llvm::MipsISD::MADD_DSP, llvm::MipsISD::MAddu, llvm::MipsISD::MADDU_DSP, llvm::MipsISD::MFHI, llvm::MipsISD::MFLO, llvm::MipsISD::MSub, llvm::MipsISD::MSUB_DSP, llvm::MipsISD::MSubu, llvm::MipsISD::MSUBU_DSP, llvm::MipsISD::MTHLIP, llvm::MipsISD::MTLOHI, llvm::MipsISD::Mult, llvm::MipsISD::MULT, llvm::MipsISD::Multu, llvm::MipsISD::MULTU, llvm::MipsISD::PCKEV, llvm::MipsISD::PCKOD, llvm::MipsISD::Ret, llvm::MipsISD::SDL, llvm::MipsISD::SDR, llvm::MipsISD::SELECT_CC_DSP, llvm::MipsISD::SETCC_DSP, llvm::MipsISD::SHF, llvm::MipsISD::SHILO, llvm::MipsISD::SHLL_DSP, llvm::MipsISD::SHRA_DSP, llvm::MipsISD::SHRL_DSP, llvm::MipsISD::SWL, llvm::MipsISD::SWR, llvm::MipsISD::Sync, llvm::MipsISD::TailCall, llvm::MipsISD::ThreadPointer, llvm::MipsISD::TruncIntFP, llvm::MipsISD::VALL_NONZERO, llvm::MipsISD::VALL_ZERO, llvm::MipsISD::VANY_NONZERO, llvm::MipsISD::VANY_ZERO, llvm::MipsISD::VCEQ, llvm::MipsISD::VCLE_S, llvm::MipsISD::VCLE_U, llvm::MipsISD::VCLT_S, llvm::MipsISD::VCLT_U, llvm::MipsISD::VEXTRACT_SEXT_ELT, llvm::MipsISD::VEXTRACT_ZEXT_ELT, llvm::MipsISD::VNOR, llvm::MipsISD::VSHF, llvm::MipsISD::VSMAX, llvm::MipsISD::VSMIN, llvm::MipsISD::VUMAX, llvm::MipsISD::VUMIN, and llvm::MipsISD::Wrapper.
|
protected |
Definition at line 1942 of file MipsISelLowering.cpp.
References createLoadLR(), llvm::ISD::EXTLOAD, llvm::MemSDNode::getAlignment(), llvm::MemSDNode::getChain(), llvm::SelectionDAG::getConstant(), llvm::LoadSDNode::getExtensionType(), llvm::MemSDNode::getMemoryVT(), llvm::SelectionDAG::getMergeValues(), llvm::SelectionDAG::getNode(), llvm::SelectionDAG::getUNDEF(), llvm::SDValue::getValue(), llvm::SDValue::getValueType(), llvm::MVT::i32, llvm::MVT::i64, llvm::MipsSubtarget::isLittle(), llvm::A64DB::LD, llvm::MipsISD::LDL, llvm::MipsISD::LDR, llvm::MipsISD::LWL, llvm::MipsISD::LWR, llvm::ISD::NON_EXTLOAD, llvm::ISD::SEXTLOAD, llvm::ISD::SHL, llvm::ISD::SRL, Subtarget, llvm::RegState::Undef, and llvm::ISD::ZEXTLOAD.
Referenced by LowerOperation().
|
virtual |
LowerOperation - Provide custom lowering hooks for some operations.
Reimplemented from llvm::TargetLowering.
Reimplemented in llvm::MipsSETargetLowering.
Definition at line 715 of file MipsISelLowering.cpp.
References llvm::ISD::ADD, llvm::ISD::ATOMIC_FENCE, llvm::ISD::BlockAddress, llvm::ISD::BR_JT, llvm::ISD::BRCOND, llvm::ISD::ConstantPool, llvm::ISD::EH_RETURN, llvm::ISD::FABS, llvm::ISD::FCOPYSIGN, llvm::ISD::FP_TO_SINT, llvm::ISD::FRAMEADDR, llvm::SDValue::getOpcode(), llvm::ISD::GlobalAddress, llvm::ISD::GlobalTLSAddress, llvm::ISD::JumpTable, llvm::ISD::LOAD, lowerLOAD(), lowerSTORE(), llvm::ISD::RETURNADDR, llvm::ISD::SELECT, llvm::ISD::SELECT_CC, llvm::ISD::SETCC, llvm::ISD::SHL_PARTS, llvm::ISD::SRA_PARTS, llvm::ISD::SRL_PARTS, llvm::ISD::STORE, and llvm::ISD::VASTART.
Referenced by llvm::MipsSETargetLowering::LowerOperation(), and LowerOperationWrapper().
|
virtual |
This callback is invoked by the type legalizer to legalize nodes with an illegal operand type but legal result types. It replaces the LowerOperation callback in the type Legalizer. The reason we can not do away with LowerOperation entirely is that LegalizeDAG isn't yet ready to use this callback.
TODO: Consider merging with ReplaceNodeResults.
The target places new result values for the node in Results (their number and types must exactly match those of the original return values of the node), or leaves Results empty, which indicates that the node is not to be custom lowered after all. The default implementation calls LowerOperation.
Reimplemented from llvm::TargetLowering.
Definition at line 698 of file MipsISelLowering.cpp.
References llvm::SDNode::getNumValues(), llvm::SDValue::getValue(), I, LowerOperation(), and llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back().
Referenced by ReplaceNodeResults().
|
protected |
Definition at line 2064 of file MipsISelLowering.cpp.
References llvm::MemSDNode::getAlignment(), llvm::MemSDNode::getMemoryVT(), llvm::MVT::i32, llvm::MVT::i64, llvm::MipsSubtarget::isLittle(), lowerFP_TO_SINT_STORE(), lowerUnalignedIntStore(), and Subtarget.
Referenced by LowerOperation().
|
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.
Reimplemented in llvm::MipsSETargetLowering.
Definition at line 674 of file MipsISelLowering.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, llvm::TargetLowering::DAGCombinerInfo::DAG, llvm::SDNode::getOpcode(), llvm::ISD::OR, performADDCombine(), performANDCombine(), performDivRemCombine(), performORCombine(), performSELECTCombine(), llvm::ISD::SDIVREM, llvm::ISD::SELECT, Subtarget, and llvm::ISD::UDIVREM.
Referenced by llvm::MipsSETargetLowering::PerformDAGCombine().
|
virtual |
ReplaceNodeResults - Replace the results of node with an illegal result type with new values built out of custom code.
Reimplemented from llvm::TargetLowering.
Definition at line 708 of file MipsISelLowering.cpp.
References LowerOperationWrapper().
|
protected |
Definition at line 431 of file MipsISelLowering.h.
Referenced by llvm::MipsSETargetLowering::MipsSETargetLowering(), and MipsTargetLowering().
|
protected |
Definition at line 431 of file MipsISelLowering.h.
Referenced by getOpndList(), and MipsTargetLowering().
|
protected |
Definition at line 431 of file MipsISelLowering.h.
Referenced by llvm::MipsTargetLowering::MipsCC::intArgRegs(), llvm::MipsTargetLowering::MipsCC::numIntArgRegs(), and llvm::MipsTargetLowering::MipsCC::reservedArgArea().
|
protected |
Definition at line 429 of file MipsISelLowering.h.
Referenced by getOpndList(), llvm::MipsSETargetLowering::getRepRegClassFor(), lowerLOAD(), lowerSTORE(), llvm::Mips16TargetLowering::Mips16TargetLowering(), llvm::MipsSETargetLowering::MipsSETargetLowering(), MipsTargetLowering(), llvm::MipsSETargetLowering::PerformDAGCombine(), and PerformDAGCombine().