RFC: Uniformity Analysis for Irreducible Control Flow

This takes us way past the sale, as far as I can see! The current intent of the RFC is to invite attention to how we are defining convergence and uniformity in irreducible CFGs. This definition works for AMDGPU, but we believe it can easily be more general than that.

I am certainly open to any refactoring in tree once the implementation lands. I would be happy to contribute to such efforts.

I am still curious about where this will be used in the Attributor framework. Note that divergence analysis and uniformity analysis are both expensive, and need to be recomputed for the whole function with any change in the CFG. Attempts to defining incremental updates have not panned out yet. We usually avoid depending on this analysis in transformations unless the value is considerable, and it’s usually meant to disable a transformation (for example, don’t unswitch a loop if the branch is divergent).