[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