@@ -173,32 +173,9 @@ bool RISCVTargetLowering::lowerInterleavedLoad(
173173
174174 Value *Ptr, *VL;
175175 Align Alignment;
176- if (auto *LI = dyn_cast<LoadInst>(Load)) {
177- assert (LI->isSimple ());
178- Ptr = LI->getPointerOperand ();
179- Alignment = LI->getAlign ();
180- assert (!Mask && " Unexpected mask on a load\n " );
181- Mask = Builder.getAllOnesMask (VTy->getElementCount ());
182- VL = Builder.CreateElementCount (XLenTy, VTy->getElementCount ());
183- } else {
184- auto *VPLoad = cast<VPIntrinsic>(Load);
185- assert (VPLoad->getIntrinsicID () == Intrinsic::vp_load &&
186- " Unexpected intrinsic" );
187- Ptr = VPLoad->getMemoryPointerParam ();
188- Alignment = VPLoad->getPointerAlignment ().value_or (
189- DL.getABITypeAlign (VTy->getElementType ()));
190-
191- assert (Mask && " vp.load needs a mask!" );
192-
193- Value *WideEVL = VPLoad->getVectorLengthParam ();
194- // Conservatively check if EVL is a multiple of factor, otherwise some
195- // (trailing) elements might be lost after the transformation.
196- if (!isMultipleOfN (WideEVL, DL, Factor))
197- return false ;
198-
199- auto *FactorC = ConstantInt::get (WideEVL->getType (), Factor);
200- VL = Builder.CreateZExt (Builder.CreateExactUDiv (WideEVL, FactorC), XLenTy);
201- }
176+ if (!getMemOperands (Builder, Factor, VTy, DL, XLenTy, Load, Ptr, Mask, VL,
177+ Alignment))
178+ return false ;
202179
203180 Type *PtrTy = Ptr->getType ();
204181 unsigned AS = PtrTy->getPointerAddressSpace ();
0 commit comments