diff options
author | Luke Lau <luke@igalia.com> | 2025-03-19 23:56:57 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-19 22:56:57 +0800 |
commit | f536f715800658567ba619ad8a2b361d4d715fe9 (patch) | |
tree | 74fd9d058aaa33827bae3e53c6add08ea502a85b /llvm/lib/Transforms/Utils/LoopUtils.cpp | |
parent | 3bba268013680d7bf86a3aedbf0e91930362bda1 (diff) | |
download | llvm-f536f715800658567ba619ad8a2b361d4d715fe9.zip llvm-f536f715800658567ba619ad8a2b361d4d715fe9.tar.gz llvm-f536f715800658567ba619ad8a2b361d4d715fe9.tar.bz2 |
[LV] Split RecurrenceDescriptor into RecurKind + FastMathFlags in LoopUtils. NFC (#132014)
Split off from #131300, this splits up RecurrenceDescriptor arguments so
that arbitrary recurrence kinds may be used down the line.
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUtils.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopUtils.cpp | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUtils.cpp b/llvm/lib/Transforms/Utils/LoopUtils.cpp index 185af86..41f43a2 100644 --- a/llvm/lib/Transforms/Utils/LoopUtils.cpp +++ b/llvm/lib/Transforms/Utils/LoopUtils.cpp @@ -1333,24 +1333,21 @@ Value *llvm::createSimpleReduction(IRBuilderBase &Builder, Value *Src, } Value *llvm::createSimpleReduction(VectorBuilder &VBuilder, Value *Src, - const RecurrenceDescriptor &Desc) { - RecurKind Kind = Desc.getRecurrenceKind(); + RecurKind Kind, FastMathFlags FMFs) { assert(!RecurrenceDescriptor::isAnyOfRecurrenceKind(Kind) && !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(); - Value *Iden = getRecurrenceIdentity(Kind, SrcEltTy, Desc.getFastMathFlags()); + Value *Iden = getRecurrenceIdentity(Kind, SrcEltTy, FMFs); Value *Ops[] = {Iden, Src}; return VBuilder.createSimpleReduction(Id, SrcTy, Ops); } -Value *llvm::createOrderedReduction(IRBuilderBase &B, - const RecurrenceDescriptor &Desc, +Value *llvm::createOrderedReduction(IRBuilderBase &B, RecurKind Kind, Value *Src, Value *Start) { - assert((Desc.getRecurrenceKind() == RecurKind::FAdd || - Desc.getRecurrenceKind() == RecurKind::FMulAdd) && + assert((Kind == RecurKind::FAdd || Kind == RecurKind::FMulAdd) && "Unexpected reduction kind"); assert(Src->getType()->isVectorTy() && "Expected a vector type"); assert(!Start->getType()->isVectorTy() && "Expected a scalar type"); @@ -1358,11 +1355,9 @@ Value *llvm::createOrderedReduction(IRBuilderBase &B, return B.CreateFAddReduce(Start, Src); } -Value *llvm::createOrderedReduction(VectorBuilder &VBuilder, - const RecurrenceDescriptor &Desc, +Value *llvm::createOrderedReduction(VectorBuilder &VBuilder, RecurKind Kind, Value *Src, Value *Start) { - assert((Desc.getRecurrenceKind() == RecurKind::FAdd || - Desc.getRecurrenceKind() == RecurKind::FMulAdd) && + assert((Kind == RecurKind::FAdd || Kind == RecurKind::FMulAdd) && "Unexpected reduction kind"); assert(Src->getType()->isVectorTy() && "Expected a vector type"); assert(!Start->getType()->isVectorTy() && "Expected a scalar type"); |