diff --git a/llvm/lib/Target/RISCV/RISCVCodeGenPrepare.cpp b/llvm/lib/Target/RISCV/RISCVCodeGenPrepare.cpp index ab450f9c4a61d..1ee4c66a5bde5 100644 --- a/llvm/lib/Target/RISCV/RISCVCodeGenPrepare.cpp +++ b/llvm/lib/Target/RISCV/RISCVCodeGenPrepare.cpp @@ -271,8 +271,10 @@ bool RISCVCodeGenPrepare::expandVPStrideLoad(IntrinsicInst &II) { IRBuilder<> Builder(&II); Type *STy = VTy->getElementType(); Value *Val = Builder.CreateLoad(STy, BasePtr); - Value *Res = Builder.CreateIntrinsic(Intrinsic::experimental_vp_splat, {VTy}, - {Val, II.getOperand(2), VL}); + Value *Res = Builder.CreateIntrinsic( + Intrinsic::vp_merge, VTy, + {II.getOperand(2), Builder.CreateVectorSplat(VTy->getElementCount(), Val), + PoisonValue::get(VTy), VL}); II.replaceAllUsesWith(Res); II.eraseFromParent();