[llvm] [VPlan] Model branch cond to enter scalar epilogue in VPlan. (PR #92651)
    Florian Hahn via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Sun Jun 23 03:59:18 PDT 2024
    
    
  
================
@@ -812,8 +816,19 @@ bool VPlanTransforms::adjustFixedOrderRecurrences(VPlan &Plan,
     if (auto *FOR = dyn_cast<VPFirstOrderRecurrencePHIRecipe>(&R))
       RecurrencePhis.push_back(FOR);
 
-  VPBuilder MiddleBuilder(
-      cast<VPBasicBlock>(Plan.getVectorLoopRegion()->getSingleSuccessor()));
+  VPBasicBlock *MiddleVPBB =
+      cast<VPBasicBlock>(Plan.getVectorLoopRegion()->getSingleSuccessor());
+  VPBuilder MiddleBuilder;
+  // Set insert point so new recipes are inserted before terminator and
+  // condition, if there is either the former or both.
+  if (MiddleVPBB->getNumSuccessors() != 2)
+    MiddleBuilder.setInsertPoint(MiddleVPBB);
+  else if (isa<VPInstruction>(MiddleVPBB->getTerminator()->getOperand(0)))
+    MiddleBuilder.setInsertPoint(
+        &*std::prev(MiddleVPBB->getTerminator()->getIterator()));
+  else
+    MiddleBuilder.setInsertPoint(MiddleVPBB->getTerminator());
----------------
fhahn wrote:
Unfortunately it leads to a number of reorderings, probably best done separately.
https://github.com/llvm/llvm-project/pull/92651
    
    
More information about the llvm-commits
mailing list