[llvm] [AMDGPU] Analyze implicit reg operands when generating swaps (PR #192220)
Juan Manuel Martinez CaamaƱo via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 15 07:47:26 PDT 2026
================
@@ -639,14 +636,25 @@ bool SIShrinkInstructions::instAccessReg(
return false;
}
-bool SIShrinkInstructions::instReadsReg(const MachineInstr *MI, unsigned Reg,
- unsigned SubReg) const {
- return instAccessReg(MI->uses(), Reg, SubReg);
-}
-
-bool SIShrinkInstructions::instModifiesReg(const MachineInstr *MI, unsigned Reg,
+// This is the same as MachineInstr::modifiesRegister except
+// it takes subregs into account.
+bool SIShrinkInstructions::instModifiesReg(const MachineInstr *MI, Register Reg,
unsigned SubReg) const {
- return instAccessReg(MI->defs(), Reg, SubReg);
+ for (const MachineOperand &MO : MI->all_defs()) {
----------------
jmmartinez wrote:
Nice catch. The change is very subtle. `defs()` is actually `explicit defs` and `all_defs` is explicit and implicit.
https://github.com/llvm/llvm-project/pull/192220
More information about the llvm-commits
mailing list