diff options
author | Rosie Sumpter <rosie.sumpter@arm.com> | 2021-10-11 15:50:44 +0100 |
---|---|---|
committer | Rosie Sumpter <rosie.sumpter@arm.com> | 2021-11-24 08:50:04 +0000 |
commit | c2441b6b89bfe52a16f6c5ed5a0a49c9a02daf2a (patch) | |
tree | 7528628c52c0c4ac62a9c2f14869a48b3cfa9af1 /llvm/lib/Transforms/Utils/LoopUtils.cpp | |
parent | 7f5d9bf13a7d872dc173d09598743c006f59d6b8 (diff) | |
download | llvm-c2441b6b89bfe52a16f6c5ed5a0a49c9a02daf2a.zip llvm-c2441b6b89bfe52a16f6c5ed5a0a49c9a02daf2a.tar.gz llvm-c2441b6b89bfe52a16f6c5ed5a0a49c9a02daf2a.tar.bz2 |
[LoopVectorize] Add vector reduction support for fmuladd intrinsic
Enables LoopVectorize to handle reduction patterns involving the
llvm.fmuladd intrinsic.
Differential Revision: https://reviews.llvm.org/D111555
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUtils.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopUtils.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUtils.cpp b/llvm/lib/Transforms/Utils/LoopUtils.cpp index 68572d4..c8e42ac 100644 --- a/llvm/lib/Transforms/Utils/LoopUtils.cpp +++ b/llvm/lib/Transforms/Utils/LoopUtils.cpp @@ -1049,6 +1049,7 @@ Value *llvm::createSimpleTargetReduction(IRBuilderBase &Builder, return Builder.CreateOrReduce(Src); case RecurKind::Xor: return Builder.CreateXorReduce(Src); + case RecurKind::FMulAdd: case RecurKind::FAdd: return Builder.CreateFAddReduce(ConstantFP::getNegativeZero(SrcVecEltTy), Src); @@ -1091,7 +1092,8 @@ Value *llvm::createTargetReduction(IRBuilderBase &B, Value *llvm::createOrderedReduction(IRBuilderBase &B, const RecurrenceDescriptor &Desc, Value *Src, Value *Start) { - assert(Desc.getRecurrenceKind() == RecurKind::FAdd && + assert((Desc.getRecurrenceKind() == RecurKind::FAdd || + Desc.getRecurrenceKind() == RecurKind::FMulAdd) && "Unexpected reduction kind"); assert(Src->getType()->isVectorTy() && "Expected a vector type"); assert(!Start->getType()->isVectorTy() && "Expected a scalar type"); |