[#llvm-GenericUniformityInfo] = xref:llvm.adoc[llvm]::GenericUniformityInfo :relfileprefix: ../ :mrdocs: Computes which values and terminators are uniform vs divergent in a function. == Synopsis Declared in `<llvm/ADT/GenericUniformityInfo.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<typename ContextT> class GenericUniformityInfo; ---- == Description Templated on an IR context that supplies block, value, and cycle types so the same algorithm works for LLVM IR and other IRs. == Type Aliases [cols="1,4"] |=== | Name| Description | xref:llvm/GenericUniformityInfo/BlockT.adoc[`BlockT`] | Basic‐block type from the IR context. | xref:llvm/GenericUniformityInfo/ConstValueRefT.adoc[`ConstValueRefT`] | Const value reference type from the IR context. | xref:llvm/GenericUniformityInfo/CycleInfoT.adoc[`CycleInfoT`] | Cycle‐nesting analysis used while computing uniformity. | xref:llvm/GenericUniformityInfo/DominatorTreeT.adoc[`DominatorTreeT`] | Dominator‐tree type from the IR context. | xref:llvm/GenericUniformityInfo/FunctionT.adoc[`FunctionT`] | Function type from the IR context. | xref:llvm/GenericUniformityInfo/InstructionT.adoc[`InstructionT`] | Instruction type from the IR context. | xref:llvm/GenericUniformityInfo/TemporalDivergenceTuple.adoc[`TemporalDivergenceTuple`] | Tuple describing a temporally divergent value: value, use site, and cycle. | xref:llvm/GenericUniformityInfo/ThisT.adoc[`ThisT`] | Alias for this specialization of GenericUniformityInfo. | xref:llvm/GenericUniformityInfo/UseT.adoc[`UseT`] | Use type from the IR context. | xref:llvm/GenericUniformityInfo/ValueRefT.adoc[`ValueRefT`] | Mutable value reference type from the IR context. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:llvm/GenericUniformityInfo/2constructor-02.adoc[`GenericUniformityInfo`] [.small]#[constructor]# | Constructors | xref:llvm/GenericUniformityInfo/operator_assign.adoc[`operator=`] | Move‐assign, taking ownership of the analysis implementation. | xref:llvm/GenericUniformityInfo/compute.adoc[`compute`] | Run the uniformity analysis, filling divergence results. | xref:llvm/GenericUniformityInfo/forgetValue.adoc[`forgetValue`] | Call before erasing `V,` or a later instruction reusing its address may be misclassified as uniform. | xref:llvm/GenericUniformityInfo/getCycleInfo.adoc[`getCycleInfo`] | The cycle info this analysis was computed with. | xref:llvm/GenericUniformityInfo/getFunction.adoc[`getFunction`] | The GPU kernel this analysis result is for | xref:llvm/GenericUniformityInfo/getTemporalDivergenceList.adoc[`getTemporalDivergenceList`] | Return the list of temporally divergent (value, use, cycle) tuples. | xref:llvm/GenericUniformityInfo/hasDivergentTerminator.adoc[`hasDivergentTerminator`] | Return true if block `B's` terminator is divergent. | xref:llvm/GenericUniformityInfo/isDivergentAtDef.adoc[`isDivergentAtDef`] | Whether `V` is divergent at its definition. | xref:llvm/GenericUniformityInfo/isDivergentAtUse.adoc[`isDivergentAtUse`] | Whether `U` is divergent at its use. Uses of a uniform value can be divergent. | xref:llvm/GenericUniformityInfo/isDivergentTerminator.adoc[`isDivergentTerminator`] | Return true if terminator `I` has a divergent controlling condition. | xref:llvm/GenericUniformityInfo/isUniformAtDef.adoc[`isUniformAtDef`] | Whether `V` is uniform/non‐divergent at its definition. | xref:llvm/GenericUniformityInfo/isUniformAtUse.adoc[`isUniformAtUse`] | Whether `U` is uniform/non‐divergent at its use. | xref:llvm/GenericUniformityInfo/isUniformTerminator.adoc[`isUniformTerminator`] | Return true if terminator `I` has a uniform controlling condition. | xref:llvm/GenericUniformityInfo/print.adoc[`print`] | Print a textual dump of divergence results to `Out.` |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#