[llvm] [AMDGPU][TTI] Add Target Hook for Instruction Uniformity (getInstructionUniformity) (PR #137639)
Sameer Sahasrabuddhe via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 21 23:11:40 PDT 2025
================
@@ -47,9 +76,21 @@ template <>
void llvm::GenericUniformityAnalysisImpl<SSAContext>::pushUsers(
const Value *V) {
for (const auto *User : V->users()) {
- if (const auto *UserInstr = dyn_cast<const Instruction>(User)) {
+ const auto *UserInstr = dyn_cast<const Instruction>(User);
+ if (!UserInstr)
+ continue;
+
+ if (!TTI) {
markDivergent(*UserInstr);
+ continue;
}
+
+ auto Uniformity = TTI->getInstructionUniformity(
+ *UserInstr, getOperandUniformities(*UserInstr));
+ if (!Uniformity || *Uniformity == InstructionUniformity::Default)
+ markDivergent(*UserInstr); // fallback: conservative
+ else if (*Uniformity == InstructionUniformity::Uniform)
+ addUniformOverride(*UserInstr);
----------------
ssahasra wrote:
No one checked if the relevant operand is uniform. How did we conclude that the result is uniform?
https://github.com/llvm/llvm-project/pull/137639
More information about the llvm-commits
mailing list