15 #ifndef LLVM_TARGET_POWERPC_PPC32ISELLOWERING_H
16 #define LLVM_TARGET_POWERPC_PPC32ISELLOWERING_H
333 SDValue
get_VSPLTI_elt(SDNode *N,
unsigned ByteSize, SelectionDAG &DAG);
395 unsigned Depth = 0)
const;
402 unsigned BinOpcode)
const;
405 bool is8bit,
unsigned Opcode)
const;
418 AsmOperandInfo &
info,
const char *constraint)
const;
420 std::pair<unsigned, const TargetRegisterClass*>
432 std::string &Constraint,
433 std::vector<SDValue> &Ops,
455 bool IsMemset,
bool ZeroMemset,
bool MemcpyStrSrc,
478 IsEligibleForTailCallOptimization(
SDValue Callee,
537 int SPDiff,
unsigned NumBytes,
542 LowerFormalArguments(
SDValue Chain,
571 unsigned nAltivecParamsAtEnd,
572 unsigned MinReservedArea,
bool isPPC64)
const;
575 LowerFormalArguments_Darwin(
SDValue Chain,
581 LowerFormalArguments_64SVR4(
SDValue Chain,
587 LowerFormalArguments_32SVR4(
SDValue Chain,
601 bool isVarArg,
bool isTailCall,
610 bool isVarArg,
bool isTailCall,
618 bool isVarArg,
bool isTailCall,
628 SDValue DAGCombineFastRecip(
SDValue Op, DAGCombinerInfo &DCI)
const;
629 SDValue DAGCombineFastRecipFSQRT(
SDValue Op, DAGCombinerInfo &DCI)
const;
631 CCAssignFn *useFastISelCCs(
unsigned Flag)
const;
636 const TargetLibraryInfo *LibInfo);
641 ISD::ArgFlagsTy &ArgFlags,
647 ISD::ArgFlagsTy &ArgFlags,
653 ISD::ArgFlagsTy &ArgFlags,
657 #endif // LLVM_TARGET_POWERPC_PPC32ISELLOWERING_H
FastISel * createFastISel(FunctionLoweringInfo &FuncInfo, const TargetLibraryInfo *LibInfo)
SDValue get_VSPLTI_elt(SDNode *N, unsigned ByteSize, SelectionDAG &DAG)
ch, gl = CR6[UN]SET ch, inglue - Toggle CR bit 6 for SVR4 vararg calls
unsigned getVSPLTImmediate(SDNode *N, unsigned EltSize)
int isVSLDOIShuffleMask(SDNode *N, bool isUnary)
Return with a flag operand, matched by 'blr'.
virtual bool allowsUnalignedMemoryAccesses(EVT VT, bool *Fast=0) const
bool CC_PPC32_SVR4_Custom_AlignFPArgRegs(unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
MachineBasicBlock * EmitPartwordAtomicBinary(MachineInstr *MI, MachineBasicBlock *MBB, bool is8bit, unsigned Opcode) const
virtual FastISel * createFastISel(FunctionLoweringInfo &FuncInfo, const TargetLibraryInfo *LibInfo) const
bool CCAssignFn(unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
std::pair< unsigned, const TargetRegisterClass * > getRegForInlineAsmConstraint(const std::string &Constraint, MVT VT) const
F8RC = MFFS - This moves the FPSCR (not modeled) into the register.
virtual bool isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const
virtual bool getPreIndexedAddressParts(SDNode *N, SDValue &Base, SDValue &Offset, ISD::MemIndexedMode &AM, SelectionDAG &DAG) const
bool isVMRGHShuffleMask(ShuffleVectorSDNode *N, unsigned UnitSize, bool isUnary)
MachineBasicBlock * emitEHSjLjLongJmp(MachineInstr *MI, MachineBasicBlock *MBB) const
virtual bool isFMAFasterThanFMulAndFAdd(EVT VT) const
ID
LLVM Calling Convention Representation.
bool isVPKUHUMShuffleMask(ShuffleVectorSDNode *N, bool isUnary)
Sched::Preference getSchedulingPreference() const
Return target scheduling preference.
MachineBasicBlock * EmitAtomicBinary(MachineInstr *MI, MachineBasicBlock *MBB, bool is64Bit, unsigned BinOpcode) const
bool isSplatShuffleMask(ShuffleVectorSDNode *N, unsigned EltSize)
virtual MVT getScalarShiftAmountTy(EVT LHSTy) const
Reciprocal estimate instructions (unary FP ops).
bool CC_PPC32_SVR4_Custom_AlignArgRegs(unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
PPCTargetLowering(PPCTargetMachine &TM)
virtual void computeMaskedBitsForTargetNode(const SDValue Op, APInt &KnownZero, APInt &KnownOne, const SelectionDAG &DAG, unsigned Depth=0) const
bool isVMRGLShuffleMask(ShuffleVectorSDNode *N, unsigned UnitSize, bool isUnary)
virtual void ReplaceNodeResults(SDNode *N, SmallVectorImpl< SDValue > &Results, SelectionDAG &DAG) const
bool isAllNegativeZeroVector(SDNode *N)
virtual SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const
Like a regular LOAD but additionally taking/producing a flag.
virtual const char * getTargetNodeName(unsigned Opcode) const
bool isVPKUWUMShuffleMask(ShuffleVectorSDNode *N, bool isUnary)
bool CC_PPC32_SVR4_Custom_Dummy(unsigned &ValNo, MVT &ValVT, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State)
bool SelectAddressRegRegOnly(SDValue N, SDValue &Base, SDValue &Index, SelectionDAG &DAG) const
virtual void LowerAsmOperandForConstraint(SDValue Op, std::string &Constraint, std::vector< SDValue > &Ops, SelectionDAG &DAG) const
virtual EVT getSetCCResultType(LLVMContext &Context, EVT VT) const
getSetCCResultType - Return the ISD::SETCC ValueType
virtual EVT getOptimalMemOpType(uint64_t Size, unsigned DstAlign, unsigned SrcAlign, bool IsMemset, bool ZeroMemset, bool MemcpyStrSrc, MachineFunction &MF) const
static const int FIRST_TARGET_MEMORY_OPCODE
MachineBasicBlock * emitEHSjLjSetJmp(MachineInstr *MI, MachineBasicBlock *MBB) const
virtual SDValue PerformDAGCombine(SDNode *N, DAGCombinerInfo &DCI) const
Class for arbitrary precision integers.
ConstraintType getConstraintType(const std::string &Constraint) const
AddrMode
ARM Addressing Modes.
bool SelectAddressRegReg(SDValue N, SDValue &Base, SDValue &Index, SelectionDAG &DAG) const
ConstraintWeight getSingleConstraintMatchWeight(AsmOperandInfo &info, const char *constraint) const
bool SelectAddressRegImm(SDValue N, SDValue &Disp, SDValue &Base, SelectionDAG &DAG, bool Aligned) const
virtual bool isLegalAddressingMode(const AddrMode &AM, Type *Ty) const
unsigned getByValTypeAlignment(Type *Ty) const
virtual MachineBasicBlock * EmitInstrWithCustomInserter(MachineInstr *MI, MachineBasicBlock *MBB) const