[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