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

Shilei Tian via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 13 19:57:06 PDT 2026


================
@@ -477,6 +477,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 subRegsInterfere(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();
+    }
+    if (RegA.isPhysical() && RegB.isPhysical()) {
+      MCRegister MCRegA = SubA ? getSubReg(RegA, SubA) : RegA.asMCReg();
+      MCRegister MCRegB = SubB ? getSubReg(RegB, SubB) : RegB.asMCReg();
+      assert(MCRegB.isValid() && MCRegA.isValid() && "invalid subregister");
+      return MCRegisterInfo::regsOverlap(MCRegA, MCRegB);
+    }
+    return false;
----------------
shiltian wrote:

if it should not happen, unreachable would be better.

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


More information about the llvm-commits mailing list