diff options
author | Luke Lau <luke@igalia.com> | 2025-03-18 01:18:15 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-18 00:18:15 +0800 |
commit | 67f1c033b8ff07c2713b3cb1209a574129274cbf (patch) | |
tree | 836f87a6fa85779af689b70d9997bf48a3766562 /llvm/lib/Transforms/Utils/LoopUtils.cpp | |
parent | 54cb4059da2751758b3ab6dc5630e40b228bcda5 (diff) | |
download | llvm-67f1c033b8ff07c2713b3cb1209a574129274cbf.zip llvm-67f1c033b8ff07c2713b3cb1209a574129274cbf.tar.gz llvm-67f1c033b8ff07c2713b3cb1209a574129274cbf.tar.bz2 |
[VPlan] Remove createReduction. NFCI (#131336)
This is split off from #131300.
A VPReductionRecipe will never have a AnyOf or FindLastIV recurrence, so
when it calls createReduction it always calls createSimpleReduction.
If we replace the call then it leaves createReduction with one user in
VPInstruction::ComputeReductionResult, which we can inline and then
remove.
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUtils.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopUtils.cpp | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUtils.cpp b/llvm/lib/Transforms/Utils/LoopUtils.cpp index 84c0855..185af86 100644 --- a/llvm/lib/Transforms/Utils/LoopUtils.cpp +++ b/llvm/lib/Transforms/Utils/LoopUtils.cpp @@ -1336,7 +1336,8 @@ Value *llvm::createSimpleReduction(VectorBuilder &VBuilder, Value *Src, const RecurrenceDescriptor &Desc) { RecurKind Kind = Desc.getRecurrenceKind(); assert(!RecurrenceDescriptor::isAnyOfRecurrenceKind(Kind) && - "AnyOf reduction is not supported."); + !RecurrenceDescriptor::isFindLastIVRecurrenceKind(Kind) && + "AnyOf or FindLastIV reductions are not supported."); Intrinsic::ID Id = getReductionIntrinsicID(Kind); auto *SrcTy = cast<VectorType>(Src->getType()); Type *SrcEltTy = SrcTy->getElementType(); @@ -1345,24 +1346,6 @@ Value *llvm::createSimpleReduction(VectorBuilder &VBuilder, Value *Src, return VBuilder.createSimpleReduction(Id, SrcTy, Ops); } -Value *llvm::createReduction(IRBuilderBase &B, - const RecurrenceDescriptor &Desc, Value *Src, - PHINode *OrigPhi) { - // TODO: Support in-order reductions based on the recurrence descriptor. - // All ops in the reduction inherit fast-math-flags from the recurrence - // descriptor. - IRBuilderBase::FastMathFlagGuard FMFGuard(B); - B.setFastMathFlags(Desc.getFastMathFlags()); - - RecurKind RK = Desc.getRecurrenceKind(); - if (RecurrenceDescriptor::isAnyOfRecurrenceKind(RK)) - return createAnyOfReduction(B, Src, Desc, OrigPhi); - if (RecurrenceDescriptor::isFindLastIVRecurrenceKind(RK)) - return createFindLastIVReduction(B, Src, Desc); - - return createSimpleReduction(B, Src, RK); -} - Value *llvm::createOrderedReduction(IRBuilderBase &B, const RecurrenceDescriptor &Desc, Value *Src, Value *Start) { |