Lines Matching refs:VA
206 CCValAssign &VA = RVLocs[i];
207 assert(VA.isRegLoc() && "Can only return in registers!");
209 Chain = DAG.getCopyToReg(Chain, DL, VA.getLocReg(),
214 RetOps.push_back(DAG.getRegister(VA.getLocReg(), VA.getLocVT()));
268 CCValAssign &VA = RVLocs[i];
269 assert(VA.isRegLoc() && "Can only return in registers!");
273 switch (VA.getLocInfo()) {
276 OutVal = DAG.getNode(ISD::SIGN_EXTEND, DL, VA.getLocVT(), OutVal);
279 OutVal = DAG.getNode(ISD::ZERO_EXTEND, DL, VA.getLocVT(), OutVal);
282 OutVal = DAG.getNode(ISD::ANY_EXTEND, DL, VA.getLocVT(), OutVal);
290 if (VA.getValVT() == MVT::i32 && VA.needsCustom()) {
296 if (i+1 < RVLocs.size() && RVLocs[i+1].getLocReg() == VA.getLocReg()) {
304 Chain = DAG.getCopyToReg(Chain, DL, VA.getLocReg(), OutVal, Flag);
308 RetOps.push_back(DAG.getRegister(VA.getLocReg(), VA.getLocVT()));
360 CCValAssign &VA = ArgLocs[i];
375 if (VA.isRegLoc()) {
376 if (VA.needsCustom()) {
377 assert(VA.getLocVT() == MVT::f64);
379 MF.getRegInfo().addLiveIn(VA.getLocReg(), VRegHi);
405 MF.getRegInfo().addLiveIn(VA.getLocReg(), VReg);
407 if (VA.getLocVT() == MVT::f32)
409 else if (VA.getLocVT() != MVT::i32) {
411 DAG.getValueType(VA.getLocVT()));
412 Arg = DAG.getNode(ISD::TRUNCATE, dl, VA
418 assert(VA.isMemLoc());
420 unsigned Offset = VA.getLocMemOffset()+StackOffset;
422 if (VA.needsCustom()) {
423 assert(VA.getValVT() == MVT::f64);
430 SDValue Load = DAG.getLoad(VA.getValVT(), dl, Chain, FIPtr,
465 if (VA.getValVT() == MVT::i32 || VA.getValVT() == MVT::f32) {
466 Load = DAG.getLoad(VA.getValVT(), dl, Chain, FIPtr,
472 unsigned Offset = 4-std::max(1U, VA.getValVT().getSizeInBits()/8);
477 VA.getValVT(), false, false,0);
478 Load = DAG.getNode(ISD::TRUNCATE, dl, VA.getValVT(), Load);
560 CCValAssign &VA = ArgLocs[i];
561 if (VA.isRegLoc()) {
566 unsigned VReg = MF.addLiveIn(VA.getLocReg(),
567 getRegClassFor(VA.getLocVT()));
568 SDValue Arg = DAG.getCopyFromReg(Chain, DL, VReg, VA.getLocVT());
571 if (VA.getValVT() == MVT::i32 && VA.needsCustom())
572 Arg = DAG.getNode(ISD::SRL, DL, VA.getLocVT(), Arg,
577 switch (VA.getLocInfo()) {
579 Arg = DAG.getNode(ISD::AssertSext, DL, VA.getLocVT(), Arg,
580 DAG.getValueType(VA.getValVT()));
583 Arg = DAG.getNode(ISD::AssertZext, DL, VA.getLocVT(), Arg,
584 DAG.getValueType(VA.getValVT()));
591 if (VA.isExtInLoc())
592 Arg = DAG.getNode(ISD::TRUNCATE, DL, VA.getValVT(), Arg);
599 assert(VA.isMemLoc());
602 unsigned Offset = VA.getLocMemOffset() + ArgArea;
603 unsigned ValSize = VA.getValVT().getSizeInBits() / 8;
607 if (VA.isExtInLoc())
610 InVals.push_back(DAG.getLoad(VA.getValVT(), DL, Chain,
747 CCValAssign &VA = ArgLocs[i];
757 switch (VA.getLocInfo()) {
761 Arg = DAG.getNode(ISD::SIGN_EXTEND, dl, VA.getLocVT(), Arg);
764 Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, VA.getLocVT(), Arg);
767 Arg = DAG.getNode(ISD::ANY_EXTEND, dl, VA.getLocVT(), Arg);
770 Arg = DAG.getNode(ISD::BITCAST, dl, VA.getLocVT(), Arg);
775 assert(VA.needsCustom());
787 if (VA.needsCustom()) {
788 assert(VA.getLocVT() == MVT::f64);
790 if (VA.isMemLoc()) {
791 unsigned Offset = VA.getLocMemOffset() + StackOffset;
818 if (VA.isRegLoc()) {
819 RegsToPass.push_back(std::make_pair(VA.getLocReg(), Hi));
835 unsigned Offset = VA.getLocMemOffset() + StackOffset;
855 if (VA.isRegLoc()) {
856 if (VA.getLocVT() != MVT::f32) {
857 RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
861 RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
865 assert(VA.isMemLoc());
869 SDValue PtrOff = DAG.getIntPtrConstant(VA.getLocMemOffset()+StackOffset);
1009 const CCValAssign &VA = ArgLocs[i];
1010 MVT ValTy = VA.getLocVT();
1013 if (!VA.isRegLoc() || (ValTy != MVT::f64 && ValTy != MVT::f128))
1016 if (Outs[VA.getValNo()].IsFixed)
1025 unsigned Offset = argSize * (VA.getLocReg() - firstReg);
1033 NewVA = CCValAssign::getReg(VA.getValNo(), VA.getValVT(),
1039 NewVA = CCValAssign::getCustomReg(VA.getValNo(), VA.getValVT(),
1044 NewVA = CCValAssign::getMem(VA.getValNo(), VA.getValVT(),
1045 Offset, VA.getLocVT(), VA.getLocInfo());
1098 const CCValAssign &VA = ArgLocs[i];
1102 switch (VA.getLocInfo()) {
1108 Arg = DAG.getNode(ISD::SIGN_EXTEND, DL, VA.getLocVT(), Arg);
1111 Arg = DAG.getNode(ISD::ZERO_EXTEND, DL, VA.getLocVT(), Arg);
1114 Arg = DAG.getNode(ISD::ANY_EXTEND, DL, VA.getLocVT(), Arg);
1119 if (!VA.needsCustom() || VA.getValVT() != MVT::f128
1120 || VA.getLocVT() != MVT::i128)
1121 Arg = DAG.getNode(ISD::BITCAST, DL, VA.getLocVT(), Arg);
1125 if (VA.isRegLoc()) {
1126 if (VA.needsCustom() && VA.getValVT() == MVT::f128
1127 && VA.getLocVT() == MVT::i128) {
1129 unsigned Offset = 8 * (VA.getLocReg() - SP::I0);
1150 RegsToPass.push_back(std::make_pair(toCallerWindow(VA.getLocReg()),
1152 RegsToPass.push_back(std::make_pair(toCallerWindow(VA.getLocReg()+1),
1159 if (VA.getValVT() == MVT::i32 && VA.needsCustom()) {
1166 ArgLocs[i+1].getLocReg() == VA.getLocReg()) {
1174 RegsToPass.push_back(std::make_pair(toCallerWindow(VA.getLocReg()), Arg));
1178 assert(VA.isMemLoc());
1184 SDValue PtrOff = DAG.getIntPtrConstant(VA.getLocMemOffset() +
1270 CCValAssign &VA = RVLocs[i];
1271 unsigned Reg = toCallerWindow(VA.getLocReg());
1289 if (VA.getValVT() == MVT::i32 && VA.needsCustom())
1290 RV = DAG.getNode(ISD::SRL, DL, VA.getLocVT(), RV,
1295 switch (VA.getLocInfo()) {
1297 RV = DAG.getNode(ISD::AssertSext, DL, VA.getLocVT(), RV,
1298 DAG.getValueType(VA.getValVT()));
1301 RV = DAG.getNode(ISD::AssertZext, DL, VA.getLocVT(), RV,
1302 DAG.getValueType(VA.getValVT()));
1309 if (VA.isExtInLoc())
1310 RV = DAG.getNode(ISD::TRUNCATE, DL, VA.getValVT(), RV);