+ if (ObjectVT.isVector()) {
+ unsigned NumElts = ObjectVT.getVectorNumElements();
+ EVT EltVT = ObjectVT.getVectorElementType();
+ unsigned Offset = 0;
+ for (unsigned vi = 0; vi < NumElts; ++vi) {
+ SDValue A = getParamSymbol(DAG, idx, getPointerTy());
+ SDValue B = DAG.getIntPtrConstant(Offset);
+ SDValue Addr = DAG.getNode(ISD::ADD, dl, getPointerTy(),
+ //getParamSymbol(DAG, idx, EltVT),
+ //DAG.getConstant(Offset, getPointerTy()));
+ A, B);
+ Value *SrcValue = Constant::getNullValue(PointerType::get(
+ EltVT.getTypeForEVT(F->getContext()),
+ llvm::ADDRESS_SPACE_PARAM));
+ SDValue Ld = DAG.getLoad(EltVT, dl, Root, Addr,
+ MachinePointerInfo(SrcValue),
+ false, false, false,
+ TD->getABITypeAlignment(EltVT.getTypeForEVT(
+ F->getContext())));
+ Offset += EltVT.getStoreSizeInBits()/8;
+ InVals.push_back(Ld);
+ }
+ continue;
+ }
+