[llvm] [VPlan] Unroll VPReplicateRecipe by VF. (PR #142433)

David Sherwood via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 9 02:20:45 PDT 2025


================
@@ -1140,6 +1140,22 @@ static void simplifyRecipe(VPRecipeBase &R, VPTypeAnalysis &TypeInfo) {
     return;
   }
 
+  // Look through Extract(Last|Penultimate)Element (BuildVector ....).
+  if (match(&R,
+            m_VPInstruction<VPInstruction::ExtractLastElement>(m_VPValue(A))) ||
+      match(&R, m_VPInstruction<VPInstruction::ExtractPenultimateElement>(
+                    m_VPValue(A)))) {
+    unsigned Offset = cast<VPInstruction>(&R)->getOpcode() ==
+                              VPInstruction::ExtractLastElement
+                          ? 1
+                          : 2;
+    auto *BV = dyn_cast<VPInstruction>(A);
+    if (BV && BV->getOpcode() == VPInstruction::BuildVector) {
----------------
david-arm wrote:

Can you use `match` here?

https://github.com/llvm/llvm-project/pull/142433


More information about the llvm-commits mailing list