Lines Matching refs:DAG

1 //===-- BPFISelLowering.cpp - BPF DAG Lowering Implementation  ------------===//
10 // selection DAG.
38 static void fail(const SDLoc &DL, SelectionDAG &DAG, const Twine &Msg) {
39 MachineFunction &MF = DAG.getMachineFunction();
40 DAG.getContext()->diagnose(
44 static void fail(const SDLoc &DL, SelectionDAG &DAG, const char *Msg,
46 MachineFunction &MF = DAG.getMachineFunction();
52 DAG.getContext()->diagnose(
258 SDNode *N, SmallVectorImpl<SDValue> &Results, SelectionDAG &DAG) const {
278 fail(DL, DAG, err_msg);
281 SDValue BPFTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
284 return LowerBR_CC(Op, DAG);
286 return LowerGlobalAddress(Op, DAG);
288 return LowerSELECT_CC(Op, DAG);
302 SelectionDAG &DAG, SmallVectorImpl<SDValue> &InVals) const {
311 MachineFunction &MF = DAG.getMachineFunction();
316 CCState CCInfo(CallConv, IsVarArg, MF, ArgLocs, *DAG.getContext());
335 SDValue ArgValue = DAG.getCopyFromReg(Chain, DL, VReg, RegVT);
340 ArgValue = DAG.getNode(ISD::AssertSext, DL, RegVT, ArgValue,
341 DAG.getValueType(VA.getValVT()));
343 ArgValue = DAG.getNode(ISD::AssertZext, DL, RegVT, ArgValue,
344 DAG.getValueType(VA.getValVT()));
347 ArgValue = DAG.getNode(ISD::TRUNCATE, DL, VA.getValVT(), ArgValue);
354 fail(DL, DAG, "defined with too many args");
355 InVals.push_back(DAG.getConstant(0, DL, VA.getLocVT()));
360 fail(DL, DAG, "functions with VarArgs or StructRet are not supported");
370 SelectionDAG &DAG = CLI.DAG;
379 MachineFunction &MF = DAG.getMachineFunction();
394 CCState CCInfo(CallConv, IsVarArg, MF, ArgLocs, *DAG.getContext());
401 fail(CLI.DL, DAG, "too many args to ", Callee);
408 fail(CLI.DL, DAG, "pass by value not supported ", Callee);
412 Chain = DAG.getCALLSEQ_START(Chain, NumBytes, 0, CLI.DL);
430 Arg = DAG.getNode(ISD::SIGN_EXTEND, CLI.DL, VA.getLocVT(), Arg);
433 Arg = DAG.getNode(ISD::ZERO_EXTEND, CLI.DL, VA.getLocVT(), Arg);
436 Arg = DAG.getNode(ISD::ANY_EXTEND, CLI.DL, VA.getLocVT(), Arg);
453 Chain = DAG.getCopyToReg(Chain, CLI.DL, Reg.first, Reg.second, InFlag);
461 Callee = DAG.getTargetGlobalAddress(G->getGlobal(), CLI.DL, PtrVT,
464 Callee = DAG.getTargetExternalSymbol(E->getSymbol(), PtrVT, 0);
465 fail(CLI.DL, DAG, Twine("A call to built-in function '"
471 SDVTList NodeTys = DAG.getVTList(MVT::Other, MVT::Glue);
479 Ops.push_back(DAG.getRegister(Reg.first, Reg.second.getValueType()));
484 Chain = DAG.getNode(BPFISD::CALL, CLI.DL, NodeTys, Ops);
488 Chain = DAG.getCALLSEQ_END(
489 Chain, DAG.getConstant(NumBytes, CLI.DL, PtrVT, true),
490 DAG.getConstant(0, CLI.DL, PtrVT, true), InFlag, CLI.DL);
495 return LowerCallResult(Chain, InFlag, CallConv, IsVarArg, Ins, CLI.DL, DAG,
504 const SDLoc &DL, SelectionDAG &DAG) const {
509 MachineFunction &MF = DAG.getMachineFunction();
512 CCState CCInfo(CallConv, IsVarArg, MF, RVLocs, *DAG.getContext());
515 fail(DL, DAG, "only integer returns supported");
516 return DAG.getNode(Opc, DL, MVT::Other, Chain);
530 Chain = DAG.getCopyToReg(Chain, DL, VA.getLocReg(), OutVals[i], Flag);
535 RetOps.push_back(DAG.getRegister(VA.getLocReg(), VA.getLocVT()));
544 return DAG.getNode(Opc, DL, MVT::Other, RetOps);
550 SelectionDAG &DAG, SmallVectorImpl<SDValue> &InVals) const {
552 MachineFunction &MF = DAG.getMachineFunction();
555 CCState CCInfo(CallConv, IsVarArg, MF, RVLocs, *DAG.getContext());
558 fail(DL, DAG, "only small returns supported");
560 InVals.push_back(DAG.getConstant(0, DL, Ins[i].VT));
561 return DAG.getCopyFromReg(Chain, DL, 1, Ins[0].VT, InFlag).getValue(1);
568 Chain = DAG.getCopyFromReg(Chain, DL, Val.getLocReg(),
591 SDValue BPFTargetLowering::LowerBR_CC(SDValue Op, SelectionDAG &DAG) const {
602 return DAG.getNode(BPFISD::BR_CC, DL, Op.getValueType(), Chain, LHS, RHS,
603 DAG.getConstant(CC, DL, LHS.getValueType()), Dest);
606 SDValue BPFTargetLowering::LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const {
617 SDValue TargetCC = DAG.getConstant(CC, DL, LHS.getValueType());
618 SDVTList VTs = DAG.getVTList(Op.getValueType(), MVT::Glue);
621 return DAG.getNode(BPFISD::SELECT_CC, DL, VTs, Ops);
645 SelectionDAG &DAG) const {
651 SDValue GA = DAG.getTargetGlobalAddress(GV, DL, MVT::i64);
653 return DAG.getNode(BPFISD::Wrapper, DL, MVT::i64, GA);