[AMDGPU] Use UniformityAnalysis in AtomicOptimizer
authorpvanhout <pierre.vanhoutryve@amd.com>
Tue, 14 Mar 2023 07:46:05 +0000 (08:46 +0100)
committerpvanhout <pierre.vanhoutryve@amd.com>
Wed, 15 Mar 2023 08:39:55 +0000 (09:39 +0100)
commitf90849dfa3edc77f5e3088787e6e11ec201a7ea9
treee34f574f5a7f6595665cf94aaabcf9fb5c6e0197
parent64b45db34a0cd979dae9ca3016e9da517e57b987
[AMDGPU] Use UniformityAnalysis in AtomicOptimizer

Adds & uses a new `isDivergentUse` API in UA.
UniformityAnalysis now requires CycleInfo as well as the new temporal divergence API can query it.

-----

Original patch that adds `isDivergentUse` by @sameerds

The user of a temporally divergent value is marked as divergent in the
uniformity analysis. But the same user may also have been marked divergent for
other reasons, thus losing this information about temporal divergence. But some
clients need to specificly check for temporal divergence. This change restores
such an API, that already existed in DivergenceAnalysis.

Reviewed By: sameerds, foad

Differential Revision: https://reviews.llvm.org/D146018
llvm/include/llvm/ADT/GenericSSAContext.h
llvm/include/llvm/ADT/GenericUniformityImpl.h
llvm/include/llvm/ADT/GenericUniformityInfo.h
llvm/include/llvm/CodeGen/MachineSSAContext.h
llvm/include/llvm/IR/SSAContext.h
llvm/lib/Analysis/UniformityAnalysis.cpp
llvm/lib/CodeGen/MachineUniformityAnalysis.cpp
llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp
llvm/test/CodeGen/AMDGPU/divergence-at-use.ll