[llvm] [LoopUnroll] Introduce parallel reduction phis when unrolling. (PR #149470)

Jon Roelofs via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 26 11:03:48 PDT 2025


================
@@ -733,6 +771,31 @@ llvm::UnrollLoop(Loop *L, UnrollLoopOptions ULO, LoopInfo *LI,
         for (PHINode *OrigPHI : OrigPHINode) {
           PHINode *NewPHI = cast<PHINode>(VMap[OrigPHI]);
           Value *InVal = NewPHI->getIncomingValueForBlock(LatchBlock);
+
+          // Use cloned phis as parallel phis for partial reductions, which will
+          // get combined to the final reduction result after the loop.
+          if (Reductions.contains(OrigPHI)) {
+            // Collect partial  reduction results.
+            if (PartialReductions.empty())
+              PartialReductions.push_back(cast<Instruction>(InVal));
----------------
jroelofs wrote:

is `InVal` guaranteed to be an `Instruction`? Could it be an immediate?

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


More information about the llvm-commits mailing list