[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