Home | History | Annotate | Download | only in MSP430

Lines Matching defs:DAG

1 //===-- MSP430ISelLowering.cpp - MSP430 DAG Lowering Implementation  ------===//
185 SelectionDAG &DAG) const {
189 case ISD::SRA: return LowerShifts(Op, DAG);
190 case ISD::GlobalAddress: return LowerGlobalAddress(Op, DAG);
191 case ISD::BlockAddress: return LowerBlockAddress(Op, DAG);
192 case ISD::ExternalSymbol: return LowerExternalSymbol(Op, DAG);
193 case ISD::SETCC: return LowerSETCC(Op, DAG);
194 case ISD::BR_CC: return LowerBR_CC(Op, DAG);
195 case ISD::SELECT_CC: return LowerSELECT_CC(Op, DAG);
196 case ISD::SIGN_EXTEND: return LowerSIGN_EXTEND(Op, DAG);
197 case ISD::RETURNADDR: return LowerRETURNADDR(Op, DAG);
198 case ISD::FRAMEADDR: return LowerFRAMEADDR(Op, DAG);
199 case ISD::VASTART: return LowerVASTART(Op, DAG);
200 case ISD::JumpTable: return LowerJumpTable(Op, DAG);
374 SelectionDAG &DAG,
383 return LowerCCCArguments(Chain, CallConv, isVarArg, Ins, dl, DAG, InVals);
394 SelectionDAG &DAG = CLI.DAG;
414 Outs, OutVals, Ins, dl, DAG, InVals);
430 SelectionDAG &DAG,
433 MachineFunction &MF = DAG.getMachineFunction();
440 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
441 getTargetMachine(), ArgLocs, *DAG.getContext());
467 SDValue ArgValue = DAG.getCopyFromReg(Chain, dl, VReg, RegVT);
473 ArgValue = DAG.getNode(ISD::AssertSext, dl, RegVT, ArgValue,
474 DAG.getValueType(VA.getValVT()));
476 ArgValue = DAG.getNode(ISD::AssertZext, dl, RegVT, ArgValue,
477 DAG.getValueType(VA.getValVT()));
480 ArgValue = DAG.getNode(ISD::TRUNCATE, dl, VA.getValVT(), ArgValue);
494 InVal = DAG.getFrameIndex(FI, getPointerTy());
508 SDValue FIN = DAG.getFrameIndex(FI, MVT::i16);
509 InVal = DAG.getLoad(VA.getLocVT(), dl, Chain, FIN,
526 SDLoc dl, SelectionDAG &DAG) const {
536 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
537 getTargetMachine(), RVLocs, *DAG.getContext());
550 Chain = DAG.getCopyToReg(Chain, dl, VA.getLocReg(),
556 RetOps.push_back(DAG.getRegister(VA.getLocReg(), VA.getLocVT()));
568 return DAG.getNode(Opc, dl, MVT::Other, RetOps);
582 SDLoc dl, SelectionDAG &DAG,
586 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
587 getTargetMachine(), ArgLocs, *DAG.getContext());
593 Chain = DAG.getCALLSEQ_START(Chain ,DAG.getConstant(NumBytes,
612 Arg = DAG.getNode(ISD::SIGN_EXTEND, dl, VA.getLocVT(), Arg);
615 Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, VA.getLocVT(), Arg);
618 Arg = DAG.getNode(ISD::ANY_EXTEND, dl, VA.getLocVT(), Arg);
630 StackPtr = DAG.getCopyFromReg(Chain, dl, MSP430::SPW, getPointerTy());
632 SDValue PtrOff = DAG.getNode(ISD::ADD, dl, getPointerTy(),
634 DAG.getIntPtrConstant(VA.getLocMemOffset()));
640 SDValue SizeNode = DAG.getConstant(Flags.getByValSize(), MVT::i16);
641 MemOp = DAG.getMemcpy(Chain, dl, PtrOff, Arg, SizeNode,
648 MemOp = DAG.getStore(Chain, dl, Arg, PtrOff, MachinePointerInfo(),
659 Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, MemOpChains);
666 Chain = DAG.getCopyToReg(Chain, dl, RegsToPass[i].first,
675 Callee = DAG.getTargetGlobalAddress(G->getGlobal(), dl, MVT::i16);
677 Callee = DAG.getTargetExternalSymbol(E->getSymbol(), MVT::i16);
680 SDVTList NodeTys = DAG.getVTList(MVT::Other, MVT::Glue);
688 Ops.push_back(DAG.getRegister(RegsToPass[i].first,
694 Chain = DAG.getNode(MSP430ISD::CALL, dl, NodeTys, Ops);
698 Chain = DAG.getCALLSEQ_END(Chain,
699 DAG.getConstant(NumBytes, getPointerTy(), true),
700 DAG.getConstant(0, getPointerTy(), true),
707 DAG, InVals);
717 SDLoc dl, SelectionDAG &DAG,
722 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(),
723 getTargetMachine(), RVLocs, *DAG.getContext());
729 Chain = DAG.getCopyFromReg(Chain, dl, RVLocs[i].getLocReg(),
739 SelectionDAG &DAG) const {
750 return DAG.getNode(MSP430ISD::SHL, dl,
753 return DAG.getNode(MSP430ISD::SRA, dl,
756 return DAG.getNode(MSP430ISD::SRL, dl,
770 Victim = DAG.getNode(MSP430ISD::RRC, dl, VT, Victim);
775 Victim = DAG.getNode((Opc == ISD::SHL ? MSP430ISD::RLA : MSP430ISD::RRA),
782 SelectionDAG &DAG) const {
787 SDValue Result = DAG.getTargetGlobalAddress(GV, SDLoc(Op),
789 return DAG.getNode(MSP430ISD::Wrapper, SDLoc(Op),
794 SelectionDAG &DAG) const {
797 SDValue Result = DAG.getTargetExternalSymbol(Sym, getPointerTy());
799 return DAG.getNode(MSP430ISD::Wrapper, dl, getPointerTy(), Result);
803 SelectionDAG &DAG) const {
806 SDValue Result = DAG.getTargetBlockAddress(BA, getPointerTy());
808 return DAG.getNode(MSP430ISD::Wrapper, dl, getPointerTy(), Result);
813 SDLoc dl, SelectionDAG &DAG) {
842 RHS = DAG.getConstant(C->getSExtValue() + 1, C->getValueType(0));
855 RHS = DAG.getConstant(C->getSExtValue() + 1, C->getValueType(0));
868 RHS = DAG.getConstant(C->getSExtValue() + 1, C->getValueType(0));
881 RHS = DAG.getConstant(C->getSExtValue() + 1, C->getValueType(0));
889 TargetCC = DAG.getConstant(TCC, MVT::i8);
890 return DAG.getNode(MSP430ISD::CMP, dl, MVT::Glue, LHS, RHS);
894 SDValue MSP430TargetLowering::LowerBR_CC(SDValue Op, SelectionDAG &DAG) const {
903 SDValue Flag = EmitCMP(LHS, RHS, TargetCC, CC, dl, DAG);
905 return DAG.getNode(MSP430ISD::BR_CC, dl, Op.getValueType(),
909 SDValue MSP430TargetLowering::LowerSETCC(SDValue Op, SelectionDAG &DAG) const {
930 SDValue Flag = EmitCMP(LHS, RHS, TargetCC, CC, dl, DAG);
966 SDValue One = DAG.getConstant(1, VT);
968 SDValue SR = DAG.getCopyFromReg(DAG.getEntryNode(), dl, MSP430::SRW,
972 SR = DAG.getNode(ISD::SRA, dl, MVT::i16, SR, One);
973 SR = DAG.getNode(ISD::AND, dl, MVT::i16, SR, One);
975 SR = DAG.getNode(ISD::XOR, dl, MVT::i16, SR, One);
978 SDValue Zero = DAG.getConstant(0, VT);
979 SDVTList VTs = DAG.getVTList(Op.getValueType(), MVT::Glue);
985 return DAG.getNode(MSP430ISD::SELECT_CC, dl, VTs, Ops);
990 SelectionDAG &DAG) const {
999 SDValue Flag = EmitCMP(LHS, RHS, TargetCC, CC, dl, DAG);
1001 SDVTList VTs = DAG.getVTList(Op.getValueType(), MVT::Glue);
1008 return DAG.getNode(MSP430ISD::SELECT_CC, dl, VTs, Ops);
1012 SelectionDAG &DAG) const {
1019 return DAG.getNode(ISD::SIGN_EXTEND_INREG, dl, VT,
1020 DAG.getNode(ISD::ANY_EXTEND, dl, VT, Val),
1021 DAG.getValueType(Val.getValueType()));
1025 MSP430TargetLowering::getReturnAddressFrameIndex(SelectionDAG &DAG) const {
1026 MachineFunction &MF = DAG.getMachineFunction();
1038 return DAG.getFrameIndex(ReturnAddrIndex, getPointerTy());
1042 SelectionDAG &DAG) const {
1043 MachineFrameInfo *MFI = DAG.getMachineFunction().getFrameInfo();
1046 if (verifyReturnAddressArgumentIsConstant(Op, DAG))
1053 SDValue FrameAddr = LowerFRAMEADDR(Op, DAG);
1055 DAG.getConstant(getDataLayout()->getPointerSize(), MVT::i16);
1056 return DAG.getLoad(getPointerTy(), dl, DAG.getEntryNode(),
1057 DAG.getNode(ISD::ADD, dl, getPointerTy(),
1063 SDValue RetAddrFI = getReturnAddressFrameIndex(DAG);
1064 return DAG.getLoad(getPointerTy(), dl, DAG.getEntryNode(),
1069 SelectionDAG &DAG) const {
1070 MachineFrameInfo *MFI = DAG.getMachineFunction().getFrameInfo();
1076 SDValue FrameAddr = DAG.getCopyFromReg(DAG.getEntryNode(), dl,
1079 FrameAddr = DAG.getLoad(VT, dl, DAG.getEntryNode(), FrameAddr,
1086 SelectionDAG &DAG) const {
1087 MachineFunction &MF = DAG.getMachineFunction();
1091 SDValue FrameIndex = DAG.getFrameIndex(FuncInfo->getVarArgsFrameIndex(),
1096 return DAG.getStore(Op.getOperand(0), SDLoc(Op), FrameIndex,
1102 SelectionDAG &DAG) const {
1104 SDValue Result = DAG.getTargetJumpTable(JT->getIndex(), getPointerTy());
1105 return DAG.getNode(MSP430ISD::Wrapper, SDLoc(JT),
1116 SelectionDAG &DAG) const {
1136 Offset = DAG.getConstant(RHSC, VT);