[llvm] [Uniformity] Implement per-output machine uniformity analysis (PR #179275)

Pankaj Dwivedi via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 12 01:34:42 PST 2026


================
@@ -2367,10 +2367,11 @@ class LLVM_ABI TargetInstrInfo : public MCInstrInfo {
     llvm_unreachable("impossible call instruction");
   }
 
-  /// Return the uniformity behavior of the given instruction.
-  virtual InstructionUniformity
-  getInstructionUniformity(const MachineInstr &MI) const {
-    return InstructionUniformity::Default;
+  /// Return the uniformity behavior of the given value (def operand).
+  /// \p DefIdx specifies which output to query (for multi-output instructions).
+  virtual ValueUniformity getValueUniformity(const MachineInstr &MI,
+                                             unsigned DefIdx = 0) const {
+    return ValueUniformity::Default;
----------------
PankajDwivedi-25 wrote:

I agree, right now if you see getValueUniformity function, it's single function responsible for handling everything, and if you see defIdx is only used by `isIntrinsicSourceOfDivergence`. There is no clear separation inside getValueUniformity, which makes it complex.

 

https://github.com/llvm/llvm-project/pull/179275


More information about the llvm-commits mailing list