Skip to content

Commit ea2c9b0

Browse files
committed
New case
1 parent d9657a1 commit ea2c9b0

File tree

1 file changed

+3
-26
lines changed

1 file changed

+3
-26
lines changed

llvm/lib/Target/RISCV/RISCVInterleavedAccess.cpp

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)