[llvm] [LV][EVL] Generate negative strided load/store for reversed load/store (PR #123608)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 20 06:19:57 PST 2025
================
@@ -2641,17 +2628,29 @@ void VPWidenLoadEVLRecipe::execute(VPTransformState &State) {
Builder.CreateIntrinsic(DataTy, Intrinsic::vp_gather, {Addr, Mask, EVL},
nullptr, "wide.masked.gather");
} else {
- VectorBuilder VBuilder(Builder);
- VBuilder.setEVL(EVL).setMask(Mask);
- NewLI = cast<CallInst>(VBuilder.createVectorInstruction(
- Instruction::Load, DataTy, Addr, "vp.op.load"));
+ if (isReverse()) {
+ auto *EltTy = DataTy->getElementType();
+ auto *PtrTy = Addr->getType();
+ Value *Operands[] = {
+ Addr,
+ ConstantInt::getSigned(
+ Builder.getInt32Ty(),
+ -static_cast<int64_t>(EltTy->getScalarSizeInBits()) / 8),
----------------
lukel97 wrote:
Probably should use `DL.getTypeAllocSize(EltTy)`?
https://github.com/llvm/llvm-project/pull/123608
More information about the llvm-commits
mailing list