[#llvm-RecurrenceDescriptor-isReductionPHI] = xref:llvm.adoc[llvm]::xref:llvm/RecurrenceDescriptor.adoc[RecurrenceDescriptor]::isReductionPHI :relfileprefix: ../../ :mrdocs: Return true if `Phi` is a reduction PHI in `TheLoop.` == Synopsis Declared in `<llvm/Analysis/IVDescriptors.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- static bool isReductionPHI( xref:llvm/PHINode.adoc[PHINode]* Phi, xref:llvm/Loop.adoc[Loop]* TheLoop, xref:llvm/RecurrenceDescriptor.adoc[RecurrenceDescriptor]& RedDes, xref:llvm/DemandedBits.adoc[DemandedBits]* DB = nullptr, xref:llvm/AssumptionCache.adoc[AssumptionCache]* AC = nullptr, xref:llvm/DominatorTree.adoc[DominatorTree]* DT = nullptr, xref:llvm/ScalarEvolution.adoc[ScalarEvolution]* SE = nullptr); ---- == Description Returns true if Phi is a reduction in TheLoop. The RecurrenceDescriptor is returned in RedDes. If either `DB` is non‐null or `AC` and `DT` are non‐null, the minimal bit width needed to compute the reduction will be computed. If `SE` is non‐null, store instructions to loop invariant addresses are processed. == Return Value True if `Phi` is a reduction PHI in `TheLoop.` == Parameters [cols="1,4"] |=== | Name| Description | *Phi* | PHI node to test as a reduction. | *TheLoop* | Loop containing `Phi.` | *RedDes* | Descriptor filled when `Phi` is a reduction. | *DB* | Optional DemandedBits analysis for bit‐width computation. | *AC* | Optional AssumptionCache for bit‐width computation. | *DT* | Optional DominatorTree for bit‐width computation. | *SE* | Optional ScalarEvolution used when processing invariant stores. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#