Home | History | Annotate | Download | only in Hexagon

Lines Matching defs:DAG

1 //===-- HexagonISelLowering.cpp - Hexagon DAG Lowering Implementation -----===//
11 // into a selection DAG.
275 HexagonTargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op, SelectionDAG &DAG)
287 ISD::ArgFlagsTy Flags, SelectionDAG &DAG,
290 SDValue SizeNode = DAG.getConstant(Flags.getByValSize(), MVT::i32);
291 return DAG.getMemcpy(Chain, dl, Dst, Src, SizeNode, Flags.getByValAlign(),
305 DebugLoc dl, SelectionDAG &DAG) const {
311 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
312 getTargetMachine(), RVLocs, *DAG.getContext());
324 Chain = DAG.getCopyToReg(Chain, dl, VA.getLocReg(), OutVals[i], Flag);
328 RetOps.push_back(DAG.getRegister(VA.getLocReg(), VA.getLocVT()));
337 return DAG.getNode(HexagonISD::RET_FLAG, dl, MVT::Other,
354 DebugLoc dl, SelectionDAG &DAG,
362 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
363 getTargetMachine(), RVLocs, *DAG.getContext());
369 Chain = DAG.getCopyFromReg(Chain, dl,
384 SelectionDAG &DAG = CLI.DAG;
399 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
400 getTargetMachine(), ArgLocs, *DAG.getContext());
407 Callee = DAG.getTargetGlobalAddress(GA->getGlobal(), dl, MVT::i32);
428 DAG.getMachineFunction().getFunction()->hasStructRetAttr();
432 Outs, OutVals, Ins, DAG);
453 DAG.getCopyFromReg(Chain, dl, TM.getRegisterInfo()->getStackRegister(),
470 Arg = DAG.getNode(ISD::SIGN_EXTEND, dl, VA.getLocVT(), Arg);
473 Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, VA.getLocVT(), Arg);
476 Arg = DAG.getNode(ISD::ANY_EXTEND, dl, VA.getLocVT(), Arg);
482 SDValue PtrOff = DAG.getConstant(LocMemOffset, StackPtr.getValueType());
483 PtrOff = DAG.getNode(ISD::ADD, dl, MVT::i32, StackPtr, PtrOff);
489 Flags, DAG, dl));
493 MemOpChains.push_back(DAG.getStore(Chain, dl, Arg, PtrOff,
510 Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, &MemOpChains[0],
515 Chain = DAG.getCALLSEQ_START(Chain, DAG.getConstant(NumBytes,
525 Chain = DAG.getCopyToReg(Chain, dl, RegsToPass[i].first,
543 Chain = DAG.getCopyToReg(Chain, dl, RegsToPass[i].first,
557 DAG.getTargetExternalSymbol(MemcpyName, getPointerTy());
560 Callee = DAG.getTargetGlobalAddress(G->getGlobal(), dl, getPointerTy());
563 Callee = DAG.getTargetExternalSymbol(S->getSymbol(), getPointerTy());
567 SDVTList NodeTys = DAG.getVTList(MVT::Other, MVT::Glue);
575 Ops.push_back(DAG.getRegister(RegsToPass[i].first,
584 return DAG.getNode(HexagonISD::TC_RETURN, dl, NodeTys, &Ops[0], Ops.size());
586 Chain = DAG.getNode(HexagonISD::CALL, dl, NodeTys, &Ops[0], Ops.size());
590 Chain = DAG.getCALLSEQ_END(Chain, DAG.getIntPtrConstant(NumBytes, true),
591 DAG.getIntPtrConstant(0, true), InFlag);
596 return LowerCallResult(Chain, InFlag, CallConv, isVarArg, Ins, dl, DAG,
603 SelectionDAG &DAG) {
642 SelectionDAG &DAG) const
662 isInc, DAG);
674 SelectionDAG &DAG) const {
676 MachineFunction &MF = DAG.getMachineFunction();
728 LowerBR_JT(SDValue Op, SelectionDAG &DAG) const
736 MachineFunction &MF = DAG.getMachineFunction();
738 SDValue TargetJT = DAG.getTargetJumpTable(JT->getIndex(), MVT::i32);
751 SDValue JumpTableBase = DAG.getNode(HexagonISD::WrapperJT, dl,
753 SDValue ShiftIndex = DAG.getNode(ISD::SHL, dl, MVT::i32, Index,
754 DAG.getConstant(2, MVT::i32));
755 SDValue JTAddress = DAG.getNode(ISD::ADD, dl, MVT::i32, JumpTableBase,
757 SDValue LoadTarget = DAG.getLoad(MVT::i32, dl, Chain, JTAddress,
760 return DAG.getNode(HexagonISD::BR_JT, dl, MVT::Other, Chain, LoadTarget);
766 SelectionDAG &DAG) const {
774 SDValue StackPointer = DAG.getCopyFromReg(Chain, dl, SPReg, MVT::i32);
778 SDValue Sub = DAG.getNode(ISD::SUB, dl, MVT::i32, StackPointer, Size);
794 SDValue ArgAdjust = DAG.getNode(HexagonISD::ADJDYNALLOC, dl,
797 DAG.getConstant(0, MVT::i32));
801 SDValue CopyChain = DAG.getCopyToReg(Chain, dl,
806 return DAG.getMergeValues(Ops, 2, dl);
815 DebugLoc dl, SelectionDAG &DAG,
819 MachineFunction &MF = DAG.getMachineFunction();
828 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
829 getTargetMachine(), ArgLocs, *DAG.getContext());
860 InVals.push_back(DAG.getCopyFromReg(Chain, dl, VReg, RegVT));
865 InVals.push_back(DAG.getCopyFromReg(Chain, dl, VReg, RegVT));
889 SDValue FIN = DAG.getFrameIndex(FI, MVT::i32);
897 InVals.push_back(DAG.getLoad(VA.getLocVT(), dl, Chain, FIN,
905 Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, &MemOps[0],
921 HexagonTargetLowering::LowerVASTART(SDValue Op, SelectionDAG &DAG) const {
924 MachineFunction &MF = DAG.getMachineFunction();
926 SDValue Addr = DAG.getFrameIndex(QFI->getVarArgsFrameIndex(), MVT::i32);
928 return DAG.getStore(Op.getOperand(0), Op.getDebugLoc(), Addr,
934 HexagonTargetLowering::LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const {
944 SDValue Cond = DAG.getNode(ISD::SETCC, dl, MVT::i1, LHS, RHS, CC);
945 return DAG.getNode(ISD::SELECT, dl, SVT, Cond, TrueVal, FalseVal);
949 HexagonTargetLowering::LowerConstantPool(SDValue Op, SelectionDAG &DAG) const {
956 Res = DAG.getTargetConstantPool(CP->getMachineCPVal(), ValTy,
959 Res = DAG.getTargetConstantPool(CP->getConstVal(), ValTy,
961 return DAG.getNode(HexagonISD::CONST32, dl, ValTy, Res);
965 HexagonTargetLowering::LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const {
967 MachineFunction &MF = DAG.getMachineFunction();
975 SDValue FrameAddr = LowerFRAMEADDR(Op, DAG);
976 SDValue Offset = DAG.getConstant(4, MVT::i32);
977 return DAG.getLoad(VT, dl, DAG.getEntryNode(),
978 DAG.getNode(ISD::ADD, dl, VT, FrameAddr, Offset),
984 return DAG.getCopyFromReg(DAG.getEntryNode(), dl, Reg, VT);
988 HexagonTargetLowering::LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const {
990 MachineFrameInfo *MFI = DAG.getMachineFunction().getFrameInfo();
996 SDValue FrameAddr = DAG.getCopyFromReg(DAG.getEntryNode(), dl,
999 FrameAddr = DAG.getLoad(VT, dl, DAG.getEntryNode(), FrameAddr,
1007 SelectionDAG& DAG) const {
1009 return DAG.getNode(HexagonISD::BARRIER, dl, MVT::Other, Op.getOperand(0));
1014 SelectionDAG& DAG) const {
1016 return DAG.getNode(HexagonISD::BARRIER, dl, MVT::Other, Op.getOperand(0));
1021 SelectionDAG &DAG) const {
1026 Result = DAG.getTargetGlobalAddress(GV, dl, getPointerTy(), Offset);
1031 return DAG.getNode(HexagonISD::CONST32_GP, dl, getPointerTy(), Result);
1034 return DAG.getNode(HexagonISD::CONST32, dl, getPointerTy(), Result);
1038 HexagonTargetLowering::LowerBlockAddress(SDValue Op, SelectionDAG &DAG) const {
1040 SDValue BA_SD = DAG.getTargetBlockAddress(BA, MVT::i32);
1042 return DAG.getNode(HexagonISD::CONST32_GP, dl, getPointerTy(), BA_SD);
1521 HexagonTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
1524 case ISD::ConstantPool: return LowerConstantPool(Op, DAG);
1526 case ISD::RETURNADDR: return LowerRETURNADDR(Op, DAG);
1527 case ISD::FRAMEADDR: return LowerFRAMEADDR(Op, DAG);
1530 case ISD::MEMBARRIER: return LowerMEMBARRIER(Op, DAG);
1531 case ISD::ATOMIC_FENCE: return LowerATOMIC_FENCE(Op, DAG);
1532 case ISD::GlobalAddress: return LowerGLOBALADDRESS(Op, DAG);
1533 case ISD::BlockAddress: return LowerBlockAddress(Op, DAG);
1534 case ISD::VASTART: return LowerVASTART(Op, DAG);
1535 case ISD::BR_JT: return LowerBR_JT(Op, DAG);
1537 case ISD::DYNAMIC_STACKALLOC: return LowerDYNAMIC_STACKALLOC(Op, DAG);
1538 case ISD::SELECT_CC: return LowerSELECT_CC(Op, DAG);
1540 case ISD::INTRINSIC_WO_CHAIN: return LowerINTRINSIC_WO_CHAIN(Op, DAG);
1541 case ISD::INLINEASM: return LowerINLINEASM(Op, DAG);
1651 SelectionDAG& DAG) const {
1652 const Function *CallerF = DAG.getMachineFunction().getFunction();