[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