[llvm] [RISCV] Try to optimize `vp.splice` to `vslide1up`. (PR #144871)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 23 10:16:44 PDT 2025
================
@@ -13281,6 +13283,20 @@ RISCVTargetLowering::lowerVPSpliceExperimental(SDValue Op,
SplatZeroOp2, DAG.getUNDEF(ContainerVT), EVL2);
}
+ SDValue FirstEle;
+ if (!IsMaskVector && isNullConstant(Offset) && isOneConstant(EVL1) &&
+ sd_match(Op1,
+ m_AnyOf(m_InsertElt(m_Poison(), m_Value(FirstEle), m_Zero()),
+ m_Node(ISD::SPLAT_VECTOR, m_Value(FirstEle))))) {
+ SDValue Result = DAG.getNode(
+ ContainerVT.isFloatingPoint() ? RISCVISD::VFSLIDE1UP_VL
+ : RISCVISD::VSLIDE1UP_VL,
+ DL, ContainerVT, DAG.getUNDEF(ContainerVT), Op2, FirstEle, Mask, EVL2);
+ return VT.isFixedLengthVector()
----------------
topperc wrote:
There are no tests for fixed vectors
https://github.com/llvm/llvm-project/pull/144871
More information about the llvm-commits
mailing list