[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