Expand a scalable vector reduction into an element-wise runtime loop.
Declared in <llvm/Transforms/Utils/LoopUtils.h>
Value*
expandReductionViaLoop(
IRBuilderBase& Builder,
Value* Vec,
unsigned int RdxOpcode,
Value* Acc,
DominatorTree* DT = nullptr,
LoopInfo* LI = nullptr);
Expand a scalable vector reduction into a runtime loop that applies RdxOpcode element by element, starting from Acc as the initial accumulator value (typically the reduction identity). If DT and/or LI are provided, they are updated to reflect the new basic blocks.
The reduced scalar value.
| Name | Description |
|---|---|
| Builder | IR builder positioned where the loop should be emitted. |
| Vec | Scalable vector value being reduced. |
| RdxOpcode | Opcode applied to each extracted element. |
| Acc | Initial accumulator / identity value. |
| DT | Optional dominator tree to update. |
| LI | Optional loop info to update. |