Home | History | Annotate | Download | only in Hexagon

Lines Matching defs:DAG

1 //===-- HexagonISelLowering.cpp - Hexagon DAG Lowering Implementation -----===//
11 // into a selection DAG.
265 HexagonTargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op, SelectionDAG &DAG)
277 ISD::ArgFlagsTy Flags, SelectionDAG &DAG,
280 SDValue SizeNode = DAG.getConstant(Flags.getByValSize(), MVT::i32);
281 return DAG.getMemcpy(Chain, dl, Dst, Src, SizeNode, Flags.getByValAlign(),
295 DebugLoc dl, SelectionDAG &DAG) const {
301 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
302 getTargetMachine(), RVLocs, *DAG.getContext());
309 if (DAG.getMachineFunction().getRegInfo().liveout_empty()) {
312 DAG.getMachineFunction().getRegInfo().addLiveOut(RVLocs[i].getLocReg());
320 Chain = DAG.getCopyToReg(Chain, dl, VA.getLocReg(), OutVals[i], Flag);
327 return DAG.getNode(HexagonISD::RET_FLAG, dl, MVT::Other, Chain, Flag);
329 return DAG.getNode(HexagonISD::RET_FLAG, dl, MVT::Other, Chain);
345 DebugLoc dl, SelectionDAG &DAG,
353 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
354 getTargetMachine(), RVLocs, *DAG.getContext());
360 Chain = DAG.getCopyFromReg(Chain, dl,
375 SelectionDAG &DAG = CLI.DAG;
390 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
391 getTargetMachine(), ArgLocs, *DAG.getContext());
398 Callee = DAG.getTargetGlobalAddress(GA->getGlobal(), dl, MVT::i32);
419 DAG.getMachineFunction().getFunction()->hasStructRetAttr();
423 Outs, OutVals, Ins, DAG);
444 DAG.getCopyFromReg(Chain, dl, TM.getRegisterInfo()->getStackRegister(),
461 Arg = DAG.getNode(ISD::SIGN_EXTEND, dl, VA.getLocVT(), Arg);
464 Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, VA.getLocVT(), Arg);
467 Arg = DAG.getNode(ISD::ANY_EXTEND, dl, VA.getLocVT(), Arg);
473 SDValue PtrOff = DAG.getConstant(LocMemOffset, StackPtr.getValueType());
474 PtrOff = DAG.getNode(ISD::ADD, dl, MVT::i32, StackPtr, PtrOff);
480 Flags, DAG, dl));
484 MemOpChains.push_back(DAG.getStore(Chain, dl, Arg, PtrOff,
501 Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, &MemOpChains[0],
506 Chain = DAG.getCALLSEQ_START(Chain, DAG.getConstant(NumBytes,
516 Chain = DAG.getCopyToReg(Chain, dl, RegsToPass[i].first,
534 Chain = DAG.getCopyToReg(Chain, dl, RegsToPass[i].first,
548 DAG.getTargetExternalSymbol(MemcpyName, getPointerTy());
551 Callee = DAG.getTargetGlobalAddress(G->getGlobal(), dl, getPointerTy());
554 Callee = DAG.getTargetExternalSymbol(S->getSymbol(), getPointerTy());
558 SDVTList NodeTys = DAG.getVTList(MVT::Other, MVT::Glue);
566 Ops.push_back(DAG.getRegister(RegsToPass[i].first,
575 return DAG.getNode(HexagonISD::TC_RETURN, dl, NodeTys, &Ops[0], Ops.size());
577 Chain = DAG.getNode(HexagonISD::CALL, dl, NodeTys, &Ops[0], Ops.size());
581 Chain = DAG.getCALLSEQ_END(Chain, DAG.getIntPtrConstant(NumBytes, true),
582 DAG.getIntPtrConstant(0, true), InFlag);
587 return LowerCallResult(Chain, InFlag, CallConv, isVarArg, Ins, dl, DAG,
594 SelectionDAG &DAG) {
633 SelectionDAG &DAG) const
653 isInc, DAG);
665 SelectionDAG &DAG) const {
667 MachineFunction &MF = DAG.getMachineFunction();
719 LowerBR_JT(SDValue Op, SelectionDAG &DAG) const
727 MachineFunction &MF = DAG.getMachineFunction();
729 SDValue TargetJT = DAG.getTargetJumpTable(JT->getIndex(), MVT::i32);
742 SDValue JumpTableBase = DAG.getNode(HexagonISD::WrapperJT, dl,
744 SDValue ShiftIndex = DAG.getNode(ISD::SHL, dl, MVT::i32, Index,
745 DAG.getConstant(2, MVT::i32));
746 SDValue JTAddress = DAG.getNode(ISD::ADD, dl, MVT::i32, JumpTableBase,
748 SDValue LoadTarget = DAG.getLoad(MVT::i32, dl, Chain, JTAddress,
751 return DAG.getNode(HexagonISD::BR_JT, dl, MVT::Other, Chain, LoadTarget);
757 SelectionDAG &DAG) const {
765 SDValue StackPointer = DAG.getCopyFromReg(Chain, dl, SPReg, MVT::i32);
769 SDValue Sub = DAG.getNode(ISD::SUB, dl, MVT::i32, StackPointer, Size);
785 SDValue ArgAdjust = DAG.getNode(HexagonISD::ADJDYNALLOC, dl,
788 DAG.getConstant(0, MVT::i32));
792 SDValue CopyChain = DAG.getCopyToReg(Chain, dl,
797 return DAG.getMergeValues(Ops, 2, dl);
806 DebugLoc dl, SelectionDAG &DAG,
810 MachineFunction &MF = DAG.getMachineFunction();
819 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
820 getTargetMachine(), ArgLocs, *DAG.getContext());
851 InVals.push_back(DAG.getCopyFromReg(Chain, dl, VReg, RegVT));
856 InVals.push_back(DAG.getCopyFromReg(Chain, dl, VReg, RegVT));
880 SDValue FIN = DAG.getFrameIndex(FI, MVT::i32);
888 InVals.push_back(DAG.getLoad(VA.getLocVT(), dl, Chain, FIN,
896 Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, &MemOps[0],
912 HexagonTargetLowering::LowerVASTART(SDValue Op, SelectionDAG &DAG) const {
915 MachineFunction &MF = DAG.getMachineFunction();
917 SDValue Addr = DAG.getFrameIndex(QFI->getVarArgsFrameIndex(), MVT::i32);
919 return DAG.getStore(Op.getOperand(0), Op.getDebugLoc(), Addr,
925 HexagonTargetLowering::LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const {
935 SDValue Cond = DAG.getNode(ISD::SETCC, dl, MVT::i1, LHS, RHS, CC);
936 return DAG.getNode(ISD::SELECT, dl, SVT, Cond, TrueVal, FalseVal);
940 HexagonTargetLowering::LowerConstantPool(SDValue Op, SelectionDAG &DAG) const {
947 Res = DAG.getTargetConstantPool(CP->getMachineCPVal(), ValTy,
950 Res = DAG.getTargetConstantPool(CP->getConstVal(), ValTy,
952 return DAG.getNode(HexagonISD::CONST32, dl, ValTy, Res);
956 HexagonTargetLowering::LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const {
958 MachineFunction &MF = DAG.getMachineFunction();
966 SDValue FrameAddr = LowerFRAMEADDR(Op, DAG);
967 SDValue Offset = DAG.getConstant(4, MVT::i32);
968 return DAG.getLoad(VT, dl, DAG.getEntryNode(),
969 DAG.getNode(ISD::ADD, dl, VT, FrameAddr, Offset),
975 return DAG.getCopyFromReg(DAG.getEntryNode(), dl, Reg, VT);
979 HexagonTargetLowering::LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const {
981 MachineFrameInfo *MFI = DAG.getMachineFunction().getFrameInfo();
987 SDValue FrameAddr = DAG.getCopyFromReg(DAG.getEntryNode(), dl,
990 FrameAddr = DAG.getLoad(VT, dl, DAG.getEntryNode(), FrameAddr,
998 SelectionDAG& DAG) const {
1000 return DAG.getNode(HexagonISD::BARRIER, dl, MVT::Other, Op.getOperand(0));
1005 SelectionDAG& DAG) const {
1007 return DAG.getNode(HexagonISD::BARRIER, dl, MVT::Other, Op.getOperand(0));
1012 SelectionDAG &DAG) const {
1017 Result = DAG.getTargetGlobalAddress(GV, dl, getPointerTy(), Offset);
1022 return DAG.getNode(HexagonISD::CONST32_GP, dl, getPointerTy(), Result);
1025 return DAG.getNode(HexagonISD::CONST32, dl, getPointerTy(), Result);
1467 HexagonTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
1470 case ISD::ConstantPool: return LowerConstantPool(Op, DAG);
1472 case ISD::RETURNADDR: return LowerRETURNADDR(Op, DAG);
1473 case ISD::FRAMEADDR: return LowerFRAMEADDR(Op, DAG);
1476 case ISD::MEMBARRIER: return LowerMEMBARRIER(Op, DAG);
1477 case ISD::ATOMIC_FENCE: return LowerATOMIC_FENCE(Op, DAG);
1478 case ISD::GlobalAddress: return LowerGLOBALADDRESS(Op, DAG);
1479 case ISD::VASTART: return LowerVASTART(Op, DAG);
1480 case ISD::BR_JT: return LowerBR_JT(Op, DAG);
1482 case ISD::DYNAMIC_STACKALLOC: return LowerDYNAMIC_STACKALLOC(Op, DAG);
1483 case ISD::SELECT_CC: return LowerSELECT_CC(Op, DAG);
1485 case ISD::INTRINSIC_WO_CHAIN: return LowerINTRINSIC_WO_CHAIN(Op, DAG);
1486 case ISD::INLINEASM: return LowerINLINEASM(Op, DAG);
1596 SelectionDAG& DAG) const {
1597 const Function *CallerF = DAG.getMachineFunction().getFunction();