[llvm] [AMDGPU] misched: avoid subregister dependencies (PR #140255)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 24 08:37:10 PDT 2025


================
@@ -468,6 +468,28 @@ class LLVM_ABI TargetRegisterInfo : public MCRegisterInfo {
     return false;
   }
 
+  /// Returns true if the two subregisters are equal or overlap.
+  /// The registers may be virtual registers.
+  bool subRegsOverlap(Register RegA, unsigned SubA, Register RegB,
+                      unsigned SubB) const {
+    if (RegA == RegB && SubA == SubB)
+      return true;
+    if (RegA.isVirtual() && RegB.isVirtual()) {
+      if (RegA != RegB)
+        return false;
+      LaneBitmask LA = getSubRegIndexLaneMask(SubA);
+      LaneBitmask LB = getSubRegIndexLaneMask(SubB);
+      return (LA & LB).any();
+    }
----------------
arsenm wrote:

Because the interference is an assignment decision for the virtual register. It's context dependent on the lane mask and position in the function 

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


More information about the llvm-commits mailing list