Lines Matching refs:VA
622 // Value is a value that has been passed to us in the location described by VA
623 // (and so has type VA.getLocVT()). Convert Value to VA.getValVT(), chaining
626 CCValAssign &VA, SDValue Chain,
630 if (VA.getLocInfo() == CCValAssign::SExt)
631 Value = DAG.getNode(ISD::AssertSext, DL, VA.getLocVT(), Value,
632 DAG.getValueType(VA.getValVT()));
633 else if (VA.getLocInfo() == CCValAssign::ZExt)
634 Value = DAG.getNode(ISD::AssertZext, DL, VA.getLocVT(), Value,
635 DAG.getValueType(VA.getValVT()));
637 if (VA.isExtInLoc())
638 Value = DAG.getNode(ISD::TRUNCATE, DL, VA.getValVT(), Value);
639 else if (VA.getLocInfo() == CCValAssign::Indirect)
640 Value = DAG.getLoad(VA.getValVT(), DL, Chain, Value,
643 assert(VA.getLocInfo() == CCValAssign::Full && "Unsupported getLocInfo");
647 // Value is a value of type VA.getValVT() that we need to copy into
648 // the location described by VA. Return a copy of Value converted to
649 // VA.getValVT(). The caller is responsible for handling indirect values.
651 CCValAssign &VA, SDValue Value) {
652 switch (VA.getLocInfo()) {
654 return DAG.getNode(ISD::SIGN_EXTEND, DL, VA.getLocVT(), Value);
656 return DAG.getNode(ISD::ZERO_EXTEND, DL, VA.getLocVT(), Value);
658 return DAG.getNode(ISD::ANY_EXTEND, DL, VA.getLocVT(), Value);
689 CCValAssign &VA = ArgLocs[I];
690 EVT LocVT = VA.getLocVT();
691 if (VA.isRegLoc()) {
717 MRI.addLiveIn(VA.getLocReg(), VReg);
720 assert(VA.isMemLoc() && "Argument not register or memory");
724 VA.getLocMemOffset(), true);
731 if (VA.getLocVT() == MVT::i32 || VA.getLocVT() == MVT::f32)
740 InVals.push_back(convertLocVTToValVT(DAG, DL, VA, Chain, ArgValue));
790 CCValAssign &VA = ArgLocs[I];
791 if (VA.getLocInfo() == CCValAssign::Indirect)
793 if (!VA.isRegLoc())
795 unsigned Reg = VA.getLocReg();
842 CCValAssign &VA = ArgLocs[I];
845 if (VA.getLocInfo() == CCValAssign::Indirect) {
847 SDValue SpillSlot = DAG.CreateStackTemporary(VA.getValVT());
854 ArgValue = convertValVTToLocVT(DAG, DL, VA, ArgValue);
856 if (VA.isRegLoc())
858 RegsToPass.push_back(std::make_pair(VA.getLocReg(), ArgValue));
860 assert(VA
866 unsigned Offset = SystemZMC::CallFrameSize + VA.getLocMemOffset();
867 if (VA.getLocVT() == MVT::i32 || VA.getLocVT() == MVT::f32)
949 CCValAssign &VA = RetLocs[I];
952 SDValue RetValue = DAG.getCopyFromReg(Chain, DL, VA.getLocReg(),
953 VA.getLocVT(), Glue);
959 InVals.push_back(convertLocVTToValVT(DAG, DL, VA, Chain, RetValue));
988 CCValAssign &VA = RetLocs[I];
992 assert(VA.isRegLoc() && "Can only return in registers!");
995 RetValue = convertValVTToLocVT(DAG, DL, VA, RetValue);
998 unsigned Reg = VA.getLocReg();
1001 RetOps.push_back(DAG.getRegister(Reg, VA.getLocVT()));