[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