15 #ifndef Hexagon_ISELLOWERING_H
16 #define Hexagon_ISELLOWERING_H
24 namespace HexagonISD {
71 int VarArgsFrameOffset;
73 bool CanReturnSmallStruct(
const Function* CalleeFn,
74 unsigned& RetSize)
const;
87 bool isCalleeStructRet,
88 bool isCallerStructRet,
156 std::pair<unsigned, const TargetRegisterClass*>
179 #endif // Hexagon_ISELLOWERING_H
virtual bool isFPImmLegal(const APFloat &Imm, EVT VT) const
virtual SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const
virtual bool isLegalICmpImmediate(int64_t Imm) const
SDValue LowerCallResult(SDValue Chain, SDValue InFlag, CallingConv::ID CallConv, bool isVarArg, const SmallVectorImpl< ISD::InputArg > &Ins, SDLoc dl, SelectionDAG &DAG, SmallVectorImpl< SDValue > &InVals, const SmallVectorImpl< SDValue > &OutVals, SDValue Callee) const
SDValue LowerConstantPool(SDValue Op, SelectionDAG &DAG) const
bool isVector() const
isVector - Return true if this is a vector value type.
virtual EVT getSetCCResultType(LLVMContext &C, EVT VT) const
virtual bool isLegalAddressingMode(const AddrMode &AM, Type *Ty) const
virtual bool allowTruncateForTailCall(Type *Ty1, Type *Ty2) const
ID
LLVM Calling Convention Representation.
HexagonTargetMachine & TM
std::pair< unsigned, const TargetRegisterClass * > getRegForInlineAsmConstraint(const std::string &Constraint, MVT VT) const
SDValue LowerEH_RETURN(SDValue Op, SelectionDAG &DAG) const
SDValue LowerINLINEASM(SDValue Op, SelectionDAG &DAG) const
A self-contained host- and target-independent arbitrary-precision floating-point software implementat...
virtual const char * getTargetNodeName(unsigned Opcode) const
This method returns the name of a target specific DAG node.
virtual SDValue LowerINTRINSIC_WO_CHAIN(SDValue Op, SelectionDAG &DAG) const
SDValue LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const
SDValue LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const
SDValue LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const
SDValue LowerATOMIC_FENCE(SDValue Op, SelectionDAG &DAG) const
virtual bool isTruncateFree(Type *Ty1, Type *Ty2) const
static EVT getVectorVT(LLVMContext &Context, EVT VT, unsigned NumElements)
SDValue LowerCall(TargetLowering::CallLoweringInfo &CLI, SmallVectorImpl< SDValue > &InVals) const
SDValue LowerBR_JT(SDValue Op, SelectionDAG &DAG) const
SDValue LowerVASTART(SDValue Op, SelectionDAG &DAG) const
SDValue LowerFormalArguments(SDValue Chain, CallingConv::ID CallConv, bool isVarArg, const SmallVectorImpl< ISD::InputArg > &Ins, SDLoc dl, SelectionDAG &DAG, SmallVectorImpl< SDValue > &InVals) const
virtual bool getPostIndexedAddressParts(SDNode *N, SDNode *Op, SDValue &Base, SDValue &Offset, ISD::MemIndexedMode &AM, SelectionDAG &DAG) const
AddrMode
ARM Addressing Modes.
virtual MachineBasicBlock * EmitInstrWithCustomInserter(MachineInstr *MI, MachineBasicBlock *BB) const
bool IsEligibleForTailCallOptimization(SDValue Callee, CallingConv::ID CalleeCC, bool isVarArg, bool isCalleeStructRet, bool isCallerStructRet, const SmallVectorImpl< ISD::OutputArg > &Outs, const SmallVectorImpl< SDValue > &OutVals, const SmallVectorImpl< ISD::InputArg > &Ins, SelectionDAG &DAG) const
SDValue LowerDYNAMIC_STACKALLOC(SDValue Op, SelectionDAG &DAG) const
SDValue LowerBlockAddress(SDValue Op, SelectionDAG &DAG) const
SDValue LowerEH_LABEL(SDValue Op, SelectionDAG &DAG) const
SDValue LowerReturn(SDValue Chain, CallingConv::ID CallConv, bool isVarArg, const SmallVectorImpl< ISD::OutputArg > &Outs, const SmallVectorImpl< SDValue > &OutVals, SDLoc dl, SelectionDAG &DAG) const
HexagonTargetLowering(HexagonTargetMachine &targetmachine)
SDValue LowerGLOBALADDRESS(SDValue Op, SelectionDAG &DAG) const
unsigned getVectorNumElements() const