[llvm] [VPlan] Support multiple F(Max|Min)Num reductions. (PR #161735)
Mel Chen via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 8 00:40:13 PDT 2025
================
@@ -884,52 +871,69 @@ bool VPlanTransforms::handleMaxMinNumReductions(VPlan &Plan) {
}
VPBasicBlock *LatchVPBB = LoopRegion->getExitingBasicBlock();
+ VPBasicBlock *MiddleVPBB = Plan.getMiddleBlock();
+ VPBuilder MiddleBuilder(MiddleVPBB, MiddleVPBB->begin());
VPBuilder Builder(LatchVPBB->getTerminator());
- auto *LatchExitingBranch = cast<VPInstruction>(LatchVPBB->getTerminator());
- assert(LatchExitingBranch->getOpcode() == VPInstruction::BranchOnCount &&
+ VPValue *AnyNaN = nullptr;
+ SmallPtrSet<VPValue *, 2> RdxResults;
+ for (VPReductionPHIRecipe *RedPhiR : ReductionsToConvert) {
+ VPValue *MinMaxOp = GetMinMaxCompareValue(RedPhiR);
----------------
Mel-Chen wrote:
Is the recurrence chain for RecurKind::FMinNum and RecurKind::FMaxNum limited to a single min/max operation (similar to FindLast, which has only one select)?
Seems like GetMinMaxCompareValue only returns the last min/max operation.
If multiple min/max operations can appear in the recurrence chain, should all of them be handled? Or only handle the last one is correct?
https://github.com/llvm/llvm-project/pull/161735
More information about the llvm-commits
mailing list